Nodes/ComfyUI MiniMax H3 Flow Director/MiniMax H3 Flow Director
ComfyUI Node

MiniMax H3 Flow Director

Chain MiniMax H3 clips into multi-minute videos without OOM

By AlonAshken·Created 2 months ago·Updated 2 months ago· 29
MiniMax H3 Flow Director
  • clip
  • vae
  • sampler
  • sigmas
  • model
  • model_ref2va
  • audio_vae
  • noise
  • ref_images
  • first_frame_override
  • model
  • positive
  • latent
  • images
  • audio
  • fps
  • width
  • height
  • length
  • prompt
  • last_image
  • retake_info
◄timeline_data►
◄global_prompt►
◄start_second0.00►
◄end_second5.00►
◄duration_seconds5.00►
◄start_frame0►
◄end_frame120►
◄duration_frames120►
◄use_custom_audiofalse►
◄use_custom_motiontrue►
◄inpaint_audiotrue►
◄local_prompts►
◄segment_lengths►
◄frame_rate24►
◄display_modeseconds►
◄guide_strength►
◄custom_width0►
◄custom_height0►
◄resize_methodcrop►
◄divisible_by32►
◄img_compression0►
◄override_audiofalse►
◄ref_image_sizematch►
◄shift_video12.00►
◄shift_audio3.00►
◄ref_image_notes►
◄start0.00►
◄end0.00►
◄duration0.00►
◄width0►
◄height0►

MiniMax H3 is genuinely good at generating video locally - but it tops out at a 15-second clip. If you want a minute of footage, or five, the honest answer was "run it on the API" or "stitch in an editor and pray the seams aren't visible." This node is the "no" to both of those. It's a visual timeline director that cuts your long video into small chunks, generates them one at a time, and glues the blocks back together so the joins are invisible - all while keeping VRAM flat no matter how long the timeline gets.

The trick is chaining instead of sampling. Each block on the timeline gets sampled and decoded on its own, so a 1000-frame render never actually exists in memory at once. The decoded last frame of block i is automatically fed back in as the first frame of block i+1 - no manual keyframe handoff - and the duplicate boundary frame is dropped so playback doesn't stutter at the seam. Drop an image onto any later block and it becomes a destination frame the model transitions toward, which is the cleanest way to steer a long scene: the H3 clip morphs into your target instead of you hoping the prompt holds.

The author's own framing is the right one: keep each chunk at 5–10 seconds, chain as many as you like, and control the direction with text and target images rather than one giant prompt.

What you actually plug in

The node is a wrapper around ComfyUI's native H3 pipeline, so the required inputs are the H3 parts you already need for a single clip: the clip (MiniMax's Qwen3-VL text encoder), the vae (video VAE), a sampler from KSamplerSelect, and sigmas from BasicScheduler. Optional but important:

  • model vs model_ref2va - the fl2va weights for plain text/image-to-video, or the ref2va weights when the timeline toolbar has "Refs ON". Only one is actually used per run; the node checks which you need.
  • audio_vae - wire the H3 audio VAE in for joint audio generation and decoding. Skip it and you still get video; audio is then mixed from any audio tracks you dropped on the timeline.
  • global_prompt - conditions every block (style, atmosphere, characters). This is the "keep it coherent" lever; the per-block prompts live in the timeline editor.
  • noise from RandomNoise, plus the power-user knobs (shift_video, shift_audio, custom canvas, divisible_by, first_frame_override).

You don't hand-edit timeline_data - that's the JSON state the built-in editor writes automatically. Drag blocks, drop images and audio onto them, and the node eats the state.

The outputs are the payoff: images (full concatenated decoded frames at 24 fps), audio (stereo at 44.1 kHz), and fps (always 24.0). Wire all three straight into a VHS Video Combine and you're done - no manual assembly.

Installing it

ComfyUI Manager → search "MiniMax H3 Flow Director", or:

cd ComfyUI/custom_nodes
git clone https://github.com/AlonAshken/ComfyUI-MiniMaxH3-FlowDirector.git

