PonyXL
An LLM That Writes Your Danbooru Tags for You
- ponyxl_prompt
- wan_prompt
- negative_prompt
Pony Diffusion is the model that made prompt engineering a second language. Its SDXL fine-tunes were trained on millions of booru-tagged images, so the thing that actually gets results is a comma-separated tag list - score_9, score_8_up, 1girl, long_hair, ... - with the exact score string that a training quirk made non-negotiable. If you've ever stared at a blank prompt box knowing you need to remember the Danbooru tag for "hair tucked behind ear," this node is aimed at you.
PonyXL from the comfyui-grok-prompts pack is an LLM-powered prompt generator. You type plain English, it phones xAI's Grok API, and Grok hands back a Pony-ready tag soup, a Wan video prompt, and a negative prompt. No models download, no GPU involved - the whole pack's real dependency is just the requests library.
How it works
The node is a thin wrapper around the Grok API, not an on-device tagger. Every run sends your prompt to https://api.x.ai/v1/chat/completions with model: "grok-3-latest" and temperature: 0, which means deterministic output - run it twice and you get the same tags. The system prompt tells Grok to be a PonyXL expert, to emit comma-separated Danbooru tags including score_9, score_8_up, score_7_up, source_realistic, rating_mature, and to return a JSON object with four keys. Then the node parses that JSON and spits out three strings.
That score list is the part worth caring about. The whole score_9, score_8_up, score_7_up run is effectively required on Pony - the model learned the string, not the individual tags - so seeing it baked into the node's instructions is a good sign the author actually ran this thing.
The inputs that matter
Three inputs, and honestly only two you'll touch:
- prompt - your plain-English idea, multiline. The one you'll edit constantly.
- api_key - your xAI key from x.ai. Required, and it's a paid API: every generation costs tokens, no free tier to speak of.
- motion_type - defaults to "hair swaying slightly." This is the bit that gets baked into the Wan video prompt, so it's how you control what the character does on camera.
The outputs are ponyxl_prompt (the tag list - wire it into the positive CLIP Text Encode on a Pony checkpoint), wan_prompt (a "a video of ..." sentence for a Wan video model), and negative_prompt (defaults like blurry, low_quality, bad_anatomy, oversaturated). Since the node is an output node, it also shows Grok's explanation of what it changed in the UI.
Installing it
Through ComfyUI Manager, search "Grok Prompts" and install. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/babydjac/comfyui-grok-prompts
Restart ComfyUI. Nothing else to fetch - no model files, no heavy pip deps beyond requests. Then paste your API key into the node's api_key field and you're live.
Where people get burned
The graceful-failure behavior is worth knowing. If you leave api_key empty, the node doesn't error out - it silently passes your raw prompt through as ponyxl_prompt and shows "No API key provided." in the UI. That's actually a decent way to prototype without burning tokens, but it's easy to mistake for the node working.
The bigger trap: an LLM guessing Danbooru tags is hit-or-miss. Grok knows a lot of tags, but it hasn't read the Danbooru wiki and will confidently invent or mangle the obscure ones. Treat its output as a first draft you edit, not scripture - especially since it's deterministic, so the same draft every time. And remember these tags are Pony-specific; the score string does nothing on Flux or Illustrious.
Finally, the privacy angle, which matters here more than most packs: this pack's whole pitch is NSFW Pony prompting, and every prompt you feed it leaves your machine and hits xAI's servers, tagged with your key. If that's a problem for your use case, this isn't your node.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| api_key | STRING | — | |
| motion_type | STRING | hair swaying slightly | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| ponyxl_prompt | STRING | — |
| wan_prompt | STRING | — |
| negative_prompt | STRING | — |