ComfyUI Node

MiniMax H3 Extender

Chain MiniMax H3 clips into one long video without the seams

By tritant·Created 11 days ago·Updated 4 days ago· 145
MiniMax H3 Extender
  • model
  • clip
  • vae
  • audio_vae
  • ref_audio
  • ref_audio_1
  • ref_audio_2
  • ref_audio_3
  • ref_video_1
  • ref_video_audio_1
  • ref_video_2
  • ref_video_audio_2
  • ref_video_3
  • ref_video_audio_3
  • ref_pack
  • prompt_pack
  • cache
  • clip_count
  • validated_count
  • status
  • cache_size_mb
  • build
run_modeclip_by_clip
width896
height576
ref_image_sizematch
steps4
sampler_nameeuler
schedulersimple
denoise1.00
context_length22
audio_context_length0
clips_json{"version":1,"clips":[{"id":"clip_1","name":"","prompt":"","seed":8682719502030360,"seed_mode":"randomize","duration":10.0,"validated":false,"color_adjustment":{"saturation":100.0,"contrast":100.0,"brightness":100.0}}]}
resolution_modeauto_from_ref
megapixels0.40
refs_json{"version":2,"refs":[null,null,null,null,null,null,null,null,null]}
ref_video_fps_1
ref_video_fps_2
ref_video_fps_3

MiniMax H3 is fantastic and it's also short. A single clip tops out around 15 seconds, and the moment you string several into a minute-long scene, the seams show: the next clip has no memory of the last, colors jump at the cut, and the character slowly stops being the same person. The MiniMax H3 Extender closes that gap - it takes multi-clip generation, motion context, image/video/audio references, disk caching and final export and folds them into a single node, the flagship of the tritant/ComfyUI_MiniMax_H3_Extender pack.

What it actually does

Think of it as a small editing suite wrapped around one H3 sampler. You define a sequence of clips - each with its own prompt, seed and duration - and the Extender generates them one at a time, feeding each new clip the tail of the previous one as Motion Context. The result is a continuous chain instead of four disconnected takes.

Two run modes cover the two ways people actually work:

  • clip_by_clip (default): you generate, preview, retry, then tick Validated on the clip. A validated clip is frozen in the disk cache and becomes the motion-context source for the next one - you build a 60-second sequence one 10-second chunk at a time without regenerating an approved clip.
  • full_batch: run the whole chain in one pass and come back later.

The validation system is the part to understand first, because it's where people get confused. Validation always forms a continuous chain from clip 1. Change a prompt, seed, duration, reference or sampling setting and every clip after the affected one is automatically unvalidated - that's not a bug, it's the node refusing to bake seams in from stale context. The intended rhythm is Generate → Preview → Retry if needed → Validate → Continue.

The inputs that matter

You always wire model, clip and vae - and audio_vae if you want sound, which you do, because H3 generates audio jointly with the picture. After that, the handful worth touching:

  • context_length (5 / 22 / 39 / 56): how much of the previous clip feeds the next one as motion context. 22 is the default and a sane starting point; longer context means tighter continuity but more VRAM and slower runs.
  • run_mode: the clip_by_clip / full_batch switch above.
  • resolution_mode: auto_from_ref sizes the canvas from your first image reference; manual uses the width/height widgets, which also serve as the auto fallback when no reference is loaded.
  • clips_json: a JSON card per clip holding prompt, seed, seed mode, duration and validated flag. The UI edits this for you; don't hand-edit unless you know what you're doing.

References are where this pack earns its keep. Up to 9 image references live inside the node (no Load Image spaghetti), addressed in prompts as <Picture N>. On top of that you get up to 3 reference videos (<Video N>), each with an optional ref_video_fps_N input - H3 expects exactly 24 fps, and if your source is 23.976 or 30 fps, wiring the real FPS lets the node resample to 24 instead of silently dropping the end of the video. Standalone audio (ref_audio_1 through ref_audio_3) and per-video soundtracks (ref_video_audio_N) round out the lip-sync and motion-transfer side.

How to install

Via ComfyUI Manager - search MiniMax H3 Extender - or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/tritant/ComfyUI_MiniMax_H3_Extender.git

Restart ComfyUI. The only Python dependency is imageio-ffmpeg (a bundled ffmpeg used for export), so there's no dependency hell to fight. What is heavy is the model: MiniMax H3 runs to roughly 42.5 GB of weights, so budget your VRAM accordingly - and check the license before you start. The MiniMax H3 Community License excludes the US, EU, UK and South Korea from its applicable territory: a hard stop for local weights in those regions, not a soft suggestion.