Restart ComfyUI. The requirements (av, numpy, Pillow, torch) are usually already in your environment. The real dependency isn't Python - it's ComfyUI itself. This node imports comfy_extras/nodes_minimax_h3.py, the native H3 support that landed with day-zero H3 support, so you need a current ComfyUI and the H3 model files (fl2va, ref2va, the Qwen3-VL text CLIP, video VAE, audio VAE). Expect roughly 42 GB for the full weights, and note the H3 Community License excludes the US, EU, UK and South Korea from the local-weights path - if you're in one of those, check your terms before downloading.

Where people get burned

First: chunking keeps VRAM constant, it doesn't shrink the model. A 33B model on a card that can't hold it will still fail - the node just means the 12th block won't be the one that OOMs. Second, if you see the "update ComfyUI" style error about nodes_minimax_h3.py not being found, that's a stale ComfyUI, not a broken install. Third, it's a brand-new pack with zero traction so far - expect rough edges and a changelog that moves. For a first run, load the included MINIMAX_H3_FLOW_DIRECTOR_ULTRA_TURBO.json workflow and copy its wiring rather than guessing.

CategoryMiniMax H3

Inputs (41)

NameTypeDefaultDescription
clipCLIPMiniMax Qwen3-VL text encoder.
vaeVAEminimax_h3_video_vae.
samplerSAMPLERSampler from KSamplerSelect.
sigmasSIGMASSigmas from BasicScheduler.
timeline_dataSTRINGJSON state of the timeline editor (auto-managed).
modeloptMODELfl2va weights (minimax_h3_fl2va_*), used when toolbar is 'Refs OFF'.
model_ref2vaoptMODELref2va weights (minimax_h3_ref2va_*), used when toolbar is 'Refs ON'.
audio_vaeoptVAEminimax_h3_audio_vae for joint audio generation and decoding.
noiseoptNOISENoise from RandomNoise.
global_promptoptSTRINGConditions all blocks: style, atmosphere, characters.
start_secondoptFLOAT0.000–10000—
end_secondoptFLOAT5.000–10000—
duration_secondsoptFLOAT5.000.1–10000—
start_frameoptINT00–1000000—
end_frameoptINT1201–1000000—
duration_framesoptINT1201–1000000—
use_custom_audiooptBOOLEANfalse—
use_custom_motionoptBOOLEANtrue—
inpaint_audiooptBOOLEANtrue—
local_promptsoptSTRING—
segment_lengthsoptSTRING—
frame_rateoptFLOAT241–240—
display_modeoptCOMBOseconds2 options: frames, seconds
guide_strengthoptSTRING—
custom_widthoptINT00–8192—
custom_heightoptINT00–8192—
resize_methodoptCOMBOcrop5 options: maintain aspect ratio, stretch to fit, pad, pad green, crop
divisible_byoptINT321–256—
img_compressionoptINT00–100—
override_audiooptBOOLEANfalse—
ref_image_sizeoptCOMBOmatch2 options: match, max
shift_videooptFLOAT12.000.01–100—
shift_audiooptFLOAT3.000.01–100—
ref_imagesoptIMAGEExtra reference images for ref2va.
ref_image_notesoptSTRING—
startoptFLOAT0.00—
endoptFLOAT0.00—
durationoptFLOAT0.00—
widthoptINT0—
heightoptINT0—
first_frame_overrideoptIMAGEOptional external image to seed Block 0 (overriding timeline image).

Outputs (12)

NameTypeDescription
modelMODELPatched model output.
positiveCONDITIONINGConditioning output.
latentLATENTLatent output.
imagesIMAGEFull concatenated and decoded video frames (24 fps). Wire directly into VHS Video Combine.
audioAUDIOFull concatenated and decoded stereo audio waveform (44.1 kHz). Wire directly into VHS Video Combine.
fpsFLOATAlways 24.0 — MiniMax H3 native output rate. Wire into VHS Video Combine.
widthINTOutput canvas width.
heightINTOutput canvas height.
lengthINTTotal rendered frame count.
promptSTRINGThe compiled storyboard prompt.
last_imageIMAGELast frame of the final block.
retake_infoSTRINGRetake window info.