Human Composer Prompt Builder
Writer's block for people? This node turns 'describe a person' into a 30-field checklist
- prompt
The hardest part of prompting a human character is rarely the model - it's remembering the details. You type "woman, ponytail, beach," get a generic render, and then spend five generations bolting on stray tags that never quite land. Human Composer Prompt Builder is the anti-blank-page tool: one node with roughly thirty dropdowns that hands you a finished prompt in the format your checkpoint actually wants.
The name is a lie in the best way - it doesn't call any API, needs no LLM, no key, no model files. It's pure string assembly in Python.
How it works
You pick values from dropdowns grouped by subject, appearance, hair, clothing, accessories, scene, and camera. Every field ends with a Custom value… option that unlocks a plain text input right next to it, so you're never stuck with the author's vocabulary. Fields you leave at - not set - are simply skipped - no dangling Gender: not set garbage in your prompt.
Under the hood there's exactly one renderer per model family, switched by output_format. That switch is the whole ballgame:
- SDXL – Structured - labeled
Label: valueblocks separated by blank lines. Readable, and easy to hand-edit in a "Preview as Text" node before it hits the encoder. - SDXL – Comma Tags - Danbooru-style comma tags for tag-trained SDXL models.
- FLUX – Natural Prompt - proper sentences with article handling ("An" vs "A"), "The person has…", "The person is wearing…".
- Pony – Comma Tags - comma tags with
score_9, score_8_up, score_7_upprepended.
This is the bit people get wrong, and it's where the KB's advice matters: tags, prose, and Pony's score system are three different prompting paradigms, and the same words behave completely differently across them. Run a Pony checkpoint through the SDXL formats and you silently lose the quality tags the model was trained on; feed a FLUX checkpoint comma tags and it reads like a grocery list instead of an instruction.
The fields that matter
Honestly, output_format decides everything - set that first. After that, the subject block (gender, age, ethnicity) and hair are where this node earns its keep: nine independent hair dimensions (length, texture, style, parting, bangs, color) that you'd otherwise forget to describe at all. And when presets aren't enough, additional_details is a multiline free-text box for anything not covered. There's no node with more field groups; the value is the completeness, not any single dropdown.
The output is a single prompt string - wire it straight into a CLIP Text Encode node's text input and queue.
Install
Clone into ComfyUI/custom_nodes/ and restart:
cd ComfyUI/custom_nodes
git clone https://github.com/max-dingsda/ComfyUI-HumanComposer
No requirements to install - the pack's requirements.txt is empty and pyproject.toml lists zero dependencies. ComfyUI Manager can grab it too, since the repo publishes to the Comfy registry; search for the pack title there.
Gotchas
The format switch is a trap only if you pick it wrong, so don't. Switching formats later doesn't hurt - your field values are unchanged, it just re-renders.
Two honest caveats. First, the Structured format with all thirty fields filled gets heavy - newline-separated labels are great for humans, but caption-trained models tolerate them less; Comma Tags is usually the safer default if you're not sure. Second, and worth stating plainly: this is a prompt-writing aid, not a consistency tool. It won't keep a character identical across generations - that's IPAdapter- and LoRA-shaped problems, not a text node's. What it does, reliably, is stop you from staring at a blank prompt box because you don't know the English word for "waist-length hair with side-swept bangs."
Inputs (60)
| Name | Type | Default | Description |
|---|---|---|---|
| output_format | COMBO | SDXL – Structured | 4 options: SDXL – Structured, SDXL – Comma Tags, FLUX – Natural Prompt, Pony – Comma Tags |
| gender | COMBO | — not set — | 5 options: — not set —, Woman, Man, Non-binary person, Custom value… |
| gender_custom | STRING | — | |
| age | COMBO | — not set — | 8 options: — not set —, Child, Teenager, Young adult, Adult, Middle-aged adult, +2 |
| age_custom | STRING | — | |
| ethnicity | COMBO | — not set — | 11 options: — not set —, Caucasian / European, Black / African, East Asian, South Asian, Southeast Asian, +5 |
| ethnicity_custom | STRING | — | |
| body_type | COMBO | — not set — | 10 options: — not set —, Slim, Athletic, Average, Curvy, Plus-size, +4 |
| body_type_custom | STRING | — | |
| skin_tone | COMBO | — not set — | 11 options: — not set —, Very pale, Fair, Light tan, Medium, Olive, +5 |
| skin_tone_custom | STRING | — | |
| facial_expression | COMBO | — not set — | 12 options: — not set —, Smiling, Laughing, Neutral, Serious, Surprised, +6 |
| facial_expression_custom | STRING | — | |
| eye_color | COMBO | — not set — | 8 options: — not set —, Blue, Green, Brown, Hazel, Gray, +2 |
| eye_color_custom | STRING | — | |
| hair_length | COMBO | — not set — | 8 options: — not set —, Buzzed / stubble, Very short, Chin-length, Shoulder-length, Mid-back length, +2 |
| hair_length_custom | STRING | — | |
| hair_texture | COMBO | — not set — | 7 options: — not set —, Straight, Slightly wavy, Wavy, Curly, Coily, +1 |
| hair_texture_custom | STRING | — | |
| hair_style | COMBO | — not set — | 14 options: — not set —, Loose, Slicked-back, Bob, Pixie cut, Ponytail, +8 |
| hair_style_custom | STRING | — | |
| hair_parting | COMBO | — not set — | 6 options: — not set —, Center part, Side part, Deep side part, No visible part, Custom value… |
| hair_parting_custom | STRING | — | |
| bangs | COMBO | — not set — | 7 options: — not set —, Blunt bangs, Curtain bangs, Side-swept bangs, Wispy bangs, No bangs, +1 |
| bangs_custom | STRING | — | |
| hair_color | COMBO | — not set — | 11 options: — not set —, Black, Dark brown, Brown, Blonde, Red, +5 |
| hair_color_custom | STRING | — | |
| facial_hair | COMBO | — not set — | 7 options: — not set —, Clean-shaven, Stubble, Mustache, Goatee, Full beard, +1 |
| facial_hair_custom | STRING | — | |
| clothing_category | COMBO | — not set — | 12 options: — not set —, Casual wear, Business, Formal evening wear, Sportswear, Historical clothing, +6 |
| clothing_category_custom | STRING | — | |
| main_garment | COMBO | — not set — | 18 options: — not set —, T-shirt, Blouse, Shirt, Sweater, Jacket, +12 |
| main_garment_custom | STRING | — | |
| clothing_material | COMBO | — not set — | 13 options: — not set —, Cotton, Linen, Wool, Leather, Suede, +7 |
| clothing_material_custom | STRING | — | |
| clothing_fit | COMBO | — not set — | 7 options: — not set —, Figure-hugging, Tailored, Loose-fitting, Flowing, Oversized, +1 |
| clothing_fit_custom | STRING | — | |
| clothing_color | COMBO | — not set — | 14 options: — not set —, Black, White, Red, Burgundy, Blue, +8 |
| clothing_color_custom | STRING | — | |
| accessory_1 | COMBO | — not set — | 13 options: — not set —, Glasses, Sunglasses, Earrings, Necklace, Hat, +7 |
| accessory_1_custom | STRING | — | |
| accessory_2 | COMBO | — not set — | 13 options: — not set —, Glasses, Sunglasses, Earrings, Necklace, Hat, +7 |
| accessory_2_custom | STRING | — | |
| accessory_3 | COMBO | — not set — | 13 options: — not set —, Glasses, Sunglasses, Earrings, Necklace, Hat, +7 |
| accessory_3_custom | STRING | — | |
| pose | COMBO | — not set — | 10 options: — not set —, Standing, Sitting, Walking, Running, Leaning, +4 |
| pose_custom | STRING | — | |
| orientation | COMBO | — not set — | 7 options: — not set —, Front view, Three-quarter view, Side view, Rear view, Looking over the shoulder, +1 |
| orientation_custom | STRING | — | |
| framing | COMBO | — not set — | 9 options: — not set —, Facial close-up, Head-and-shoulders portrait, Upper-body shot, Waist-up shot, Three-quarter body shot, +3 |
| framing_custom | STRING | — | |
| viewpoint | COMBO | — not set — | 6 options: — not set —, Eye-level, Low-angle, High-angle, Overhead view, Custom value… |
| viewpoint_custom | STRING | — | |
| environment | COMBO | — not set — | 11 options: — not set —, Studio backdrop, Outdoor natural setting, Urban street, Home interior, Office interior, +5 |
| environment_custom | STRING | — | |
| lighting | COMBO | — not set — | 10 options: — not set —, Soft natural light, Golden hour, Studio lighting, Dramatic / high-contrast, Backlighting, +4 |
| lighting_custom | STRING | — | |
| art_style | COMBO | — not set — | 11 options: — not set —, Photorealistic, Cinematic, Digital painting, Anime / manga, 3D render, +5 |
| art_style_custom | STRING | — | |
| additional_details | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |