Nodes/ComfyUI-RPG-Characters/RPG Prompt Concatenator
ComfyUI Node

RPG Prompt Concatenator

Merges your art and character prompts, then encodes them

By lord-lethris·Created about a year ago·Updated 18 days ago· 6
RPG Prompt Concatenator
  • clip
  • concatenate_positive_string
  • concatenate_negative_string
  • positive
  • negative
art_positive
char_positive
art_negative
char_negative

RPG Prompt Concatenator is the plumbing between the two selector nodes and your sampler. RPGCharacterSelector gives you the character prompt, RPGArtStyleSelector gives you the style prompt - and somebody has to join them with a comma and turn the result into conditioning. That somebody is this node.

Without it you'd be doing the join yourself in a Text Concatenate and then running two CLIP Text Encode nodes, one for positive and one for negative. This node collapses that into one stop: it takes art_positive, char_positive, art_negative, char_negative, joins each pair with ", ", and encodes both with your CLIP. In the pack's standard example workflow it sits between the two selectors and the KSampler, and the whole thing just works.

How it works

The mechanism is embarrassingly simple, which is the point. It strips whitespace off each incoming string, concatenates art and character for each polarity, then calls the built-in CLIPTextEncode on the combined result - the same node you'd drag in manually, invoked from Python. No custom encoding, no secret sauce, nothing that can quietly drift from ComfyUI's native behavior.

The one thing worth understanding: the inputs are forceInput, meaning those four text boxes aren't typeable. You must wire strings into them. Type in the selector nodes upstream, not here - the concatenator is a pass-through, and if you open it and see empty gray ports, that's working as designed, not a bug.

Inputs and outputs

Inputs: a clip (from your checkpoint loader), plus the four strings - art positive/negative and character positive/negative.

Outputs:

  • concatenate_positive_string / concatenate_negative_string - the joined text, in case you want to preview or log exactly what's being encoded.
  • positive / negative - the encoded CONDITIONING, ready for the sampler's positive and negative inputs.

That dual output is the nice touch. Most of the time you only care about the conditioning, but having the raw strings on hand means you can slap a text preview on the side and see the final prompt without digging through three nodes.

Install

Part of the ComfyUI-RPG-Characters pack. ComfyUI Manager, search RPG-Characters, install, restart. Or manually:

cd ComfyUI/custom_nodes
git clone https://github.com/lord-lethris/ComfyUI-RPG-Characters.git

Then restart ComfyUI. No requirements.txt, no model downloads, no extra dependencies.

Common issues

  • Can't type into the inputs. Right - forceInput means they only accept wires. If you want a hand-typed style tag, put it in a Primitive string node or type it into the selector upstream.
  • Gray/empty output or "no value" errors. Check that every string input is actually connected. The node encodes unconditionally - if any one of the four wires is missing, the whole thing fails rather than quietly filling in a blank.
  • Wrong results on some models. The concatenator uses whatever CLIP you hand it. It's designed around the SD/SDXL-style tag path; on LLM-encoded models like Flux you're encoding against a different text encoder entirely, so don't be surprised if the raw tag strings behave differently than they did on SDXL. That's a model-family thing, not this node's fault.

It's a small node and it knows it. If you're building the pack's standard workflow, it's the shortest path from "I picked a character and a style" to "conditioning is ready."

CategoryRPG

Inputs (5)

NameTypeDefaultDescription
clipCLIP
art_positiveSTRING
char_positiveSTRING
art_negativeSTRING
char_negativeSTRING

Outputs (4)

NameTypeDescription
concatenate_positive_stringSTRING
concatenate_negative_stringSTRING
positiveCONDITIONING
negativeCONDITIONING