Prompt
A prompt builder that knows whether you're on Flux or SDXL
- clip
- vae
- images
- positive
- negative
- positive_text
- negative_text
- resolved_arch
- token_count
- latent
Most "prompt enhancer" nodes are word soup generators that don't know what encoder they're talking to. Radiance Cinematic Encoder is the opposite: its whole trick is that it auto-detects your architecture and picks the prompt format accordingly - flowing prose for Flux/T5/Kolors, structured tag blocks for SD1.5/SDXL. It's also a real CLIP encoder, not just a string factory: a clip goes in and ready-to-sample CONDITIONING comes out.
That matters more in 2026 than it sounds. The rules changed when models moved to LLM text encoders: (word:1.3) attention weights are silently discarded on Flux, BREAK is meaningless without a 77-token chunk boundary, and a forty-keyword negative is never computed at CFG 1. A node that still writes those conventions is a trap for people who swapped architectures. This one is written around the difference.
How it works
You feed it a CLIP model and a base_prompt (your subject - it's called Prompt A because there's a base_prompt_b for A/B testing, switched with active_prompt so you can flip between two subjects without rewiring). Then you stack up to twenty or so optional dropdowns - framing, camera body, lens, aperture, lighting, film stock, color grading, aspect ratio, scene mood - and it assembles the whole thing into a final prompt, encodes it, and hands you positive and negative conditioning.
The inputs a beginner actually touches, ranked:
- target_arch (default Auto) - the auto-detection is genuinely good, but if you know the pack guessed wrong, this is the override. Prose for flux/sd3/wan/kolors/ltx; structured for sdxl/sd1.5.
- context_window - token budget. Standard (CLIP 77) for SDXL; flip to Medium or Large for Flux's T5 if you're writing long prompts.
- negative_strength - Off/Soft/Standard/Aggressive. The tooltip's advice is worth taking: Soft is recommended for Flux. A big structured negative is inert on a distilled model and can actively hurt at higher CFG.
- subject_weight - wraps your subject in
(subject:weight)attention syntax. Works on SD1.5/SDXL; on Flux/T5 it becomes literal text the encoder may or may not care about. Worth knowing before you crank it. - style_preset - 29 one-click looks (Classic Hollywood, Film Noir, Cyberpunk...). Good starting points.
- lora_keywords - trigger words injected into the prompt, so your LoRA stacks stay in sync with the text.
You also get clip_skip (0 = all layers; typical SD1.5=1, SDXL=0) and a prompt_enhancer that either fixes grammar or injects aesthetic tags - nice, not essential.
Outputs
Six of them, and the useful ones are: positive and negative CONDITIONING for your sampler; positive_text and negative_text strings (wire to a text preview to see exactly what got built - worth doing once, because the assembly is a black box otherwise); and token_count, the actual count from the CLIP tokenizer, which is how you catch a prompt silently overflowing its context window. There's also an image_ref pass-through if you want a reference image routed alongside the conditioning.
Install
Part of the fxtdstudios/radiance pack - Manager search "Radiance", or:
cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements_linux.txt
then restart. Heavy install (OpenEXR, OpenColorIO, colour-science, transformers), slow first boot, and if Manager's security level blocks it you clone manually per the README. If dependency conflicts appear with other packs, reinstall Radiance's requirements last.
One last honest note: the community reception to the pack was split - the launch thread upvoted it but several commenters flagged the "32-bit pipeline" claims as overstated in places, and the docs were called thin. The prompt nodes are the part that behaves as advertised.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| clip | CLIP | CLIP model for encoding. | |
| base_promptopt | STRING | Primary subject/scene description. | |
| style_presetopt | COMBO | None (Custom) | One-click style preset. |
| framingopt | COMBO | None | Shot framing type. |
| camera_typeopt | COMBO | None | Camera body. |
| lens_focalopt | COMBO | None | Lens + focal length. |
| aperture_dofopt | COMBO | None | Depth of field. |
| lightingopt | COMBO | None | Lighting style. |
| style_aestheticopt | COMBO | None | Visual aesthetic. |
| color_gradingopt | COMBO | None | Color grading look. |
| negative_strengthopt | COMBO | Off | Generic negative terms added before negative_prompt. Off encodes negative_prompt alone, as ComfyUI's templates do. |
| negative_promptopt | STRING | Custom negative prompt. Appended after auto-negatives. | |
| negative_modeopt | COMBO | Auto | Auto: on guidance-distilled models (Flux, Flux.2, MiniMax H3) with no custom negative, return a zeroed negative instead of encoding one: ComfyUI never reads the negative at CFG 1, so this saves a full text-encoder pass. Always encode: pick this if you run those models above CFG 1 with a negative. Zero: never encode the negative. |
| model_metaopt | STRING | Optional JSON metadata from the Loader's model_meta output. When connected, architecture detection uses this before tokenizer heuristics. | |
| vaeopt | VAE | Encodes the reference images into the latents the model edits from. Flux.2 needs it; Qwen-Image 2.1 and Qwen-Image Edit without it read the images through the text encoder only. | |
| resolutionopt | INT | 10240–4096 | Qwen-Image 2.1: reference images are resized to about resolution x resolution pixels, at multiples of 32, keeping their aspect ratio. 0 keeps each at its own size, rounded to a multiple of 32. Flux.2 and Qwen-Image Edit size them on their own. |
| imagesopt | COMFY_AUTOGROW_V3 | Reference images for Qwen-Image 2.1, Qwen-Image Edit (3 at most) and Flux.2 editing. image_1 is the image to edit, the others are references. With Qwen-Image 2.1, cite them in the prompt as <image1>, <image2>... |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | Positive conditioning for the sampler. |
| negative | CONDITIONING | Negative conditioning for the sampler. |
| positive_text | STRING | Final positive prompt text that was encoded. |
| negative_text | STRING | Final negative prompt text that was encoded. |
| resolved_arch | STRING | Detected architecture used to choose prose vs CLIP-style prompting. |
| token_count | INT | Tokenizer-derived positive prompt token count after safety handling. |
| latent | LATENT | Empty latent at image_1's size after the resize. Sample on it to edit: any other size shifts the edit. None without reference images. |