Nodes/ComfyUI-H3-Multishot-Advance/Multishot Advance AI Scenario Director
ComfyUI Node

Multishot Advance AI Scenario Director

Let a local LLM write your MiniMax H3 scene script (and double-check it anyway)

By KursatAs·Created 12 days ago·Updated about 15 hours ago· 2
Multishot Advance AI Scenario Director
  • reference_images
  • reference_video_1
  • reference_video_2
  • reference_video_3
  • reference_audio_1
  • reference_audio_2
  • reference_audio_3
  • prompt_output
backendollama
server_urlhttp://127.0.0.1:11434
chat_model
thinkingfalse
vision_model
analyze_visual_referencestrue
temperature0.55
num_ctx16384
timeout_seconds120
scene_count1
duration_per_scene10
dialogue_languageauto-detect and preserve spoken language
reference_image_groups
reference_image_roleidentity_reference
reference_video_rolevideo_structure_reference
reference_audio_rolevoice_timbre_reference
scene_briefs
visual_style
camera_notes
dialogue_notes
soundscape_notes
music_notes
reference_image_notes
reference_video_notes
reference_audio_notes
scenario

Writing the H3 contract is the slow part. This node offloads it.

MiniMax H3 is a 33B omni-modal video model - 4–15 second clips at 24 FPS with native synced audio - and the Multishot Advance pack chains those clips into long scenes. The catch: H3 doesn't take a plain sentence. It wants a structured contract, with subject_definitions, a soundscape, per-clip [Shot N] blocks separated by ---, and (if you're doing dialogue) exact <d>[English] ...</d> tags. Great output, but the typing is brutal when you're iterating on a five-clip story.

That's what the Multishot Advance AI Scenario Director is for. It's the optional, explicitly experimental authoring node in this pack: you describe the story in plain language, and it hands back structured English fields ready to drop into the pack's Prompt Builder. It doesn't render a single frame - it's a text generator sitting before everything else. And the nice part: it's fully local. The source calls your LLM over urllib to http://127.0.0.1:11434 (Ollama) or your LM Studio / llama.cpp server. No API key, no cloud, no prompts leaving your machine - the same reason the community reaches for local LLMs for this kind of prompt-authoring job at all.

How it works

You give it scenario - the story, subjects, actions, environment, what each reference Picture should contribute. Optionally wire in up to nine reference_images, three reference_video_*, and three reference_audio_*. If analyze_visual_references is on and you've set a vision_model, it base64-encodes each Picture (and contact-sheet frames of each Video) and sends them to a multimodal model for analysis before the chat model writes anything.

The chat model then produces a structured response, which the node renders into one copyable block: subject name and description, retention focus, global/style/soundscape/music prompts, and the full shot script with [Shot N] camera cuts and --- scene separators. prompt_output is the single output, a STRING, and it's written so the Pack's Prompt Builder can eat it directly.

