Nodes/comfyui-minimax-h3-audio-T8/MiniMax H3 Chain Orchestrator / 总时长自动分段 (EXP/T8)
ComfyUI Node

MiniMax H3 Chain Orchestrator / 总时长自动分段 (EXP/T8)

Type a total duration, and this node decides every H3 segment for you

By T8mars·Created 2 months ago·Updated about 8 hours ago· 1,158
MiniMax H3 Chain Orchestrator / 总时长自动分段 (EXP/T8)
    • 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
    ◄chain_idmy_h3_long_video►
    ◄total_duration_seconds60.00►
    ◄render_window_frames124►
    ◄context_frames22►
    ◄global_prompt►
    ◄segment_prompts_json►
    ◄base_seed123456789►
    ◄seed_policyincrement►
    ◄steps4►
    ◄shift_video12.00►
    ◄shift_audio3.00►
    ◄sampler_namedual_clock_euler►
    ◄schedulernative_flow►

    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_prompt and segment_prompts_json - a base prompt for every segment, plus an optional JSON list to override per segment (each item can carry its own prompt, seed and note; unspecified segments fall back to the global prompt).
    • base_seed + seed_policy - seeds per segment, with an increment policy 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.

    CategoryT8/MiniMax H3/Long Video/Experimental

    Inputs (13)

    NameTypeDefaultDescription
    chain_idSTRINGmy_h3_long_video—
    total_duration_secondsFLOAT60.00—
    render_window_framesINT124Fixed internal H3 window for every segment. Keep 124 for the current bounded-memory baseline; larger windows require separate VRAM validation.
    context_framesCOMBO223 options: 5, 22, 39
    global_promptSTRING—
    segment_prompts_jsonSTRINGOptional list/object. Each item may contain prompt, seed and note. Unspecified segments use global_prompt and the selected seed policy.
    base_seedINT1234567890–18446744073709550000—
    seed_policyCOMBOincrement3 options: increment, fixed, hash_chain_segment
    stepsINT41–1000—
    shift_videoFLOAT12.000.01–100—
    shift_audioFLOAT3.000.01–100—
    sampler_nameCOMBOdual_clock_euler45 options: dual_clock_euler, euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, +39
    schedulerCOMBOnative_flow11 options: native_flow, beta57, simple, sgm_uniform, karras, exponential, +5

    Outputs (22)

    NameTypeDescription
    chain_idSTRING—
    segment_indexINT—
    lengthINT—
    context_framesINT—
    trim_start_secondsFLOAT—
    final_duration_secondsFLOAT—
    timeline_start_secondsFLOAT—
    timeline_end_secondsFLOAT—
    save_contextBOOLEAN—
    is_final_segmentBOOLEAN—
    promptSTRING—
    seedINT—
    has_nextBOOLEAN—
    progressFLOAT—
    plan_jsonSTRING—
    report_jsonSTRING—
    stepsINT—
    shift_videoFLOAT—
    shift_audioFLOAT—
    sampler_nameCOMBO—
    schedulerCOMBO—
    sampling_summarySTRING—