Nodes/MiniMax H3 CLIP-Cached/MiniMax H3 CLIP-Cached Ref2VA
ComfyUI Node

MiniMax H3 CLIP-Cached Ref2VA

MiniMax H3 reference-to-video, without re-encoding your references every run

By Mu5hr00moO·Created 9 days ago·Updated about 23 hours ago· 8
MiniMax H3 CLIP-Cached Ref2VA
  • vae
  • audio_vae
  • ref_image_0
  • ref_image_1
  • ref_image_2
  • ref_image_3
  • ref_image_4
  • ref_image_5
  • ref_image_6
  • ref_image_7
  • ref_image_8
  • ref_video_0
  • ref_video_1
  • ref_video_2
  • ref_video_audio_0
  • ref_video_audio_1
  • ref_video_audio_2
  • ref_audio_0
  • ref_audio_1
  • ref_audio_2
  • positive
  • latent
clip_name
prompt
width1344
height768
length124
ref_image_sizematch
cache_modeauto

MiniMax H3's reference-to-video path is where this pack stops being a nice-to-have and starts being the difference between an interactive session and a waiting game. When you're conditioning on reference images, reference video, and audio - the setup you want for character or style consistency - the Qwen3-VL text/vision encoder has to look at all of it, and on a cold run that encode plus everything around it can eat well over 15 GB of VRAM and half a minute before any sampling happens. MiniMaxH3CLIPCachedRef2VA is the cached counterpart of ComfyUI's stock MiniMax H3 Reference to Video node. It does the same job, but when the encoder would see identical input again, it restores the saved conditioning from disk in about a second instead of re-running the whole thing.

Same cache story as the FL2VA sibling in this pack: a first run is a MISS - the real encoder loads, runs, unloads, and the result is stored under the pack's cache folder. The next request for identical encoder-visible input is a HIT that skips loading Qwen3-VL entirely. What counts as "identical" is the whole game, and for references it's a little subtler than for plain text.

What the encoder sees, and when you get a hit

A new cache entry is created when the prompt changes, when reference image pixels change, when the reference-video frames presented to the encoder change, or when the number/order of references changes. Seed, sampler, steps, downstream LoRA, and - usefully - the raw audio waveform do not create new entries. Reference audio is processed by the stock Ref2VA path and can change your AV latent, but it doesn't touch the text/vision conditioning, so audio-only tweaks still hit the cache.

The ref_image_size choice sits right at the heart of this. match scales each reference down to the generation's pixel area, so changing width/height can change what the encoder sees and silently MISS. max keeps the reference pipeline's 2048-px-short-edge sizing for maximum identity detail - and since reference tokens ride through every sampling step, max can be several times slower to sample. If you're chasing character fidelity and can afford the time, max; if you're iterating fast, match. Changing resolution in match mode costs you a re-encode; in max mode it usually doesn't.

Inputs and outputs

Beyond the usual clip_name, vae, prompt, width/height, and length (frames at 24 fps, 124 ≈ 5 s), note the extra audio_vae - that's the audio side of H3's AV latent, not part of the CLIP cache. The reference inputs are fixed slots rather than the stock node's dynamic lists: ref_image_0ref_image_8 (up to nine images), ref_video_0ref_video_2, matching ref_video_audio_* soundtracks, and ref_audio_0ref_audio_2 for standalone audio.

One gotcha that bites people: only connected slots are passed on, and gaps are compacted while order is preserved. Wire ref_image_0 and ref_image_4 and they become the first and second image references - not "Picture 1" and "Picture 5". That matters because MiniMax H3 prompts address references positionally (<Picture 1>, <Video 1>), so slot numbers in the node don't map 1:1 to the names in your prompt. Outputs are positive (CONDITIONING) and latent (LATENT), drop-in compatible with the stock node's downstream graph.

Installing

Same as the rest of the pack: ComfyUI Manager (search "MiniMax H3 CLIP-Cached") or

cd ComfyUI/custom_nodes
git clone https://github.com/Mu5hr00moO/ComfyUI-MiniMaxH3-CLIPCached

Restart, find it under model/conditioning/minimax/cached. You need ComfyUI v0.30.0+ with native H3 nodes and the encoder checkpoint in models/text_encoders (the tested qwen3vl_32b_minimax_h3_int8_convrot.safetensors); safetensors is the only Python dependency and ComfyUI already ships it.

The honest caveat

The author says it plainly in the docs: this project is developed and battle-tested primarily on the FL2VA path, and Ref2VA - though it follows the same cache architecture and delegates to stock - hasn't had the same depth of real-world workflow testing. So treat it as slightly less proven, and if you hit something workflow-specific, that's worth reporting upstream rather than assuming you misconfigured it. The fixed reference slots are also a real limitation versus the stock node's auto-growing lists; if you need more than nine images or three videos, the stock node still wins. And as with the rest of the pack, remember the MiniMax H3 weights carry a community license that excludes the US, EU, UK and Korea - no cache fixes a license gate.

Categorymodel/conditioning/minimax/cached

Inputs (27)

NameTypeDefaultDescription
clip_nameCOMBOMiniMax H3 text/vision encoder (Qwen3-VL) checkpoint from models/text_encoders. Loaded lazily -- only on a cache miss.
vaeVAE
audio_vaeVAE
promptSTRING
widthINT134432–16384
heightINT76832–16384
lengthINT1245–3600Frame count at 24 fps, (124 = ~5s, trained range is ~124-362)
ref_image_sizeCOMBOmatchReference image sizing. 'match' scales each ref (down only, keeping aspect) to the generation's pixel area; 'max' uses the reference pipeline's 2048px short edge for best identity fidelity. Reference tokens ride through every sampling step, so 'max' can be several times slower.
ref_image_0optIMAGEReference image (downscaled to 2048 short edge if larger, never upscaled)
ref_image_1optIMAGEReference image (downscaled to 2048 short edge if larger, never upscaled)
ref_image_2optIMAGEReference image (downscaled to 2048 short edge if larger, never upscaled)
ref_image_3optIMAGEReference image (downscaled to 2048 short edge if larger, never upscaled)
ref_image_4optIMAGEReference image (downscaled to 2048 short edge if larger, never upscaled)
ref_image_5optIMAGEReference image (downscaled to 2048 short edge if larger, never upscaled)
ref_image_6optIMAGEReference image (downscaled to 2048 short edge if larger, never upscaled)
ref_image_7optIMAGEReference image (downscaled to 2048 short edge if larger, never upscaled)
ref_image_8optIMAGEReference image (downscaled to 2048 short edge if larger, never upscaled)
ref_video_0optIMAGEReference video frames at 24 fps (2-15s)
ref_video_1optIMAGEReference video frames at 24 fps (2-15s)
ref_video_2optIMAGEReference video frames at 24 fps (2-15s)
ref_video_audio_0optAUDIOSoundtrack of the same-numbered reference video
ref_video_audio_1optAUDIOSoundtrack of the same-numbered reference video
ref_video_audio_2optAUDIOSoundtrack of the same-numbered reference video
ref_audio_0optAUDIOStandalone reference audio
ref_audio_1optAUDIOStandalone reference audio
ref_audio_2optAUDIOStandalone reference audio
cache_modeoptCOMBOautoauto: reuse the cached encode for an identical prompt + reference images/videos/audio + clip_name (checkpoint identity = filename+size+mtime+ctime) if one exists, otherwise encode and save it. refresh: ignore any cached encode, always re-encode and overwrite the cache.

Outputs (2)

NameTypeDescription
positiveCONDITIONING
latentLATENT