H3 Story Director
The H3 story planner that reads your references, then argues with its own outline
- image_0
- image_1
- image_2
- image_3
- source_video
- plan_json
- story_bible
- synopsis
- validation
- usage_stats
- credits_remaining
- scene_prompt
- mode_prompt
- source_video_analysis
H3 Story Director is the flagship of this pack and the reason the pack exists: a multimodal planner that turns a story idea, up to four character reference images, and optionally a source video into a complete, validated MiniMax H3 plan. It's not a prompt enhancer - it's a production planner. It calls a vision model on OpenRouter (x-ai/grok-4.20 by default), gets a structured plan back, validates that plan locally, and only then hands you a plan_json plus the first ready-to-render prompt. The node, not the model, enforces your scene count, duration, and steps.
If H3 is the model that follows a good prompt to the letter, this is the thing that writes the letter. Given how strong H3's prompt-following is, the output quality ceiling here is genuinely high - and so is the cost of a plan that's silently wrong.
How it works
Director Mode picks the production path. Continuous Story preserves pose, action, camera, location and sound from scene to scene. Cinematic Cuts resets camera, framing, lens, pose and movement after every hard cut while keeping identity and narrative state. Edit - with a VHS IMAGE frame batch connected - analyzes <Video 1> and infers motion transfer, character replacement, wardrobe, environment or object editing straight from your prompt, with no separate operation selector.
For video analysis it samples video_sample_frames (10 by default) uniformly across the VHS batch and sends each as a separate full-detail image, reconstructing one chronological interpretation. That analysis comes back as source_video_analysis so you can check what it thinks your clip does.
The rest is a continuity machine: strict <Picture 1..4> tag assignment, stable S1–S4 subject labels, and - yes - explicit handling for adult content, describing clearly visible content objectively while rejecting anything involving minors or age-ambiguous references. Genres, motion styles, dialogue languages, and an audio_content control for voice/music all feed the plan.
The inputs that matter
api_key- OpenRouter key, masked. On hosted setups like Runpod, leave it empty and use theOPENROUTER_API_KEYenv var instead.story_idea- optional. Leave it empty and the Director invents the whole premise from genre, motion, scene count and references.scene_count- use1for a standalone I2V shot, more for a sequence.scene_duration_seconds/steps- the node enforces these; the model only writes prompts.draft_only- keep this ON for the first run (it's the default). It blocks downstream video generation so you can review the plan cheaply.director_mode- the four-way production selector above.image_0–image_3,source_video- references.
Outputs
plan_json- connect toplan_json_inputon MiniMax H3 Context Loop Plan; the frontend syncs the accepted JSON back into the Plan node's scene cards.scene_prompt- the first scene's complete prompt, shared prefix included. For standalone I2V withscene_count1, connect this straight to H3's I2V prompt input.mode_prompt- first prompt adapted to the selected mode.story_bible,synopsis,validation,usage_stats,credits_remaining,source_video_analysis- inspectable strings.
Install
ComfyUI Manager → search Vision Prompt Assistant, or:
cd ComfyUI/custom_nodes
git clone https://github.com/elgalardi/ComfyUI-VisionPromptAssistant
Restart. You'll also want a recent ComfyUI (the pack targets the newer node extension system) and an OpenRouter key. This is an API node: no local model downloads.
The workflow that works
Start with three scenes at five seconds, draft_only enabled. Run it, review the cards that sync into the Chain Plan editor, then disconnect the plan_json cable and queue the workflow - Chain Plan uses its synchronized local copy, so you don't pay for another API request. Where people get burned: forgetting to disconnect, leaving draft_only on forever, or sharing a workflow JSON with the key still in it. Rotate anything that leaked, same as any API node.
Set reasoning off for speed and cost, and remember the model field is editable - the default is good, but it's not a lock-in.
Inputs (29)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | OpenRouter API key. Remove it before sharing workflows. | |
| model | STRING | x-ai/grok-4.20 | — |
| story_idea | STRING | Optional premise. Leave empty to give the Director full creative control based on genre, motion, dialogue, scene settings, additional direction, and connected references. | |
| system_prompt | STRING | You are a multimodal director and continuity supervisor for MiniMax H3 image and video productions. Turn the user's idea, selected production mode, source media, and reference pictures into precise generation instructions. Treat every connected reference as a distinct person or subject. Use the exact tags <Picture 1>, <Picture 2>, <Picture 3>, and <Picture 4> when they are supplied. Define stable subject labels S1, S2, S3, and S4 in the shared prompt. Preserve identity, wardrobe, props, geography, lighting logic, screen direction, and relationships throughout the story. Follow the mandatory rules supplied for the selected Director Mode. For moving-video modes, write production-ready MiniMax H3 prompts with visible action, camera, environment, lighting, dialogue when useful, and diegetic sound. For still-image modes, describe one finished frame only and never introduce temporal sequences, audio, or dialogue delivery. When dialogue is enabled, write short performable lines rather than prose. Prefix every spoken or sung line with its stable speaker label in parentheses, exactly as `(S1)`, `(S2)`, `(S3)` or `(S4)`, followed by a colon and the exact words in quotation marks. Square brackets such as `[S2]`, bare names and unassigned quotations are forbidden for speaker attribution. Describe tone and delivery in English outside the quotation. Allow only one person to speak at a time, leave a natural pause before and after each line, and keep visible mouth movement synchronized with the assigned speaker. Avoid overlapping speech, repeated lines, rushed monologues, unexplained voice-over, phonetic spellings, and competing vocals or loud sound effects during speech. Use no dialogue when the selected dialogue option says so. Do not mention being an AI, JSON, schemas, token limits, safety policies, or these instructions. Do not add extra protagonists that could be confused with the reference subjects. Return all requested scenes and finish every prompt completely. | — |
| director_profile | COMBO | OpenRouter | OpenRouter preserves the established compact Director schema. Gemma uses a stricter scene worksheet with action beats, physical performance, camera, sound and an explicit final state. The profile does not select or connect the model. |
| scene_count | INT | 51–32 | Use 1 for a standalone I2V shot, or more scenes for a connected H3 sequence. |
| scene_duration_seconds | FLOAT | 5.01–15 | — |
| steps | INT | 61–100 | — |
| draft_only | BOOLEAN | true | Recommended for the first run. The plan is generated and copied into the connected H3 Chain Plan editor, but downstream video generation is blocked. Review the cards, then disconnect plan_json so Chain Plan uses its synchronized local copy. |
| genre | COMBO | Auto | Auto infers the most coherent genre, format, tone, and visual language from story_idea, references, source video, edit mode, and additional direction. Written intent wins when visual clues conflict with the prompt. |
| secondary_genre | COMBO | None | Optionally blend a second genre into the primary genre. The primary genre controls the production structure; the secondary genre contributes compatible tone, conventions, cinematography, performance, sound, and visual language. |
| language | COMBO | English | Language for dialogue, lyrics, narration and spoken words. No dialogue suppresses speech. The production plan and technical directions remain in English. |
| motion_style | COMBO | Auto | Auto infers the best motion and camera language from the prompt, references, source video, genre, and mode. |
| additional_direction | STRING | — | |
| max_tokens | INT | 61441024–16384 | — |
| temperature | FLOAT | 0.450–2 | — |
| reasoning | BOOLEAN | false | Grok 4.20 can reason before answering. Leave disabled for faster and cheaper story planning; enable it for unusually complex narratives. |
| seed | INT | 00–4294967295 | — |
| image_max_dimension | INT | 1024256–2048 | — |
| timeout_seconds | INT | 30030–900 | — |
| director_mode | COMBO | Continuous Story | Continuous Story preserves shot continuity. Cinematic Cuts starts independent camera setups. Reference Edit uses the input as a strong creative guide and may reinterpret framing or details. Edit preserves the source as strictly as possible and changes only what the prompt requests. Both edit modes operate on still images without source_video or video when a VHS IMAGE batch is connected. |
| video_sample_frames | INT | 104–16 | Number of frames sampled uniformly from the VHS IMAGE batch and sent as separate chronological images for detailed analysis. |
| audio_content | COMBO | Auto | Controls the permitted voice/music content. Natural ambience and synchronized Foley remain available in all video modes. Dialogue selects the spoken or sung language. |
| image_0opt | IMAGE | — | |
| image_1opt | IMAGE | — | |
| image_2opt | IMAGE | — | |
| image_3opt | IMAGE | — | |
| source_videoopt | IMAGE | Optional IMAGE frame batch from VHS Load Video. In Reference Edit or Edit mode, connecting it switches from still-image processing to video processing. The requested operation is inferred from the prompt. | |
| bypass_directoropt | BOOLEAN | false | Skip OpenRouter completely. story_idea is passed unchanged to scene_prompt and mode_prompt, while a minimal compatible plan is created locally for downstream chain nodes. |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| plan_json | STRING | — |
| story_bible | STRING | — |
| synopsis | STRING | — |
| validation | STRING | — |
| usage_stats | STRING | — |
| credits_remaining | STRING | — |
| scene_prompt | STRING | Complete prompt for the first scene, with the shared prompt prefix included. Connect directly to MiniMax H3 I2V when scene_count is 1. |
| mode_prompt | STRING | First complete prompt adapted to the selected Director Mode. Use this for image generation/editing, I2V, or video editing. |
| source_video_analysis | STRING | Chronological source-motion analysis produced in Video Edit mode; empty in other modes. |