MiniMax H3 Segment Planner / 长视频分段规划 (EXP/T8)
MiniMax H3 doesn't do 60-second clips, so it plans them in pieces
- chain_id
- segment_index
- length
- context_frames
- trim_start_seconds
- final_duration_seconds
- timeline_start_seconds
- timeline_end_seconds
- save_context
- report_json
A 60-second MiniMax H3 video is not one generation. H3 produces fixed grid lengths - roughly 22, 124, 362 frames at 24 fps - and it trains cleanly on those specific counts, not whatever "about 5 seconds" works out to. So a long clip gets built as a chain of segments, each one feeding its tail into the next for continuity. The MiniMaxH3LongVideoPlannerT8 node is the part of that chain that does the math: it takes a target duration and turns it into exactly one segment's worth of frames, with the overlap and trim metadata H3 actually needs.
Call it the thinking node of the Long Video cluster. The planner is retry-safe by design - it computes a plan, it doesn't render anything. You wire its outputs into the Long Video conditioning and context nodes, run the segment, save the AV tail, and move to the next segment index.
What it actually computes
The inputs that matter for a beginner:
new_duration_seconds- how long you want this segment to be (default 4.25s). The node snaps it onto H3's 17n+5 frame grid, so don't expect your exact number back;lengthreports what you actually got.context_frames- 5, 22 or 39. This is the head context taken from the previous segment. Segment 0 gets no overlap; every later segment renders a head context so the scene carries over instead of restarting.is_final_segment- only the final segment may trim a hidden tail to hit an exact requested duration, and it automatically disables its continuation checkpoint. Flip this on for the last piece of the chain.minimum_render_frames- keep the default 124 unless you've separately validated a bigger window; 124 is the current approximate H3 trained minimum.
The interesting outputs aren't the obvious ones. trim_start_seconds and final_duration_seconds tell you exactly how much of the rendered head to cut so the segment lines up on the world clock. timeline_start_seconds / timeline_end_seconds are the segment's position in the overall timeline, and save_context tells the save node whether this segment should write a tail for the next one. report_json is the author's own diagnostic dump - worth reading when a chain drifts out of sync.
How to use it
Install the pack once: in ComfyUI Manager search MiniMax H3 Audio T8, or cd ComfyUI/custom_nodes && git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 and restart. No extra pip dependencies - the pack ships none, and it won't auto-download H3 weights, so have the DiT, Qwen3-VL CLIP, video and audio VAE ready. Long Video final stitching wants ffmpeg on your PATH; most ComfyUI installs already have it.
Then you typically set the planner's segment_index to the same value as your ContextLoad and ContextSave nodes, all sharing one chain_id. The planner outputs feed the conditioning chain; the context_frames value must match what the ContextLoad node saved for the previous segment.
Where people get burned
The classic mistake is guessing the timeline by seconds instead of letting the node quantize. Set new_duration_seconds, read back length, and trust the grid - 4.25s in does not mean 4.25s out. Second gotcha: timeline_start_seconds defaulting to -1 means "derive the timeline from the quantized segment durations," which only works if earlier segments used the same settings. If you changed the window mid-chain, set it explicitly. And remember this whole Long Video system is marked Experimental - the pack is aggressively conservative by design (fail-closed defaults, ABSTAIN instead of guessing), which is exactly what you want from a node that's stitching latent timelines together.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| chain_id | STRING | my_h3_long_video | — |
| segment_index | INT | 00–99999 | — |
| new_duration_seconds | FLOAT | 4.250.04–900 | — |
| context_frames | COMBO | 22 | 3 options: 5, 22, 39 |
| minimum_render_frames | INT | 1245–3600 | Keep 124 for the current approximate H3 trained minimum. |
| timeline_start_seconds | FLOAT | -1.00-1–86400 | -1 derives the fixed-settings timeline from the quantized first and continuation segment durations; set it explicitly if earlier settings differ. |
| is_final_segment | BOOLEAN | false | Only the final segment may trim a hidden tail for an exact requested duration. Its continuation checkpoint is disabled automatically. |
Outputs (10)
| Name | Type | Description |
|---|---|---|
| chain_id | STRING | — |
| segment_index | INT | — |
| length | INT | — |
| context_frames | INT | — |
| trim_start_seconds | FLOAT | — |
| final_duration_seconds | FLOAT | — |
| timeline_start_seconds | FLOAT | — |
| timeline_end_seconds | FLOAT | — |
| save_context | BOOLEAN | — |
| report_json | STRING | — |