👤 Character
Roll a character who reads like a real booru tag list
- STRING
Meet the node
The 👤 Character node is the "who" of your scene. You give it a seed and it hands you back one string of comma-separated tags describing a person - build, skin tone, eyes, hair, and mood. It's one of the scene-fragment nodes in satche's tiny Prompt Factory pack, which is basically a procedural prompt writer that lives inside ComfyUI.
If you've ever stared at an empty positive prompt box wondering where to start, this is the node that ends the staring. It won't write you a paragraph; it writes you a casting sheet.
How it works
Every node in Prompt Factory is generated at import time from the pack's config.json - the pack reads a section per node and builds the inputs from it. Character exposes seven attributes: body_type, skin, eyes, hair_color, hair_length, hair_style, attitude. For each one you pick a mode:
random(the default) - the node rolls a tag for that attribute on every run- a concrete value like
blondeforhair_color- locks that one attribute none- drops the attribute from the output entirely
The seed input is what makes the rolling reproducible. Same seed, same settings, same person, every time. That's your whole debugging lever, and it's the one piece of advice the entire community repeats: lock the seed, change one thing, compare. It matters double here because this node is randomness on purpose.
The output is a single STRING that looks like slim, tan, blue eyes, long hair, wavy hair, smiling. You wire it into Prompt Factory's MergeStrings node along with the Clothes, Composition and Environment fragments, then into CLIPTextEncode, then sample. That's the pack's whole game: several random fragments, one merged prompt.
Where it shines (and where it won't)
These are Danbooru-style tags aimed at the anime/SDXL tag lineage - Pony, Illustrious, NoobAI and their many derivatives, which were literally trained on comma-separated tag lists. On those checkpoints this output is exactly the right shape. On sentence-style encoders (Flux, the newer LLM-encoded models) a pile of tags is weaker than a real sentence, so don't blame the node when a tag list underperforms there.
Two honest caveats. The tag lists are short, so you'll see repeats and the cast starts to feel like cousins - treat the output as a first draft and edit it. And there's no cross-node sanity check: Character doesn't talk to Environment or Clothes, so pale skin next to a swimsuit-at-beach combo is absolutely on the table.
Install
Prompt Factory is a normal custom node with a comically light footprint: no models, no GPU code, just dpath and numpy. Easiest path is ComfyUI Manager - search "Prompt Factory" and install, then restart ComfyUI (the running graph won't see a newly installed node until you reload).
By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/satche/comfyui-prompt-factory
pip install -r requirements.txt
Then restart and look for ⚙️ Prompt Factory in the node menu. Worth knowing: as of writing, that GitHub URL has been returning 404, so if the clone fails, fall back to Manager or the registry route (comfy node registry-install comfyui-prompt-factory) - the pack is listed in the Comfy Registry and Manager installs it without touching GitHub.
Troubleshooting
- Node won't show up: restart after install. If you cloned by hand, make sure the folder sits directly in
custom_nodes/and still has its__init__.py. - Same seed, different person: if you changed any attribute setting, the person changes - that's expected. With everything locked, the output is stable.
- It's a tiny pack: there's basically zero community writeup, so if something feels half-finished you're not imagining it. The silver lining is
config.json- open it and edit the tag lists to make the node yours.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| body_type | COMBO | random | 5 options: random, slim, muscular, chubby, none |
| skin | COMBO | random | 5 options: random, dark, tanned, pale, none |
| eyes | COMBO | random | 7 options: random, black, brown, blue, green, red, +1 |
| hair_color | COMBO | random | 7 options: random, black, brown, blonde, ginger, gray, +1 |
| hair_length | COMBO | random | 6 options: random, short, medium, long, very long, none |
| hair_style | COMBO | random | 5 options: random, straight, wavy, curly, none |
| attitude | COMBO | random | 6 options: random, smiling, bored, upset, sad, none |
| seed | INT | 00–18446744073709550000 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| STRING | STRING | — |