Nodes/Polyhedron Suite/⬡ Polyhedron MiniMax Continue
ComfyUI Node

⬡ Polyhedron MiniMax Continue

Joining two H3 clips without the seam

By PolyhedronAI·Created 5 months ago·Updated a day ago· 7
⬡ Polyhedron MiniMax Continue
  • positive
  • latent
  • vae
  • audio_vae
  • clip_latent
  • tail
  • tail_audio
  • anchor
  • anchors
  • positive
  • latent
  • overlap
  • info
◄modeK2L latent context (no VAE)►
◄context_frames22►
◄with_audiotrue►
◄anchor_frame-1►
◄audio_context0►
◄holdguide only►
◄release_frames16►

H3 gives you 4 to 15 seconds a go. A scene that's a minute long is therefore four or five clips, and the gap between "I rendered five clips" and "I have a scene" is a join that doesn't announce itself with a jump cut, a wardrobe change and a new voice. ⬡ Polyhedron MiniMax Continue is that join: clip n's ending becomes the guide at frame 0 of clip n+1, with its sound on the same time axis, so the model continues rather than restarts.

This is the same problem the Wan crowd has been chewing on all year - the 81-frame native context, the chunk boundary drift, the chunkers that hide the stitching. The difference here is that H3 has a real add-guide mechanism on Core master to hang it off, so the carry is conditioned, not just glued.

Three modes, and why you want K2L

mode:

  • K2L latent context (no VAE) - continues from clip n's own latent, via a Clip Chain Source's clip_latent. No VAE round trip, so no decode artifacts leak into the next clip's context. This is the one you want.
  • K2 motion context (frames) - continues from clip n's decoded last frames (tail) and its audio (tail_audio). Needs vae, and audio_vae if you're carrying sound.
  • anchor only - no context at all, just place the anchor input. Basically a plain graph with the anchor plumbing.

context_frames decides how much of clip n's end guides the start of clip n+1: 22 frames ≈ 0.92 s by default, snapped down to H3's clip grid (5, 22, 39, … 17k+5). More context holds the look harder and gives the model less room to move. with_audio carries clip n's sound under that context on the same time axis, which is most of why the soundtrack feels continuous.

audio_context is the one that looks like a typo and isn't. At 0, the sound under the whole picture window is pinned from frame 0, Core's own Add Guide behaviour. Set it to a number - 18 is the tooltip's example - and clip n's sound reaches back that far, pinned to end at the join. That's how a soundtrack gets held across a cut instead of restarting under the new picture. Longer holds it tighter and dulls it slightly at every join. Multiples of 3 land exactly on the audio grid.

The hold decision

hold:

  • guide only - clip n's ending is a guide; the latent passes through untouched.
  • guide + hold in the latent - the same ending is also copied to the start of this run's latent (picture and sound) and held by a noise mask, then released over release_frames (16 by default, counted back from the join, rounded to whole tokens of 1 or 4 frames - info tells you what it came to).

Guide-only is softer and more forgiving. Hold is a harder join and occasionally the only thing that keeps a face from changing. release_frames = 0 keeps the head locked right up to the join.

Outputs: positive (guides appended - references and keyframes already in it survive), latent (unchanged unless hold copies context in), overlap, and info. overlap is the hand-off for a Seam Fix style trim: wire it into trim_head so the duplicated head doesn't play twice.

The ComfyUI version trap

This node needs Core master (0.37+) for MiniMaxH3AddGuide. On a pinned older core it refuses with a genuinely helpful error instead of half-working, and names your fallbacks: MiniMax Keyframes for the last frame, or MiniMax Reference with the previous clip as <Video 1>. If you see that message, you're not misconfigured - you're on the wrong core.

Install

Manager → "Polyhedron Suite", or:

cd ComfyUI/custom_nodes
git clone https://github.com/PolyhedronAI/ComfyUI-PolyhedronLoRAStack.git
# restart ComfyUI

No Python packages required. Optional pins do the work: clip_latent for K2L, tail + tail_audio for K2, anchor / anchors for mid-clip guides.

Where it goes wrong

Wrong latent. It must be an H3 AV latent - Polyhedron Empty Latent with latent_type MiniMax H3 AV, or Continue's own output. Anything else is refused by name.

Placeholder anchors. A Media Loader with nothing loaded emits a placeholder frame; Continue refuses it rather than conditioning your new scene on a checkerboard.

Long audio context. Every join dulls a little as audio_context grows. If the music starts sounding underwater, you've over-held it.

K2 without a VAE. The frame-based mode needs the video VAE (and audio VAE for sound). K2L is the path that doesn't, which is another reason to prefer it.

CategoryPolyhedron/Cine

Inputs (16)

NameTypeDefaultDescription
positiveCONDITIONINGThe run's positive conditioning (MiniMax Keyframes, MiniMax Reference or CLIP Text Encode). The guides are APPENDED -- references and keyframes already in it stay.
latentLATENTThe run's H3 AV latent (Polyhedron Empty Latent, 'MiniMax H3 AV'). Size and length come from it; it is passed on unchanged unless `hold` copies the context into it.
modeCOMBOK2L latent context (no VAE)K2L: continue from clip n's OWN latent (Chain Source clip_latent) -- no VAE round trip. K2: from its decoded last frames (Chain Source tail + tail_audio). anchor only: no context, just the anchor input.
context_framesINT225–362How much of clip n's end guides the start of clip n+1, in frames. Snapped down to the H3 clip grid 5, 22, 39, ... (17k+5). 22 = 0.92 s.
with_audioBOOLEANtrueCarry clip n's sound under the context on the same time axis, so the soundtrack continues too.
anchor_frameINT-1-9999–9999Where the `anchor` input goes: its (first) frame lands here. Negative counts from the end, -1 = the last frame. Ignored without an anchor.
audio_contextINT00–362How far back clip n's SOUND reaches, in frames, pinned to end at the join (where the picture window ends). 0 = the sound under the whole picture window from frame 0 (Core's Add Guide). Multiples of 3 land exactly on the audio grid (others are widened). 18 holds a soundtrack well across a join; longer holds it closer but dulls it a little at every join.
holdCOMBOguide onlyguide only: the end of clip n is a guide (as before), the latent passes through. guide + hold in the latent: the same end is ALSO copied to the start of this run's latent (picture and sound) and held by a noise mask, then released -- a harder join. Wire the `latent` output into the sampler.
release_framesINT160–64With hold: over how many of the held frames the picture is released again, counted back from the join (rounded to whole tokens -- a token is 1 or 4 frames; the info says how many frames it came to); the frames before them stay locked. 0 = held hard up to the join. The sound is released over its last 100 ms.
vaeoptVAEVideo VAE -- needed for K2 and for an anchor image. K2L needs none.
audio_vaeoptVAEAudio VAE -- needed for K2 with audio. K2L needs none.
clip_latentoptLATENTK2L: Clip Chain Source `clip_latent` -- clip n's AV latent as Clip Store kept it.
tailoptIMAGEK2: Clip Chain Source `tail` -- clip n's last frames (5 or more).
tail_audiooptAUDIOK2: Clip Chain Source `tail_audio` -- cut to the context length here.
anchoroptIMAGEAn image (or a clip of 5+ frames, snapped to 17k+5) to pin at `anchor_frame`: a target pose, the end of a move, the next keyframe.
anchorsoptPLS_ANCHORSCine Timeline `anchors`: every anchor between the first and the last frame, each at its own frame.

Outputs (4)

NameTypeDescription
positiveCONDITIONING—
latentLATENT—
overlapINT—
infoSTRING—