- CLIP
- prompt
- neg_prompt
- POSITIVE
- NEGATIVE
Every ComfyUI workflow needs two text encodes - one for your positive prompt, one for negative - feeding two CLIP Text Encode nodes into your KSampler's positive/negative conditioning slots. That's four nodes (two text boxes, two encoders) for what's conceptually one idea: what you want, and what you don't. Prompts collapses that down to one node - type both prompts in, plug in your CLIP, and get back both the encoded conditioning and the raw text strings in a single box.
Mechanism. It's doing exactly what two separate CLIP Text Encode nodes would do - running your prompt and negative prompt text through the checkpoint's CLIP model to produce conditioning tensors - just with both text fields and both encode calls living in one node instead of scattered across your graph.
Inputs and outputs. Two required inputs: CLIP (wire this from your checkpoint loader) and prompt, a multiline string for your positive prompt. One optional input, neg_prompt, also multiline, for what you don't want to see. Four outputs: prompt and neg_prompt come back out as plain strings, unmodified - the same "give me the typed value back so I can also feed a metadata node" pattern as this pack's other Generation* nodes - and POSITIVE / NEGATIVE come out as CONDITIONING, ready to wire straight into your KSampler. If you're also using Save Image (Advanced), the string outputs plug directly into its optional positive_prompt/negative_prompt inputs, so your saved files carry the exact prompt text you used instead of "unknown."
Installing it. Bundled with TW-CUI-Util. ComfyUI Manager: search "TW-CUI-Util", install, restart. Or manually, git clone https://github.com/TW-CUI/TW-CUI-Util into ComfyUI/custom_nodes, restart. No models to fetch, no extra dependencies - it leans entirely on the CLIP model you've already loaded from your checkpoint.
Troubleshooting.
- If
neg_promptis left empty, you'll still get a NEGATIVE conditioning output - ComfyUI encodes an empty string just fine - but an empty negative prompt is doing essentially nothing for you on most SD1.5/SDXL-era checkpoints, since it's effectively just unconditional guidance. Don't be surprised if leaving it blank changes very little compared to filling it in. - Worth knowing if you're mixing model families in the same project: negative prompts stop doing anything meaningful on guidance-distilled models run at CFG 1, which describes a lot of the current Flux/Z-Image generation of checkpoints. The field's still there, still gets encoded, it's just architecturally inert at that CFG setting. If you migrate a workflow built around this node onto one of those checkpoints and negative prompting suddenly "stops working," that's why - it's not this node breaking.
- If conditioning coming out of this node looks wrong - garbled output, prompt seemingly ignored - check the
CLIPinput first. Make sure it's wired from the same checkpoint you're sampling with; a CLIP from one checkpoint paired with a MODEL from a different one is a classic mismatch that produces confidently wrong results with no error message at all.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| CLIP | CLIP | — | |
| prompt | STRING | — | |
| neg_promptopt | STRING | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| neg_prompt | STRING | — |
| POSITIVE | CONDITIONING | — |
| NEGATIVE | CONDITIONING | — |