Nodes/Ardent-Nodes-ComfyUI/Positive Only (CLIP Encode Prompt)
ComfyUI Node

Positive Only (CLIP Encode Prompt)

Encode your positive prompt and skip the negative entirely

By ardentillumina·Created 2 years ago·Updated 2 years ago· 2
Positive Only (CLIP Encode Prompt)
  • clip
  • POSITIVE CONDITIONING
  • NEGATIVE CONDITIONING
positive

Every SDXL-family workflow has the same little pair sitting next to the KSampler: a CLIP Text Encode for the positive prompt, and a second one for the negative that's usually left blank. "Positive Only (CLIP Encode Prompt)" collapses that pair into a single node. You type the prompt once and out come both the POSITIVE CONDITIONING and a NEGATIVE CONDITIONING built from an empty string. One less node, one less text box to babysit, one less wire across the graph.

That "empty negative" isn't a cheat, and understanding why makes the node click. A negative prompt isn't a filter that removes things from your image. Classifier-free guidance already runs a second, unconditioned pass at every denoising step, and the negative prompt just replaces the empty string in that pass. So encoding an empty string is literally running the default. On SDXL-lineage models - Illustrious, NoobAI, Pony - running with no negative is a real and defensible style, and if you're in that camp this node is a perfect fit. (On the 2026 guidance-distilled models that run at CFG 1, the sampler skips the unconditioned pass entirely, so the negative output gets computed and ignored. Harmless, just a wasted encode.)

The mechanism is three lines of source. Your positive string and an empty string both go through clip.tokenize(), then clip.encode_from_tokens_scheduled() for each, and out the two sockets. Same CLIP, one encode per token stream, nothing exotic.

What you actually touch:

  • clip (CLIP socket) - wired from your Checkpoint Loader or UNET Loader. It's forceInput, meaning there's no widget: you have to connect it, and forgetting is the one reliable way to make this node error.
  • positive (multiline text) - the only thing you type. This is the entire point of the node.

Outputs: POSITIVE CONDITIONING goes to the KSampler's positive socket, NEGATIVE CONDITIONING to its negative socket. That's the whole job.

Where people get burned: the name isn't hiding a negative text box. If you steer with a real negative prompt - CFG above 1, or an embedding you want to avoid - this node can't hold it, and the negative output will always be the empty-string conditioning. Reach for this when blank-negative is the point, and reach for the core CLIP Text Encode when it isn't. Also: leave positive empty and both conditionings are empty, so the sampler gets nothing to guide toward and you get the unconditioned output - which is to say, noise. Type a prompt.

Install is the whole pack, and it's about as light as custom nodes get. In ComfyUI Manager, search "ardent", install, restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/ardentillumina/ardent-comfy

then restart ComfyUI. There are no dependencies, no model downloads, nothing to hunt down - it's a pure-Python wrapper over ComfyUI's own CLIP encoding, and it works with any CLIP you hand it, from SD 1.5 to Flux's dual text encoder. (Pure-LLM-encoded models like Anima don't expose a CLIP at all, so this isn't for those.)

It's a one-trick node, but the trick - one box producing both conditionings, empty negative baked in - is one of those small graph-tidying wins that quietly add up. If you keep a never-touched negative encoder around, this is the node that replaces it.

CategoryArdent Nodes > Prompt Assistant

Inputs (2)

NameTypeDefaultDescription
clipoptCLIP
positiveoptSTRING

Outputs (2)

NameTypeDescription
POSITIVE CONDITIONINGCONDITIONING
NEGATIVE CONDITIONINGCONDITIONING