⚗ Alchemica Prompt Enhancer (Krea 2 text encoder)
The prompt writer that runs inside your text encoder
- clip
- image
- scene
- detail
- negative
- report
Every other prompt helper in this ecosystem needs something bolted on - an Ollama server, a cloud API, a key. This one needs the text encoder you already loaded, because Krea 2's text encoder can write as well as read.
What it is
AlchemicaPromptEnhancer turns a few words into a structured prompt: a SCENE paragraph, a DETAIL paragraph, and a NEGATIVE list. It writes them with the Qwen3-VL encoder that Krea 2 uses, calls CLIP.generate on it, and hands you back plain strings. No server, no key, no extra model download.
You'd reach for it when you're tired of writing the same "natural skin texture, 85mm, window light" boilerplate, or when you want a photo described back to you. It's also the machinery inside the pack's prompt workstation - if you use AlchemicaPromptStudio in generate mode you're already running this, and you don't need to wire it separately.
How it works
The encoder is given a fixed set of rules and your idea, and asked to reply with exactly three labelled lines. What comes back is then parsed and cleaned before you see it. Two of those rules are the interesting part, because they're the residue of things that went wrong in testing.
The first: no wet skin. The enhancer refuses to describe skin as wet, damp, dewy, glistening or glossy, and won't mention droplets or sheen on skin. That phrasing reliably got Krea 2 painting sweaty, beaded skin - the same failure mode the pack's photo tools warn about.
The second: skin hair is a switch, not a hope. At smooth (no body hair) the rules forbid vellus, peach fuzz and body hair in the detail text, and "body hair, vellus hair, peach fuzz, hairy skin" goes into the negative, which the pack feeds to NAG. At natural (fine vellus hair) you get the 1.0 behaviour, and model decides doesn't mention it at all. If the model ignores the rule anyway, the enhancer scrapes the offending phrases back out and tells you which ones it removed.
Anatomy negatives are conditional: if the scene mentions a person, the negative picks up fingers, teeth, eyes and face entries, and only if it's a nude does it add the body-specific ones. There's also a "these are the words for THIS skin value" table inside the pack - the enhancer tells the model what to say for a given ITA° skin tone, because Krea 2's own idea of what "tan" looks like is not what the word means to you.
Inputs and outputs
Required: clip (Krea 2's text encoder - it writes and is the model you'll encode with), idea, style (realistic photo, portrait, still life / lab, landscape, architecture, cinematic, illustration, free), words (30–200, the scene length; detail runs 30–50% of it) and creativity. At creativity 0 the answer is deterministic - same text every run. Raise it to 0.6–0.9 and seed starts choosing between variants.
Optional: image (a visual reference the encoder actually looks at - with idea empty it describes the image instead of inventing), skin (the switch above) and instructions, free text in any language that gets appended to the system rules and wins on conflict. That last one is the small power feature: "Always golden hour light. Skin: smooth, tanned." is a legitimate way to use this node.
Outputs are all strings: scene, detail, negative, report. Scene and detail go to a text-encode node (the pack's Two-Phase Text Encode is the intended partner, or this node's own scene/detail split works with ⚗ Alchemica Text Encode), and negative belongs to NAG - at CFG 1 a normal negative socket does nothing.
Installing it
ComfyUI Manager, search "AlchemicaSampler", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler
# restart the server afterwards
ComfyUI 0.36.0+ is mandatory - CLIP.generate is what makes this node possible. The pack has no extra Python dependencies, but you need the Krea 2 checkpoint, qwen3vl_4b_fp8_scaled.safetensors in models/text_encoders and qwen_image_vae.safetensors in models/vae for a full pipeline.
Where it goes wrong
- Empty idea and no image. The node raises rather than guessing. Give it one or the other.
- "DETAIL" came back empty. The report says so and dumps the raw model text - usually a truncated answer; raise the length or simplify the idea.
- The prompt is written with the wrong encoder. If
clipcomes from a CLIPLoader with a type other thankrea2, generation either fails or triggers the pack's conditioning-size error downstream. - It's slow the first time. The encoder writes the text and the image model then has to be brought back to the GPU. Repeat runs hit an in-memory cache keyed on rules, text, image and creativity/seed - so tweaking NAG or resolution costs nothing.
- You use it and also use PromptStudio. Redundant. PromptStudio's generate mode is this node, wired in for you.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | Krea 2's text encoder: it writes the prompt, then encodes it | |
| idea | STRING | Any language, a few words are enough. Empty + image = describes the image | |
| style | COMBO | realistic photo | 8 options: realistic photo, portrait, still life / lab, landscape, architecture, cinematic, +2 |
| words | INT | 8030–200 | Length of the SCENE (the detail is about 30-50% of it) |
| creativity | FLOAT | 0.000–1.5 | 0 = deterministic (same text every run). 0.6-0.9 = variations; change the seed |
| seed | INT | 00–18446744073709550000 | Only matters when creativita (creativity) > 0 |
| imageopt | IMAGE | Visual reference: the model looks at it (Qwen3-VL is a vision-language model) | |
| skinopt | COMBO | smooth (no body hair) | Skin rendering in the DETAIL. smooth = no body/vellus hair (also added to the negative); natural = fine vellus hair (the 1.0.0 behaviour); model decides = hair not mentioned |
| instructionsopt | STRING | Your own extra instructions for the enhancer, any language. They are added to its rules and win when they conflict. E.g. 'Skin: smooth, tanned. Always golden hour light.' |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| scene | STRING | — |
| detail | STRING | — |
| negative | STRING | — |
| report | STRING | — |