Krea2 Style Prompt Encode
Make Qwen3-VL show its work before you trust the style
- clip
- style_image
- conditioning
- style_prompt
The entire problem with style reference in Krea 2 is trust. You hand the model a reference image and hope it borrows the style - the medium, palette, lighting, texture - instead of the subject. You won't know which happened until the image renders. Krea2StylePromptEncode cuts that loop short: it makes the vision model write down what it thinks your reference looks like, in plain text, before anything gets sampled.
It's the extraction helper from the kevinzilin/ComfyUI-Krea2-VisualRef pack. The main Krea2VisualReferenceEncode node now runs this same extraction path by default, so this node isn't strictly necessary for anything - but it exists because its second output, the actual style prompt string, is worth having in isolation when you're debugging.
How it works
Krea 2's text encoder is Qwen3-VL-4B, a vision-language model. The node loads it through the pack's shared logic and asks it a structured question: describe the image's transferable visual style only - medium, signature cues, line shape, palette, lighting, shading, texture, detail density, mood, and a list of negative subject categories. It's explicitly told not to name the subject, identity, pose, text or composition. On top of the VLM's answer, it computes an algorithmic palette hint straight from the image tensor (warmth, brightness, saturation, contrast, average color), and if you batch multiple references it runs a fusion pass that knits them into one "TRANSFERABLE STYLE LOCK" with a primary carrier and weighted accents, preserving at least one concrete cue from every image.
That style lock gets folded into your prompt with a strength phrase and encoded as text-only Krea 2 conditioning. No image tokens are involved anywhere in this node - it's pure captioning, but disciplined captioning.
Inputs and outputs
clip- the Krea 2 text encoder fromCLIPLoaderwith typekrea2. It must havegenerate()anddecode(), so the checkpoint's plain CLIP won't do.style_image- your reference (a batch works).prompt- your generation prompt.style_strength- 0.0–1.0, default 0.65. At 0.0 the node skips extraction entirely and just encodes your prompt as-is.custom_instruction- optional override for the built-in analysis prompt. This is the underrated input: if the default extraction keeps describing the wrong things, you can tell the model exactly what to focus on.
Two outputs. conditioning (CONDITIONING) goes to your KSampler's positive input. style_prompt (STRING) is the final prompt including the style lock - feed it to a text viewer or Save Text node and read it.
Why you'd reach for this
As an inspection tool, it answers the one question that matters: is the VLM describing style or accidentally the subject? If style_prompt mentions the reference's objects, people, logos or layout, you've caught the leak before it costs you a render. The README's guidance is exactly that - check whether the extracted text names content instead of style, and use custom_instruction to steer it. It's also a clean way to see what the style lock actually contributes, since the main node's text mode uses the identical pipeline under the hood.
Install and caveats
Same story as the rest of the pack: clone https://github.com/kevinzilin/ComfyUI-Krea2-VisualRef into custom_nodes (or find it in ComfyUI Manager), restart, and you're done - no pip dependencies, no weights from this repo. You need the full Krea 2 stack around it: checkpoint, Qwen3-VL-4B text encoder (~8GB), Qwen-Image VAE, and a ComfyUI build with Krea2 support (0.25.0+).
The honest caveat is the same one that runs through the whole pack: it's a 0.1.0 experiment with no real community track record, and Qwen3-VL can still name the subject no matter how firmly you instruct it not to. That's precisely why the style_prompt output exists - read it before you trust it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| style_image | IMAGE | — | |
| prompt | STRING | a ceramic teapot on a wooden table | — |
| style_strength | FLOAT | 0.650–1 | — |
| custom_instructionopt | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| conditioning | CONDITIONING | — |
| style_prompt | STRING | — |