Nodes/MiniMax H3 Timed References/Add Timed Video Reference for MiniMax H3 (Experimental)
ComfyUI Node

Add Timed Video Reference for MiniMax H3 (Experimental)

Anchor a short motion clip into your MiniMax H3 video at a chosen second

By ethanfel·Created 21 days ago·Updated 14 days ago· 9
Add Timed Video Reference for MiniMax H3 (Experimental)
  • clip
  • video_frames
  • source_video
  • CLIP
prompt_tagmotion
target_start_seconds0.000
source_fps24.000
video_size512
analysis_fps2.0

The experimental sibling in the same pack as the timed image node, and arguably the more interesting one. Where Add Timed Image Reference hands Qwen a still, this node hands it a sequence: sampled frames from a short clip, presented at a chosen point on your generated timeline. That's motion reference - pose, gait, camera movement, object behavior - fed into H3's language model as semantic context rather than burning one of the native video-reference slots.

Like its image sibling, it's Qwen-only conditioning. The frames are not VAE-encoded, they never enter minimax_refs, and they don't occupy a native H3 slot. The author's "Old Man Full-Rate Video Motion Test" example workflow shows exactly what it's for: capture the way something moves from a source clip and have the generated video take on that motion from a chosen second onward.

The part worth reading twice

This node has two input paths, and they're not equal.

The preferred route is source_video - connect core Load Video directly. This is the clever bit: the source file stays on disk, only the frames you actually present become tensors in memory, and real presentation timestamps are read from the media stream via PyAV (bundled with ComfyUI, so no extra install). That means variable-frame-rate clips keep their true timing instead of being force-fit to a constant rate. The node even respects the trim window if you've trimmed upstream.

The fallback is video_frames - a decoded IMAGE batch from an older loader. The author's tooltip calls it the "Legacy/VHS fallback," and the joke is doing real work: an IMAGE batch has no per-frame timing metadata, so the node has to assume constant spacing and trust your source_fps value. Connect one or the other, never both - the node errors if you do.

Either way, the clip is capped at 15 seconds (the H3 model's own practical window for this path). Longer clip, and you'll get a "trim this clip before connecting it" error. Use core Trim Video first.

The inputs that matter

  • clip - H3 CLIP, same as the image node. Nothing else will do.
  • source_video / video_frames - the two mutually exclusive reference sources above.
  • prompt_tag - default motion; write #motion in the Ref2VA prompt. Unique per chained node.
  • target_start_seconds - where on the generated timeline this reference clip begins. Sub-second values preserved.
  • analysis_fps - frames per second shown to Qwen. Default 2 matches core H3 behavior. Higher rates add vision tokens and memory, and anything above the source's own frame rate is pure waste - the code rejects analysis_fps exceeding the source rate outright.
  • source_fps - only used by the IMAGE-batch fallback; must match what the loader actually produced.
  • video_size - same combo as the image node (641280 plus source, default 512), same guidance: start at 256512.

Output is a single CLIP, chained into core MiniMax H3 Reference to Video.

Install

Search ComfyUI Manager for MiniMax H3 Timed References, or:

cd ComfyUI/custom_nodes
git clone https://github.com/ethanfel/ComfyUI-MiniMaxH3-Timed-References.git

Restart ComfyUI. No pip dependencies and no bundled weights - the only real requirements are the core ComfyUI MiniMax H3 model set and a ComfyUI recent enough to expose core Load Video's VIDEO output. GPL-3.0 code.

Where people get burned

  • "Connect either source_video or video_frames, not both" - it's a hard error, and honestly a fair one.
  • 15-second limit - clips longer than that are rejected at execution; trim first.
  • analysis_fps above the source rate - the node errors because there are no additional source frames to sample. Crank it up only if the source actually has the rate to back it.
  • Both nodes in one chain need distinct tags, and the whole pack only functions on the H3 Ref2VA tokenizer path with an H3 CLIP - wrong CLIP, and it refuses with "Timed references require the MiniMax H3 CLIP model."

The "Experimental" label is earned: this is a young pack (0.2.x, alpha-grade) built for a model that's barely out of the gate, and the full-rate video path decodes real media streams, so edge cases will shake out. Start with analysis_fps=2 and a source clip that actually has motion worth capturing. And remember the H3 license question - the weights are geofenced out of the US, EU, UK, and South Korea, which matters before this node matters.

Categorymodel/conditioning/minimax

Inputs (8)

NameTypeDefaultDescription
clipCLIP
prompt_tagSTRINGmotionUse this name with a leading # in the Ref2VA prompt, for example #motion.
target_start_secondsFLOAT0.0000–9999Where this reference clip begins on the generated video's timeline. Sub-second values are preserved.
source_fpsFLOAT24.0000.01–240Used only by the IMAGE-batch fallback. It must match the loaded frame rate; core VIDEO reads timing automatically.
video_sizeCOMBO512Approximate pixel-area edge used for Qwen vision encoding. 64 is the technical floor but loses detail.
analysis_fpsFLOAT2.00.5–240Frames per second presented to Qwen. 2 matches core H3; higher rates cost more tokens and memory. Do not exceed the source rate.
video_framesoptIMAGELegacy/VHS fallback: a decoded IMAGE batch with constant frame spacing. Connect either this or source_video, not both.
source_videooptVIDEOPreferred: connect core Load Video. The source stays path-backed and only selected frames become tensors; real presentation timestamps are preserved.

Outputs (1)

NameTypeDescription
CLIPCLIP