slavasexton/comfyui-agent-kit/minimax-h3
Claude Code and agent skill by slavasexton/comfyui-agent-kit
- community
Checking that the SKILL.md file is still in the repository.
Use when writing or debugging prompts for MiniMax H3 (Hailuo 3) video-with-audio generation, running the open weights locally in ComfyUI, choosing a quant or an acceleration LoRA for the VRAM you have, wiring reference-to-video with images, video or audio, or when a generated clip produces gibberish speech, drifts off a reference identity, garbles audio after a latent upscale, or refuses to run on a build that looks current.
Install
npx vskill@latest install slavasexton/comfyui-agent-kit/minimax-h3SKILL.md
MiniMax H3 (Hailuo 3)
H3 generates video and synchronised stereo audio jointly, from text, images, reference video, reference audio, or any mix. It is the same model family whether you hit the hosted API or run the open weights, but the two paths are wired completely differently and only one of them is free.
Two paths, do not confuse them.
- Hosted API, partner nodes
MinimaxHailuo03TextToVideoNode/...FirstLastFrameNode/...ReferenceNode,
category partner/video/MiniMax. 2K output, priced per second, no local weights.
- Local open weights, core nodes
MiniMaxH3ImageToVideoandMiniMaxH3ReferenceToVideofrom
comfy_extras/nodes_minimax_h3.py. 768p, free, and everything below is about this path.
Who owns what, so you open one file, not three. THIS file owns the prompt format and the operating rules. reference.md next to it owns weights, quant sizes, acceleration packs and their wiring. The MiniMax entry in the kit's MODELS.md owns the node-level graph (every node and socket) and the licence. When they disagree, the node code wins and the discrepancy is a bug worth reporting.
The prompt format is not free-form prose
H3-Base consumes the output of a hosted prompt refiner (H3-Context-IR) that is not in the open release. So locally you write in the refiner's output shape yourself. From MiniMax's own VIDEO_PROMPT_WRITING_GUIDE_base_en.md, that is an optional instruction line, a blank line, then three fields:
integrated_multimodal_descriptioncarries visuals, action, shots, speakers, dialogue and diegetic sound along
the timeline. overall_soundscape sums ambience and physical-action sound. non_diegetic_music is score the characters cannot hear.
- Image modes need a fixed first line. I2V: `For the target video, at 0.00 seconds into the target video,
<Picture 1> (from [Shot 1]) is fully referenced.` First-and-last-frame uses the alignment sentence naming both pictures and the second each lands on, to two decimals.
A complete prompt, end to end
Nothing above is usable until you have seen one whole. This is a 5 s text-to-video brief in the official shape:
For image-to-video the same block is preceded by the fixed line and one blank line:
Note what is doing the work: one physical action the camera and the sound can both follow, a camera move from the fixed vocabulary, the spoken line wrapped in <d> so the words are exact, and the two audio fields kept separate so diegetic sound and score do not fight.
Dialogue: the single most common cause of "the speech is gibberish"
Speakers get stable IDs (S1), (S2), joint (S1,S2). The words go inside `<d>` with a language tag, and everything about who says it and how stays outside. Copy the line verbatim, do not paraphrase or translate:
Without <d> the model is never told the exact words and improvises phonetics. Voiceover needs the exact phrase says in an off-screen voiceover plus a statement that the lips stay closed. Use <scenetrans> when a line crosses a cut, <cutoff> when speech is truncated by the end. On-screen text goes in double quotes, verbatim.
Camera is a controlled vocabulary
Motion type plus amplitude plus speed, and medium amplitude at normal speed is the default you simply omit: Zoom In/Out, Push In/Pull Out, Pan Left/Right, Truck Left/Right, Tilt Up/Down, Pedestal Up/Down, Arc Shot, Tracking Shot.
Reference-to-video: label every file with a job
<Subject N> is the one that does the real work, because it binds sources: "<Subject 1> is the woman whose appearance comes from <Picture 1> and whose walking motion comes from <Video 1>." Then <Picture N> is a frame or composition anchor, <Video N> an editing or temporal source, <Audio N> a copied signal.
Reference-to-video has its OWN output contract, and it is six sections, not the three above. MiniMax ships two prompt guides, and until 2026-08-09 this skill knew only the first. VIDEO_PROMPT_WRITING_GUIDE_base_en.md governs T2VA / I2VA / FL2VA / L2VA and gives the three fields at the top of this file. VIDEO_PROMPT_WRITING_GUIDE_ref_en.md governs full-reference mode and opens: "A complete rewrite output consists of six sections in the following order":
subject_definitions declares the references and their labels; summary states the task type, the target video and the main relationships to the references; retention_analysis says how each reference is retained, transferred or reused; detailed_description carries visuals, action, shots, sound and dialogue in playback order; the last two match their base-mode meanings. The order is fixed, and the field is `retention_analysis`, not retention. Note this is six named sections of prose in one string, not a JSON array, whatever a third-party node's docs call it. Confirmed by reading the guide on MiniMaxAI/MiniMax-H3 (23 553 bytes, 2026-08-09); the core node itself validates none of this, comfy_extras/nodes_minimax_h3.py takes a plain multiline string, so nothing will tell you when you get it wrong except the result.
Limits from the official card: 9 images, 3 video clips, 3 audio clips, 12 files total, clips 2 to 15 s each and 15 s total, and audio can never be the only reference. The local MiniMaxH3ReferenceToVideo node has four Autogrow families reaching those ceilings: ref_images (max 9), ref_videos (3), `ref_video_audios` (3, the soundtrack of the same-numbered reference video) and ref_audios (3, standalone). A template showing three image sockets is not the limit.
Ten production jobs to write against
Krea's 2026-08-05 guide frames H3 prompts as production paperwork, one job per clip: director's single-shot brief · timed three-beat teaser · first-to-last-frame passage · influencer identity-and-voice lock · reference-motion performance · native-audio product reveal · brand-title reveal with required text and negatives · protected-frame object swap · UI walkthrough · omni-reference director brief. Pick the job first, then decide which control has to survive: camera, timing, identity, motion source, or the sound event line.
Note their examples use a [0-3s] beat style, which is a readable shorthand rather than MiniMax's own [Shot N] plus At 00:04.500 convention. Both work; the official form is the safer default locally.
Operating facts that bite
- Frame count sits on a grid.
lengthmust leave remainder 5 modulo 17 (124 frames = ~5 s, 73 = ~3 s,
362 = ~15 s). The node calls it the "17k+5 grid" and the trained range is ~124 to 362 frames.
- Native size is ~1 MP, template default 1344 x 768 at 24 fps. Higher costs time and VRAM without more
real detail; the official 2K route is a hosted regenerate pass that is not open.
- Duration: trained and tested 5 to 15 s. Longer runs but is untrained territory.
- Speed: the open release ships full attention only; sparse attention is promised later. This is why it
is slow, and why the community acceleration below matters.
- Licence: open weights, not open source, and the territory clause is unusually strict. See
MODELS.md.
When it goes wrong
| Symptom | Most likely cause | |
|---|---|---|
| Speech is fluent-sounding nonsense | The line is not inside <d>[Language] ... </d> | |
| Face drifts across the clip | No <Subject N> binding the identity source, or refs at the wrong scale after an upscale | |
| Audio garbles after a latent upscale | audio_denoise left at its default 1.0 (inferred cause, not measured); audio settles late, so run more of the schedule in pass 1 | |
| Wrong face animated in a crowd | Reference sizing set to match when identity needed max | |
| Acceleration node refuses to load | The build is older than the pack requires; a tagged release is not automatically new enough | |
| Output length is not what you asked | length fell off the 17k+5 grid |
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingshared/minimax-h3/SKILL.md
Popularity
- Repository stars
- 102
- Repository forks
- 13
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/slavasexton/comfyui-agent-kit/minimax-h3)