Extensions/character-studio-prompt
ComfyUI Extension

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).

By Perry76·Created about a month ago·Updated about a month ago· 7
Perry76/character-studio-prompt
Nodes1
On cloudLocal install
CategoryCharacter Studio
Stars7
Updatedabout a month ago
Readme

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.

node license

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.

<img width="1245" height="757" alt="image" src="https://github.com/user-attachments/assets/e70d09a6-614e-4ce3-b307-989ebe844278" /> <img width="1217" height="803" alt="image" src="https://github.com/user-attachments/assets/b19ece06-8de9-428f-80b2-d8fa1cf65c19" />

Usage

  1. Add the node Character Studio — Portret-prompt.
  2. 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.
  3. (Optional) type anything into extra — it is appended to the end of the prompt.
  4. Connect it to a CLIP Text Encode. The node's prompt output is a STRING, but a CLIP Text Encode's text field 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's prompt output onto that new text input.
  5. Wire the CLIP Text Encode's CONDITIONING output into your sampler's positive input, as usual.
<img width="1448" height="790" alt="image" src="https://github.com/user-attachments/assets/a72e808a-27d4-4f18-9768-01804db787e7" />

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.