๐ Kisekae Scene
Framing, light and background, without the rewrite
- char
- char
The character is done. Same character, same outfit, same LoRA - now put her somewhere else. In a raw prompt that means carefully editing the tail of a 60-token string, where the composition tag lives next to the lighting tag next to three background tags, and one wrong delete takes out the solo focus you needed.
๐ Kisekae Scene isolates the four fields that describe outside the character: composition, lighting, background, effects. Swap the background, keep the lighting. Try three lighting setups on the same shot.
How it works
Scene nodes are ordinary section nodes: KISEKAE_CHAR in, char out, and the section only becomes text at Kisekae Prompt. Application order is incoming character โ this node's preset pick (whole scene section replaced) โ field overrides.
What makes scene nodes worth chaining rather than collapsing into one node is mode on Kisekae Load Preset. examples/scenes/dramatic is a preset that sets several sections at once - a pose, a lighting setup, an expression. Load it with mode: merge and its fields replace individual fields while everything else about your character survives: the character keeps their eyes and hair, gains the lighting, gains the expression. overlay would replace whole sections instead. replace gives you exactly the preset and throws your character away. That distinction is the single most useful thing to understand about this pack, and merge is the one you'll use for scenes.
A scene node's own preset dropdown is narrower: only presets that define a scene section show up, and only that section is taken. That's by design - it's for "use the scene from this preset", not "use this preset".
The inputs that matter
composition is framing and camera: portrait, upper body, cowboy shot, full body, close-up, from above, from below, from side, looking at viewer, solo focus. Set it deliberately - it's the tag most likely to silently undo a pose you set elsewhere. full body and sitting coexist happily; portrait and full body are a fight the sampler resolves at random.
lighting is where this node pays for itself. dim lighting, dramatic lighting, backlighting, rim lighting, soft lighting, sunlight, golden hour, moonlight - one dropdown, and it's the single highest-leverage change you can make to a flat-looking render.
background has the boring-but-essential ones (simple background, white background, gradient background) that keep a character sheet clean, plus outdoors, city, street, night sky. effects covers aura, sparkle, particles, petals, wind, speed lines, motion blur, lens flare - easy to overdo, and easy to turn off when you do.
Output: one char.
Install
ComfyUI Manager โ search kisekae (Registry name comfyui-kisekae), or:
cd ComfyUI/custom_nodes
git clone https://github.com/Kagejitsu/comfyui-kisekae
Restart. No Python dependencies and no model files for the nodes. You'll find them under kisekae, prefixed ๐.
Common issues
The scene preset wiped my character. You used mode: replace (the default). Use merge when stacking onto an existing character. replace ignores the incoming char entirely.
The Scene node's preset dropdown won't show my character. It only lists presets that define a scene section - character presets usually don't. Use Kisekae Load Preset for whole presets.
Composition and pose contradict each other. Both end up in the same prompt; the model picks. Keep full body for full body poses, and use Kisekae Debug Prompt to see exactly what went in.
I edited a scene preset and the render didn't change. The node fingerprints the preset files it reads and re-runs when they change, so the likely culprit is a cached queue entry rather than the file. Press R to refresh dropdowns after adding new presets, and re-queue rather than re-using a cached run.
Effects look like glitter soup. Clear effects first when a render gets busy; it's the cheapest variable to eliminate.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| preset | COMBO | (none) | Replace the whole scene section with this preset's scene |
| composition | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| composition_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| composition_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| lighting | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| lighting_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| lighting_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| background | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| background_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| background_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| effects | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| effects_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| effects_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| extra | COMBO | (keep) | (keep) passes the incoming value through; (clear) empties it |
| extra_text | STRING | Typed text wins over the dropdown. (tag:1.2) weights work. | |
| extra_append | BOOLEAN | false | append: add to the incoming value; replace: overwrite it |
| charopt | KISEKAE_CHAR | Character from the previous node; empty starts a new one |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| char | KISEKAE_CHAR | โ |