ComfyUI Node

GR Prompty

The auto-picking, randomizing cousin of GR Prompt Selector

By GraftingRayman·Created 2 years ago·Updated about a month ago· 76
GR Prompty
  • clip
  • positive
  • negative
  • prompts
positive_a1
positive_a2
positive_a3
positive_a4
positive_a5
positive_a6
positive_a7
positive_a8
always_a1
negative_a1
select_prompts1
randomizefalse
multi_prompttrue
seed751199706530299

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_a1positive_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.

CategoryGraftingRayman/Prompt

Inputs (15)

NameTypeDefaultDescription
clipCLIP
positive_a1STRING
positive_a2STRING
positive_a3STRING
positive_a4STRING
positive_a5STRING
positive_a6STRING
positive_a7STRING
positive_a8STRING
always_a1STRING
negative_a1STRING
select_promptsSTRING1
randomizeBOOLEANfalse
multi_promptBOOLEANtrue
seedINT751199706530299100000000000000–999999999999999

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
promptsSTRING