Nodes/ComfyUI-UtilsCollection/Text Encode with Z-Image System Prompt
ComfyUI Node

Text Encode with Z-Image System Prompt

System prompts for Z-Image, done properly

By silveroxides·Created 2 months ago·Updated about 7 hours ago· 24
Text Encode with Z-Image System Prompt
  • clip
  • CONDITIONING
prompt
system_prompt

Z-Image is a chat-based image model: its Qwen3 encoder expects conversation-shaped input, and a system prompt only works if it's wrapped in the right <|im_start|>system block. UC_TextEncodeZITSystemPrompt is the node that does that wrapping, so you can finally set standing rules - "always render at golden hour", "no text in the image", "photorealistic, not painterly" - without them getting lost in translation.

What it is

The Z-Image-specific sibling of the pack's UC_TextEncodeSystemPrompt. Where the general node juggles five model templates, this one is laser-focused: clip, prompt, and system_prompt in, one CONDITIONING out. When you give it a system prompt it builds:

<|im_start|>system
{system_prompt}<|im_end|>
<|im_start|>user
{prompt}<|im_end|>
<|im_start|>assistant

That's the exact chat template Z-Image's Qwen3 encoder was trained on. If you leave the system prompt empty it does a plain encode, so the node degrades gracefully.

Why it earns its place

Two reasons. First, "ZIT" is a much shorter name to type. Second, and actually seriously: consistent system prompts are how you get reproducible behavior across a run of generations. If you're building a workflow where a character or a style has to stay stable shot-to-shot, putting the rules in the system block keeps them out of your per-shot prompt, which means you can vary the prompt freely without re-specifying the style every time.

It's the natural partner to the pack's UC_TextEncodeZImageThinkPrompt. That one injects reasoning into a <think> block; this one sets the standing instructions. Wire both into the same clip if you want the full control surface.

The inputs that matter

  • clip - the Qwen3-based Z-Image text encoder. Z-Image-Turbo, Base, and the Omni family all use the same chat-format encoder.
  • prompt - your actual text with braces and weights.
  • system_prompt - the standing instructions wrapped into the system block. Empty = plain encode.

Output: CONDITIONING, straight into the KSampler.

Installing it

It's part of ComfyUI-UtilsCollection:

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

Restart ComfyUI, or use ComfyUI Manager (search "ComfyUI-UtilsCollection"). The pack needs a recent ComfyUI build - it's written against the current Core node API.

Common issues

The main trap is using it with a non-Z-Image encoder; the template is meaningless to T5 or CLIP. Otherwise, keep expectations calibrated by variant: on Z-Image-Turbo (CFG 1, guidance-distilled) system prompts are a gentler lever than on Base, where you can pair them with CFG 3-5 and more steps for a stronger effect. And since this is a newer pack, remember the README is the source of truth for behavior - this encoder node tracks current ComfyUI Core behavior, so keep both updated together.

Categoryadvanced/conditioning

Inputs (3)

NameTypeDefaultDescription
clipCLIP
promptSTRING
system_promptSTRING

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING