RookieUI A1111 CLIP Text Encode
Get A1111's prompt parsing back inside ComfyUI
- clip
- CONDITIONING
Here's a thing that trips up everyone who moves from Automatic1111 to ComfyUI: paste the exact same prompt into ComfyUI's stock CLIPTextEncode and you don't get the same image. Same checkpoint, same seed, same everything - different result. That's because A1111 and ComfyUI parse and weight prompts differently. A1111 chunks tokens at 75, normalizes attention weights a particular way, and reads (word:1.2) emphasis on its own scale. This node reproduces A1111's tokenizer and conditioning behavior so a prompt written for the WebUI behaves the way it was written.
That's the entire thesis of the RookieUI pack, really - it's an A1111-style sidebar on top of ComfyUI, and prompt parity is the part people actually care about. This is the SD1.5-class encoder; there's a separate SDXL sibling.
How it works
You feed it your prompt text and a clip, and it compiles the prompt into ComfyUI conditioning using A1111 semantics instead of raw passthrough. It handles the A1111 grammar the community lives by: attention markers like (text:1.2), (text) and [text]; BREAK to force a new token chunk; AND for weighted multi-condition composition; scheduling slices like [from:to:at]; and alternation like [a|b]. It also resolves textual-inversion embeddings by name. The output is a single CONDITIONING you wire straight into your KSampler's positive (or negative) input.
Worth knowing: this parity is scoped to the Stable Diffusion family - SD1.5, SDXL, Pony, Illustrious, Noob. Newer non-SD models (Flux, Qwen, Z-Image) run on their native ComfyUI text encoders and don't get A1111 parsing, because there's nothing to be faithful to there.
The inputs that matter
text- your prompt, with A1111 syntax intact. That's the point; write it the way you would in the WebUI.parser(A1111/full/comfy++/fixed attention) - how weights and emphasis are interpreted. Leave it onA1111. The others exist for compatibility and diagnostics; the default is the one that reproduces the WebUI.mean_normalization(default true) - normalizes the weighted token vectors the way A1111 does. This is a big part of why emphasis feels the same; leave it on unless you're deliberately chasing the old behavior.
The rest are for edge cases. use_old_emphasis_implementation restores A1111's pre-2023 emphasis math if you're reproducing an old image. steps feeds prompt scheduling (the [from:to:at] syntax needs to know the step count). embedding_directory and embedding_names help the node find and diagnose textual-inversion files, with explicit missing-embedding errors instead of silent failures. And a1111_engine (parity / text_only / legacy) is the master switch - parity is the full A1111 path, legacy falls back to the older tokenization if a host environment needs it.
How to install it
Via ComfyUI Manager: search ComfyUI-RookieUI, install, restart. Manually, from your ComfyUI root:
cd ComfyUI/custom_nodes
git clone https://github.com/rookiestar28/ComfyUI-RookieUI
cd ComfyUI-RookieUI
python -m pip install -r requirements.txt
Then restart ComfyUI.
Common issues
Embeddings are where people get confused, and it's usually not this node's fault. A textual inversion is locked to the text encoder it was trained on: an SD1.5 embedding won't load on SDXL, and none of them apply to Flux/Qwen/Z-Image models at all. The nasty part is that most tools silently ignore an embedding they can't apply - so if a trigger word "seems to work" on a model outside its architecture, the filename is probably just being read as ordinary prompt text. This node at least surfaces missing-embedding diagnostics; if an embedding does nothing, check that its base model matches your checkpoint before assuming the node is broken.
The other one: if your image differs from A1111 even through this node, confirm you're on parser: A1111 with mean_normalization on, and that you're actually using this node and not the stock encoder somewhere in the graph.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| text | STRING | — | |
| clip | CLIP | — | |
| stepsopt | INT | 101–10000 | — |
| a1111_engineopt | COMBO | 3 options: parity, text_only, legacy | |
| parseropt | COMBO | 4 options: A1111, full, comfy++, fixed attention | |
| embedding_directoryopt | STRING | — | |
| embedding_namesopt | STRING | — | |
| mean_normalizationopt | BOOLEAN | true | — |
| use_old_emphasis_implementationopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |