MiniMax H3 Chain Orchestrator / 总时长自动分段 (EXP/T8)
Type a total duration, and this node decides every H3 segment for you
- chain_id
- segment_index
- length
- context_frames
- trim_start_seconds
- final_duration_seconds
- timeline_start_seconds
- timeline_end_seconds
- save_context
- is_final_segment
- prompt
- seed
- has_next
- progress
- plan_json
- report_json
- steps
- shift_video
- shift_audio
- sampler_name
- scheduler
- sampling_summary
MiniMax H3's generation window is fixed - it produces specific grid lengths, not an arbitrary "make me 73 seconds." So making a long video means running a chain of segments, and somebody has to decide how many segments, how long each is, and where to pick back up after a crash. That somebody is MiniMaxH3LongVideoOrchestratorT8, and it's the most hands-off node in the Long Video cluster: you give it a total duration and the render window, and it turns that into a full H3 timeline.
The orchestrator's job, in three pieces: convert the total duration into fixed-window segments on H3's 17n+5 frame grid, pick the first segment that hasn't been accepted yet (so an interrupted chain resumes instead of restarting), and - the detail that tells you this author thinks - block downstream sampling once the final manifest is complete, so you can't accidentally generate an extra segment past the end of your video. That last bit is the difference between a planner and a thing that loops forever.
Inputs you'll actually touch
total_duration_seconds- the whole video's length, up to 3600s. This is the number that drives everything.render_window_frames- 124 by default, and the tooltip is worth quoting: keep 124 for the current bounded-memory baseline; larger windows need separate VRAM validation. Don't crank this because "362 is more."context_frames- the head-context overlap between segments (5/22/39).global_promptandsegment_prompts_json- a base prompt for every segment, plus an optional JSON list to override per segment (each item can carry its ownprompt,seedandnote; unspecified segments fall back to the global prompt).base_seed+seed_policy- seeds per segment, with anincrementpolicy by default so segments don't share noise.steps,shift_video(12),shift_audio(3),sampler_name(dual_clock_euler),scheduler(native_flow) - the sampling contract, passed through so downstream nodes stay consistent.
The output farm
The orchestrator exposes the whole plan as wire-ready outputs: segment_index, length, context_frames, trim_start_seconds, final_duration_seconds, timeline_start_seconds / timeline_end_seconds, save_context, is_final_segment, prompt, seed, has_next, progress, plan_json, report_json, and the sampling parameters (steps, shift_video, shift_audio, sampler_name, scheduler, sampling_summary). In practice you feed the timing/context outputs into the chain's conditioning and context nodes and let has_next / progress tell you where you are.
Install and honest expectations
Install once for the whole pack: ComfyUI Manager → search MiniMax H3 Audio T8, or git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8 into ComfyUI/custom_nodes/, restart. No extra pip deps, no auto-downloaded weights - bring your own H3 DiT, Qwen3-VL CLIP and video/audio VAEs. Final stitching wants ffmpeg callable from PATH.
This is Experimental and T8-labeled, and the author's philosophy is fail-closed: it would rather stop you than produce a surprise. So when it "blocks" you after a completed manifest, that's a feature - you're done, not broken. And keep your 16GB-card expectations in check: the README is explicit that long chains on one card are the risky regime, and that a chain that runs end-to-end isn't a promise of seamless quality at every seam.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| chain_id | STRING | my_h3_long_video | — |
| total_duration_seconds | FLOAT | 60.000.04–3600 | — |
| render_window_frames | INT | 124124–362 | Fixed internal H3 window for every segment. Keep 124 for the current bounded-memory baseline; larger windows require separate VRAM validation. |
| context_frames | COMBO | 22 | 3 options: 5, 22, 39 |
| global_prompt | STRING | — | |
| segment_prompts_json | STRING | Optional list/object. Each item may contain prompt, seed and note. Unspecified segments use global_prompt and the selected seed policy. | |
| base_seed | INT | 1234567890–18446744073709550000 | — |
| seed_policy | COMBO | increment | 3 options: increment, fixed, hash_chain_segment |
| steps | INT | 41–1000 | — |
| shift_video | FLOAT | 12.000.01–100 | — |
| shift_audio | FLOAT | 3.000.01–100 | — |
| sampler_name | COMBO | dual_clock_euler | 45 options: dual_clock_euler, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39 |
| scheduler | COMBO | native_flow | 10 options: native_flow, simple, sgm_uniform, karras, exponential, ddim_uniform, +4 |
Outputs (22)
| 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 | — |
| is_final_segment | BOOLEAN | — |
| prompt | STRING | — |
| seed | INT | — |
| has_next | BOOLEAN | — |
| progress | FLOAT | — |
| plan_json | STRING | — |
| report_json | STRING | — |
| steps | INT | — |
| shift_video | FLOAT | — |
| shift_audio | FLOAT | — |
| sampler_name | COMBO | — |
| scheduler | COMBO | — |
| sampling_summary | STRING | — |