Nodes/IAMCCS-nodes/IAMCCS Cine Shot Planner
ComfyUI Node

IAMCCS Cine Shot Planner

Decide where your reference frames land in time, not just what they show

By IAMCCS·Created 11 months ago·Updated 8 days ago· 113
IAMCCS Cine Shot Planner
  • audio
  • plan_json
  • total_frames
  • total_seconds
  • frame_1
  • frame_2
  • frame_3
  • frame_4
  • frame_5
  • frame_6
  • frame_7
  • frame_8
  • strength_1
  • strength_2
  • strength_3
  • strength_4
  • strength_5
  • strength_6
  • strength_7
  • strength_8
  • report
duration_sourcemanual
duration_seconds8.00
fps24.00
total_frames_override0
ltx_round_modeup
presetshot_reverse_shot
reference_count2
position_moderatio
positions0 0.30 0.58 -1
strengths0.95 0.78 0.72 0.90
min_spacing_frames8

Here's the thing about reference-conditioned video generation: it's not just which reference frames you feed, it's when they land. Feed a reference at frame 10 and the model treats it as an anchor; feed it at frame 90 and it's more of a destination. Cine Shot Planner is the node that answers the "when" - it takes up to eight reference positions and strengths and computes exactly which frame each one fires at, plus the total duration math.

It's a planner in the strict sense: no conditioning in, no images in. You give it timing and it gives you numbers.

The inputs that matter:

  • duration_source - manual (default), audio, or max_manual_audio. If you feed an optional audio input, audio derives duration from the audio's length and max_manual_audio takes the longer of the two.
  • duration_seconds, fps (default 24), and total_frames_override - the timeline. The override, if nonzero, wins.
  • ltx_round_mode - up, nearest, down, or none. LTX wants frame counts rounded to 8n+1, and this is where you decide which way. (This is the earlier, simpler version of the up_8n_plus_1 modes on the newer planners.)
  • preset - shot_reverse_shot, room_coverage, two_reference_dialogue, beat_markers, or custom. Presets seed sensible reference timings for common dialogue scenes; custom lets you set everything by hand.
  • reference_count - how many references (1–8) your plan uses.
  • position_mode - ratio, seconds, or frames. How to interpret the positions list. With ratio (default) positions are 0–1 fractions of the timeline.
  • positions and strengths - multiline lists, one per line. The default (0 / 0.30 / 0.58 / -1) reads: reference at the start, at 30%, at 58%, and "-1" as a stop marker.
  • min_spacing_frames (default 8) - a floor on how close two references can be, so you don't stack them on the same frame.

The outputs. plan_json (the whole plan as JSON), total_frames, total_seconds, and then frame_1 through frame_8 with a matching strength_1 through strength_8 - the resolved frame numbers and strengths for each reference slot, ready to wire into whatever consumes timed references (the shotboard/FLF path, or a manual setup). report describes the plan.

Install. Same pack, same drill: ComfyUI Manager (search "IAMCCS"), or git clone https://github.com/IAMCCS/IAMCCS-nodes into custom_nodes, restart. ComfyUI ≥ 0.3.0, Python ≥ 3.12. The audio-duration modes need an audio input and ideally the pack's audio helper nodes; nothing else needs downloading.

Gotchas. The positions list format trips people up - with ratio mode, lines are fractions, not frame numbers, and -1 is the terminator, not a position. If your plan comes out with weird totals, check whether you meant seconds or frames mode. And this node only computes; it doesn't inject anything. It's upstream of the nodes that actually condition the sampler, so an unconnected plan_json is just a nice number printout.

CategoryIAMCCS/Cine/02 Single Generation

Inputs (12)

NameTypeDefaultDescription
duration_sourceCOMBOmanual3 options: manual, audio, max_manual_audio
duration_secondsFLOAT8.000.01–36000
fpsFLOAT24.000.001–240
total_frames_overrideINT00–10000000
ltx_round_modeCOMBOup4 options: up, nearest, down, none
presetCOMBOshot_reverse_shot5 options: shot_reverse_shot, room_coverage, two_reference_dialogue, beat_markers, custom
reference_countINT21–8
position_modeCOMBOratio3 options: ratio, seconds, frames
positionsSTRING0 0.30 0.58 -1
strengthsSTRING0.95 0.78 0.72 0.90
min_spacing_framesINT80–100000
audiooptAUDIO

Outputs (20)

NameTypeDescription
plan_jsonSTRING
total_framesINT
total_secondsFLOAT
frame_1INT
frame_2INT
frame_3INT
frame_4INT
frame_5INT
frame_6INT
frame_7INT
frame_8INT
strength_1FLOAT
strength_2FLOAT
strength_3FLOAT
strength_4FLOAT
strength_5FLOAT
strength_6FLOAT
strength_7FLOAT
strength_8FLOAT
reportSTRING