MiniMax H3 Plan Frames
Look up the planned first and last keyframes for a shot
- cine_linx
- first_frame
- last_frame
- has_first
- has_last
- report
Every shot in the IAMCCS Shotboard plan can carry an explicit first frame and last frame - the keyframes that define where the camera and subject start and end. Plan Frames is the lookup node for them: give it the shot plan and a segment index, and it returns the two planned keyframe images, plus flags telling you which ones actually exist. It's the most boring node in the H3 pack, and that's exactly why it's useful.
What it does
The node reads the shot plan from the cine_linx pipe (IAMCCS_SUPERNODE_LINX), pulls the chunk for your segment_index, and loads the first_image and last_image paths from that chunk. If a path is missing it substitutes a black frame at the plan's width/height, and sets has_first / has_last to 0 so downstream logic knows the frame is a placeholder, not a real keyframe. If the plan references a bridge as the first frame, has_first reports 0 there too - the real frame hasn't been produced yet.
That's the entire mechanism. No sampling, no conditioning, no file writing. It's a typed, graph-friendly accessor into the plan JSON, which is otherwise buried in a serialized pipe that you can't inspect directly in the UI.
When you'd use it
Hand-building an H3 graph, mostly. If you want to build your own conditioning branch - rather than letting the Shotboard Backend do it for you - Plan Frames gives you the exact keyframes the plan intended, so your hand-rolled branch stays in sync with the editorial timeline instead of drifting off it. It's also a genuinely handy debugging node: wire it to a preview and you can visually check whether your shot plan actually contains the keyframes you think it does, before you burn an hour rendering something built on a missing image.
A pattern that works: connect first_frame and last_frame into a conditioning backend's first_frame_override / last_frame_override inputs, or feed has_first / has_last into a switch that decides whether to run an i2va/fl2va pass or fall back to plain text-to-video.
Inputs and outputs
Inputs are just cine_linx and segment_index. Outputs are first_frame, last_frame, has_first (INT 0/1), has_last (INT 0/1), and report - the report tells you in plain text whether each frame is a real plan image or a placeholder, which beats squinting at 0/1 flags when you're debugging at 2am.
Installing it
ComfyUI Manager (search "IAMCCS") or git clone https://github.com/IAMCCS/IAMCCS-nodes.git into custom_nodes, restart. No extra dependencies - it's pure plan lookups and image loads.
Gotchas
Two things trip people up. First, black frame ≠ missing keyframe visually, so trust has_first / has_last over what the preview shows - a legitimately dark frame and a placeholder look identical. Second, this node reads the plan, not the render history. It won't give you the last frame that was actually generated; that's the Last-Frame Bridge's job. Plan Frames is about intent; the bridge is about reality.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| cine_linx | IAMCCS_SUPERNODE_LINX | — | |
| segment_index | INT | 00–1000000 | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| first_frame | IMAGE | — |
| last_frame | IMAGE | — |
| has_first | INT | — |
| has_last | INT | — |
| report | STRING | — |