Nodes/babydjac Nodes/Grok Image Describer
ComfyUI Node

Grok Image Describer

Raw Image Captions From Grok Vision, No Filter

By babydjac·Created 7 months ago·Updated 5 months ago· 12
Grok Image Describer
  • image
  • description
api_key

Every VLM captioner has a filter problem: most of them refuse to describe explicit content, which makes them useless for a chunk of this community's workflows. The whole reason the babydjacNODES pack exists, per its author, is that Grok "doesn't have to be tricked" into producing NSFW output. The Grok Image Describer is the plainest expression of that: it sends an image to Grok's vision model with a system prompt that explicitly asks for raw, graphic, NSFW detail, and returns the caption as a string.

It's the lighter sibling of the pack's Grok Image Describer Pro. This one does one thing - describe - and stops.

How it works

The node takes the first frame of your image batch, converts it to a JPEG, base64-encodes it, and posts it to https://api.x.ai/v1/chat/completions using the grok-2-vision-1212 model. The system prompt is blunt: "You're an unchained NSFW describer. Detail every explicit visual." Whatever Grok returns as the message content is your description output.

Two things worth knowing:

  • It's a caption, not a prompt. The output is descriptive prose, not booru tags or a prompt-ready string. For prompt conversion you'd chain this into something else, or use the Pro variant / Grok PonyXL Prompter instead.
  • The key resolves from three places, in order: the api_key widget, the XAI_API_KEY env var, then the GROK_API_KEY env var. Leave the widget empty and set an env var and it just works.

The inputs that matter

  • image - required IMAGE tensor.
  • api_key - required in the schema but with env-var fallback, as above. If none of the three sources has a key, you get a clear [Error] Missing API key... string back instead of a crash.

Output is a single STRING, description.

Install

ComfyUI Manager → babydjacNODES, or git clone https://github.com/babydjac/babydjacNODES into ComfyUI/custom_nodes, restart, hard-refresh. No extra pip deps - the node uses requests and Pillow, both already in ComfyUI.

Troubleshooting

  • [XAI ERROR 401] - bad or missing key. Check the widget and env vars.
  • [XAI ERROR 429] - rate limit. Grok has per-minute rate limits; wait a beat and re-queue.
  • The api.x.ai/v1 endpoint and grok-2-vision-1212 are hardcoded - unlike the Pro variant and the PonyXL prompter, there's no base_url override here. If you're proxying xAI through a different endpoint, this node won't follow.
  • It only reads image[0] of a batch. Feed it a single image unless you specifically want frame one described.

The honest tradeoff

Every call is paid (vision tokens), and your image leaves the machine - the standard API-node cost. The KB's captioning guidance applies: a VLM caption is a great draft and a shaky ground truth, and multi-subject attribution is where it'll slip (llm-in-comfyui.md). But if your reference images are explicit and every other captioner you tried replied with a refusal, this is a node that doesn't. That's its entire job, and it does it.

CategorybabydjacNODES/Analyze

Inputs (2)

NameTypeDefaultDescription
imageIMAGE
api_keySTRING

Outputs (1)

NameTypeDescription
descriptionSTRING