Dual CLIP Text Encode Lumina 2
Positive and negative in one node, for Lumina2's odd system prompt
- clip
- positive
- negative
- pos_text
- neg_text
Lumina-Image-2.0 is one of the few models from the pre-Flux "Cambrian explosion" era (PixArt, Kolors, AuraFlow, Lumina, Hunyuan DiT - a whole wave of open models that got eclipsed) that actually found a real audience after Flux had already won. It launched Apache-licensed, with day-one ComfyUI support, and it's stuck around in a real if modest niche ever since. If you're generating on it, this node is the CLIP-encoding half of your graph.
It does two jobs at once: encodes your positive and negative prompts into conditioning, and passes the raw text back out as strings too. That second part matters more than it sounds - it means you can feed the same node into your sampler and into a metadata node without a separate pass-through, and it saves you from wiring up two full CLIP Text Encode nodes side by side.
The Lumina2-specific bit: system prompts
Lumina2 takes a "system prompt" the way an LLM chat model does - an instruction prefix that shapes how it interprets the rest of your text. This node exposes exactly two options, taken straight from the model's own documentation: "Superior" ("You are an assistant designed to generate superior images with the superior degree of image-text alignment based on textual prompts or user prompts") and "Alignment" ("designed to generate high-quality images with the highest degree of image-text alignment"). Read those twice - they're barely distinguishable in wording, which is honestly on the model's authors, not this node. In practice, "superior" is the default and the one most workflows use; try "alignment" if you're specifically chasing tighter prompt adherence over general image quality.
Inputs and outputs
clip- required, the Lumina2 CLIP/text model.system_prompt- dropdown, defaultsuperior. Covered above.clean- boolean, default on. Strips extra whitespace and stray commas from your text before encoding - leave it on unless you have a specific reason to send raw, unformatted text through.pos/neg- optional multiline text fields for your positive and negative prompts. Here's the useful part: leave either one empty and the node automatically zeros that conditioning instead of erroring or encoding a blank string. You don't need a separate empty-conditioning node just because you don't want a negative prompt.
Outputs are positive and negative conditioning, plus pos_text and neg_text - your prompt text, echoed back for downstream metadata nodes.
Installing it
ComfyUI Manager: search Sage Utils and install, or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/arcum42/ComfyUI_SageUtils
cd ComfyUI_SageUtils
pip install -r requirements.txt
Restart ComfyUI afterward. This is a small, actively maintained pack from a single developer (arcum42) - nothing about this specific node needs extra model downloads beyond your Lumina2 checkpoint and CLIP itself, which you're loading separately.
Common issues
Most confusion here isn't about the node, it's about Lumina2 itself - people expecting Flux- or SDXL-style prompting and getting inconsistent results because they skipped the system prompt entirely or fought it with conflicting instructions in their actual prompt text. Keep the system prompt as the framing layer and your pos/neg text as the content; don't try to override the system prompt's intent from inside the prompt box.
If your negative conditioning isn't behaving the way you expect, double check whether you actually left neg blank on purpose - the auto-zero behavior is convenient until you forget it's happening and wonder why your negative prompt "isn't doing anything."
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | The CLIP model used for encoding the text. | |
| system_prompt | COMBO | superior | Lumina2 provide two types of system prompts: Superior: You are an assistant designed to generate superior images with the superior degree of image-text alignment based on textual prompts or user prompts. Alignment: You are an assistant designed to generate high-quality images with the highest degree of image-text alignment based on textual prompts. |
| clean | BOOLEAN | true | Clean up the text, getting rid of extra spaces, commas, etc. |
| posopt | STRING | The positive prompt's text. | |
| negopt | STRING | The negative prompt's text. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | A conditioning containing the embedded text used to guide the diffusion model. |
| negative | CONDITIONING | A conditioning containing the embedded text used to guide the diffusion model. |
| pos_text | STRING | The positive prompt's text. |
| neg_text | STRING | The negative prompt's text. |