Nodes/Flamin Galah/Flamin Galah Prompt Director (Ollama)
ComfyUI Node

Flamin Galah Prompt Director (Ollama)

MiniMax H3 wants a three-field prompt, not a paragraph

By flamin-galah·Created about a month ago·Updated a day ago· 2
Flamin Galah Prompt Director (Ollama)
  • image
  • h3_prompt
◄extra_descriptionA woman, slim body, huge firm breasts, sitting on a chair in an office, legs open wide, she looks directly at the camera with a seductive expression►
◄camerastatic wide shot►
◄stylephotorealistic►
◄lightinghigh-contrast dramatic►
◄duration_seconds5►
◄include_dialoguefalse►
◄dialogue_speakerthe woman►
◄dialogueCome closer...►
◄dialogue_languageEnglish►
◄soundscapesoft breathing, fabric sliding, distant rain against the window►
◄musicN/A►
◄extra_detailssubtle skin texture, soft shadows, intimate atmosphere, shallow depth of field►
◄ollama_model(Ollama not running – start it and refresh)►
◄vision_model(Ollama not running – start it and refresh)►
◄ollama_urlhttp://localhost:11434►
◄temperature0.70►
◄negative_notesno text overlays, no logos, no jump cuts, no cartoonish proportions, no underage appearance►
◄lora_tags►

What this node is actually for

MiniMax H3 is MiniMax's 33B omni-modal video model - the one that generates 4–15 second clips with native synced audio rather than bolting a sound pass on afterwards. It's also picky about how you ask:

integrated_multimodal_description: [Shot 1] ...
overall_soundscape: ...
non_diegetic_music: ...

The pack's README calls it a "rigid three-field prompt," and it isn't exaggerating: one continuous shot paragraph opening with [Shot 1], a sound field that stays strictly diegetic (breathing, fabric, rain, room tone) and never bleeds into the picture, and a separate music line or N/A. Start from a still and you also prepend the frame lock:

For the target video, at 0.00 seconds into the target video, <Picture 1> (from [Shot 1]) is fully referenced.

Writing that by hand every take is the blank-page problem with extra steps. This node hands you the finished block on one h3_prompt socket.

Why local? Not because an 8B model writes better English than a frontier API, but because it's uncensored, offline and free per call - and every hosted path filters (llm-in-comfyui.md § 1).

How it works

One Ollama chat request, then a fair amount of string surgery. The writer model gets your fields assembled into a user message; _force_clean_format() then cleans up after it - strips field labels the model invented, strips any dialogue it wrote on its own, guarantees the [Shot 1] opener, appends "The shot lasts about N seconds.", inserts yours, and rebuilds the fields.

Two things to know before you blame the model:

  • soundscape and music are yours, not the model's. Whatever you type in those widgets lands in overall_soundscape and non_diegetic_music; the model's own sound prose is only a fallback, and none/silent/n/a normalise to N/A.
  • Dialogue is verbatim or absent. Nothing is invented. With include_dialogue on your line goes in as <d>[English] Come closer...</d> behind your speaker label; turned off, the model's version is stripped out.

Connect a still to the optional image input and it flips to I2VA: the still is described by vision_model (batch item 0 only), evolved by extra_description, and the frame-lock line is prepended. If that vision call fails you still get the I2VA header, just with a generic anchor; if Ollama is down entirely, a fallback builder assembles the block from your fields with no LLM at all.

The inputs you'll actually touch

  • extra_description - scene, subject, motion. The one field you really write, which is why the frontend forces the box ~180px tall. It ships with a whole example scene as the default, so clear it first.
  • camera, style, lighting - 13, 9 and 10 presets. The deterministic backbone: dolly zoom with film noir means the same thing in take 12 as it did in take 1.
  • duration_seconds - 4–15, rendered as pills labelled Duration. Written into the shot as "The shot lasts about N seconds."
  • ollama_model - required, and it's your writer. An uncensored screenwriter-tuned model is the point; the README suggests jimscard/adult-film-screenwriter-nsfw and fluffy/l3-8b-stheno-v3.2.

One warning: negative_notes steers the writer but per the README is not written into the visual field. There is no negative prompt here.

Output is one h3_prompt string - wire it into whatever text node feeds your H3 sampler.

Install

Manager → search "Flamin Galah", or:

cd ComfyUI/custom_nodes
git clone https://github.com/flamin-galah/ComfyUI-Flamin-Galah.git

Restart fully; a refresh isn't enough the first time. No pip step - pyproject.toml declares an empty dependency list, so it needs nothing beyond the torch/numpy/Pillow your ComfyUI already has. Then, separately:

ollama run jimscard/adult-film-screenwriter-nsfw   # writer
ollama pull llava                                  # vision, only needed for I2VA

Start Ollama before ComfyUI, or restart ComfyUI after pulling a model - the dropdowns are filled from Ollama's /api/tags at load time.

Where it bites

That placeholder is a real dropdown value. If Ollama wasn't up when the node class loaded, ollama_model reads "(Ollama not running – start it and refresh)" - and that string is selectable. Leave it selected and the node quietly re-queries and uses your first installed model.

Duration pills are frontend-only. They're a JavaScript replacement for the widget, shipped in web/flamin_galah.js, and the row only covers 4,5,6,7,8,9,10,12,15 - 11, 13 and 14 exist in the widget with no pill. Headless and API runs read the underlying widget value, whatever the pills happened to be showing.

Old nodes on old workflows. If a canvas node still outputs prompt instead of h3_prompt, delete it and add a fresh one - the schema moved, and the stale node keeps the stale socket.

Installing any pack runs its code. This one is MIT, small, by one author - and so was ComfyUI_LLMVISION, the infostealer that arrived through this exact install path and ended in a federal conviction (llmvision-incident.json). Three nodes, ~1,800 lines of Python. Skim the file once.

Working from a still? Flamin Galah Image Describer is the local-only alternative; Flamin Galah Grok Image Describer does it via the xAI API.

Categoryprompt/Flamin Galah

Inputs (19)

NameTypeDefaultDescription
extra_descriptionSTRINGA woman, slim body, huge firm breasts, sitting on a chair in an office, legs open wide, she looks directly at the camera with a seductive expression—
cameraCOMBOstatic wide shot13 options: static wide shot, point of view, slow push-in, tracking shot from the side, dolly zoom, handheld following, +7
styleCOMBOphotorealistic9 options: live-action cinematic, photorealistic, erotic film, softcore cinematic, glamour photography, anime, +3
lightingCOMBOhigh-contrast dramatic10 options: soft red practical lights, warm candlelight, moody low-key, neon night with wet reflections, golden hour soft light, cool blue moonlight, +4
duration_secondsINT54–15—
include_dialogueBOOLEANfalse—
dialogue_speakerSTRINGthe woman—
dialogueSTRINGCome closer...—
dialogue_languageCOMBOEnglish8 options: English, Chinese, Japanese, Korean, Spanish, French, +2
soundscapeSTRINGsoft breathing, fabric sliding, distant rain against the window—
musicSTRINGN/A—
extra_detailsSTRINGsubtle skin texture, soft shadows, intimate atmosphere, shallow depth of field—
ollama_modelCOMBO(Ollama not running – start it and refresh)10 options: (Ollama not running – start it and refresh), llama3.2, llama3.1, llava, llava:13b, qwen2.5-vl, +4
imageoptIMAGE—
vision_modeloptCOMBO(Ollama not running – start it and refresh)10 options: (Ollama not running – start it and refresh), llama3.2, llama3.1, llava, llava:13b, qwen2.5-vl, +4
ollama_urloptSTRINGhttp://localhost:11434—
temperatureoptFLOAT0.700–1.5—
negative_notesoptSTRINGno text overlays, no logos, no jump cuts, no cartoonish proportions, no underage appearance—
lora_tagsoptSTRING—

Outputs (1)

NameTypeDescription
h3_promptSTRING—