Zura Klein Look Presets
Nine Widgets, One Identity-Safe Relight Prompt
- edit_prompt
- edit_enabled
- background_mode
Relighting a performer with an instruction-editing model has an unglamorous problem: the prompt that works is about four sentences long, half of it is boilerplate telling the model not to touch the person's face, and you type it from scratch every time. Zura Klein Look Presets turns that into nine widgets and emits the prompt for you.
It runs no inference. It doesn't load Klein. It's a prompt builder with a tidy UI, and its whole design premise is that the boilerplate is the product.
The widgets
enable_edit is the master toggle - off means "use the original frame", and its tooltip tells you to pair it with Zura Optional Image Edit so the edited branch never even runs. Then the interesting ones:
lighting- seven presets. Keep source lighting, Soft studio, Cinematic contrast, Warm portrait, Cool editorial, Three-point studio, and Match new environment. Each maps to one sentence; Three-point is the most specific (large soft key 45° to camera, low-power fill opposite, subtle hair light, keep realistic shadows and skin texture).background- six options: Keep source background, Clean white studio, Neutral grey studio, Solid colour, Two-colour gradient, Custom environment. The last one wants text incustom_environment, and if you select it withenable_editon and leave the box empty it raises rather than guessing.background_colourandgradient_end_colour- free text, not hex codes, despite looking like they should be. "warm grey", "charcoal". They're only read by Solid colour and Two-colour gradient.edge_light- one boolean for a hair-and-shoulder rim light.camera_finish- Keep source camera, Clean studio camera (50 mm studio look) or Editorial portrait camera (85 mm, subtle separation). Both end with an explicit "do not beautify the face", which is the kind of line you only add after seeing the alternative.extra_instructions- your own short addendum. The tooltip's advice is the important part: don't change the person's identity.
What comes out
Three outputs. edit_prompt is the string - send it to your CLIPTextEncode for the edit model. edit_enabled mirrors the toggle, and you wire it into ZuraOptionalImageEdit.enable_edit (and into whatever else gates your edit branch). background_mode carries the background choice out as a plain string, which is what the V3/V4 multicam render nodes want on their background_mode input.
The prompt always opens with the same identity lock - preserve the exact person, face, age, hair, skin tone, clothing, pose, expression, camera perspective and framing; photorealistic; don't add a person, change wardrobe, or make a collage - and every background preset is phrased as "replace only the background", with a natural contact shadow. Someone did the work of learning what these models overreach on.
How to install
Ships in the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/ZURAVFX/ComfyUI_zura_nodes
pip install -r ComfyUI_zura_nodes/requirements.txt
Restart. The extras (requests, yt-dlp, ultralytics, face-alignment) aren't needed for this node - it's pure Python string work - but installing them now saves a second restart later. You do need a Klein model (or any instruction editor) and its text encoder separately; the pack ships no weights.
The trap, which is not this node's fault
Flux 2 Klein and its peers are LLM-encoded instruction editors: full sentences with explicit ownership beat comma-separated tags, and Comfy prompt weighting syntax is simply disabled on this generation of encoders. So don't go appending (rim light:1.4) to the output - it'll be read as literal punctuation.
The other trap is structural. Instruction editors re-emit the whole frame, so identity drifts across repeated edits and untouched pixels move. If you're feeding one frame per shot into a video chain, you're doing the low-risk version of this: one edit, then a video model that follows it. Chain three edits and you'll meet the drift everyone complains about.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| enable_edit | BOOLEAN | false | Use with Zura Optional Image Edit to bypass the edited branch when off. |
| lighting | COMBO | Keep source lighting | 7 options: Keep source lighting, Soft studio, Cinematic contrast, Warm portrait, Cool editorial, Three-point studio, +1 |
| edge_light | BOOLEAN | false | — |
| background | COMBO | Keep source background | 6 options: Keep source background, Clean white studio, Neutral grey studio, Solid colour, Two-colour gradient, Custom environment |
| background_colour | STRING | warm grey | Used only by Solid colour and Two-colour gradient. |
| gradient_end_colour | STRING | charcoal | Used only by Two-colour gradient. |
| custom_environment | STRING | Used only by Custom environment. | |
| extra_instructions | STRING | Optional short edit instructions; do not change the person's identity. | |
| camera_finish | COMBO | Keep source camera | 3 options: Keep source camera, Clean studio camera, Editorial portrait camera |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| edit_prompt | STRING | — |
| edit_enabled | BOOLEAN | — |
| background_mode | STRING | — |