The inputs that actually matter

  • scenario - the primary input. It's an error to leave this and scene_briefs empty.
  • chat_model - the exact name of an installed local instruction model, or type auto for discovery. The greyed placeholder (gemma3:12b) is a hint, never a submitted default.
  • scene_count and duration_per_scene - how many --- clips to produce, and how long each (H3's 4–15s range).
  • dialogue_language - spoken dialogue only. Prompt prose is always English; this just forces <d>[Turkish] ...</d> style tags without translating the words.
  • vision_model - needed only if you want Pictures/Videos analyzed. qwen3.5:9b-class multimodal models do the job.

Wiring it in

AI Scenario Director.prompt_output -> Prompt Builder.external_prompt_input

First run imports the generated block into the Prompt Builder's editable fields and stops downstream. Review it, fix what the LLM got wrong, then run again to continue to the sampler. That stop is deliberate - this node is not feature-complete, and the author wants you to look before you render.

Installing

ComfyUI Manager → search "ComfyUI-H3-Multishot-Advance", or clone it manually:

cd ComfyUI/custom_nodes
git clone https://github.com/KursatAs/ComfyUI-H3-Multishot-Advance

Restart ComfyUI. There's no requirements.txt - the Director is pure stdlib, so no pip installs. But it assumes you already run a local LLM server. Install Ollama (or LM Studio / llama.cpp), ollama pull a chat model, and keep it running before you queue. The pack itself doesn't bundle H3 weights; load those through the pack's Multi Model Loader, and grab ComfyUI-GGUF if you use quantized H3 checkpoints.

Gotchas

  • It's experimental. Quality and structured-output reliability vary by model - treat the output as a first draft.
  • scene_briefs (one brief per --- block) must match scene_count or the node errors out.
  • Audio isn't transcribed. If an audio ref is a voice-timbre source, name its owner in reference_audio_notes - the Director won't guess.
  • thinking only activates for Ollama models that advertise native thinking; unsupported models just skip it.

Like any local-LLM helper, it's a timesaver, not an oracle. Use it to beat writer's block on the H3 contract - then edit like you mean it.

Categoryconditioning/minimax

Inputs (33)

NameTypeDefaultDescription
backendCOMBOollama3 options: ollama, lmstudio, llamacpp
server_urlSTRINGhttp://127.0.0.1:11434Ollama, LM Studio, or llama.cpp server root URL.
chat_modelSTRINGExact local instruction-model name. The example text is only a hint and is never submitted as a default. Type 'auto' explicitly to request installed-model discovery.
thinkingBOOLEANfalseEnable native Thinking only when the selected Ollama chat model advertises support. Unsupported or unverified models safely generate without it; malformed Thinking JSON gets one non-thinking retry.
vision_modelSTRINGExact multimodal model name used for Picture/Video analysis. The example text is a hint, not a default. It may stay blank only when visual analysis is not needed or is disabled; type 'auto' explicitly for discovery.
analyze_visual_referencesBOOLEANtrueDescribe Picture/Video content with vision_model before prompt authoring.
temperatureFLOAT0.550–2
num_ctxINT163840–131072Ollama context length. 0 leaves the backend default unchanged.
timeout_secondsINT12030–3600
scene_countINT11–30
duration_per_sceneINT104–15
dialogue_languageSTRINGauto-detect and preserve spoken languageSpoken language only. Prompt prose is always English. A value such as Turkish forces <d>[Turkish] ...</d> without translating the words.
reference_image_groupsSTRINGLegacy identity-only shorthand. '2,1' maps Pictures 1-2 to Subject 1 and Picture 3 to Subject 2. For flexible roles, describe what each Picture supplies in scenario or reference_image_notes.
reference_image_roleCOMBOidentity_reference5 options: identity_reference, first_frame_anchor, storyboard_reference, identity + first_frame_anchor, last_frame_anchor
reference_video_roleCOMBOvideo_structure_reference4 options: video_structure_reference, appearance_reference, video_edit_source, video_continuation_source
reference_audio_roleCOMBOvoice_timbre_reference5 options: voice_timbre_reference, ambience_reference, rhythm_reference, audio_full_copy, audio_partial_copy
scene_briefsSTRINGOptional one standalone scene brief per --- block.
visual_styleSTRING
camera_notesSTRING
dialogue_notesSTRING
soundscape_notesSTRING
music_notesSTRING
reference_image_notesSTRINGOne note per Picture, or labeled lines such as '<Picture 2>: ...'.
reference_video_notesSTRINGOne note per Video, or labeled lines such as '<Video 1>: ...'.
reference_audio_notesSTRINGOne note per Audio, or labeled lines such as '<Audio 1>: ...'.
scenarioSTRINGPRIMARY INPUT: describe the story, subjects, actions, positions, environment, desired result, and what each Picture should contribute.
reference_imagesoptIMAGEOptional Picture batch; maximum nine images.
reference_video_1optVIDEOOptional <Video 1>.
reference_video_2optVIDEOOptional <Video 2>.
reference_video_3optVIDEOOptional <Video 3>.
reference_audio_1optAUDIOOptional <Audio 1>.
reference_audio_2optAUDIOOptional <Audio 2>.
reference_audio_3optAUDIOOptional <Audio 3>.

Outputs (1)

NameTypeDescription
prompt_outputSTRING