character-studio-prompt
A ComfyUI custom node that assembles natural-language character portrait prompts from structured fields (origin, age, build, skin, face, hair, wardrobe, camera & lens).
Character Studio — Prompt (ComfyUI custom node)
<img width="1664" height="928" alt="Qwen-Image-2512_00078_" src="https://github.com/user-attachments/assets/d8691eaf-7194-4ede-b86c-38aeadd4ec3b" />A ComfyUI custom node that assembles a natural-language character portrait prompt from structured fields (origin, age, build, skin, face, hair, wardrobe, camera & lens, …).
The node exposes every field as a widget (dropdowns for the enumerated options, text inputs for the rest) and
outputs a single STRING — connect it to a CLIP Text Encode.
Why
Character consistency is easier when the description is complete and deterministic. Leaving traits out
creates a prompt "vacuum" that the model fills with its own prior; this node uses positive, template-driven
defaults (e.g. clean-shaven, no freckles, a fallback wardrobe) so every field is stated explicitly.
Install
Clone into your ComfyUI custom_nodes folder and restart ComfyUI:
cd ComfyUI/custom_nodes
git clone https://github.com/Perry76/character-studio-prompt.git
No extra dependencies (Python standard library only). Restart ComfyUI — the node appears under
Add Node → Character Studio → Portret-prompt. Connect its prompt output to a CLIP Text Encode.
Usage
- Add the node Character Studio — Portret-prompt.
- Pick the character traits in the dropdowns / text fields. Every field has a sensible default, so an untouched node still produces a coherent, fully-clothed portrait prompt.
- (Optional) type anything into extra — it is appended to the end of the prompt.
- Connect it to a CLIP Text Encode. The node's
promptoutput is aSTRING, but a CLIP Text Encode'stextfield is a widget by default. Right-click the CLIP Text Encode (Prompt) node → Convert Widget to Input → text (older ComfyUI: Convert text to input), then drag the node'spromptoutput onto that new text input. - Wire the CLIP Text Encode's
CONDITIONINGoutput into your sampler's positive input, as usual.
Tip: to see the exact prompt the node produced, add any "Show Text" / string-preview node and connect
prompt to it.
Notes / limits
- Enums are dropdowns; for one-off additions use the optional extra field.
- Wardrobe is a free-text field. Leave it empty and a default outfit (
casual everyday clothing) is used so the subject is never rendered nude; type your own outfit to override it.