Nodes/Prompt Factory/👤 Character
ComfyUI Node

👤 Character

Roll a character who reads like a real booru tag list

By satche·Created 2 years ago·Updated about a year ago· 5
👤 Character
    • STRING
    body_typerandom
    skinrandom
    eyesrandom
    hair_colorrandom
    hair_lengthrandom
    hair_stylerandom
    attituderandom
    seed0

    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 blonde for hair_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.
    Category⚙️ Prompt Factory/⭐️ My Nodes

    Inputs (8)

    NameTypeDefaultDescription
    body_typeCOMBOrandom5 options: random, slim, muscular, chubby, none
    skinCOMBOrandom5 options: random, dark, tanned, pale, none
    eyesCOMBOrandom7 options: random, black, brown, blue, green, red, +1
    hair_colorCOMBOrandom7 options: random, black, brown, blonde, ginger, gray, +1
    hair_lengthCOMBOrandom6 options: random, short, medium, long, very long, none
    hair_styleCOMBOrandom5 options: random, straight, wavy, curly, none
    attitudeCOMBOrandom6 options: random, smiling, bored, upset, sad, none
    seedINT00–18446744073709550000

    Outputs (1)

    NameTypeDescription
    STRINGSTRING