Dart Generate
Dart Generate (DanbooruTagsTransformerGenerate) — ComfyUI node guide
- model
- tokenizer
- setting
- STRING
Dart Generate is the node people actually mean when they say "the Dart node." It's the one that takes a half-written prompt and hands back a full, plausible Danbooru tag list - ready to drop straight into a CLIP Text Encode. If you've ever stared at a blank prompt box wondering what the right combination of pose, clothing, and camera tags is for an Illustrious or NoobAI checkpoint, this is what that whole pack exists to do.
Why this exists
Danbooru tags aren't a description, they're a controlled vocabulary - 1girl, looking at viewer, dutch angle, blush - and that vocabulary is what Illustrious, NoobAI, and their merges were actually trained on. Getting good, varied results means knowing which tags exist and which combinations read well, and that's a real skill people build over months of prompting. Dart Generate automates the "which tags go together" part: it's a small language model trained on real Danbooru tag lists, so it knows what tends to co-occur - style tags with certain poses, certain clothing with certain settings - better than a guess. It's not a captioner like the WD14 tagger, which reads tags out of an existing image; Dart works the other way, generating a tag list from scratch (or from a partial one) with no image involved at all.
Inputs that matter
You need model and tokenizer - both DART_MODEL/DART_TOKENIZER from Dart Load - and a prompt string, normally built by Dart Compose Prompt (v1 models) or Dart Compose Prompt V2 (v2 models) rather than typed by hand. The default prompt shows why: it's a soup of special tokens like <|bos|><rating>rating:sfw, rating:general</rating><copyright>original</copyright>...<|input_end|>. That's the model's actual training format, and getting it wrong by hand is the fastest way to a bad generation.
seed works exactly like an image-generation seed: same seed, same prompt, same settings gets you the same tag list back, so it's worth locking a good result down or sweeping seeds to see variations. animagine_order (on by default) rearranges the output into the tag order Animagine XL's own prompt guide recommends - order matters for Danbooru-tag models generally, since earlier tags in a prompt get more attention weight, so this is a sane default rather than cosmetic.
Two optional inputs are worth knowing apart: ban_tags (a string, normally fed from Dart Ban Tags From Regex) stops matching tags from being generated at all, while remove_tags is a plain string that strips tags from the finished output - the README is explicit that "tags specified with remove_tags will not be output." Use ban_tags to steer the generation away from something entirely; use remove_tags as a cleanup pass. The optional setting input (DART SETTING, from Dart Generation Config) controls the sampling behavior - how random vs. conservative the generation is.
The single STRING output is the finished tag list, ready to wire into a CLIP Text Encode node.
Installing and common snags
Install via ComfyUI Manager (search "ComfyUI-Dart") or git clone https://github.com/nkchocoai/ComfyUI-Dart.git into custom_nodes and restart. No extra models to fetch by hand - the model comes down automatically the first time Dart Load runs with a given choice.
The gotcha that actually bites: model/prompt mismatch. dart-v1-sft expects a v1-style prompt from Dart Compose Prompt; dart-v2-sft/dart-v2-moe-sft expect the V2 format, which adds aspect ratio and identity fields the v1 format doesn't have. Load one, compose with the other, and you get garbage or an outright error. And if you hand-edit the prompt string instead of using a Compose Prompt node, keep the special-token structure intact - the model was trained on that exact shape, not on loose comma-separated tags.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| model | DART_MODEL | — | |
| tokenizer | DART_TOKENIZER | — | |
| prompt | STRING | <|bos|><rating>rating:sfw, rating:general</rating><copyright>original</copyright><character></character><general><|long|>1girl<|input_end|> | — |
| seed | INT | 00–4294967295 | — |
| animagine_order | BOOLEAN | true | — |
| settingopt | DART SETTING | — | |
| ban_tagsopt | STRING | — | |
| remove_tagsopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |