GR Prompty
The auto-picking, randomizing cousin of GR Prompt Selector
- clip
- positive
- negative
- prompts
This pack has three different prompt-switching nodes and they're easy to mix up, so here's where GR Prompty sits: GR Prompt Selector picks one of six prompts with a plain number, GR Prompt Selector Multi encodes all six simultaneously with no picking at all, and GR Prompty is the automated one - it can pick for you, randomize the pick, and even combine more than one slot into a single output, then tell you afterward exactly what it used. It's also the roomiest of the three: eight prompt slots instead of six.
How it works
positive_a1 through positive_a8 hold your candidate prompts, always_a1 is text folded into whichever gets used regardless of selection (your style tags, quality boilerplate, whatever should always be present), and negative_a1 is the shared negative. clip encodes all of it.
The selection logic is where this node earns its name. select_prompts is a string, not a plain number - reading that literally, it's built to take more than one index at once (something like 1,3), and multi_prompt is the toggle for whether a multi-index selection actually gets combined into one prompt or just uses the first match. randomize, paired with seed, swaps manual selection for a random pick each run - fix the seed for a reproducible "random" choice, change it for genuine variety. The schema doesn't spell out the exact interaction between select_prompts, multi_prompt, and randomize beyond what the names suggest, so if you're relying on a specific combination, check the prompts output to confirm what actually ran before trusting it in a batch.
That prompts output is the node's real advantage over its siblings: when you're randomizing across eight slots, you genuinely don't know which text produced which image unless something tells you - this node does, every run.
The inputs and outputs that matter
positive_a1–positive_a8- your eight candidate prompts.always_a1- always-included text, independent of selection.negative_a1- the shared negative.select_prompts(default"1") - which slot(s) to use, manually.randomize/seed- replace manual selection with a seeded random pick.multi_prompt- whether multiple selected slots combine into one output.
Three outputs: positive and negative (CONDITIONING, ready for your sampler), and prompts (STRING) - the readback of exactly what text was used this run. Wire that last one into a text-display node any time you're randomizing or testing several slots in a batch.
How to install it
ComfyUI Manager, search GraftingRayman. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/GraftingRayman/ComfyUI_GraftingRayman
Restart afterward. The whole pack needs OpenAI's CLIP installed separately or nothing imports - portable ComfyUI: .\python_embeded\python.exe -m pip install git+https://github.com/openai/CLIP.git; system Python: pip install git+https://github.com/openai/CLIP.git. The clip input on this node itself is your loaded CLIP checkpoint, unrelated to that Python package requirement.
Common issues & troubleshooting
Pack won't load. Check your startup console for the CLIP import error and run the pip install above.
Changing select_prompts doesn't seem to do anything. Check whether randomize is on - if it is, your manual selection is being overridden by the seeded random pick, not ignored by a bug. Turn randomize off to go back to manual control.
Not sure which prompt(s) actually ran. Read the prompts output - it's built for exactly this, especially once randomization is in play.
Want fully independent positive/negative pairs per slot, not one shared negative. This node doesn't support that; negative_a1 is shared across every slot regardless of which one gets selected. If you need that, chain separate CLIP Text Encode nodes instead.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| positive_a1 | STRING | — | |
| positive_a2 | STRING | — | |
| positive_a3 | STRING | — | |
| positive_a4 | STRING | — | |
| positive_a5 | STRING | — | |
| positive_a6 | STRING | — | |
| positive_a7 | STRING | — | |
| positive_a8 | STRING | — | |
| always_a1 | STRING | — | |
| negative_a1 | STRING | — | |
| select_prompts | STRING | 1 | — |
| randomize | BOOLEAN | false | — |
| multi_prompt | BOOLEAN | true | — |
| seed | INT | 751199706530299100000000000000–999999999999999 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| prompts | STRING | — |