Nodes/Continuity/MiniMax H3 Seam Restore
ComfyUI Node

MiniMax H3 Seam Restore

The hidden node that keeps long H3 videos from going soft

By roadmaus·Created about a month ago·Updated 2 days ago· 80
MiniMax H3 Seam Restore
  • model
  • positive
  • negative
  • vae
  • frames
  • IMAGE
  • LATENT
seed0
steps20
cfg1.0
sampler_name
scheduler
denoise0.45

If you render a multi-shot H3 video in the Continuity pack (it used to be called ComfyUI-MiniMax-Creator) and one day poke at the expanded graph, you'll find a node called MiniMaxH3SeamRestore sitting between two segments. You almost certainly didn't add it. That's the point - this is one of those internal pass nodes the pack writes into your graph itself, and it's doing the least glamorous job in video generation: stopping your footage from slowly melting.

What it actually is

MiniMaxH3SeamRestore is a seam-restoration pass for H3 chained renders. When you build a timeline of more than one shot and render it in chained mode, every segment after the first continues from the previous segment's last frames. That's how you get a character walking across a cut. And here's the dirty secret of that trick: H3 anchors on its own output, and every continued shot comes out a touch softer and a touch crunchier in contrast than the shot it continues. Because the next seam then anchors on that softened tail, the loss compounds down the strip - shot 6 isn't just slightly dull, it's noticeably degraded from shot 1.

The pack's own notes call this issue #41, and it's not something any arrangement of the frame handoff fixes. So instead of patching the handoff, this node breaks the chain: the tail a seam is about to hand over gets re-sampled, and what the next shot continues from is a restored copy, not a softened one.

How the restore works

The mechanism is more careful than "re-render the last few frames." The inherited frames are encoded with H3's video VAE, packed with an empty audio latent, and re-sampled partway down the denoise schedule (the default denoise is 0.45 - half the run, not a fresh generation). That matters: the picture, its motion and its light are held in the latent, and the schedule's lower half only re-resolves texture and edge. So you get your crispness back without the character teleporting or the lighting changing.

Sound gets special treatment. A nested noise mask puts ones over the picture and zeros over the audio row, so the sampler redraws the picture while holding the audio exact - and the audio is empty here anyway, because the seam carries its sound by a separate inherited_audio path. This pass is about the picture only. The cost is one short generation per seam (a few frames at the pass's canvas), whatever your shot lengths, because the source pass itself is never re-run.

The inputs and outputs that matter

Mostly you'll never set these by hand, but if you're reading a graph: model, positive/negative conditioning, vae and frames (the source shot's tail) are what the restore samples against. denoise is the real dial - it's the "restore strength." The pack exposes this in the seam popover as a switch with three strengths, off by default, H3 only, between two generated shots; start at Medium. cfg defaults to 1.0 and the negative is wired to a zeroed copy of your positive, which is H3's cfg-1 way of saying there isn't really a negative. Outputs are an IMAGE (the restored frames, decoded) and a LATENT (the restored run as the sampler left it) - the next segment slices its seam off the latent so a restored seam pays no extra VAE round trip.

Installing and the one gotcha

Install is standard: Manager, or

cd ComfyUI/custom_nodes
git clone https://github.com/roadmaus/ComfyUI-MiniMax-Creator

then restart. Nothing to pip install - the pack's dependencies are empty, and it drives model families that live in ComfyUI core. You still need the H3 weights from Comfy-Org/MiniMax-H3: both diffusion checkpoints, the Qwen3-VL text encoder, and the video and audio VAEs (note H3's community licence excludes the US, EU, UK and Korea, if that applies to you).

The real trap is the rename. This pack is ComfyUI-MiniMax-Creator, renamed to Continuity, and GitHub redirects the old address. If you clone the fresh folder next to an existing ComfyUI-MiniMax-Creator, you get two folders registering the same node ids - and the result is no node in search at all. If you already have it installed, don't clone; just git pull in the old folder.

When it bites

The failure you might actually see: if a hand-built graph feeds this node frames whose count isn't on H3's 17n+5 frame grid, it refuses with a "not on H3's frame grid" error - the compiler only ever emits legal lengths, so that's a sign of a graph built against different arithmetic. And don't hunt for this node in the menu expecting to wire it yourself; it's marked dev-only on purpose, and editing it by hand usually means fighting the pack. If your problem is a single long H3 render drifting, this isn't your fix either - seam restore only lives between chained shots.

CategoryMiniMax/internal

Inputs (11)

NameTypeDefaultDescription
modelMODEL
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
framesIMAGE
seedINT00–18446744073709550000
stepsINT201–10000
cfgFLOAT1.00–100
sampler_nameCOMBO44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
schedulerCOMBO9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3
denoiseFLOAT0.450.01–0.99

Outputs (2)

NameTypeDescription
IMAGEIMAGE
LATENTLATENT