MiniMax H3 Timed Image Reference (Advanced/T8)
Pin a reference image to an exact second — without spending an H3 slot
- clip
- image
- clip
The name is a mouthful, but the idea is genuinely useful: this node lets you say "this image is what's happening at second 3.4 of my clip," and H3's text encoder actually understands it as a time, not just as a generic style hint. And it does it without touching your native reference slots at all.
Here's the context you need. MiniMax H3 is the 33B omni-modal model that generates video and audio from one unified context (text, image, video, audio all in one Qwen-based input stream). Its native references - image, video, audio, first/last frame - go through a VAE, land in minimax_refs, and consume slots. That's your identity-lock path, and it's limited. This T8 node is the other path: semantic-only, Qwen-only conditioning. The image is never VAE-encoded, never enters minimax_refs, and consumes no native slot. It's a hint about what should be on screen at a given moment, not a pixel-for-pixel lock.
How it works
H3's text encoder is a Qwen-style vision-language model, and T8 exploits that. The node resizes your image to the image_size you pick, stamps it with the time_seconds you give it, and wraps the CLIP tokenizer so that when your prompt contains #prompt_tag (default anchor), that tag is replaced by a <Video N> vision entry carrying the image at that timestamp. Chain the output CLIP into your core Ref2VA, write #anchor somewhere in the prompt, and the model knows that image anchors that moment of the timeline.
The inputs that matter:
- clip - chain from your H3
Load CLIP(typeminimax). This only works with a MiniMax H3 CLIP; anything else raises an error. - image - one IMAGE tensor.
- prompt_tag - the
#tagyou reference in the prompt. Must start with a letter, and each chained timed reference needs a unique one. - time_seconds - where in the generated timeline the image applies. Default 0 (frame one).
- image_size - 64 → 1280 or
source. 512 is a sane default; bigger isn't automatically better for a semantic hint.
Output is a single clip, which you feed onward into Ref2VA or whatever consumes your H3 CLIP. One image, one tag, one timestamp per node - chain several together if you want multiple anchors, each with its own tag.
Install
ComfyUI Manager: search "MiniMax H3 Audio T8" and install, then restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
The pack's requirements.txt is intentionally empty - it relies on ComfyUI for torch, torchaudio, numpy, Pillow and safetensors. What you do need: the H3 main model (models/diffusion_models), the text encoder (models/text_encoders), and the video/audio VAEs (models/vae). And a current ComfyUI: this pack uses the native H3 support, comfy_api.latest, comfy.weight_adapter and comfy.ldm.minimax. If you update only the pack and keep an old ComfyUI, every T8 node shows up red. Update ComfyUI, the frontend and Manager together, then fully restart.
Gotchas
- It's a semantic hint, not identity control. If you need the character to be that person, use a real native reference - this node is prompt guidance.
- The H3 weights themselves are licensed with a territory carve-out (US, EU, UK, Korea excluded). The pack works fine; the model you run it against may not be licensed where you are.
- A stale ComfyUI is the #1 cause of "all my T8 nodes are red." Check the first import error in the terminal: missing
comfy.ldm.minimaxetc. means ComfyUI, not the pack.
For one image at one moment, it's the lightest way to nudge H3's timeline awareness without burning a slot.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| image | IMAGE | — | |
| prompt_tag | STRING | anchor | — |
| time_seconds | FLOAT | 0.0000–9999 | — |
| image_size | COMBO | 512 | 11 options: 64, 96, 128, 192, 256, 384, +5 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| clip | CLIP | — |