Text Encoder 3 in 1
Keep Pony's score tags separate from your actual prompt
- clip
- Positive Conditioning
- Negative Conditioning
This one's built for a very specific and very common annoyance if you generate on Pony-family checkpoints: every prompt has to open with score_9, score_8_up, score_7_up, score_6_up... for the model to behave, and retyping (or re-copy-pasting) that boilerplate every time you tweak your actual subject prompt gets old fast. This node splits your positive prompt into two fields so the score-tag string can sit there permanently while you iterate on the character or scene in the other box, then concatenates the two into a single conditioning under the hood.
Why the score tags matter this much
Pony Diffusion's quality system is a genuine quirk of how it was trained, not just a style suggestion. AstraliteHeart's team hand-ranked roughly 20,000 images on a 1–5 quality scale and captioned the training set with the resulting score labels - the idea being that low-quality images could still teach concepts without teaching ugly. A training bug meant the model learned the whole concatenated string as the quality signal rather than the individual tags, so score_9, score_8_up, score_7_up (and onward) has to be written out in full to do anything. It's specific to the Pony family - it does nothing on Illustrious, SDXL base, or Flux, the same way generic quality tags like masterpiece, best quality do comparatively little on Pony.
Inputs and outputs that matter
clip- the CLIP model to encode with.positive_Text_A- defaults to the full Pony score-tag opener plus some generic quality boilerplate (masterpiece, 4k, 8k, high quality...). Worth knowing: on Pony, the score tags are doing essentially all the real work here - themasterpiece/4k/8kfiller is along for the ride and carries comparatively little weight on this model family. It's harmless, just not pulling its weight.positive_Text_B- your actual subject/scene description. This is the field you're meant to actually rewrite between generations, whileAstays fixed.stop_at_clip_layer- CLIP skip, range −24 to −1, default −2. This matters more than it sounds: Pony V6, Illustrious and NoobAI all expect CLIP skip 2 (i.e. −2), and pushing it to −1 is a documented way to break Pony output into noise. Leave it at the default unless you specifically know your checkpoint wants otherwise.negative_Text- a single field, defaults to the standard negative boilerplate plus Pony's low-score negative tags (score_5, score_4, worst quality...).
Two outputs: Positive Conditioning (A and B concatenated and encoded) and Negative Conditioning, both CONDITIONING - wire them into your sampler exactly like any other text-encode node's output.
Installing it
ComfyUI Manager: search mzmaxam in Custom Nodes Manager and install. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/MzMaXaM/ComfyUi-MzMaXaM
Restart ComfyUI. No models to download and no extra dependencies - it's a CLIP-encoding node built on types ComfyUI already has.
Where people get tripped up
The biggest trap is stop_at_clip_layer at −1 on a Pony-family model - that's the setting that turns clean output into garbage, so don't nudge it "for better quality" without checking your checkpoint's own recommendation first. Second, this node's defaults are Pony-specific by design: drop it into a workflow running Illustrious, base SDXL, or Flux and the score tags in positive_Text_A just sit there doing nothing useful - not harmful, just dead weight eating into your prompt's token budget. Third, and worth knowing if you're on anything newer: models with LLM-based text encoders (the current wave that replaced CLIP-and-T5 setups) don't have a CLIP layer to skip and don't understand score tags at all - this node's whole design assumes a classic CLIP-conditioned checkpoint, which is exactly the world Pony, Illustrious and NoobAI still live in.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | The CLIP model used for encoding the text. | |
| positive_Text_A | STRING | score_9, score_8_up, score_8. score_9, score_8_up, score_7_up, score_6_up, masterpiece, 4k, 8k, high quality, best quality, ultra high res, ultra detailed, 8k wallpaper | First part of the positive text to be encoded. |
| positive_Text_B | STRING | 1girl, solo, Sakura, pink short hair, green eyes, forehead protector, blushing, looking at viewer, smiling, white dress green background | Second part of the positive text to be encoded. |
| stop_at_clip_layer | INT | -2-24–-1 | — |
| negative_Text | STRING | score_5, score_4, worst quality, low quality, text, censored, deformed, bad hand, blurry, (watermark), weights, extra hands, 3 finger, bad anatomy, big head, artist signature, artist name | The negative text to be encoded. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| Positive Conditioning | CONDITIONING | A conditioning containing the embedded text used to guide the diffusion model. |
| Negative Conditioning | CONDITIONING | — |