Nodes/Joy-LTX 2.5 (JoyAI-Echo x LTX-2.5)/JoyLTX Script (writer shots -> one LTX prompt)
ComfyUI Node

JoyLTX Script (writer shots -> one LTX prompt)

Restate the scene once, let LTX cut

By jlucasmcrell·Created 27 days ago·Updated 24 days ago· 2
JoyLTX Script (writer shots -> one LTX prompt)
    • shots_script
    • ltx_prompt
    • shot_count
    script
    ltx_shot_labelThen, without moving the camera,

    Here's the annoying thing about multi-shot scripts in LTX-land: two engines want opposite things. H3 chains separate generations, so it needs the scene description restated word-for-word in every block or the room drifts. LTX-2.5 renders everything in one pass and decides its own cut points, so feeding it ten verbatim copies of the same paragraph doesn't help - it buries the part that actually changes. JoyLTX Script is the adapter between those two worlds. You write the H3 form (the one a writer actually maintains), it emits both versions.

    The single required input is script, a multiline box of shots separated by --- on its own line, with the scene block repeated at the top of each shot. The node finds the longest common prefix across the blocks - exactly what "restated verbatim" produces - and that becomes the scene, stated once. The per-shot remainder becomes a beat list joined by ltx_shot_label, which defaults to "Then, without moving the camera,". That label is your one creative lever: it's how you tell LTX-2.5 whether the shots are one continuous take or separate setups, because the model is finding its own cuts. For hard cuts the tooltip suggests trying "Cut to:".

    There's a second, subtler pass in here that shows someone actually fought the failure mode: after the scene block comes off, shots 2..N usually share a "hold" preamble ("She sits exactly as she was, ... and the woman says,"), and if left in, it repeats once per shot and buries the beats. The node detects that shared prefix, strips it, and restates it once. It also handles CRLF and trailing whitespace that used to silently collapse an 8-shot script into one shot - the splitter is a regex that matches --- regardless of line endings, which is the difference between a working render and a confusing single shot.

    The outputs are shots_script (the input passed straight through, so you can feed the H3 chain too), ltx_prompt (the folded single-prompt version for LTX-2.5), and shot_count (how many shots it found - the number to sanity-check before you burn a render). If no verbatim scene block is detected, it passes the blocks through in order joined by the label rather than inventing structure.

    It ships with the JoyLTX25 pack and has no dependencies beyond the pack itself. If you're using the Take or Multishot canvases with a writer node upstream, this is the fold point that keeps the writing side engine-agnostic.

    CategoryJoyLTX

    Inputs (2)

    NameTypeDefaultDescription
    scriptSTRINGThe H3 form: shots separated by --- on its own line, with the scene block restated verbatim in each. Write it once, here, for either engine.
    ltx_shot_labeloptSTRINGThen, without moving the camera,Joins the per-shot beats in the LTX prompt. LTX-2.5 decides its own cut points, so this is how you tell it whether the shots are one continuous take or separate setups. For hard cuts try 'Cut to:'.

    Outputs (3)

    NameTypeDescription
    shots_scriptSTRING
    ltx_promptSTRING
    shot_countINT