Prompt Tag Assembler
The node that turns tag chaos into a proper prompt, in the order your model was trained on
- prompt
Anime models have opinions about prompt order. The Danbooru-trained family - Illustrious, NoobAI, Pony - was trained on tag lists, and it reads them in a specific order: quality and meta tags first, then how many people, then who they are, then what series they're from, then the artist, and general content tags last. Anima's model card spells out that exact sequence, and people who ignore it leave quality on the table. PromptTagAssembler exists so you never hand-assemble that order again.
It's the finishing step in this pack's pipeline. The Booru Roulette node throws categorized tag streams at you; this is the node that takes those streams plus anything you want to add, and produces the single comma-joined string you wire into CLIPTextEncode. You can also feed it plain hand-written lists - it's just a smarter prompt builder.
How it works
Seven inputs in, one prompt out, and the mechanics are where it earns its keep:
meta(defaultmasterpiece, year 2025, new) - quality and metadata tags, always first.rating(defaultsafe) - the content-rating token.person_count- optional; a count like1girlor2boys.character,series,artist,general- the rest of the taxonomy, in that canonical order.
Under the hood it splits every field on commas, then normalizes each tag the way your model wants: underscores become spaces (the community's evergreen "always replace underscores or results get worse" rule, which applies on Anima just as much as Illustrious), and parentheses get escaped so a character name like (OC) doesn't accidentally read as an attention weight. Artist tags get an @ prefix - the convention NoobAI and Anima trained on, where @artistname is a distinct style token.
The genuinely clever bit: it detects person-count tags inside general and hoists them into the person_count slot automatically. So if a Booru Roulette post hands you 1girl buried in a 40-tag general list, it's pulled out, deduplicated against any manual count you typed, and placed in the right section. You don't have to strip it yourself.
What comes out
One output: prompt, a STRING with all the non-empty sections joined in order. Wire it into CLIPTextEncode and you're done. If you want this node to shine, feed character, series, artist, general, and rating straight from BooruRouletteNode's outputs - and flip that node's anima_rating_format on, which remaps its rating output (general → safe, questionable → nsfw) so it drops into this node in Anima's vocabulary.
Installing it
Same pack as the others, one install gets all five. ComfyUI Manager → "Archon Nodes", or:
cd ComfyUI/custom_nodes
git clone https://github.com/esbe1175/comfyui-archon-nodes
pip install -r ComfyUI/custom_nodes/comfyui-archon-nodes/requirements.txt
Restart, and it lives under Archon/Prompt. Pure Python, no models, no downloads.
Gotchas
- It's dumb string assembly, not a language model. It won't write your prompt for you; it organizes tags you already have. Don't feed it prose and expect a coherent sentence.
- Attention weights won't survive it. Because the node escapes parentheses, a
(long hair:1.2)weight gets turned into a literal tag. If you weight things, add your weights downstream, after this node - or accept that this pack's philosophy is plain tag lists, which is honestly how most anime prompting works anyway. - Order is non-negotiable here - that's the feature. If you deliberately want to bury an artist tag later in the prompt, this node fights you, because it always puts
artistbeforegeneral. For 95% of cases that's what you want anyway.
If your workflow already runs on clean hand-typed prompts, you may not need it. But if you're pulling prompts from live booru sources or combining character, series, and artist streams, it's the difference between a prompt you fight with and one that just works.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| meta | STRING | masterpiece, year 2025, new | — |
| rating | STRING | safe | — |
| person_count | STRING | — | |
| character | STRING | — | |
| series | STRING | — | |
| artist | STRING | — | |
| general | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |