Nodes/H3ZeroStudio/H3ZeroStudio · Timeline
ComfyUI Node

H3ZeroStudio · Timeline

ZL_H3Studio Is a Deprecated Alias — Here's Why Your Old Workflow Still Loads It

By zeroleloushe·Created 13 days ago·Updated 9 days ago· 14
H3ZeroStudio · Timeline
  • model
  • clip
  • vae
  • audio_vae
  • audio
  • images
  • audio
  • latent
◄project►

If you're here because your node says [DEPR], you're in the right place

ZL_H3Studio isn't a separate tool and it isn't broken. It's the original class id from the first release of H3ZeroStudio, back when the node was called "H3 Studio". The author kept it registered so old workflows still load, then marked it deprecated. In the current source it's four lines of Python:

LEGACY_NODE_ID = "ZL_H3Studio"  # first MVP name ("H3 Studio"), kept so old workflows still load

class ZL_H3StudioLegacy(ZL_H3ZeroStudio):
    DEPRECATED = True

It subclasses the live node, so it inherits the same inputs, the same outputs and even the same display name, "H3ZeroStudio · Timeline". The only differences you can observe: the [DEPR] badge in the compact node view, and the fact that it doesn't appear when you search the add-node menu. That's the whole story - anything you read about ZL_H3ZeroStudio applies here verbatim.

The rename had a boring, sensible reason, straight from the author's comment: other packs already use H3Studio* names. So if you go hunting for an "H3 Studio" node and find two unrelated projects, the one you want is zeroleloushe/H3ZeroStudio. Its ids are namespaced (ZL_ prefix, h3z- web assets, /h3zero/ server routes) so it can't collide with whatever the other thing is.

Fix it in one click

Open the workflow containing the old node. In the compact node body, next to "Expand", there's a ⇪ Update node button (Russian UI: "⇪ Обновить ноду"). Click it.

Under the hood that button builds a fresh ZL_H3ZeroStudio, copies every widget value across - including the project widget, which is your timeline - keeps the node's title, position and size, rewires every inbound and outbound link by slot name, then deletes the dead node. Your segments, takes, markers and audio lanes come with it, because they live inside that JSON string rather than in the class.

Don't rebuild the node by hand. A hand-made replacement opens an empty editor and loses the project.

What the node actually does

Same as its current id: it's a CapCut-style timeline for MiniMax H3. H3 produces 4–15 second clips (124–362 frames at 24fps) with native stereo audio and no memory between runs, so anything longer than one shot is stitching work. This node turns stitching into editing - segments with individual prompts and up to nine reference pictures each, continuation links where the previous segment's latent tail is pinned into the start of the next and protected by a noise mask, up to 12 takes, a draft→upscaled-final two-pass mode, and export.

You wire the H3 model, its Qwen3-VL text encoder, the video VAE and the audio VAE. audio is an optional incoming track that either becomes a reference in every segment or is kept as-is with the video generated to follow it. Out come images (24fps), audio, and the stitched audiovisual latent. Leave audio_vae unwired and you get silent video - the node won't stop you.

It also isn't an output node, so send images into a save or video-combine node, otherwise pressing Generate queues a graph with nothing to execute.

Installing, in case the pack is what's missing

The legacy id ships inside the same pack, so there's one thing to install:

cd ComfyUI/custom_nodes
git clone https://github.com/zeroleloushe/H3ZeroStudio.git ComfyUI-H3ZeroStudio

Or Manager → Custom Nodes Manager → search H3ZeroStudio → Install, then restart. requirements.txt in the repo is comments only - no pip dependencies, since torch, numpy, Pillow, av and aiohttp all ship with ComfyUI. What you must have is a ComfyUI recent enough for native MiniMax H3 support, plus the H3 weights. After a restart, look under MiniMax H3/H3ZeroStudio.

Troubleshooting the legacy node specifically

The editor opens empty after you click Update node. The old node's project widget was already empty - usually a node that was pasted in but never opened. Check output/h3zerostudio/_projects for a saved copy before you rebuild anything.

The badge is gone but Generate is greyed out on a continuation segment. Unrelated to the rename: a continuation needs a finished take from the previous segment before there's a tail to pin. Generate the first segment, or switch the link to "new scene".

"Upscale unavailable". The final pass needs the learned H3 latent upscaler - the file in models/latent_upscale_models and the Comfyui_Minimax_h3_latent_Upscaler pack - or nvidia-vfx on an RTX card.

Blurry live preview. Drop taeh3.safetensors into models/vae_approx; without it the preview falls back to a crude latent→RGB decode.

Once you've clicked that button there's nothing left to do about ZL_H3Studio. It exists so workflows made in the first week of the pack's life still open - nothing more.

CategoryMiniMax H3/H3ZeroStudio

Inputs (6)

NameTypeDefaultDescription
projectSTRINGH3ZeroStudio project (JSON). Edited in the full-screen editor, stored inside the workflow.
modeloptMODELMiniMax H3 model (Ref2VA, turbo LoRA optional). Optional when a model preset is selected; a wired model wins over the preset (the preset's LoRAs are applied on top).
clipoptCLIPH3 text encoder (Qwen3-VL): encodes the segment prompt together with the references. Optional when the preset sets an encoder; a wire wins.
vaeoptVAEH3 video VAE: encodes references, decodes segments. Optional when the project's preset sets a VAE; a wire wins.
audio_vaeoptVAEH3 audio VAE (minimax_h3_audio_vae). Needed for sound in the preview and the AUDIO output, and for the audio track.
audiooptAUDIOTimeline audio track: “reference” mode (<Audio 1> in every segment) or “main” (the sound stays as is, video follows it). Needs audio_vae.

Outputs (3)

NameTypeDescription
imagesIMAGEAll frames of the assembled video (24 fps).
audioAUDIOThe video's sound (from the audio VAE, else the input audio, else silence).
latentLATENTH3 AV latent of the assembled video (video + audio). With hard cuts (no extension) the length is not 5k+2.