Nodes/ComfyUI-UtilsCollection/System Prompt Encode (Legacy)
ComfyUI Node

System Prompt Encode (Legacy)

One text-encode node that understands all the 2026 chat-template models

By silveroxides·Created 2 months ago·Updated about 7 hours ago· 24
System Prompt Encode (Legacy)
  • clip
  • CONDITIONING
model_typeflux2dev
prompt
system_prompt
thinking_content

Here's the thing about 2026's checkpoints: Flux 2, Klein, Krea 2, and Z-Image all encode with a language model, which means your prompt isn't a bare string - it's a chat conversation. Get the template wrong and the model still renders, but it treats your prompt with all the respect of an unaddressed email. This node is the pack's general-purpose fix: pick the model family, write your prompt, get properly-templated conditioning out.

TextEncodeSystemPrompt ("System Prompt Encode (Legacy)") does exactly what its name says, and it does it for five model families from one node. The model_type combo offers flux2dev, klein, krea2, z-image, and z-image-thinking, and the node uses the right template format for whichever you pick. If you're juggling multiple modern checkpoints in different workflows, this one node replaces a handful of model-specific encoders.

The (Legacy) suffix and the non-UC_ class name mean it's a compatibility alias for the pack's canonical UC_TextEncodeSystemPrompt. Behavior is identical; accept ComfyUI's replacement prompt if offered.

What it does

Inputs are clip, model_type, prompt, system_prompt, and thinking_content. Output is one CONDITIONING. Mechanically, it's a template job: the node builds the right chat template for the selected model, injects your system_prompt into the system slot, and for the klein and z-image-thinking profiles also handles the thinking block. thinking_content lets you supply custom thinking text for those profiles - leave it empty and the model's default kicks in. Then it tokenizes with that template and encodes from the scheduled tokens, the same path Core uses.

Two things worth internalizing:

  • System prompts are powerful here. On an LLM encoder, the system slot is where framing lives - "describe the image in detail," "follow this camera grammar," "you are a concept artist." Put that in system_prompt, keep the concrete subject in prompt, and both do their jobs better. This mirrors the split the LLM-in-the-graph crowd converged on.
  • Don't paste SDXL weight syntax. (word:1.4) is literal punctuation to an LLM encoder, not emphasis. This node won't save you from that; it just makes the template correct.

Install

ComfyUI Manager → search ComfyUI-UtilsCollection → install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/silveroxides/ComfyUI-UtilsCollection

Restart. Deps: opencv-python and typing-extensions only.

When you'd reach for it

Whenever you're switching between Flux 2 / Klein / Krea 2 / Z-Image and want one encoder that "just formats correctly" instead of memorizing each model's chat syntax. It's the node you keep as a default on a multi-model template graph. If you're on one specific model and want image inputs too, the pack's model-specific encoders (the Krea 2 SystemEdit family, the Z-Image variants) layer that on top - this one is pure text, and pure text well done.

Categoryadvanced/conditioning

Inputs (5)

NameTypeDefaultDescription
clipCLIP
model_typeCOMBOflux2devSelect the model type to use the correct template format.
promptSTRING
system_promptSTRING
thinking_contentSTRINGCustom thinking content for Klein or the z-image-thinking profile. Leave empty for the model default.

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING