Dart Compose Prompt
Dart Compose Prompt (DanbooruTagsTransformerComposePrompt) — ComfyUI node guide
- STRING
Dart Compose Prompt is the form you fill out instead of hand-typing the special-token soup that Dart Generate actually wants. That default prompt string on the Generate node - <|bos|><rating>rating:sfw, rating:general</rating><copyright>original</copyright>...<|input_end|> - isn't something you're meant to write by hand. This node builds it for you from plain fields, and it's specifically the v1 builder: use it when Dart Load has dart-v1-sft selected. If you've loaded a v2 model, you want Dart Compose Prompt V2 instead - the README is explicit that this node outputs the prompt "of Dart Generate node (dart-v1)," and the two prompt formats aren't interchangeable.
What it's actually doing
Danbooru's own tagging system is categorical - rating, copyright, character, general tags, and so on - and the Dart model was trained on prompts structured the same way, with each category wrapped in its own marker tags. This node just gives you normal input fields for those categories and handles the wrapping and the special tokens itself, so you never have to remember the exact syntax the model expects.
The fields that matter
rating is an enum with four choices, taken straight from Danbooru's own rating-tag format: rating:general, rating:sensitive, rating:questionable, rating:explicit. This is the actual tag syntax used on the board itself, not a paraphrase - so if you already know Danbooru's rating tiers, this will look familiar.
copyright and character are free-text fields (single line) for the series/franchise and the character name, if you're targeting a specific one - leave them blank for an original character with no series attachment.
length controls roughly how many general tags the model generates, with five choices from very_short to very_long (default long). Longer isn't strictly better: a shorter length gets you a tighter, more focused tag set, while very_long gives the model more room to add secondary details you might not have asked for. general is the multiline field where you seed the actual content - it defaults to 1girl, and this is where you'd put any tags you already know you want (a pose, an outfit, a setting) before letting the model fill in the rest around them.
The single STRING output wires straight into Dart Generate's prompt input.
Installing it
Install through ComfyUI Manager (search "ComfyUI-Dart") or clone manually: cd ComfyUI/custom_nodes && git clone https://github.com/nkchocoai/ComfyUI-Dart.git, then restart. This node ships with the rest of the pack - nothing extra to install, and no model download of its own; it's pure string assembly, no inference happens here.
Where this goes wrong
The one mistake that actually matters: pairing this node with the wrong model. This is the v1 prompt builder. If Dart Load has dart-v2-sft or dart-v2-moe-sft selected, this node's output won't be in the format that model was trained on - you'll either get an outright error from the tokenizer, or a "successful" generation that reads as noise because the model is trying to complete a prompt shape it's never seen. Match dart-v1-sft with this node, and everything else (dart-v2-sft, dart-v2-moe-sft) with Dart Compose Prompt V2.
The other thing worth knowing: if you want to steer aspect ratio or lean harder on a specific character identity, those knobs don't exist here - they're V2-only fields (aspect_ratio, identity). This node is the simpler of the two on purpose, matching the simpler v1 model it feeds.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| rating | COMBO | 4 options: rating:general, rating:sensitive, rating:questionable, rating:explicit | |
| copyright | STRING | — | |
| character | STRING | — | |
| length | COMBO | long | 4 options: very_short, short, long, very_long |
| general | STRING | 1girl | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |