APNext People
Body types, archetypes and 400+ facial expressions
- prompt
- random
This is the node for describing a person - the physical and emotional layer that makes a portrait read as a specific human instead of a default face. It carries 100 body-type descriptions, 433 facial expressions (which is genuinely a lot - "bemused smile with one eyebrow cocked", "barely contained grief with clenched fists"), archetype lists for male, female and neutral, and 29 eye colors. Pair it with APNext Human (jobs and hobbies) and you've covered most of what a people prompt needs.
Its best asset is that expression list. "Smiling" is what everyone types and it produces the same dead stock grin every time. A specific expression phrase gives the model something to actually aim at, and it's the difference between a mannequin and a face with something going on behind it.
How it works
Each dropdown is a word list: None skips it, Random picks one, Multiple Random grabs several, or you pin a value. Your typed prompt is the base; the descriptions append and join on the separator. The seed locks the random draw for reproducibility.
Nothing runs and nothing downloads - it's string assembly from JSON files that ship with the pack. The expressions in particular are written as full descriptive phrases rather than single tags, which is deliberate: on capable models that extra specificity binds better than a bare "happy".
Inputs and outputs that matter
- prompt (multiline, required) - your base subject. The person description stacks on.
- expressions - the standout list and the one most worth randomizing. It's where a face gets character.
- body_types - 100 phrased descriptions; useful, but pick one, they don't stack.
- archtypes / archtype_male / archtype_female - set who the subject broadly is (man, woman, model, gentleman).
- eye_color - a small precise touch when you need it.
- seed - reproducibility; attributes (boolean) folds in extra descriptor tags.
Outputs: prompt (base plus the assembled people terms) and random (just the random additions).
Installing it
Via ComfyUI Manager, search comfyui_dagthomas and install, then restart. By hand:
cd ComfyUI/custom_nodes
git clone https://github.com/dagthomas/comfyui_dagthomas
cd comfyui_dagthomas
pip install -r requirements.txt
The requirements are heavy for the pack's LLM and FX nodes; this prompt node needs none of them and no API key.
Common issues
Setting both archtype_male and archtype_female to a value, or randomizing several body types with Multiple Random, gives the model contradictory instructions and you get anatomy that averages into something off. One archetype, one body type, one expression. That's the recipe.
The phrasing is SDXL-lineage, so it drops cleanly into SDXL, Illustrious and Pony prompts. On the newer LLM-encoded models the long expression phrases actually transfer reasonably well because they're natural language, but any weighted parentheses are ignored - so if you're on Z-Image or Flux 2, take the picks and write them into a sentence. And a general note that applies to every people-generating node: if you're making a real, identifiable person, that's a whole separate consideration from prompt mechanics. This node just assembles descriptive text.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| separator | STRING | , | — |
| stringopt | STRING | — | |
| seedopt | INT | 00–18446744073709550000 | — |
| attributesopt | BOOLEAN | false | — |
| body_typesopt | COMBO | None | 100 options: None, Random, Multiple Random, apple-shaped torso with slim limbs, apple-shaped with short torso, athletic build with visible muscle definition, +94 |
| archtype_femaleopt | COMBO | None | 10 options: None, Random, Multiple Random, lady, middle-aged woman, female millennial, +4 |
| expressionsopt | COMBO | None | 433 options: None, Random, Multiple Random, amused expression with slightly upturned lips and soft eyes, barely contained grief with clenched fists, bawling loudly with red, puffy eyes, +427 |
| eye_coloropt | COMBO | None | 29 options: None, Random, Multiple Random, amber eyes, amethyst eyes, aquamarine eyes, +23 |
| archtype_maleopt | COMBO | None | 10 options: None, Random, Multiple Random, gentleman, man, middle-aged man, +4 |
| archtypesopt | COMBO | None | 17 options: None, Random, Multiple Random, geek, gentleman, lady, +11 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| random | STRING | — |