Nodes/EBU PromptHelper/EBU PromptHelper Character Describer Female
ComfyUI Node

EBU PromptHelper Character Describer Female

Stuck for a face? Let this node roll a character for you

By burnsbert·Created 2 years ago·Updated about a month ago· 2
EBU PromptHelper Character Describer Female
    • face_description
    • hair_style
    • hair_color
    • facial_expression
    seed0
    eyes_enabledtrue
    nose_enabledtrue
    mouth_enabledtrue
    lips_enabledtrue
    face_shape_enabledtrue
    brow_enabledtrue
    ears_enabledtrue
    cheekbones_enabledtrue
    cheeks_enabledtrue
    chin_enabledtrue
    skin_enabledtrue
    makeup_enabledfalse
    neck_enabledfalse
    accessories_enabledfalse

    The female character describer is the node you use when you're tired of generating the same five faces. It rolls a full facial description - eyes, nose, lips, hair, expression and all - from a weighted list of options, spits it out as clean label-ready text, and lets you batch a dozen variations that all feel different. The author's own README calls it "extremely imperfect and limited," which is the honest version of what you're getting: it's a prompt generator, not a character designer. It won't give you a consistent OC. What it does give you is fast, colorful raw material when you want variety without writing a hundred descriptions by hand.

    How it works

    Under the hood it's a bunch of hardcoded option lists (one Python file per facial feature, e.g. eyes_female.py) where each entry carries a weight. Eyes have roughly thirty options weighted from 1 to 5 - "large, round doe-like eyes" is more likely than "monolid eyes with sleek lids" - and the node calls random.choices() against those weights, seeding with seed + N per feature so a fixed seed gives you a reproducible face. That weighting is the whole trick: you get believable variety instead of a dice-roll of weird outliers, because common traits show up more often.

    The inputs that matter

    Just a seed and a wall of toggles:

    • seed - set 0 for a fresh roll every run, or fix it to keep a face stable while you change something else upstream.
    • 14 *_enabled toggles - eyes, nose, mouth, lips, face shape, brow, ears, cheekbones, cheeks, chin, skin are on by default. makeup, neck, and accessories default to off; flip them on when you want them, since they change the tone of the output noticeably.

    Every enabled feature becomes one line in the face_description output, labeled like Eyes: ... / Skin: ... so you can drop them into a structured prompt block. The other three outputs - hair_style, hair_color, facial_expression - come from their own separate lists, so grab them individually if you only need hair on the main prompt and want to keep the description separate.

    Where it fits

    Wire face_description (plus hair and expression) into your positive prompt ahead of the KSampler, and pair it with the pack's Randomize or Replace nodes if you want to slot the result into a template instead of feeding it raw. It also sits naturally next to an LLM prompt-builder if you use one - this pack was written by the same author as the EBU-LMStudio LLM nodes, and the two play well together when you want an LLM to turn the description into a scene.

    Install and gotchas

    It ships inside EBU PromptHelper: in ComfyUI Manager search "EBU PromptHelper", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/burnsbert/ComfyUI-EBU-PromptHelper
    

    then restart ComfyUI. No models to download, and requirements.txt literally says no extra dependencies - the whole pack is pure Python stdlib, which is refreshingly rare. One thing to know: the output leans young and conventionally attractive (the eyes file says so in a comment), so if you want grizzled or unusual faces you'll get more mileage from the male describer or from writing your own lines.

    Troubleshooting

    The two things that trip people up: forgetting the seed is 0 = "new every time," which is what you want for variety but not if a face keeps changing mid-tuning - fix a seed when you're dialing in lighting. And if face_description comes out looking sparse, you probably toggled a category off by accident; each enabled feature is one line, so fewer toggles literally means a shorter prompt. There's no failure mode more exotic than that, because the node can't crash on a missing model - there is none.

    CategoryPrompts

    Inputs (15)

    NameTypeDefaultDescription
    seedINT00–18446744073709550000
    eyes_enabledBOOLEANtrue
    nose_enabledBOOLEANtrue
    mouth_enabledBOOLEANtrue
    lips_enabledBOOLEANtrue
    face_shape_enabledBOOLEANtrue
    brow_enabledBOOLEANtrue
    ears_enabledBOOLEANtrue
    cheekbones_enabledBOOLEANtrue
    cheeks_enabledBOOLEANtrue
    chin_enabledBOOLEANtrue
    skin_enabledBOOLEANtrue
    makeup_enabledBOOLEANfalse
    neck_enabledBOOLEANfalse
    accessories_enabledBOOLEANfalse

    Outputs (4)

    NameTypeDescription
    face_descriptionSTRING
    hair_styleSTRING
    hair_colorSTRING
    facial_expressionSTRING