H3 Studio
One Node That Holds Your Entire Film
- setup
- project
- render
Video models give you one clip at a time. A five-to-fifteen second shot, a seed, another roll. That's fine for a demo and useless for a story. H3 Studio is one node that holds a whole film on a timeline - scenes, shots, references, keyframes and continuations - and renders it a scene at a time, in one queue.
It's the flagship of the pack, and the reason the pack exists.
The mental model
A film is a row of scenes. Each scene is one H3 generation, because H3 is trained on roughly 5–15 seconds and pretending otherwise just gets you drift. Inside a scene, shots are the beats of the prompt - H3 writes them as [Shot 2] At 00:03.500, so retiming a shot edge on the timeline is editing the prompt. References (pictures, videos, audio) tell H3 who and what appears. Keyframes pin exact frames. And a scene can continue from the one before it, carrying its last frames and sound across the cut.
You don't write tags. You mention a reference as @counter and the studio writes the right <Picture n> into H3's prompt for you. Give a line to a character and they say it.
That's the whole value proposition: a film is a data model, not a pile of prompts you keep in a text file.
The node and its wiring
It has two inputs, setup (from H3 Studio Setup) and an optional project (the pack's own project type), and one output: render.
H3 Studio Setup ──setup──▶ H3 Studio ──render──▶ H3 Studio Outputs ──▶ your sampler / decode
Everything after H3 Studio Outputs is ordinary ComfyUI - sampler, decode, save. The studio itself is the editor: it pops out into a ZenKit panel with a monitor for the animatic, an inspector, a multi-track timeline, and a References tab that groups references into look and meaning. The node's own execute compiles the scene under the playhead (or the scene number Setup gives it) into a render object and hands it on. Nothing samples inside it.
For the whole-film-in-one-queue trick you use core's loop nodes:
Start Loop (simple, num_iterations = number of scenes)
iteration_index ─────────▶ H3 Studio Setup.scene
current_iteration_value ─▶ H3 Studio Setup.previous (empty first pass → fresh start)
H3 Studio ▶ Outputs ▶ sampler ▶ decode ▶ H3 Studio Clip
└─▶ End Loop.next_iteration_value
H3 Studio Scenes supplies the count without a wire from the studio, because a wire from inside the loop would close a cycle.
Reuse, which is the real quality-of-life win
Every scene has its own seed. Each rendered clip is recorded with a fingerprint of everything that shaped it - the compiled scene, its media files, the clip it continued from, the model and sampler chain. On a later run, a scene whose fingerprint still matches plays its saved clip and its sampler never runs at all. The editor shows the state per scene: ✓ up to date, ⟳ out of date, or not rendered.
So re-rolling one scene re-renders that scene and the ones continuing from it. Everything else is free. On a 12-scene film that's the difference between a coffee break and an afternoon.
Getting it installed
cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-NynxzH3
cd ComfyUI-NynxzH3
pnpm install && pnpm build
Then restart. You need ComfyUI 0.30.0 or newer and the H3 models. Install through ComfyUI Manager instead and the built frontend comes with the package, so skip the pnpm step. The README also names two optional companions: ZenKit for the pop-out panels, and ComfyUI-NynxzNodes for LoRA lanes.
You'll want the H3 stack from Comfy-Org's MiniMax-H3 repo on HuggingFace - the ref2va diffusion model into diffusion_models, the Qwen3-VL-32B text encoder into text_encoders (NVFP4 if you're on an RTX 50-series, int8_convrot elsewhere), the video and audio VAEs into vae. If you plan to steer with a control video you also want minimax_h3_fun_controlnet_union_2.0_pruned_bf16 in model_patches. The example workflow's note lists every file and where it goes, which is the list to follow rather than guessing.
Before you commit, know what H3 is
H3 is a 33B omni-modal model that generates video and native stereo audio together, and it's the first credible open-weight answer to the native-audio gap closed models held. It landed #1 in Video Editing (With Audio) on the Artificial Analysis arena. Two things the community found out the hard way, though.
The licence geofences the West. The MiniMax H3 Community License excludes the US, EU, UK and South Korea from its "Applicable Territory" - users there aren't licensed to run, modify or distribute the local weights, or use their outputs. Commercial use is separately gated. The hosted Hailuo API stays available.
It's big. Around 42.5 GB of weights, and no verified consumer hardware floor was published at release. Budget for quantization before you plan a 12-scene render over lunch.
Where people get stuck
The studio does nothing when you queue it. It needs a Setup upstream; without model, clip and vae wired it has nothing to plan with.
A partial render errors out about a skipped scene needing its sampler. Something on End Loop's terminations is fed from the decoded frames. Feed per-scene saves and previews from H3 Studio Clip's video instead - a skipped scene plays its clip there.
Your prompt's <Picture n> doesn't match what you wired. Reference numbering isn't chain order; latent references come first. Read the encode node's picture_map.
Nothing re-renders after an edit. That's often the feature, not the bug. Turn reuse off on H3 Studio Clip, or change the scene's seed, if you actually want a fresh take.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| setup | NYNXZ_H3_STUDIO_SETUP | From H3 Studio Setup. | |
| projectopt | NYNXZH3_H3_STUDIO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| render | NYNXZ_H3_STUDIO_RENDER | Into H3 Studio Outputs. |