Nodes/ComfyUI LC123 Nodes/πŸ—’οΈLC Subject Array
ComfyUI Node

πŸ—’οΈLC Subject Array

Eight subjects, one prompt line β€” LC Subject Array demystified

By lonecatone23Β·Created 2 months agoΒ·Updated 3 days agoΒ· 18
πŸ—’οΈLC Subject Array
    • prompt
    • count
    β—„subject_01β€”β–Ί
    β—„subject_02β€”β–Ί
    β—„subject_03β€”β–Ί
    β—„subject_04β€”β–Ί
    β—„subject_05β€”β–Ί
    β—„subject_06β€”β–Ί
    β—„subject_07β€”β–Ί
    β—„subject_08β€”β–Ί

    The LC Subject Array is the node that makes multi-character prompts manageable instead of a wall of commas. It's part of lonecatone23's Prompt Builder stack: each character gets their own πŸ—’οΈLC Subject node, and this thing merges up to eight of them into a single prompt line for the assembler. Think of it as the glue between "one node per person" and "one prompt your CLIP encoder can actually read."

    The whole point is modularity. You build a group shot the same way you'd cast a scene: person A in their own node, person B in theirs, and the array just lines them up in order - "; "-separated, no trailing comma, no blank slots. That's the entire job, and it does it cleanly.

    How it works

    The node is dumb on purpose. It takes up to eight optional subject_01 through subject_08 string inputs, skips anything left unconnected or empty, and joins the rest with "; ". Two outputs come out:

    • prompt - the joined string. Wire this into the 🧩LC Prompt Assembler (or any STRING input, honestly - it's just text).
    • count - an integer telling you how many subjects actually made it into the line. Useful if you want downstream logic like a switch or a compare to react to "this is a two-person shot vs. a five-person shot."

    The inputs are forceInput, so they show up as sockets, not text boxes - which is exactly what you want here, because the text lives in your LC Subject nodes. If you've converted a widget to input before, this is that same pattern applied across the board.

    The one thing that trips people up

    Slots are positional. The array does not sort, weight, or de-duplicate - subject_01 always lands first, and a middle slot left empty doesn't renumber the ones after it. If you leave subject_03 unconnected, you get subjects 1, 2, 4 in that order, not 1, 2, 3. That's rarely a problem, but if you're toggling characters in and out by connecting and disconnecting wires, the order will shift on you.

    Also worth knowing: each LC Subject node appends a machine-readable position trailer (left/center/right, foreground/midground/background) to its own output. The array passes those through untouched, and the assembler strips them out of the final caption text while using them to place the subject's bounding box in the regional JSON. So if a character's position looks wrong downstream, fix it in the Subject node, not here.

    Install

    This ships in the ComfyUI_LC123_nodes pack, so it installs with the rest of it:

    • ComfyUI Manager - search "LC123" or "ComfyUI_LC123_nodes" and hit Install, then restart.
    • Manual - cd ComfyUI/custom_nodes && git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes, then restart ComfyUI.

    No extra pip packages. The whole pack runs on ComfyUI's own environment (torch + numpy) and there's no requirements.txt to fight. That's genuinely rare and worth appreciating - no dependency hell on top of a node that just joins strings.

    When to bother

    If you're typing multi-character prompts by hand, this buys you nothing but a bit of tidiness. Where it earns its keep is batch work: you want to generate five versions where character B's outfit or pose changes while A stays fixed. In that setup, one Subject node per character means you edit a single widget instead of hunting through a comma soup. Pair it with the prompt assembler and the regional canvas and you've got repeatable group shots without re-rolling the whole prompt.

    One caveat: it's a niche utility in a pack with 89 nodes. If you're not already building with the Prompt Builder stack, a plain LC Join Strings does the same joining job. The Subject Array only makes sense when your subjects are coming from LC Subject nodes anyway.

    CategoryLC123/prompt

    Inputs (8)

    NameTypeDefaultDescription
    subject_01optSTRINGSubject prompt slot 1. Leave unconnected to skip.
    subject_02optSTRINGSubject prompt slot 2. Leave unconnected to skip.
    subject_03optSTRINGSubject prompt slot 3. Leave unconnected to skip.
    subject_04optSTRINGSubject prompt slot 4. Leave unconnected to skip.
    subject_05optSTRINGSubject prompt slot 5. Leave unconnected to skip.
    subject_06optSTRINGSubject prompt slot 6. Leave unconnected to skip.
    subject_07optSTRINGSubject prompt slot 7. Leave unconnected to skip.
    subject_08optSTRINGSubject prompt slot 8. Leave unconnected to skip.

    Outputs (2)

    NameTypeDescription
    promptSTRINGβ€”
    countINTβ€”