MiniMax H3 • Long Media Setup
The one node that decides what your H3 video will be
- clip
- vae
- audio_vae
- clip_plan
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- video_1
- video_2
- video_3
- audio_1
- audio_2
- audio_3
- positive
- long_media_av
- long_media_plan
- duration_seconds
- passes
- report
This is where every long H3 run starts. Long Media Setup is the orchestrator: it takes your prompt, duration, references and workflow mode, builds the multi-segment plan, encodes the source media into the AV latent, and hands the whole thing to the sampler. If you're new to this pack, this is the node you'll stare at longest, so it's worth understanding the handful of settings that actually change your output.
The core inputs
clip,vae,audio_vae- the H3 text encoder, video VAE and audio VAE. Three separate model files; the audio VAE is easy to forget and the pack needs it even for silent video.prompt- the text. There's also a direct STRING socket if you want to drive it dynamically.width,height,video_fps(24) - canvas and frame rate.manual_duration(10 s) andduration_source(auto/manual/audio/video/longest_input) - where the final length comes from. Pickaudioand a connected reference and the clip lengths itself to the soundtrack.segment_seconds(5) - the amount of new visible timeline per segment. The 22-frame continuation overlap is extra hidden context and does not count against this. This is your main VRAM lever: smaller segments = lower peak memory.overlap_frames(22) - continuation context between segments, snapped to the H3 grid.reference_budget(low/medium/high/max) - how aggressively reference payloads are limited. On constrained cards start atlow; big Picture/Video/Audio references balloon the packed sequence and can dominate VRAM.audio_mode-auto(legacy),preserve(restore source audio at output),generate(H3 makes the audio),reference_only(input as reference, output generated),preserve_reference(input as timing reference, source restored), andlip_sync(source audio drives timing, untouched track restored). If you're dubbing or matching a soundtrack, this is the input.
Workflow modes - the ones that matter
workflow_mode is the decision that shapes everything:
hybrid_auto(default) -image_1is the opening frame anchor; connectimage_2and it becomes the final frame anchor; the rest are Picture references.segmented_continuation- auto-splits one continuous prompt into equal fixed segments. Good for VRAM control and stability with a single prompt. It does not map different actions to different time points - that's what multiclip is for.multiclip- uses the Long Media Planner; every clip gets its own prompt, duration and optional seed. This is the one for "different shots at different times."ref2va_full- all images are plain<Picture N>references, no anchors.video_ref_edit-video_1carries motion/camera/composition,image_1..9do identity/style replacement. If the source video has a soundtrack, load and connect it toaudio_1separately - an IMAGE connection never carries audio.loop-image_1becomes both first and last frame for seam-friendly loops.
One trap the README calls out: if you connect a clip_plan (Planner) while workflow_mode is anything other than multiclip, Setup silently ignores it. The Planner is authoritative only in multiclip, and that's deliberate so a leftover connected Planner can't override your mode.
Outputs
positive (CONDITIONING) and long_media_av (LATENT) into the sampler, long_media_plan (the plan object) into both Sampler and Decode, plus duration_seconds, passes and a report. If release_guard is off, the console prints the full internal diagnostics - handy for debugging, noisy otherwise.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/vizart-vj/ComfyUI-MiniMax-H3-LongMedia
(Manager search "MiniMax-H3-LongMedia" also works), restart, and load the H3 weights from MiniMaxAI/MiniMax-H3 - checkpoint + both VAEs, ~42.5 GB, under the H3 Community License that excludes the US, EU, UK and Korea. Check your region before downloading.
Troubleshooting
If your references seem to do nothing, check the mode: in ref2va_full nothing is anchored, and in hybrid_auto only image_1/2 get anchor status - a connected image in the wrong slot reads as a plain reference, not a keyframe. If runs OOM, cut segment_seconds, set reference_budget=low, and leave Dynamic VRAM enabled (the pack explicitly wants you to not launch with --disable-dynamic-vram). And if passes comes back unexpectedly large, you've set manual_duration way above segment_seconds - which is fine, but it's worth knowing segmentation is doing the work, not single-pass generation. Community wisdom on H3 is that it's genuinely good but genuinely heavy; the people running it on 8–12 GB cards are the ones leaning on exactly these segment and budget knobs.
Inputs (35)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| vae | VAE | — | |
| audio_vae | VAE | — | |
| prompt | STRING | Prompt text. Can also be connected directly through the prompt input socket. | |
| width | INT | 51232–8192 | — |
| height | INT | 51232–8192 | — |
| manual_duration | FLOAT | 10.00.1–600 | — |
| duration_source | COMBO | 5 options: auto, manual, audio, video, longest_input | |
| segment_seconds | FLOAT | 5.01–60 | New output timeline per segment. overlap_frames is added as continuation context and does not reduce this duration. |
| overlap_frames | INT | 225–3600 | — |
| resolution_mode | COMBO | 2 options: match, max | |
| reference_budget | COMBO | 4 options: low, medium, high, max | |
| video_fps | FLOAT | 241–120 | — |
| video_mode | COMBO | 3 options: auto, preserve, transform | |
| audio_mode | COMBO | auto: legacy behavior. preserve: restore original audio at output without using it as a reference when possible. generate: generate final H3 audio. reference_only: use input audio as H3 reference but output generated audio. preserve_reference: use input audio as H3 timing/rhythm reference and restore the untouched original track. lip_sync: audio_1 stays native <Audio 1> Ref2VA content conditioning and is also time-anchored per clip with the native H3 Audio Guide; the untouched audio_1 is restored at output. | |
| conditioning_mode | COMBO | auto_refs | auto_refs keeps the original LongMedia behavior. hybrid_first_frame: image_1 is the opening keyframe, image_2..image_9 become <Picture 1>..<Picture 8> identity/style refs. hybrid_first_last: image_1 is the first keyframe, image_2 is the last keyframe, and image_3..image_9 become <Picture 1>..<Picture 7> refs. Manual mode only. auto_refs sends all connected images as Picture refs. hybrid_first_frame uses image_1 as the opening keyframe. hybrid_first_last uses image_1/image_2 as first/last keyframes. video_1..3 and audio_1..3 remain native H3 refs. |
| release_guardopt | BOOLEAN | true | Production console guard. ON suppresses routine LongMedia diagnostics and keeps only actionable failures. OFF prints the full internal execution/memory/attention diagnostics for profiling and A/B tests. |
| clip_planopt | H3_LONGMEDIA_CLIP_PLAN | Connect MiniMax H3 LongMedia Planner. It is authoritative only when workflow_mode=multiclip; all other workflows ignore the connected Planner. | |
| workflow_modeopt | COMBO | hybrid_auto | hybrid_auto: image_1 is first frame; if image_2 is connected it is last frame; segmented_continuation: fixed-duration timeline policy using the exact same Ref2VA/Motion-Context clip executor as MultiClip; every generated clip has the same H3-aligned length and the final excess is trimmed. segment_duration controls fixed clip size; Planner is ignored. remaining images are Picture refs. video_ref_edit: video_1 is the main motion/camera/composition reference, image_1..9 are Picture refs for identity/style replacement, and audio_1 can carry the paired source soundtrack. ref2va_full: all connected images are Picture refs with no first/last anchors. loop: image_1 is reused as BOTH first and last frame for a seam-friendly viral loop; image_2..9 are Picture refs. manual: exposes legacy conditioning and segmentation controls for advanced diagnostics and A/B tests. |
| multiclip_jsonopt | STRING | [{"prompt":"","duration":7.5,"seed":null},{"prompt":"","duration":7.5,"seed":null}] | MultiClip backend storage. JSON array: [{prompt, duration, seed}, ...]. Prompt is local to the clip; null seed uses sampler seed + clip index. |
| image_1opt | IMAGE | Native MiniMax H3 <Picture 1> reference. | |
| image_2opt | IMAGE | Native MiniMax H3 <Picture 2> reference. | |
| image_3opt | IMAGE | Native MiniMax H3 <Picture 3> reference. | |
| image_4opt | IMAGE | Native MiniMax H3 <Picture 4> reference. | |
| image_5opt | IMAGE | Native MiniMax H3 <Picture 5> reference. | |
| image_6opt | IMAGE | Native MiniMax H3 <Picture 6> reference. | |
| image_7opt | IMAGE | Native MiniMax H3 <Picture 7> reference. | |
| image_8opt | IMAGE | Native MiniMax H3 <Picture 8> reference. | |
| image_9opt | IMAGE | Native MiniMax H3 <Picture 9> reference. | |
| video_1opt | IMAGE | Video frames only (IMAGE batch). video_ref_edit: primary motion/camera/composition source as <Video 1>. Other modes: regular <Video 1> reference. If the source video has audio, connect that extracted audio to audio_1. | |
| video_2opt | IMAGE | Video frames only (IMAGE batch). Passed as <Video 2> reference. Pair with audio_2 when they come from the same source. | |
| video_3opt | IMAGE | Video frames only (IMAGE batch). Passed as <Video 3> reference. Pair with audio_3 when they come from the same source. | |
| audio_1opt | AUDIO | Native MiniMax H3 <Audio 1> reference. With audio_mode=lip_sync it remains <Audio 1> and also drives a native per-clip H3 Audio Guide; the untouched source is restored at output. | |
| audio_2opt | AUDIO | Optional second audio reference. Passed as <Audio 2>; pair with video_2 by convention when they come from the same source. | |
| audio_3opt | AUDIO | Optional third audio reference. Passed as <Audio 3>; pair with video_3 by convention when they come from the same source. |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| long_media_av | LATENT | — |
| long_media_plan | LONG_MEDIA_PLAN | — |
| duration_seconds | FLOAT | — |
| passes | INT | — |
| report | STRING | — |