Nodes/comfyui-minimax-h3-audio-T8/MiniMax H3 In-Node Long Video Loop / 节点内循环长视频 (Advanced EXP/T8)
ComfyUI Node

MiniMax H3 In-Node Long Video Loop / 节点内循环长视频 (Advanced EXP/T8)

H3 long video that renders every segment in a single execution

By T8mars·Created 2 months ago·Updated about 8 hours ago· 1,158
MiniMax H3 In-Node Long Video Loop / 节点内循环长视频 (Advanced EXP/T8)
  • model
  • clip
  • video_vae
  • audio_vae
  • drive_audio
  • final_audio
  • first_frame
  • last_frame
  • persistent_identity_image
  • ref_images
  • ref_videos
  • ref_video_audios
  • ref_audios
  • long_video_sampling_plan
  • semantic_bridge
  • video
  • video_path
  • manifest_path
  • completed_segments
  • status
  • report_json
◄chain_idmy_h3_in_node_long_video►
◄total_duration_seconds30.00►
◄width736►
◄height416►
◄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►
◄task_typeauto►
◄context_audiovideo_and_audio►
◄audio_modenative►
◄audio_denoise_strength0.35►
◄add_source_as_referencetrue►
◄prompt_primary_audio_ordinal0►
◄strict_prompt_tagstrue►
◄ref_image_sizematch►
◄reference_video_policyofficial_2_to_15s►
◄first_frame_reusesegment0_only►
◄persistent_identity_strategysingle_reference►
◄persistent_identity_interval1►
◄resume_existingtrue►
◄filename_prefixH3_In_Node_Long_Video►
◄audio_seam_policycosine_bridge►
◄bridge_ms5.0►
◄bit_depth8►
◄crf18►
◄model_idunknown►

MiniMax H3 generates clips in bounded windows - the model's native length tops out around 15 seconds, and the pack's baseline window is 124 frames. Anything longer means stitching segments, and the old way of doing that in ComfyUI is a queue of separate runs with you babysitting each one. This node is the "fire and forget" alternative the README points new long-video users at: one execution generates every segment strictly in sequence, accepts each completed segment atomically, survives interruption by resuming from disk, and streams the accepted files into one final video. You queue it once, go make coffee, and come back to a finished clip.

The key design decisions are in the description, so read them carefully. Segments run strictly in sequence - deterministic, no parallel VRAM gambling. Each completed segment is atomically accepted before the next starts, which is how interruption recovery works: what's on disk is trusted and complete. And critically, this route intentionally has no per-segment human review gate. If you want to eyeball every segment before it's committed, the pack says plainly to use the existing Background/Accepted workflow instead. This node is for people who trust the process; the review path is for people who don't.

The inputs that matter

The schema is big because it's a full pipeline in one node. The ones you'll actually touch:

  • model, clip (the native H3 Qwen3-VL CLIP), video_vae, audio_vae - the usual four
  • chain_id - names this job; resume keys off it, so don't change it mid-run
  • total_duration_seconds (30) - how long the finished video is; segments are derived from this and the window
  • width / height (736×416) and render_window_frames (124 baseline) - canvas and per-segment length
  • global_prompt and segment_prompts_json - the story; per-segment overrides let you change prompt/seed per shot
  • base_seed + seed_policy (increment) - how seeds roll across segments
  • steps (4), shift_video (12), shift_audio (3), sampler_name (dual_clock_euler), scheduler (native_flow) - the sampling stack
  • audio_mode, audio_denoise_strength (0.35) - sound handling, including lock_source to preserve original audio
  • resume_existing (true) - resume only when the saved job contract matches; disable to force a fresh chain

Outputs: video, video_path, manifest_path, completed_segments (INT - how far you got, handy after a resume), status, and report_json.

Installing it

Part of the T8mars/comfyui-minimax-h3-audio-T8 pack - search "MiniMax H3 Audio T8" in ComfyUI Manager, install, restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8

