ComfyUI Node

CLIP Text Encode

The version where the prompt box is gone

By r-vage·Created 23 days ago·Updated 3 days ago· 0
CLIP Text Encode
  • clip
  • conditioning
◄text—►

You've used CLIP Text Encode a thousand times. This one is the same node with one deliberate difference: there's no text widget. text is a forced input, so the prompt has to arrive on a wire. Open it and you get a node with a CLIP socket and an empty text socket and nothing to type into.

Why remove the text box?

Because a prompt you can't type into is a prompt that comes from exactly one place. The moment you have a positive and a negative that need the same style preamble, or a prompt you want to swap between presets, or text generated by a small LLM, a wired string is the correct plumbing. ComfyUI's own plumbing layer is built on this: one source, fanned out, so changing the value in one place changes it everywhere and the graph can't drift out of sync.

It's also the honest failure mode. If nothing is connected, execution stops instead of quietly encoding an empty string you forgot to fill in.

What you connect

clip from your loader - this pack's CLIP Loader, Smart Model Loader's CLIP section, or any stock loader that emits CLIP. And text, from anything that emits a STRING: PrimitiveString, PrimitiveStringMultiline if you want a textarea, a string concat node, a prompt-generator, or a text file reader. There's no "no wiring required" path; that's the design.

Output is a single conditioning - a list of conditioning entries produced by ComfyUI's own tokenizer and encoder path, so anything downstream expects the standard structure. Feed it to KSampler Pipe's positive/negative, or to a ControlNet applier, or to CFGGuider if you're on a custom sampler chain.

The mechanism is worth one sentence, because it explains a behaviour people hit: the encoding goes through encode_from_tokens_scheduled, which is ComfyUI's scheduled-conditioning path rather than the raw tensor encode. That keeps it compatible with nodes that do scheduled/hooked encoding and with model families whose conditioning carries extra per-token structure.

A workflow that stops fighting itself

The pattern that makes this node worth its awkwardness: one PrimitiveStringMultiline holding your style block, wired into both the positive and the negative encoder, with a small concat node attaching the per-image subject on the positive side only. Change the style once. Two encoders, one source, no drift. That's exactly what the "one source, many consumers" section of the plumbing layer is about, applied to prompts.

If you want the prompt-generation angle instead - a caption model or a small LLM writing the string - the same socket takes it. Just remember the encoder does no prompt magic: whatever string arrives is what gets tokenized, including malformed JSON or trailing whitespace.

Installing it

ComfyUI Manager → search Smart Model Loader Nova, or:

cd ComfyUI/custom_nodes
git clone https://github.com/r-vage/ComfyUI_SmartModelLoader_Nova.git
cd ComfyUI_SmartModelLoader_Nova
python -m pip install -r requirements.txt

Use ComfyUI's Python environment, restart, and look in Add Node → 🌒 Smart Model Loader Nova → Conditioning. No optional dependencies are involved - this is text encoding, nothing else.

Where people get burned

"The node is broken, there's no text field." It's not broken. Right-click the text socket's origin - you need a string node upstream. This is the entire learning curve.

The CLIP-is-None error. If you connect nothing to clip, or your checkpoint doesn't actually contain a text encoder, you get the pack's explicit error telling you the CLIP input is invalid and that the checkpoint probably lacks a valid encoder. That's much better than the mysterious black image you'd get otherwise. Fix: use External CLIP with a real encoder file, or pick a checkpoint that has one baked in.

Wrong encoder, wrong architecture. A CLIP object from an SD1.5 encoder on a Flux model encodes fine and produces nothing useful. The node can't tell - it encodes with whatever you hand it. For Qwen Image 2.1, note the encoder is a Qwen3-VL-8B under the existing qwen_image type; the older Qwen Image encoders are not interchangeable.

Two prompts, one wire. People wire the same PrimitiveString to positive and negative, then wonder why CFG does nothing. Blank negative conditioning is a real technique, but you want Conditioning Zero Out for it, not an identical positive.

Category🌒 Smart Model Loader Nova/ Conditioning

Inputs (2)

NameTypeDefaultDescription
clipCLIPThe CLIP model used for encoding the text.
textSTRINGThe text to be encoded.

Outputs (1)

NameTypeDescription
conditioningCONDITIONINGA conditioning containing the embedded text used to guide the diffusion model.