Nodes/ComfyUI-MiniMax-Creator/MiniMax H3 Creator
ComfyUI Node

MiniMax H3 Creator

Write a sentence, attach media with @, press Render

By roadmaus·Created 17 days ago·Updated about 18 hours ago· 58
MiniMax H3 Creator
      creator_data{ "version": 2, "prompt": "", "aspect": "16:9", "short_edge": 768, "output_prefix": "minimax/renders/H3", "models": {}, "segments": [ { "prompt": "", "assets": [], "loras": [], "duration_s": 6, "checkpoint": "auto" } ] }
      seed0
      steps20
      cfg1.0
      sampler_nameres_multistep
      schedulersimple
      shift_video12.00
      shift_audio3.00
      block_cacheoff
      spectrumfalse
      spectrum_blend0.50
      sagefalse
      attentiondefault
      chunk_ffnfalse
      fp16_accumulationfalse

      You know the drill with video models in ComfyUI: eleven nodes, a conditioning socket you forgot to connect, a VAE somewhere in the middle, and the audio comes out of a separate gizmo you only remembered at export. The MiniMax H3 Creator is the opposite. One node holds the whole generation - you type a sentence, attach media with @, press Render, and a finished clip with its sound already in it comes back. No model loader, no sampler to reassemble, nothing to wire. It's the flagship node of the ComfyUI-MiniMax-Creator pack, and the only one you actually need to know about to make H3 video.

      Quick reality check first. H3 is MiniMax's 33B open-weights omni-modal model - text, image, video and audio in one context, native stereo sound, 4–15 s clips at up to 2K/24fps. It's genuinely good; the launch threads called it "very, VERY good" and the motion transfer "like Kling." But it's also huge (roughly 42 GB of weights) and its community licence excludes the US, EU, UK and South Korea from the territory where you're allowed to run it. The pack itself is MIT and needs no key - all local - but check your region before you download the model.

      How it works

      Under the hood the Creator isn't an ordinary node. Because it samples, it has to be the sampler, so when you queue it, it expands into a subgraph - loaders → segment → accelerators → KSampler → reel → save, all emitted automatically. That's why it has zero outputs and the internal nodes never appear on your canvas. Everything you fiddle with is serialised into one JSON blob (creator_data), the node's memory: prompt, aspect, short edge, segments, attached assets, LoRAs.

      The mode badge shows which checkpoint the render will land on, and you never pick it: nothing attached is T2VA, attached frames push you to FL2VA, any reference at all pulls in Ref2VA. The @ mentions are the load-bearing bit - H3 reads <Picture N> / <Video N> / <Audio N> labels in tokenizer order, not free text. Typing "use @img-1 for their face" assigns those ordinals for you, which is the difference between a reference that works and one that silently drifts.

      The inputs that matter

      • creator_data - the whole piece as JSON. You won't edit this by hand; the UI does it as you type.
      • seed - one seed for the entire piece; every segment, refine and face pass inside them runs on it. Consecutive shots are separated by prompts and seams, not fresh noise.
      • steps / cfg / sampler_name / scheduler - defaults 20 / 1.0 / res_multistep / simple. For reference-heavy prompts, switch the scheduler to beta or normal.
      • shift_video (12) and shift_audio (3) - the checkpoints' own values. A wrong audio shift distorts the soundtrack before it touches the picture.
      • block_cache, spectrum, attention, chunk_ffn, fp16_accumulation - the accelerator row. Every cache trades fidelity for speed - A/B against a native render before trusting one on a final piece. attention's kitchen is core's own int8 kernel, nothing to install; sage needs KJNodes plus sageattention and an NVIDIA card. chunk_ffn is the one free low-VRAM switch - it rearranges arithmetic, so the frames are the same ones. fp16_accumulation mostly does nothing on the released bf16 checkpoints, which is exactly why the tooltip says so.

      One quirk worth knowing before it bites you: H3's temporal packing means a clip's frame count must satisfy n % 17 == 5 at 24 fps - there is no such thing as a 6.00-second H3 video. The duration pill shows whole seconds and the compiler lands on the nearest legal count, so "6 seconds" becomes 5.79 or 6.58. Annoying the first time, invisible after.

      Installing

      ComfyUI Manager, search "MiniMax Creator", or:

      cd ComfyUI/custom_nodes
      git clone https://github.com/roadmaus/ComfyUI-MiniMax-Creator
      

      Restart ComfyUI. No pip install - the pack's dependency list is empty because the model lives in core (comfy_extras/nodes_minimax_h3.py), so you need a ComfyUI recent enough to ship it. Then the weights, where ComfyUI already looks: FL2VA and Ref2VA checkpoints into models/diffusion_models, the text encoder into models/text_encoders (CLIPLoader type minimax), the video and audio VAEs into models/vae, and taeh3.safetensors from madebyollin's taehv repo into models/vae_approx so the preview looks like the video. Pick everything on the node's weights pill - anything a render needs and doesn't have is refused before the queue starts, naming the field and folder, so you don't find out five minutes into sampling. GGUF checkpoints and text encoders work via ComfyUI-GGUF if you'd rather run quantized.

      Two machine notes from the README. fp8 checkpoints only speed up sampling on cards with hardware fp8 matmul (RTX 40-series and later); on older cards they still halve memory and change nothing else. And if a long render dies with a HostBuffer.read_file_slice CUDA OOM, that's ComfyUI's Dynamic VRAM streaming weights in a way H3 fights with - start ComfyUI with --disable-dynamic-vram and the render usually survives.

      There's also a whole second machine inside the same node: click "Write the next shot" under the prompt and it becomes a timeline, with per-shot prompts, references and LoRAs, chained or compiled into a single generation. That's its own story - the Timeline article covers it. For a single shot, this is the whole workflow. Drop the node, type, press Render.

      CategoryMiniMax

      Inputs (15)

      NameTypeDefaultDescription
      creator_dataSTRING{ "version": 2, "prompt": "", "aspect": "16:9", "short_edge": 768, "output_prefix": "minimax/renders/H3", "models": {}, "segments": [ { "prompt": "", "assets": [], "loras": [], "duration_s": 6, "checkpoint": "auto" } ] }
      seedINT00–18446744073709550000The seed for the whole piece: every segment, chained or single, and every refine and face pass inside them, runs on this number. What separates consecutive shots is their prompts and their seams, not their noise.
      stepsINT201–10000
      cfgFLOAT1.00–100
      sampler_nameCOMBOres_multistep44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38
      schedulerCOMBOsimpleThe templates use 'simple'; for reference-heavy prompts they suggest 'beta' or 'normal' instead.
      shift_videoFLOAT12.000.01–100The video flow shift. 12 is the checkpoints' own value; a turbo LoRA's card may name another.
      shift_audioFLOAT3.000.01–100The audio flow shift. 3 is the checkpoints' own value. A wrong one distorts the soundtrack before it touches the picture.
      block_cacheCOMBOoffStep caching, one implementation at a time. safe/fast/aggressive are FirstBlockCache presets (needs ComfyUI-MiniMaxH3-FirstBlockCache); 'easy' is core's EasyCache; 'tea' is TeaCache (needs ComfyUI-MiniMaxH3-TeaCache). All trade fidelity for speed — A/B before trusting one on a final render.
      spectrumBOOLEANfalseSpectrum: forecast features across steps instead of evaluating every one. Needs ComfyUI-Spectrum-MiniMax-H3. Combines with block_cache; cannot be combined with EasyCache.
      spectrum_blendFLOAT0.500–1Spectrum's video spectral share. Higher is faster and further from a native render. Ignored unless 'spectrum' is on.
      sageBOOLEANfalseDeprecated — use 'attention'. A workflow saved with this on still runs sage attention.
      attentionCOMBOdefaultWhich attention H3 runs. 'default' is the checkpoint's own; 'sage' is quantized attention (needs ComfyUI-KJNodes and the sageattention package, NVIDIA only); 'kitchen' is core's own int8 kernel, with nothing to install. One at a time — a model has one attention. Both are faster and lower on peak VRAM, and both compose with the caches and with Spectrum.
      chunk_ffnBOOLEANfalseLow VRAM: run H3's feed-forward in chunks over the packed sequence (KJNodes' Chunk FFN). Lowers the peak a render has to fit in, and the frames are the same ones — activations are quantized per token, so chunking is a rearrangement rather than a trade. Needs ComfyUI-KJNodes. Composes with everything above.
      fp16_accumulationBOOLEANfalseFast math: let cuBLAS accumulate fp16 matmuls in fp16 while this model runs, and put the flag back afterwards (KJNodes' fp16 accumulation). It reaches fp16 matmuls only — the released H3 checkpoints run bf16, and their quantized layers go through comfy-kitchen's kernels rather than cuBLAS, so on those there is nothing for it to change. For a genuinely fp16 model it is faster where the card supports it, at some precision. Needs ComfyUI-KJNodes and torch 2.7 or newer, and raises rather than pretending on a torch without the flag.

      Outputs (0)

      No outputs