Turn 8-second MiniMax H3 clips into 1-minute+ films — same face, same voice, synced dialogue, one-shot retakes, one continuous take with no joins, and 2 MP upscaling — all from one ComfyUI node.
🕹️ Try the Interactive Node UI in Your Browser (click through Script, Refs, Timeline, Swap & ⚙ RUN before installing)
📦 GitHub Repository · Hugging Face Mirror
🆕 New in 3.4.0: One Continuous Take (sand_tie)
A whole run of hops renders as ONE video. No joins to see; a take only cuts where you write
anchor: restart.🎬 2:03 one-take music video · 52 s two-person take, street → boardwalk → bench · 65 s walking selfie (upsampled)
Retake one hop and only that hop is redrawn; the rest of the take is kept.
tone_lockkeeps a long take from drifting brighter (0.5 / 0.75 / full).Song-locked takes (
master_audio_file) keep lip sync for the whole song.
🎬 What You Can Do
Simple Mode (Standard MMH3 ref2va / t2va + Realism Boost): Paste standard 6-field MiniMax H3 prompts (passed through verbatim!) or plain prose for single clips (
chains = 1) with the visual REFS rail,realism_boost: on(steps = 6→ 2 base + 10 realism LoRA steps) +audio_refine: on(5 steps), and 2 MP upsampling.Shots Mode (Multi-Hop Chains): One short beat per card (5 s – 15 s each) with camera, framing, pace and join controls.
Visual & Voice Reference Rail (REFS): Up to 9 character/location stills and voice clips right on the node, with @tags and per-hop schedules (no Load Image spaghetti).
Lossless Retake Board (TIMELINE): Every hop is cached. Lock the shots you like, or click ⏵ on Shot 4 to re-roll only Shot 4 while Shots 1–3 load in a second.
Guided SWAP: One-hop character or head swap driven by a reference video's motion & audio (
replace_person,head_swap,face_only,keep_person) with a wardrobe override box and auto-loaded Swap LoRAs.Built-In 2 MP Upsampler: Enlarges the finished film with the H3 latent upscaler and a light 3-step Open-H3-Regenerate-2K redraw. Small, distant faces are redrawn as close-ups so they keep their person.
WRITE (Local AI Writer): Connect LM Studio / llama.cpp to draft shot cards, one-take timelines or music video layouts from a one-sentence brief. STANDARD writes a single checked H3 prompt.
🔗 Three Ways to Join Shots (pin_mech)
motion_context(Default — Built-In): Native latent-slice + audio relay (credit to NikoDemon80). Honest runway withhop_refine: full: ~5–6 clips on Turbo, ~7–8 on non-Turbo before texture changes show. Plan a cut (anchor: "restart") every 4–5 clips.sand_tie(New — One Continuous Take): Each take renders as one video, its hops overlapping windows. Best for long walks, songs and scenes that move through places. Needs a recent ComfyUI (MiniMax H3 context windows) andoverlap0.9 s.hand_tie(Experimental): Renders a low-res preview of the take first and ties every hop to it. Pair withqwen3vl_4b_fp8_scaled.safetensorsinmodels/text_encoders/.
⚡ 60-Second Install
Zero pip dependencies. Needs ComfyUI v0.38.0 or newer. In ComfyUI/custom_nodes/:
git clone https://github.com/sandpies/ComfyUI-Hand-Tie-Clips.git
Restart ComfyUI and hard-refresh your browser (Ctrl+Shift+R).
Drag
workflows/HandTieClips_Starter.jsononto ComfyUI.Drop your character photo onto Row 1 in REFS (e.g.
@maya), write your beats in SCRIPT, and press Queue.
🧩 Recommended Models & Companion Nodes
Turbo DiT: Wuli MiniMax H3 8-Step Turbo + plain
minimax_h3_ref2vaonrefine_model/upsample_ditUpsampler:
minimax_h3_latent_upscaler_3d_bf16.safetensors(models/latent_upscale_models/) +open_h3_regenerate_2k_r256pp_bf16.safetensors(models/loras/)Speed / Attention Nodes: ComfyUI-PlagueKind-Nodes & ComfyUI-KJNodes
💡 The 5 Golden Prompting Rules (H3 runs at CFG 1.0 — every word is additive)
Never name what you want to stop: Don't write "She stops talking" — write "She smiles with her lips closed. Gentle pool water lapping."
Silence must be written as a room tone: An empty soundtrack invents speech. Always name a narrowband sound ("low hum of the refrigerator", "soft breeze").
Don't re-describe the face on Shots 2+: Describe only the new action; the reference rail and join carry her look.
Only words inside the quotes: A laugh or sigh written inside a line is said out loud as a word. Write it outside: she laughs, then says, '…'
Set the final shot's tail to
settleorhold: So the film lands cleanly instead of starting a new gesture on the last frame.
🎞️ One-take tip: in a sand_tie take, every hop opens with the same camera sentence and the action goes on an At mm:ss-mm:ss, timeline. PROMPTING.md has the full rules; WRITE does it for you.
Description
v2.0.0 Update — Continuous Lip-Sync, SWAP & Drift Control
Continuous Audio Slicing & Lip-Sync
Fixed the 6-second audio reset on chained MiniMax H3 clips.
2.0 takes a single continuous audio track and automatically slices it across hops, keeping lip-sync locked throughout the entire sequence.
Demo: 27-second continuous voiceover across 3 hops with zero audio-visual drift.
SWAP (Identity Transfer)
Map character identities from a still reference image onto source motion footage in a single hop.
Includes 4 modes, scaling from full character replace down to face-only.
Drift Mitigation & Granular Control
Restart Anchors: Re-enter from reference stills using guided match cuts when drift accumulates.
Lab-Space Tone Anchors: Prevents color degradation and shifting across long chains.
Per-Shot Reference Routing: Direct control over which stills ride which specific hops.
Honest Limitations & Degradation Study
Real-world working limit remains 3 to 5 hops before texture ratcheting sets in.
Includes a 10-run, 9-hop degradation study in the README detailing exact failure modes and settings that didn't move the needle.
⚠️ Installation Note: Install directly from the GitHub repository. The registry listing is currently serving v0.4.5 while v2.0.0 clears the review queue.
FAQ
Comments (4)
incredible nodes and workflow. Great works. works perfectly with comfyui kitchen 0.34. thanks
Very fast and really good quality. I add rtx upscaler and frame interpolation. That is great.
But ... I only can have the voice consistancy for the first shot. Even if i write in the prompt or in the global contex for the second shot " subject 1 has the same voice as voice 1 ", it failed and the subject speaks with another voice. Would you have an idea please to make lip2sync with voice 1 in all the shots ? Thanks
@sdktertiaire2 thanks for that catch, i must have missed it during the update - new zip is on civit, or can update from github as well : set voice_every_hop to speaking, keep their voice clip in MEDIA slot 1.
@sandpies thanks.