Turn 8-second MiniMax H3 clips into 1-minute+ multi-shot films — same face, same voice, synced dialogue, solo shot retakes, and 2 MP guided 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
🎬 What You Can Do
SimpleMode (Standard MMH3ref2va/t2va+ Realism Boost): Paste standard 6-field MiniMax H3ref2va/t2vaprompts (passed through verbatim!) or plain prose for single-clip generations (chains = 1) with the visualREFSrail,realism_boost: on(steps = 6→ 2 base + 10 realism LoRA steps) +audio_refine: on(5 steps), and 2 MP Guided Upsampling!ShotsMode (Multi-Hop Chains): Write one short beat per card (5 s – 15 s each) with camera, framing, pace, and join controls.Visual & Voice Reference Rail (
REFS): Drop up to 9 character/location stills and voice timbre clips straight onto the node with@tagsand per-hop schedules (noLoad Imagespaghetti).Lossless Retake Board (
TIMELINE): Every hop caches losslessly. Lock the shots you like, or click⏵on Shot 4 to re-roll only Shot 4 while Shots 1–3 load in 1 second.Standalone 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 Guided Upsampler: Enlarges the finished film in 3D latent chunks and runs a 2-step tiled redraw with the
h3upscale_v2_x2guide LoRA.Local AI Draft Assistant (
WRITE— WIP): Connect LM Studio / nInfer / llama.cpp to draft shot cards or bar-synced music video layouts from a 1-sentence brief.
🔗 Two Ways to Join Shots (pin_mech) & Honest Limits
motion_context(Default — Built-In): Native latent-slice + audio relay (no external custom node needed; credit to NikoDemon80).
Honest runway withhop_refine: full: Holds clean for ~5–6 continuous clips on Turbo and ~7–8 clips on non-Turbo before texture changes become visible. Plan a transition to a cut (anchor: "restart") every 4–5 clips to keep textures fresh across long multi-scene films.hand_tie(Single-Take Previs — Public Experimental): Renders one low-res single-take bridge previs first and ties each full-res hop's opening and closing 0.9 s to those clean windows so hops never copy texture from each other (10+ hops in one continuous take). Best for continuous walking/talking vlogs in one setting; pair withqwen3vl_4b_fp8_scaled.safetensorsinmodels/text_encoders/.
⚡ 60-Second Install
Zero Python/pip dependencies. In ComfyUI/custom_nodes/:
git clone https://github.com/dntpi/ComfyUI-Hand-Tie-Clips.gitRestart 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_ditGuided Upscaler:
minimax_h3_latent_upscaler_3d_bf16.safetensors(models/latent_upscale_models/) +h3upscale_v2_x2.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 pin carry her look.
No ellipses (
...) inside dialogue: Connect clauses inside speech with a simple comma (,) so the audio branch never fills pause gaps with gibberish.Set the final shot's
tailtosettleorhold: So the film lands cleanly instead of starting a new gesture on the last frame.
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.