Grok to PonyXL Prompt
Freeform Idea to PonyXL Tags — Plus a Wan Video Prompt Bonus
- ponyxl_prompt
- wan_prompt
- negative_prompt
PonyXL doesn't understand "a woman with long hair in a library, kind of moody." It understands long_hair, library, moody_lighting, score_9, score_8_up, source_realistic. Translating between the two by hand is the daily tax of using a tag-based model (pony.md - the model is "pretty much a base model" with its own prompting language). Grok to PonyXL Prompt automates the translation: you type plain English, Grok rewrites it into PonyXL booru tags, and - bonus - also produces a Wan video prompt and a negative.
It's from the babydjacNODES pack, and it's one of the friendlier Grok nodes: if you leave the API key empty, it degrades gracefully instead of erroring.
How it works
The node sends your description to grok-3-latest (temperature 0 - deliberately deterministic) with a system prompt that demands a JSON object with four keys:
ponyxl_prompt- comma-separated Danbooru tags, explicitly includingscore_9, score_8_up, score_7_up, source_realistic, rating_mature, and forbidding vague tags likeultra_detailed(Pony chokes on those).wan_prompt- a short video prompt starting with "a video of," with the subject, primary action, and your chosenmotion_type(default "hair swaying slightly") worked in.negative_prompt- Pony negatives likeblurry, low_quality, bad_anatomy, oversaturated.explanation- a brief note on the optimization.
It parses the JSON and returns the first three as outputs. The wan_prompt is a nice cross-model bonus - the same description feeds both a PonyXL image and a Wan video workflow.
No-key behavior is worth knowing: if api_key is empty, the node just returns your description as the ponyxl_prompt with a default negative - a graceful passthrough rather than an error. You can literally build a workflow without a key and have it "work" (badly) until you add one.
The inputs that matter
- description - required, your freeform idea. The better you describe subject + scene, the better the tags.
- api_key - required for the actual Grok call (no env-var fallback in this one).
- motion_type - your Wan motion phrase; this is where you express what's moving.
Outputs: ponyxl_prompt, wan_prompt, negative_prompt - all STRING, node marked as an output node.
Install
ComfyUI Manager → babydjacNODES, or git clone https://github.com/babydjac/babydjacNODES into ComfyUI/custom_nodes, restart, hard-refresh. No extra pip deps.
Gotchas
- The explicit tags are requested by design. The system prompt asks for
rating_matureand detailed body tags; the pack is unapologetically NSFW-oriented. If that's not your use case, this node is fighting its own system prompt. - Parsing is strict-ish. If Grok returns prose instead of clean JSON, the node falls back to returning your raw description with the default negative - so a bad parse looks like "nothing happened," not an error. Check the ponyxl_prompt before you trust it.
- Temperature 0 means boring but stable. You can't tune it here; every run of the same description produces essentially the same tags. That's a feature for reproducibility, a limit for variety.
For "one description, Pony image + Wan video, minimal thinking," this node is a genuinely time-saving bridge between three different prompting languages.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| description | STRING | — | |
| api_key | STRING | — | |
| motion_type | STRING | hair swaying slightly | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| ponyxl_prompt | STRING | — |
| wan_prompt | STRING | — |
| negative_prompt | STRING | — |