ComfyUI Node

H3 Shot List

Turning one shot list into the four prompts a 3-shot chain needs

By jlucasmcrell·Created 21 days ago·Updated 2 days ago· 31
H3 Shot List
    • shot_1
    • shot_2
    • shot_3
    • shot_4
    • shot_count
    scriptShot 1 prompt goes here. --- Shot 2 prompt goes here. --- Shot 3 prompt goes here.
    shot_count0

    H3 Shot List (the node is H3ScriptSplit) is the thing that turns your written script into the per-shot prompts a chained H3 render actually consumes. You type one prompt per shot with --- on its own line between them, and this node hands each segment to the sampler as a separate shot - the boundary rules matter, because the join is the difference between a seamless take and a chain with clipped words at every seam.

    In the H3-Multishot workflows this node is what sits between your script box and the sampler. The chain always renders three segments and joins them into roughly a 30-second master, so this node is really about getting the right prompts into those three slots - including the "this is a continuation of the previous shot" case, which is where most chains fall apart.

    How it works

    It parses the script into blocks. --- on its own line is a shot boundary; a JSON {"prompts": [...]} is also accepted, which is how the LLM writer's output plugs straight in. Then the shot_count widget decides what to do with them:

    • 0 (default) - count from the script, one shot per block.
    • 3 - three scenes, using the first three blocks.
    • 2 - the third segment continues scene 2, which is the "two scenes, three segments" pacing trick.
    • 1 - one scene sustained for the full 30 seconds.

    If the script has more than three prompts, extras are dropped - the console tells you - because the graph is hard-wired to three segments. If it has fewer, the last prompt is repeated as a continuation so the graph still renders a full chain.

    The inputs that matter

    • script (multiline STRING) - the whole shot list. This is the one you actually write.
    • shot_count (INT, default 0) - the segment arithmetic above. Leave it 0 and let the script decide until you understand why a 2-shot list reads better.

    Outputs are shot_1 through shot_4 (a fourth is emitted so graphs that need an extra handle have one) plus shot_count. In practice you wire the three shots into the sampler's per-shot prompt inputs.

    Installing it

    It's in the ComfyUI-H3-Multishot pack:

    cd ComfyUI/custom_nodes
    git clone https://github.com/jlucasmcrell/ComfyUI-H3-Multishot
    

    Or search H3 Multishot in ComfyUI Manager. Requires ComfyUI v0.30.0+; the pack adds no Python dependencies of its own.

    Gotchas

    The README is blunt about the most common mistake: the prompt that starts each shot must restate the scene description word-for-word while changing the action - the model is separately instructed to preserve subject, room and colour temperature, so "keep everything the same" wins unless the action visibly moves the world on. And when it comes to the join, shots that end on the back of a head hand the next shot a stranger; faces should be readable at the end of each block. If your chain's shot 3 comes back a near-copy of shot 2, the fix is almost always in what you wrote between the --- lines, not in the node.

    Categoryconditioning/minimax

    Inputs (2)

    NameTypeDefaultDescription
    scriptSTRINGShot 1 prompt goes here. --- Shot 2 prompt goes here. --- Shot 3 prompt goes here.One prompt per shot, separated by --- on its own line. (JSON {"prompts": [...]} also accepted, for generated scripts.)
    shot_countINT00–3This workflow ALWAYS renders 3 segments and joins them (~30s master). 0 = count from the script. 3 = three scenes. 2 = the third segment continues scene 2. 1 = one scene sustained for the full 30s. Scripts with >3 prompts: extras are dropped (see console).

    Outputs (5)

    NameTypeDescription
    shot_1STRING
    shot_2STRING
    shot_3STRING
    shot_4STRING
    shot_countINT