EBU PromptHelper Character Describer Female
Stuck for a face? Let this node roll a character for you
- face_description
- hair_style
- hair_color
- facial_expression
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
*_enabledtoggles - 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.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| seed | INT | 00–18446744073709550000 | — |
| eyes_enabled | BOOLEAN | true | — |
| nose_enabled | BOOLEAN | true | — |
| mouth_enabled | BOOLEAN | true | — |
| lips_enabled | BOOLEAN | true | — |
| face_shape_enabled | BOOLEAN | true | — |
| brow_enabled | BOOLEAN | true | — |
| ears_enabled | BOOLEAN | true | — |
| cheekbones_enabled | BOOLEAN | true | — |
| cheeks_enabled | BOOLEAN | true | — |
| chin_enabled | BOOLEAN | true | — |
| skin_enabled | BOOLEAN | true | — |
| makeup_enabled | BOOLEAN | false | — |
| neck_enabled | BOOLEAN | false | — |
| accessories_enabled | BOOLEAN | false | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| face_description | STRING | — |
| hair_style | STRING | — |
| hair_color | STRING | — |
| facial_expression | STRING | — |