MiniMax H3 Add Masked Guides from Video (experimental)
Drive an H3 video from a masked video — trust some moments, not all of them
- positive
- latent
- vae
- video
- mask
- positive
- plan
A single still guide gets you one anchored image inside an H3 video. Sometimes you want to steer with footage - a clip of the subject in motion, or several distinct shots - and trust different parts of it at different times. vloMiniMaxH3AddMaskedGuidesFromVideo is the node that cuts a masked video into guide clips and anchors each one at the right place in your target video. It's the segmentation case this experimental family was really built for.
The flow: you supply guide frames (at your target video's frame rate, one mask per frame), and the node walks them. Frames whose mask is empty guide nothing and get dropped; each surviving contiguous run becomes one guide clip; and each run is rounded down to a length H3 actually accepts - the model's valid clip lengths are 1, 5, 22, 39, ... frames, not arbitrary counts, so a 7-frame run becomes a 5-frame guide. The mask means confidence again, not denoise: 1 keeps that part of the guide at full strength, 0 corrupts it to noise, in-between blends continuously, and mask_gamma/strength/min_aug shape that as in the rest of the family.
Inputs worth understanding
positive,latent,vae,video,mask- conditioning, target AV latent, video VAE, guide frames, and one mask per guide frame (a single mask is applied to all of them).frame_idx- the target frame your guide video's first frame lines up with. Negative counts from the end. Guide frames that fall outside the target video are dropped.min_coverage- a frame is dropped when its mask covers no more than this fraction of the canvas (measured after fitting the guide to the target's framing). 0.0 drops exactly the empty-mask frames; raise it to also drop frames where the subject is barely visible.time_pooling- how the masks of the frames behind one latent token combine:averagematches the spatial pooling,maxtakes their union - which is what a subject moving across those frames needs.chunk_align- when rounding a run down to a valid clip length drops frames,startkeeps the head of the run,centerkeeps its middle.
Outputs
positive - your conditioning extended with the masked guide clips - and a plan STRING describing what the node decided to do. The plan output is genuinely useful for the video case: with frame-dropping, clip-length rounding and anchoring all in play, you want to see which runs became guides and where they landed before you blame the model for a weird result.
Standing caveats
Two things gate all of this: the model needs Patch Masked Guides on it or the masks are ignored (clips behave like stock guides), and the patch is pinned to specific ComfyUI MiniMax-H3 internals with a source-fingerprint compatibility check - experimental code, new pack, expect to update ComfyUI or pin it. There's also the direct-node versus spec question: this node does everything inline; the newer Build Guide Spec from Video flow plans the same operation as a reusable spec so the Qwen semantic half can read it too. Install: clone https://github.com/PxTicks/ComfyUI-vlo.git into custom_nodes/, restart, no pip deps.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| latent | LATENT | — | |
| vae | VAE | Video VAE. | |
| video | IMAGE | Guide frames, at the target video's frame rate. | |
| mask | MASK | One mask per guide frame (a single mask is applied to all of them). Guide confidence, not a denoise mask: 1 keeps the guide at full strength, 0 corrupts it to noise, values in between blend continuously. Must frame the same crop as the guide image. | |
| frame_idx | INT | 0-9999–9999 | Target frame the guide video's first frame lines up with. Negative values count from the end. Guide frames that fall outside the target video are dropped. |
| strength | FLOAT | 1.000–1 | Scales every mask. 1.0 leaves a fully open mask identical to a stock guide clip. |
| min_aug | FLOAT | 0.0000–1 | Condition noise-augmentation coefficient a mask value of 0 maps to. 0.0 replaces those guide tokens with pure noise; raise it to keep a floor of guidance. |
| mask_gamma | FLOAT | 1.000.1–5 | Exponent applied to the mask before it becomes strength. >1 pushes mid-tones toward weak guidance, <1 toward strong. |
| min_coverage | FLOAT | 0.0000–1 | A frame is dropped when its mask covers no more than this fraction of the canvas, measured after the crop that fits the guide to the target's framing. 0.0 drops exactly the frames whose mask is empty; raise it to also drop frames where the subject is barely visible. |
| time_pooling | COMBO | average | How the masks of the frames behind one latent token are combined. 'average' matches the spatial pooling; 'max' takes their union, which is what a subject moving across those frames needs. |
| chunk_align | COMBO | start | Rounding a run down to a valid clip length drops frames: 'start' keeps the head of the run, 'center' keeps its middle. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| plan | STRING | — |