JZL - 🌊 海螺H3二采条件同步
The node that keeps your first/last frames honest after a latent upscale
- 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:
- It reads the target spatial size straight out of the upscaled
latentinput - no need to tell it the resolution. - It walks the
positiveconditioning'sminimax_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. - Pure-text (t2va) conditioning and the ref images/videos (
minimax_refs) pass through untouched - they don't need resizing. - 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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | 一段采样的 positive(含文本 token 与可选首尾帧/参考) | |
| vae | VAE | 视频 VAE,用于首尾帧高保真重编码(解码→像素放大→再编码) | |
| latent | LATENT | 放大后的 AV latent,自动读 video 空间尺寸作为对齐目标 |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| latent | LATENT | 首帧修复后的 AV latent(video 第 0 帧已替换为干净首帧) |