Nodes/Flamin Galah/Flamin Galah Image Prompt Builder (Grok)
ComfyUI Node

Flamin Galah Image Prompt Builder (Grok)

The one node in the pack that needs a key — and the only one that writes the frame-lock line

By flamin-galah·Created about a month ago·Updated a day ago· 2
Flamin Galah Image Prompt Builder (Grok)
  • image_1
  • image_2
  • h3_prompt
◄extra_description►
◄api_key►
◄grok_urlhttps://api.x.ai/v1/chat/completions►
◄grok_modelgrok-4.7►
◄temperature0.20►

What it's for

Three nodes in this pack turn a still into a MiniMax H3 prompt block, and two of them run on your own Ollama server. This is the third, and it phones the xAI Grok API instead. So why pick it?

Two honest reasons. It's the only node in the pack that emits the I2VA frame-lock line - For the target video, at 0.00 seconds into the target video, <Picture 1> (from [Shot 1]) is fully referenced. The local Image Describer's Image-to-Video mode deliberately leaves that line out. And it's the lazy option in the good sense: no Ollama, no model pulls, no VRAM. Install, paste a key, connect a Load Image.

The trade is the usual one from external-api-nodes.md: per-call cost, your image leaving the machine, and a filter you can't patch - there are no weights to abliterate. This pack's README suggests uncensored writer models for explicit material; an API will simply refuse it.

How it works

Up to three POSTs to https://api.x.ai/v1/chat/completions, all against the model in grok_model:

  1. Describe. The still goes up as a full-resolution PNG data URL - no downscaling, unlike the Ollama siblings, which resize to 1024px - with "detail": "high".
  2. Rewrite with your text - only if extra_description isn't empty. The description is rewritten into a stronger first-frame-forward shot, keeping identity, clothing and setting from the photo while folding your text in as the continuation after frame 0.
  3. Soundscape. One to four sentences of ambient and non-verbal sound. Dialogue, singing and music are excluded.

Then it formats the result itself rather than trusting the model: strips a redundant [Shot 1] Live-action, cinematic, prefix if the model echoed it, prepends the frame-lock line, and hardcodes non_diegetic_music: N/A - there's no music widget on this node at all. Out comes one h3_prompt string.

That's up to three metered API calls per queue, one of them a whole revision pass. Worth knowing before you batch thirty frames.

Inputs

Only two are required, which tells you what the author expected:

  • image - the still. A null input is refused.
  • extra_description - your continuation. Empty is legal, and skips the second call entirely, so you pay for two instead of three. Fill it: the photo supplies what's in frame, your text supplies what happens next.

Optional:

  • api_key - paste it, or leave it blank and set XAI_API_KEY (or GROK_API_KEY) in the environment that launches ComfyUI. Widget first, then environment, and a clear RuntimeError if you have neither.
  • grok_model - a hardcoded list: grok-4.7 (default), grok-4.6, grok-4.5, grok-4, grok-2-vision-1212. It's an enum, not free text, so a name outside that tuple can't be typed in - if xAI retires one, you're waiting on a pack update. grok-2-vision-1212 is the explicitly vision-named pick.
  • grok_url - defaults to xAI's endpoint, and the node normalises it: hand it a base URL and it appends /chat/completions, which is how you'd point it at another OpenAI-compatible endpoint.
  • temperature - defaults to 0.2, and the same value is used on all three calls. Low is right; you're describing and reformatting, not writing fiction.

Install

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

Or Manager → search "Flamin Galah". Restart fully. Zero Python dependencies - it calls the API through urllib from the standard library. Then:

export XAI_API_KEY=your-key-here    # in the shell that launches ComfyUI

Restart the ComfyUI process afterwards - exporting the variable in another terminal does nothing for a process that's already running.

Where it bites

It holds a key and calls the network by design. That's the category the KB warns about most plainly - a malicious wrapper's phone-home doesn't look wrong, because phoning home is the job (external-api-nodes.md § Security). The pack is small, MIT and readable: read it, and prefer environment variables over pasting a key into a workflow you might share.

Big stills make big requests. Full-resolution base64 PNG, no resize guard, on every one of three calls - upload time you feel, plus tokens you may be billed for.

Errors surface raw, which is a feature. A bad key or a spent balance comes back as Grok API HTTP 401: … with xAI's own body attached; read it before assuming the node is broken. Empty content raises separately, and a network failure says Could not reach Grok at ….

180-second timeout per call, three calls in a row. A slow connection can hold a queue for a long while with no partial output. If you're batching, that's your bottleneck.

Model names rot. The list is baked into the source. When xAI ships or retires a name, the dropdown is wrong until the author updates it - the normal shape of any wrapper around a fast-moving API.

If your still is explicit, or you'd rather not pay per shot, use the Flamin Galah Image Describer - same idea, local Ollama, no key, no frame-lock line.

Categoryprompt/Flamin Galah

Inputs (7)

NameTypeDefaultDescription
extra_descriptionSTRING—
image_1optIMAGE—
image_2optIMAGE—
api_keyoptSTRING—
grok_urloptSTRINGhttps://api.x.ai/v1/chat/completions—
grok_modeloptCOMBOgrok-4.75 options: grok-4.7, grok-4.6, grok-4.5, grok-4, grok-2-vision-1212
temperatureoptFLOAT0.200–1.5—

Outputs (1)

NameTypeDescription
h3_promptSTRING—