🗒️LC Subject
Build a character prompt from dropdowns, not from memory
- prompt
Writing a character prompt is a list, and lists are easier to assemble than to remember. Who they are, what pose, what action, what they're wearing, where they stand in the frame - get any one of those wrong and the render quietly drifts. LC Subject is the character module of the LC123 prompt-builder family: it turns "describe this person" into structured dropdowns with a text box for the freeform part.
It's the "who" alongside LC Scene Builder's "where" and LCStyleSelector's "how it looks". You describe the subject in your own words, then pick a pose (85 choices), an action (48), and an outfit preset (72, split into Female/ and Male/ lines) from curated lists, plus where they sit in the frame. Out the prompt socket comes a clean, comma-joined subject line.
The inputs
- description - freeform: who or what the subject is (look, age, vibe).
- pose - body pose (standing, contrapposto, sitting…). "none" leans on the description only.
- action - what they're doing (walking toward camera, glancing back, laughing…). "none" skips the line.
- outfit - clothing preset, or "none" to describe the outfit in text.
- position_horizontal (left/center/right/far left/far right), position_vertical (top/middle/bottom/upper third/lower third), position_depth (foreground/midground/background/extremes).
Output: one prompt STRING.
The clever bit: bbox trailers
Here's what makes it more than a prompt template. Alongside the human-readable line, the node appends a machine marker (|||LC_POS:h|v|d|||) carrying the placement. The LC Prompt Assembler reads that trailer and turns it into a bounding box on a 0–1000 coordinate grid - which is exactly what Ideogram and Krea2-style regional builders want for "put the subject on the right side of the frame" without you hand-typing box coordinates. The trailer is stripped from the final caption text, so your prompt stays clean and the JSON gets the boxes.
Where it fits
The README's stack: Subjects + Scene + Camera + Lighting + Style + Palette → LC Prompt Assembler → prompt → CLIP / json → regional builders. Wire several LC Subjects into an LC Subject Array for multi-character scenes, or keep one and assemble. On tag-based models the freeform description reads best as short phrases rather than sentences - the structured dropdowns help there, since curated phrasing tends to match how those models were trained.
Install
Part of LC123 - ComfyUI Manager (search "LC123") or:
cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes
Restart. No extra pip packages; MIT licensed. Cloud-hosted ComfyUI needs LC123 requested or run locally.
The honest take: if you never touch regional builders, the bbox trailer is invisible overhead and you're getting a structured prompt template - still useful, but you could hand-write it. The moment you're doing multi-subject or regional work, the trailer turns "subject on the right" into an actual box without you measuring pixels, and that's where it earns its keep.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| description | STRING | Who or what the subject is (look, age, vibe). Freeform text. | |
| pose | COMBO | standing | Body pose. Choose none to rely on the description only. |
| action | COMBO | none | What they are doing. none skips this line. |
| outfit | COMBO | none | Clothing preset (Female/… or Male/…). none = describe outfit in text. |
| position_horizontal | COMBO | center | Left / center / right placement in the frame. |
| position_vertical | COMBO | middle | Top / middle / bottom placement in the frame. |
| position_depth | COMBO | midground | Foreground / midground / background depth. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |