MiniMax H3 Motion Director
The H3 Node That Turns a Video Project Into a Timeline, Not a Wall of Nodes
- model
- video_vae
- audio_vae
- clip
- bd_grp_sample
- bd_grp_motion
- bd_grp_advanced
- sampler
- sigmas
- bd_grp_perf
- bd_grp_experimental
- director_inputs
- images
- audio
- fps
Fixing shot 3 of a five-shot video should not mean re-rendering shots 1, 2, 4 and 5. That's the whole reason MiniMax H3 Motion Director exists - and it's the thing most other H3 workflows in ComfyUI get wrong.
This is the headline node of the j955229/ComfyUI-MiniMax-H3-Motion-Director pack. Despite the film-studio name, it's a single node that runs the open MiniMax H3 weights locally: no API, no key, nothing to subscribe to. What you get instead of one H3 sampling chain per shot is a timeline inside the node - T2V, I2V, FL2V, R2V, V2V and RV2V segments mixed however you like, each with its own prompt, duration and media, plus Selective Run so you only regenerate the shots that actually need another pass. The author calls it "one Director, one shot to a complete multi-segment video project," and that's an honest description.
How it works
The clever bit is that the Director isn't a new model. It compiles every segment into an existing MiniMax H3 task and hands it to ComfyUI's official MiniMaxH3ImageToVideo / MiniMaxH3ReferenceToVideo conditioning nodes (tokenization happens internally). "Mixed" is a timeline concept, never something you send to the model.
The continuity machinery is where the real engineering went. With Motion Context enabled, each segment's final exported frames become real H3 motion history for the next one - context_length snaps to H3-valid runs of 1, 5, 22 or 39 frames. Audio Context carries the previous segment's generated audio forward, and Color Re-anchor tries to stop cumulative color drift. A Segment Result can reuse a decoded frame from an earlier segment as a later I2V start image or FL2V first/last frame. It's a lot of moving parts, but the defaults are sane and the per-boundary controls on the segment cards are optional.
Post-processing lives here too: a Global Refine pass (second sampling, optional upscale, and on supported NVIDIA hardware, RTX VSR or Deblur) and a Face Refine path that detects, crops and regenerates faces. If either stage fails, the Director keeps the first-pass result instead of discarding a finished generation - a genuinely thoughtful touch.
The inputs that matter
You won't touch most of the schema. The ones a beginner actually sets:
- model / video_vae / audio_vae / clip - feed these from ComfyUI's standard loaders:
UNETLoaderfor the H3 UNET, theminimax_h3_video_vae, theminimax_h3_audio_vae(required for r2v / v2v / rv2v), and aCLIPLoaderwith typeminimax(qwen3vl). Expect the model alone to be on the order of 42 GB, so this is not a light install. - task_type - the seven-way enum: t2v, i2v, fl2v, r2v, v2v, rv2v, or
mixed. - global_prompt - the prompt, sent straight to the H3 conditioning node.
- frame_rate (24 - what H3 was trained at), width/height (864×480 default), total_frames (snaps to MiniMax's 17k+5 grid; 124 ≈ 5 seconds).
- steps (25, the official template), sampler_name (
res_multistep), scheduler (simple), shift_video (12) / shift_audio (3).
The optional sampler / sigmas sockets let you swap in an external ComfyUI sampling chain instead of the internal one, and clear_vram_between_segments releases models between segments - slower, but a stability win on tight VRAM.
Outputs are exactly three and keep it friendly for downstream nodes: images (IMAGE list), audio (AUDIO list), and fps (FLOAT). The node is an OUTPUT_NODE, so it can sit at the end of a graph and still expose those to whatever follows.
Install
ComfyUI Manager: search "MiniMax H3 Motion Director". Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/j955229/ComfyUI-MiniMax-H3-Motion-Director.git
cd ComfyUI-MiniMax-H3-Motion-Director
python -m pip install -r requirements.txt
Restart ComfyUI completely; if an update changes frontend files, hard-refresh the browser. Python deps are light (opencv-python-headless, imageio-ffmpeg, scenedetect), but you need a recent ComfyUI with official MiniMax H3 support and the H3 model files above. The pack also registers its own folders for face-detection (ultralytics), SAM, and latent upscale models.
Where people get burned
- Do not load the standalone
ComfyUI-H3-Motion-Contextpack alongside this one. Motion Context is integrated here, and running both fights each other. - Forgot the audio VAE on an r2v/v2v/rv2v job - it won't run. It's only optional for t2v/i2v/fl2v.
- Continuity is real but not magic: the README is upfront that H3 can still drift in lighting, motion or identity across boundaries.
- The licensing asterisk: H3's community license geofences the weights out of the US, EU, UK and South Korea - outputs included. It doesn't call an API, but "runs locally" and "legal to run in your country" are different questions here.
If you're doing single-shot work, a plain H3 workflow is simpler. The Director pays for itself the moment you're stitching shots together.
Inputs (36)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | MiniMax H3 UNET (UNETLoader). | |
| video_vae | VAE | MiniMax H3 video VAE (minimax_h3_video_vae). | |
| audio_vae | VAE | MiniMax H3 audio VAE (minimax_h3_audio_vae). Required for r2v / v2v / rv2v. | |
| clip | CLIP | CLIPLoader type=minimax (qwen3vl). | |
| task_type | COMBO | t2v — 文生视频(Text to Video) | MiniMax H3 Director 支持 t2v / i2v / fl2v / r2v / v2v / rv2v / mixed。Mixed 为逐段元模式;其 Segment 会编译成现有 H3 task,不会把 mixed 送进模型。提示词直接送入 MiniMaxH3ImageToVideo 或 MiniMaxH3ReferenceToVideo(内部 tokenize)。 |
| global_prompt | STRING | A cinematic scene with natural motion and synchronized ambience | User prompt — sent directly to MiniMaxH3ImageToVideo / ReferenceToVideo. r2v: <Picture 1>. v2v: source-timeline edit (<Video 1>). rv2v: source timeline + reference images (<Video 1> + <Picture N>). mixed: each segment compiles to an existing H3 task. |
| bd_grp_sample | BDGROUP | 采样设置 | — |
| cfg | FLOAT | 1.000–30 | CFG for KSampler. |
| seed | INT | 00–18446744073709550000 | Random seed for sampling. |
| frame_rate | FLOAT | 24.001–240 | Timeline / output FPS (H3 trained at 24). |
| width | INT | 86432–8192 | — |
| height | INT | 48032–8192 | — |
| ref_max_size | INT | 86432–8192 | — |
| total_frames | INT | 1245–100000 | Frame count at 24 fps; snapped to MiniMax 17k+5 grid (124 ≈ 5s). |
| timeline_data | STRING | Internal — video, segments, refs (populated by UI). | |
| bd_grp_motionopt | BDGROUP | Motion Context | — |
| motion_context_enabledopt | BOOLEAN | true | Use the previous segment's final exported frames as real H3 motion history. For segment N>1 this replaces the old single-last-frame continuity handoff. |
| context_lengthopt | INT | 221–39 | Previous exported frames carried into the next segment. Video mode uses H3-valid runs 1, 5, 22 or 39 and snaps down when a shorter value is entered. |
| source_overlap_framesopt | INT | 50–5 | V2V/RV2V only. 5 runs an independent H3-native bridge across each eligible boundary: five original source frames are conditioning only, generated frames at B-2/B+2 are anchors, and regenerated B-1/B/B+1 replace the hard cut. Visual Motion Context is skipped. 0 disables Source Bridge. Mixed v1 always forces this to 0 because its Source Videos are segment-local. |
| audio_context_enabledopt | BOOLEAN | true | Continue the previous segment's final exported generated audio. Automatically disabled for source or mute audio mode. |
| color_reanchor_enabledopt | BOOLEAN | false | Re-anchor incoming Motion Context color statistics to a stable reference to reduce cumulative color drift. |
| bd_grp_advancedopt | BDGROUP | 高级采样 | — |
| stepsopt | INT | 251–200 | Sampling steps — official template: 25. |
| sampler_nameopt | COMBO | res_multistep | Internal mode sampler. Official template: res_multistep. |
| scheduleropt | COMBO | simple | Official template: BasicScheduler simple. |
| shift_videoopt | FLOAT | 12.000.01–100 | MiniMaxH3SigmaShift shift_video. |
| shift_audioopt | FLOAT | 3.000.01–100 | MiniMaxH3SigmaShift shift_audio. |
| sampleropt | SAMPLER | External mode: connect KSamplerSelect or MiniMax-H3 Turbo Sampler. | |
| sigmasopt | SIGMAS | External mode: connect BasicScheduler or another standard ComfyUI scheduler built from the same H3 MODEL. | |
| bd_grp_perfopt | BDGROUP | 性能 | — |
| clear_vram_between_segmentsopt | BOOLEAN | true | 段间清理显存:每段结束后卸载模型并清空 CUDA 缓存。 |
| export_source_imagesopt | BOOLEAN | false | 输出 source_images(时间轴原片帧对比)。默认关以节省内存。 |
| bd_grp_experimentalopt | BDGROUP | Experimental | — |
| pin_renorm_enabledopt | BOOLEAN | false | Re-normalize only the previous segment's video latent tail to the first handoff std of the current visual chain. Does not modify audio, source video, Picture references, or RGB Color Re-anchor. |
| postprocess_configopt | STRING | Internal Director post-processing and Output Preview configuration. | |
| director_inputsopt | MMX_MOTION_DIR_INPUTS | Unified external prompts/assets. Connect MiniMax H3 Motion Director Inputs. Mode and group count are controlled by this Director. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| audio | AUDIO | — |
| fps | FLOAT | — |