MiniMax H3 Cast to Video (Extend)
Continue a MiniMax H3 Clip With the Same Cast — You'll Need the Fork or the Backport
- clip
- vae
- context_latent
- audio_vae
- cast_1
- cast_2
- cast_3
- scene_asset
- scene_images
- first_frame
- last_frame
- world_latent
- positive
- latent
- final_prompt
- report
H3CastToVideoExtend is the continuation sibling to H3CastToVideo. Everything the compose node does for a fresh generation - up to three cast members, scene references, auto-written <Picture i> / <Audio j> intros, prompting by name - but for extending a clip you already made instead of rolling a new one. It wraps MiniMaxH3VideoExtend rather than MiniMaxH3ReferenceToVideo, because a continuation runs off a context_latent plus raw references, not a fresh generation. Fresh-generation Cast to Video simply doesn't apply there; this node is the bridge.
And there's a catch you need to know before you build a workflow around it: MiniMaxH3VideoExtend is not part of stock ComfyUI's MiniMax H3 support. It exists natively only on kat3ri/ComfyUI's fork (feat/minimax-h3-video-extend branch), or through the companion ComfyUI-MiniMax-H3-Extend pack, which backports the continuation mechanism to any ComfyUI. On a plain install, the node fails with a clear error naming exactly what's missing - deliberately, so you don't get a bare AttributeError and an afternoon of guessing.
Feeding it a context
The other piece you need is context_latent - the AV latent of the prior clip to continue from. The node that produces it, MiniMax H3 Encode AV, used to be vendored inside this pack but moved to ComfyUI-MiniMax-H3-Extend (it's an extend/continuation concern, not a cast one). So the realistic setup is: install both packs, load your previous clip (say, with VHS_LoadVideo), VAE-encode it into context_latent, then continue.
Inputs that matter
context_latent- required; the prior generation's AV latent.clip,vae,prompt,length- same shape as the sibling node; prompt refers to characters by name.cast_1..cast_3,scene_images,scene_description- the same composition and slot budgeting (9 image slots, 3 audio slots,max_views_per_membersplit).- The continuation knobs:
context_frames(how many trailing latent frames carry over as context, default 2),context_strength,pin_last_frame(default on - pins this segment's frame 0 to the prior clip's last frame),first_frame(hard-pin frame 0 to an exact image instead), andlast_frame(pin this segment's final frame to a known next shot/keyframe). Watch this one:last_frameis supported by the backport pack but silently dropped by the fork's native node - the report tells you which happened. world_latent/world_frames/world_strength- global scene anchors carried through the continuation.
Note there's no width, height, or temporal_stretch here. Resolution is inherited from the context latent - the native MiniMaxH3VideoExtend has no such knobs of its own, and neither does this node.
Outputs
Same four as Cast to Video: positive (CONDITIONING) and latent (LATENT) wire into your sampler exactly like the native MiniMaxH3VideoExtend, plus final_prompt (the exact text sent) and report (slot usage plus anything dropped).
Install
Same base as the rest of the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/kat3ri/ComfyUI-H3-Cast
# restart ComfyUI - node appears under "MiniMax H3/cast"
Then either run the kat3ri ComfyUI fork's feat/minimax-h3-video-extend branch, or install ComfyUI-MiniMax-H3-Extend alongside. No extra Python dependencies otherwise. If you're still on stock ComfyUI and just want to try H3, start with the plain H3CastToVideo node instead - this one is specifically for when you're stitching a longer clip from segments, and it's worth the extra setup only once you actually need continuations.
Inputs (30)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| vae | VAE | — | |
| context_latent | LATENT | AV latent output from a prior MiniMax H3 generation to continue from | |
| prompt | STRING | Refer to characters by NAME -- the <Picture i>/<Audio j> intro lines are written for you (see final_prompt output) | |
| length | INT | 1245–3600 | — |
| max_views_per_member | INT | 31–9 | Views taken per cast member, in saved order. 9 total image slots are shared by all members + scene images. |
| auto_intro | BOOLEAN | true | Write the '<Picture 1>, <Picture 2>: Name -- description' intro lines automatically |
| audio_vaeopt | VAE | — | |
| cast_1opt | H3_CAST_MEMBER | — | |
| cast_2opt | H3_CAST_MEMBER | — | |
| cast_3opt | H3_CAST_MEMBER | — | |
| scene_assetopt | H3_SCENE_ASSET | A saved location/background from H3 Scene Asset. Combines with scene_images if both are connected. | |
| scene_imagesopt | IMAGE | Extra reference images of the location/scene (e.g. room renders); batch = one ref slot per frame. Combines with scene_asset if both are connected. | |
| scene_descriptionopt | STRING | What's actually in the scene -- used verbatim in the intro line instead of scene_asset's saved description or the generic 'the location where this scene takes place.' placeholder. Leave blank to use scene_asset's saved description, if any. | |
| include_voicesopt | BOOLEAN | true | — |
| context_framesopt | INT | 21–64 | Trailing latent frames of context_latent carried over as context |
| context_strengthopt | FLOAT | 1.000–1 | — |
| context_static_timeopt | BOOLEAN | false | — |
| pin_last_frameopt | BOOLEAN | true | — |
| first_frameopt | IMAGE | Hard-pin this call's frame 0 (e.g. the prior clip's real last output frame) instead of pin_last_frame's decode | |
| last_frameopt | IMAGE | Pin this continuation segment's own final frame to an exact image, e.g. to land precisely on a known next shot/keyframe. Not supported by the fork's native MiniMaxH3VideoExtend -- silently dropped there (see report); supported when running against ComfyUI-MiniMax-H3-Extend's backport. | |
| world_latentopt | LATENT | — | |
| world_framesopt | INT | 21–64 | — |
| world_strengthopt | FLOAT | 1.000–1 | — |
| world_static_timeopt | BOOLEAN | false | — |
| ref_image_sizeopt | COMBO | match | 2 options: match, max |
| ref_spacingopt | FLOAT | 1.00–50 | — |
| ref_strengthopt | FLOAT | 1.000–1 | — |
| ref_decayopt | FLOAT | 0.000–1 | — |
| ref_rampopt | FLOAT | 0.00–50 | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| latent | LATENT | — |
| final_prompt | STRING | — |
| report | STRING | — |