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
First CivitAI release. Requires the Hand Tie Clips node at 0.4.5 or newer
— git clone https://github.com/dntpi/ComfyUI-Hand-Tie-Clips.git into
ComfyUI/custom_nodes, then restart ComfyUI and hard-refresh the browser.
The attached HandTieClips_Starter.json ships with **no reference images on
purpose**, so it runs immediately after install. It carries its own
documentation on the canvas as note cards, plus the seam report and chain
preview already wired.
Recent in the node itself:
- 0.4.5 — the per-hop cache no longer needs ffmpeg on PATH. It encodes
lossless FFV1 in process through PyAV, which ComfyUI already ships. Same
format, verified bit-exact, so nothing about your output changes — it just
stops failing for people who never installed ffmpeg.
- 0.4.4 — fixes to prompt_pack/, the copy-paste prompt that gets a chat
model to write plans for you. Two local models made the same two mistakes
against the old wording; both were the prompt's fault and both are fixed.
Full changelog and engineering log:
https://github.com/dntpi/ComfyUI-Hand-Tie-Clips/blob/main/docs/DEVLOG.md
FAQ
Comments (10)
The github and HF should contain all useful information, can feed the page to your LM for precise configuration as well, but if there are questions I'm usually hanging out in the Sulphur discord
Great job!! I have tried this workflow, and it did make a long video. But I couldn't figure it out how to import an external music with vocal like a music video playing the music thoughout, especially as long as 3 minutes at least. Can it?
Thank you for the feedback! Especially useful for me as I never tried long audio at all! Am actually trying to rework the video/audio inputs into something better, for now I'm not too sure but there'll be an update pushed for audio in a day or two
I have pushed an update to insert a soundtrack! Thanks for the reminder.
@sandpies I like to timetravel forward finding out gems like this after things got solved :D
@sandpies That's great!! I will take a look at this new one and see how the external audio goes and leave a comment again later. Anyway, thanks.
well... I did a simple singing test of two 10s hops/shots using 2 ref pictures and one audio. One pic is a close-up face for facial identity. Another one is for full-body appearance. For better lip-sync, the audio contains only vocal extracted from a singing audio file containing both vocal and instruments.
The result came up with a 19 seconds clip which used the second reference picture as I wrote in prompt but the clip played only about 7 seconds of that selected audio. The rest of audio/music was just something else. I have no idea where it came from. So, I guess the workflow did use the reference pic throughout but took the audio/music only for the first hop or shot.
@pixscene understood! I think i know what the issue is from this feedback. Thank you so much! I'll work on it.
@sandpies In my use case, I didn't put any text nor lyrics in the prompt. The imported audio containing only vocal part was for better lip-sync. The audio part of the the final video was from the full audio file (containing both vocal and instruments) imported later while doing final multiplte cip combination.
But, in the case of prompts using text as speech, a different way to handle audio may be needed. The final imported audio file may overwite the audio part of each generated clip.
Well.... sorry if your workflow was not designed to handle my use case.
@pixscene no i completely understand. I wanted a wider coverage of usecase as well. I found the issue, it was something i oversaw as well! Will be remaking this portion of the audio :D thank you once again for helping find this.