Where people get burned

  • References drift across clips. The README's fix is to put a subject_definitions block at the start of every clip prompt, spelling out that <Picture 1> defines <Subject 1> and so on. It's wordy, but it's the difference between a consistent character and a lookalike who wandered in from another scene.
  • The reference video ends early. Almost always an FPS mismatch - connect the source FPS to ref_video_fps_N.
  • Everything unvalidated after one change. Expected behavior, not data loss; revalidate and it rolls forward again.

The node outputs an H3_MOTION_DISK_CACHE plus clip_count, validated_count, status, cache_size_mb and build. That cache plugs straight into the pack's Final Decode / Preview node, which turns it into a finished MP4 - the natural next stop.

CategoryMiniMax H3

Inputs (33)

NameTypeDefaultDescription
modelMODEL
clipCLIP
vaeVAE
run_modeCOMBOclip_by_clip2 options: clip_by_clip, full_batch
widthINT89632–4096Manual resolution width, also used as Auto fallback when no internal image reference is loaded.
heightINT57632–4096Manual resolution height, also used as Auto fallback when no internal image reference is loaded.
ref_image_sizeCOMBOmatch2 options: match, max
stepsINT41–10000
sampler_nameCOMBOeuler44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBOsimple9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT1.000.01–1
context_lengthCOMBO224 options: 22, 5, 39, 56
audio_context_lengthINT00–240
clips_jsonSTRING{"version":1,"clips":[{"id":"clip_1","name":"","prompt":"","seed":8682719502030360,"seed_mode":"randomize","duration":10.0,"validated":false,"color_adjustment":{"saturation":100.0,"contrast":100.0,"brightness":100.0}}]}
resolution_modeCOMBOauto_from_refAuto uses internal Ref 1 as the aspect-ratio guide; with no internal image references it falls back to width/height.
megapixelsFLOAT0.400.01–16Target total pixels for Auto resolution. Auto and Manual canvases use the MiniMax H3 32-pixel grid; Auto snaps downward without exceeding the requested pixel budget.
refs_jsonSTRING{"version":2,"refs":[null,null,null,null,null,null,null,null,null]}
audio_vaeoptVAE
ref_audiooptAUDIOLegacy alias of ref_audio_1. Kept for older workflows; new workflows should prefer ref_audio_1..ref_audio_3.
ref_audio_1optAUDIOOptional MiniMax H3 standalone reference audio 1. Up to three standalone audio references are supported.
ref_audio_2optAUDIOOptional MiniMax H3 standalone reference audio 2.
ref_audio_3optAUDIOOptional MiniMax H3 standalone reference audio 3.
ref_video_1optIMAGEOptional MiniMax H3 reference video 1 as an IMAGE frame batch. H3 expects 24 fps; use ref_video_fps_1 when the source batch came from another frame rate. Use <Video 1> in prompts.
ref_video_fps_1optFLOATOptional source FPS from Get Video Components for ref_video_1. When disconnected the Extender assumes the IMAGE batch is already 24 fps.
ref_video_audio_1optAUDIOOptional soundtrack of ref_video_1.
ref_video_2optIMAGEOptional MiniMax H3 reference video 2 as an IMAGE frame batch. H3 expects 24 fps; use ref_video_fps_2 when the source batch came from another frame rate. Use <Video 2> in prompts.
ref_video_fps_2optFLOATOptional source FPS from Get Video Components for ref_video_2. When disconnected the Extender assumes the IMAGE batch is already 24 fps.
ref_video_audio_2optAUDIOOptional soundtrack of ref_video_2.
ref_video_3optIMAGEOptional MiniMax H3 reference video 3 as an IMAGE frame batch. H3 expects 24 fps; use ref_video_fps_3 when the source batch came from another frame rate. Use <Video 3> in prompts.
ref_video_fps_3optFLOATOptional source FPS from Get Video Components for ref_video_3. When disconnected the Extender assumes the IMAGE batch is already 24 fps.
ref_video_audio_3optAUDIOOptional soundtrack of ref_video_3.
ref_packoptH3_REF_PACKOptional external image-reference pack. Connected Ref N slots are imported into the matching internal Ref N slots on Queue; empty slots leave internal references untouched.
prompt_packoptH3_PROMPT_PACKOptional external prompt pack. New/changed packs are imported into the normal clip textareas and synchronize the clip count.

Outputs (6)

NameTypeDescription
cacheH3_MOTION_DISK_CACHE
clip_countINT
validated_countINT
statusSTRING
cache_size_mbFLOAT
buildSTRING