Nodes/ComfyUI-JZL-MiniMax-H3/JZL - 🌊 海螺H3二采条件同步
ComfyUI Node

JZL - 🌊 海螺H3二采条件同步

The node that keeps your first/last frames honest after a latent upscale

By wjluoxiao·Created 13 days ago·Updated 3 days ago· 57
JZL - 🌊 海螺H3二采条件同步
  • positive
  • vae
  • latent
  • positive
  • latent

"JZL - 🌊 海螺H3二采条件同步" (Second-pass Conditioning Sync) solves a very specific, very annoying problem: when you upscale an H3 latent and sample again at higher resolution, the conditioning - especially the first/last-frame keyframes - is still at the old resolution. Reuse that low-res conditioning and your first frame drifts, smears, or outright misaligns. This node is the bridge that makes the second pass line up.

It sits in the two-pass workflow the pack's "Pro" params node and "二采编码" (Dual encode) node are built around: first pass at base resolution, latent upscale, second pass at the bigger canvas. CondSync is what you put between the upscaled latent and the second sampler.

How it works

The mechanism, from the source:

  1. It reads the target spatial size straight out of the upscaled latent input - no need to tell it the resolution.
  2. It walks the positive conditioning's minimax_keyframes (the first/last-frame entries H3 embeds) and, wherever a keyframe latent doesn't match the target size, re-encodes it high-fidelity: decode → upscale pixels (Lanczos) → re-encode. That's deliberately better than interpolating in latent space, which blurs the anchor frame.
  3. Pure-text (t2va) conditioning and the ref images/videos (minimax_refs) pass through untouched - they don't need resizing.
  4. It also repairs the latent's frame 0: after a 3D upscaler touches the temporal dimension, frame 0 is often polluted at the boundary, so the node splices the clean re-encoded first frame back in as the video latent's [..., 0:1, :, :].

Outputs are positive (resynced conditioning) and latent (with the repaired first frame).

The inputs that matter

  • positive - pass-1 conditioning, containing text tokens plus optional first/last-frame keyframes.
  • vae - the video VAE, needed for the decode→upscale→re-encode round trip.
  • latent - the upscaled AV latent; its dimensions are the alignment target.

How to install it

Part of the JZL-MiniMax-H3 pack - ComfyUI Manager, search "ComfyUI-JZL-MiniMax-H3", or:

cd ComfyUI/custom_nodes
git clone https://github.com/wjluoxiao/ComfyUI-JZL-MiniMax-H3

Restart. This is an io.Schema V3 node, so it needs a recent ComfyUI with comfy_api.latest (the build that ships the official H3 nodes). Deps: torch, and torchaudio is in the pack for the audio side.

Common issues

The two things people trip on: it only fixes keyframe conditioning - if your workflow uses no first/last frames (pure t2va), the node is mostly pass-through, which is fine, don't expect magic. And it needs the actual vae that matches the model; a mismatched VAE gives you a blurry re-encoded frame that's worse than the smear you were fixing. There's also the standing H3 context: the weights are ~42.5GB, and the MiniMax H3 Community License excludes the US, EU, UK, and South Korea from local runs.

CategoryJZL/MiniMax

Inputs (3)

NameTypeDefaultDescription
positiveCONDITIONING一段采样的 positive(含文本 token 与可选首尾帧/参考)
vaeVAE视频 VAE,用于首尾帧高保真重编码(解码→像素放大→再编码)
latentLATENT放大后的 AV latent,自动读 video 空间尺寸作为对齐目标

Outputs (2)

NameTypeDescription
positiveCONDITIONING
latentLATENT首帧修复后的 AV latent(video 第 0 帧已替换为干净首帧)