Prompt Studio MiniMax H3 Director
This node builds the conditioning from a shot list
- clip
- video_vae
- audio_vae
- fl2va_model
- ref2va_model
- model
- positive
- latent
- frame_count
- effective_duration
- compiled_prompt
- mode
- width
- height
If you've tried MiniMax H3 locally, you know the pain this node is aimed at: the model is genuinely good, but its prompt guide is picky - camera moves written as natural English, dialogue locked inside <d> tags, references as <Picture 1> tokens, and every timing detail on a weird temporal grid. Hand-authoring that for a multi-shot scene is miserable. This node (display name Prompt Studio MiniMax H3 Director) is the graph-facing half of the PromptStudio_Video pack: you describe shots, dialogue, camera, and sound in a structured document, and it compiles the guide-compliant prompt and hands you ready-to-sample conditioning and a latent.
The other half is the pack's Video Studio web page (http://127.0.0.1:8188/extensions/PromptStudio_Video/prompt_studio_video.html), a full timeline editor that writes that document for you. The Director node you see in a [PSV] workflow is the engine underneath: it consumes the JSON, not the compiled text. That distinction is the pack's whole philosophy - the structured document is the source of truth, and the prompt is derived from it at execution time.
How it works
Feed it the MiniMax CLIP (a Qwen text encoder), the H3 video and audio VAEs, and the two diffusion models: fl2va_model and ref2va_model. Both are optional in the schema because the node uses lazy input - it reads document_json, works out which generation mode you're in, and only forces the model that mode needs. Auto mode routing is where the reference roles take over: no references → T2VA, one first_frame image → I2VA, first + last frame → FL2VA, a lone last frame → L2VA, and subject/style/scene/video/audio references → REF2VA. From there it calls ComfyUI's own native MiniMaxH3ImageToVideo or MiniMaxH3ReferenceToVideo under the hood, so no API, no key, no third-party model wrappers.
Two details worth knowing before you blame it for a bad render. First, your requested duration gets snapped upward to H3's 17k+5 temporal grid at 24 fps - 5.0 seconds becomes whatever the next grid-aligned frame count is, which is why there's an effective_duration output next to frame_count. Second, dialogue stays verbatim inside the <d> tags and reference tokens are canonicalized, so the pack's local LLM "directors" (in the web UI) can't silently mangle an existing line. The compiled_prompt output shows you exactly what MiniMax ends up reading.
The inputs and outputs that matter
The document_json input is a full JSON object (version, mode, duration, canvas, and a shots list with per-shot camera, steps, dialogue, and sound). You almost never hand-type it - Video Studio builds it from a production brief, and it's editable there. The outputs you wire onward are the star trio: model (the mode-routed diffusion model), positive (conditioning), and latent, which go to the guider and sampler path. The rest - mode, width, height, frame_count, effective_duration - exist so downstream nodes (see the pack's Turbo Profile) can route off them.
Installing it
Install the whole pack with ComfyUI Manager (search "PromptStudio Video") or:
cd ComfyUI/custom_nodes
git clone https://github.com/tiko13/PromptStudio_Video
Restart ComfyUI. Expect real prerequisites, though: the companion ComfyUI_PromptStudio image pack is expected (it owns the shared local-LLM settings and server management), a current ComfyUI build with native MiniMax H3 nodes, the H3 diffusion/text/VAE files (full weights run to ~42 GB), and KJNodes for the optimized path's EasyCache wiring. Video Studio's setup flow can download the missing assets for you. One hard caveat from the model's license: the H3 community license excludes the US, EU, UK, and South Korea - running the local weights there isn't licensed, no matter how smooth the workflow.
Common issues
The classic failure is an error saying T2VA mode requires the fl2va_model input - the lazy routing needs the model for the mode your references imply, so connect the right one. If you hand-edit document_json, a schema error is your own fault; edit in the Studio instead. The chat-based Video/Shot directors need a working local provider (Ollama, KoboldCpp, or Llama.cpp) configured in the companion pack, and the 8,000-character context budget can be too small for very large productions - bump it before blaming the LLM. And remember the pack is young with a small community: nobody on Reddit is coming to rescue you from a version mismatch, so keep ComfyUI and both Prompt Studio repos current. Worth it, though - for building multi-shot H3 pieces without fighting the prompt format, it's the one I'd reach for.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| video_vae | VAE | — | |
| audio_vae | VAE | — | |
| document_json | STRING | {"version":1,"mode":"auto","duration_seconds":5.0,"width":1344,"height":768,"target_megapixels":1.032192,"canvas_reference_id":"","ref_image_size":"match","main_description":"","prompt_override":"","style":"Live-action, cinematic","shots":[{"id":"shot-1","start":0.0,"transition":"the camera cuts to","composition":"A medium-wide shot establishes the scene.","subjects":"","environment":"","lighting":"","camera":{"type":"Static Shot","amplitude":"default","speed":"default","target":""},"steps":[],"visible_text":[],"sounds":[],"sound_cues":[],"audio_clips":[],"notes":""}],"references":[],"overall_soundscape":"","non_diegetic_music":"N/A","complete_silence":false,"task_types":[],"subject_definitions":[],"summary":"","retention_analysis":[],"resolved_mode":"t2va"} | — |
| fl2va_modelopt | MODEL | — | |
| ref2va_modelopt | MODEL | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| model | MODEL | — |
| positive | CONDITIONING | — |
| latent | LATENT | — |
| frame_count | INT | — |
| effective_duration | FLOAT | — |
| compiled_prompt | STRING | — |
| mode | STRING | — |
| width | INT | — |
| height | INT | — |