Update ComfyUI itself first (recent core: comfy_api.latest, comfy.weight_adapter, comfy.patcher_extension, comfy.ldm.minimax); requirements.txt is intentionally empty. The canonical workflow is 04-long-video/In_Node_Long_Video_Loop - drag it in, replace the model and media, run.

Where people get burned

Two traps. First, the seed contract: base_seed + increment means a rerun doesn't give you the same frames unless the contract (prompts, LoRAs, sampling) is identical - which is also the condition for resume_existing to accept a resume. Change anything mid-run and the resume logic correctly refuses. Second, VRAM: the README's minimum_free_vram_mib-style floors exist for a reason; this node holds a lot in flight, so drop resolution/frame count before blaming the loop. And don't stack it with other nodes that own the sampler or MODEL forward path. FFmpeg on PATH matters too - the final mux and streaming into one video is where the "one file at the end" promise gets fulfilled.

CategoryT8/MiniMax H3/Long Video/Experimental

Inputs (49)

NameTypeDefaultDescription
modelMODEL—
clipCLIPNative MiniMax H3 Qwen3-VL CLIP.
video_vaeVAEMiniMax H3 video VAE.
audio_vaeVAEMiniMax H3 audio VAE.
chain_idSTRINGmy_h3_in_node_long_video—
total_duration_secondsFLOAT30.00—
widthINT73632–16384—
heightINT41632–16384—
render_window_framesINT124Each segment is sampled independently with this fixed H3 window. 124 is the bounded-memory baseline.
context_framesCOMBO223 options: 5, 22, 39
global_promptSTRING—
segment_prompts_jsonSTRINGOptional list/object. Each segment may override prompt, seed and note.
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
task_typeCOMBOauto7 options: auto, T2VA, I2VA, FL2VA, L2VA, Ref2VA, +1
context_audioCOMBOvideo_and_audio2 options: video_and_audio, video_only
audio_modeCOMBOnative4 options: lock_source, remix_source, reference_only, native
audio_denoise_strengthFLOAT0.350–1—
add_source_as_referenceBOOLEANtrue—
prompt_primary_audio_ordinalINT00–9—
strict_prompt_tagsBOOLEANtrue—
ref_image_sizeCOMBOmatch2 options: match, max
reference_video_policyCOMBOofficial_2_to_15s2 options: official_2_to_15s, model_minimum
first_frame_reuseCOMBOsegment0_only2 options: segment0_only, persistent_identity_reference
persistent_identity_strategyCOMBOsingle_reference2 options: single_reference, scene_plus_identity
persistent_identity_intervalINT11–32—
resume_existingBOOLEANtrueResume only when the saved job contract matches. Disable to require an empty chain_id.
filename_prefixSTRINGH3_In_Node_Long_Video—
audio_seam_policyCOMBOcosine_bridge2 options: cosine_bridge, none
bridge_msFLOAT5.00–50—
bit_depthCOMBO82 options: 8, 10
crfINT180–51—
model_idSTRINGunknown—
drive_audiooptAUDIO—
final_audiooptAUDIO—
first_frameoptIMAGE—
last_frameoptIMAGE—
persistent_identity_imageoptIMAGE—
ref_imagesoptCOMFY_AUTOGROW_V3—
ref_videosoptCOMFY_AUTOGROW_V3—
ref_video_audiosoptCOMFY_AUTOGROW_V3—
ref_audiosoptCOMFY_AUTOGROW_V3—
long_video_sampling_planoptH3_T8_LONG_VIDEO_SAMPLING_PLANOptional Tail/manual second-pass plan. Disconnect to preserve the original loop sampler and cache contract.
semantic_bridgeoptT8_SEMANTIC_BRIDGE—

Outputs (6)

NameTypeDescription
videoVIDEO—
video_pathSTRING—
manifest_pathSTRING—
completed_segmentsINT—
statusSTRING—
report_jsonSTRING—