⚗ Alchemica Two-Phase Text Encode
One prompt for composition, another for texture
- clip
- positive_scene
- positive_detail
- detail_text
Here's a trick that shouldn't work but does: put the pose and the lighting in one prompt, put skin pores and lens character in a second one, and hand both to a sampler that knows when to switch.
What it is
AlchemicaTwoPhaseEncode encodes two prompts and gives you two conditionings, meant for the two phases of the pack's Pro sampler. positive_scene drives the early steps, where Krea 2 decides what the picture is - subject, pose, framing, light, colour, style. positive_detail takes over later, when the trajectory has stopped moving things around and is only filling in how surfaces look: skin, fabric weave, material finish, grain, optics.
The reason this isn't a gimmick is in the pack's own measurements. On Krea 2 Turbo, 98.5% of the composition is decided by σ ≈ 0.87, and sharpness builds from σ 0.57 down to 0.13. So a "late prompt" is not a stylistic preference - it lands in a window where the model can only plausibly act on texture. Change the scene prompt late and you get mush; change the detail prompt late and you get exactly what you asked for.
And the measurement that makes it worth using at all: with a two-phase prompt the final image kept 0.996–0.997 composition similarity to the scene-only render. Cramming the scene and the detail into a single prompt using the same words scored 0.35–0.71. In other words, the split is what protects your composition while you push the rendering around.
The inputs
clip- Krea 2's text encoder, loaded as typekrea2.scene- subject, pose, framing, setting, overall light, colours, style. This is the one that decides the picture.detail- rendering only: skin, materials, grain, optics. Leave it empty and you get no second phase, which is a legitimate way to use this node as a plain positive encoder with two outputs.join-scene + detail(add to scene) ordetail only(replace the scene outright). Default isscene + detail, and the tooltip's reasoning is blunt and correct: the model does not forget the subject that way.detail onlyis for the case where you truly want the rendering prompt to carry the image alone.
The outputs
Three, and no more:
positive_scene- into ⚗ Alchemica KSampler Pro'spositive.positive_detail- into the same node'spositive_detail.detail_text- the text actually encoded for the second phase, as a string. That's how you verify what ajoinsetting or a wildcard expansion produced, and it's the output you'll look at the first time the second phase changes something you didn't expect.
No negative output and no combined positive - that's the difference between this node and ⚗ Alchemica Text Encode, which does all five outputs. Pick this one when you're deliberately doing two phases; pick the other when you want a single conditioning plus a negative for NAG.
Which raises the neighbouring point: the positive_scene / positive_detail pair is only meaningful on a sampler that has somewhere to put the second one. On a plain KSampler you'd be holding an unused conditioning. The Pro sampler is the intended partner, and it's the one that switches between them mid-trajectory.
Installing it
ComfyUI Manager, search "AlchemicaSampler", or:
cd ComfyUI/custom_nodes
git clone https://github.com/Nessuno76/ComfyUI-AlchemicaSampler
# restart the ComfyUI server - new nodes need it
No extra Python packages. ComfyUI 0.36.0+, plus the usual three Krea 2 files: the checkpoint, the Qwen3-VL text encoder and the Qwen-Image VAE in models/diffusion_models, models/text_encoders and models/vae.
Where it goes wrong
- The second phase changed the composition. Check
join. Withdetail onlythere's no scene in the second conditioning at all, and a late prompt that omits the subject can absolutely re-invent it. - Nothing changed. Either
detailis empty, or the sampler you're feeding doesn't have a detail input, or the phase switch is set so far down the trajectory that there are no steps left to use it. - The detail prompt reads like a scene prompt. It's easy to drift into adding objects ("a wooden table") - that belongs in
scene. Anything that changes what is in the frame fights the phase split instead of using it. - You only wanted one prompt. Then this node is one socket of overhead. Use ⚗ Alchemica Text Encode.
- Wildcards expanded differently in the two phases. Both texts expand from the same seed, but if you're generating them by hand, keep them in one place - the final
detail_textoutput tells you what the model was actually told.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | — | |
| scene | STRING | Subject, pose, framing, setting, overall light, colours and style | |
| detail | STRING | Rendering: skin, materials, grain, optics. Empty = no second phase | |
| join | COMBO | scene + detail | aggiungi alla scena (add to scene) = the detail prompt is scene + detail (recommended: the model does not forget the subject). solo dettaglio (detail only) = replaces the scene entirely |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive_scene | CONDITIONING | — |
| positive_detail | CONDITIONING | — |
| detail_text | STRING | — |