RedNode Prompt Frame
A framing dial that stops your subject dissolving into the wide shot
- prompt
- notice
Word order is framing. Open a prompt with the person and the model gives you a close shot; put the room first and the camera pulls back - same words, different picture. And once a prompt is long enough to be useful, that order is the first thing to get lost. RedNode Prompt Frame exists because of exactly that: it splits your writing into Subject and Surroundings, then emits them in the order that sets the shot you actually asked for.
That's the whole mechanism, and it's worth sitting with because it explains why the node feels magic and isn't. It never rewrites your wording. It reorders it and changes the joining words, and it adds small scale cues at the wide end ("seen full length", "small in the distance"). The model's own training did the rest of the work; this node just stops you from fighting it.
The five steps
framing runs Portrait → Half body → Balanced → Full scene → Roomscale. The two tight steps lead with the subject, opening with "A close view of" or "A three-quarter view of". Balanced and the wider steps lead with the surroundings and place the subject inside them, adding the scale cue at the two widest.
Where people get burned is the wide end: at Full scene and Roomscale, a subject with nowhere to stand can drop out of the picture entirely. The fix is placement - "on the second bench", "at the water's edge", named against something already in your Surroundings. There are two dropdowns for quick placement (a where + a what, like "beside" + "the doorway"), but typing your own placement overrides both. The node will also tell you when you need it, because the second output is a notice line that does real work: it flags a wide framing with no placement, a style that lights its own scene and will fight your lighting dropdown, a prompt pushed past the 90–150 word working range, and a Portrait framing whose surroundings are long enough to pull the camera back on their own. Wire that notice into a report or a text display and the node starts coaching you.
The other controls, briefly
lighting is twenty setups written the way the model actually follows them - source, direction, what the light lands on. style is nine tested blocks that need no LoRA. brightness is a separate ramp from lighting, and zero means "say nothing". light_and_colour goes at the end and doesn't get rearranged. seed and resolve_wildcards behave exactly like the Prompt Box - wildcards and @keywords resolve in the finished text, seeded, and the box can pass them through instead. The four *_in inputs append external text (pair light_and_colour_in with RedNode Describe To Boxes), and framing_push restates the shot at the end of the prompt when a long prompt is talking over the middle of it.
Outputs: prompt (the finished STRING) and notice (the warnings line).
Installing it
git clone https://github.com/RedNodeAI/ComfyUI-RedNodeStudio.git ComfyUI/custom_nodes/ComfyUI-RedNodeStudio
Restart ComfyUI, or search RedNode Studio in ComfyUI Manager. No pip deps, no models. Python 3.10+.
The takeaway
Start at Balanced and pull wider only when you have a placement typed in. The panel previews what the node emits, so the thing you see on the canvas is the thing that renders - use that to verify the ordering before you burn a run. This is one of the few prompt tools where the mechanism (order as framing) is real enough that once you've used it, you'll start writing subject-last for wide shots in plain prompt nodes too.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| subject | STRING | Who or what the picture is about, and how it looks. Clothing, hair, colours and expression go here: if it moves with the character, it belongs to the subject. | |
| surroundings | STRING | Where it is. Room, landscape, background, props. If it stays behind when the subject walks away, it goes here. | |
| framing | COMBO | Balanced | How tight the shot is. Portrait and Half body put the subject first; Balanced and wider put the surroundings first, which is what pulls the camera back. |
| placement_where | COMBO | None | Quick placement, first half: on, under, beside, behind. Use with the next box. Anything typed into Placement overrides both. |
| placement_what | COMBO | None | Quick placement, second half: the bench, the doorway, the tree. Pick something you already described in Surroundings, or the model has nothing to attach to. |
| placement | STRING | Where the subject is standing or sitting, named against something you already put in Surroundings, for example "on the second bench" or "at the water's edge". Overrides the two dropdowns above. Needed at Full scene and Roomscale, where the subject can vanish without it. Ignored at Portrait and Half body. | |
| brightness | INT | 0-3–3 | How light or dark the whole frame is, separately from where the light comes from. 0 says nothing and leaves it to the lighting choice. Measured as a smooth ramp: mean brightness runs 0.17 at -3 up to 0.67 at +3. |
| lighting | COMBO | None | Twenty lighting setups, each written as a source, a direction and what the light lands on, which is the form the model actually follows. Added before your own Light and colour text. |
| light_and_colour | STRING | Lighting, palette and mood, for example "low sun from the left, muted slate and rust, quiet and still". Added at the end. Order does not matter for these, so nothing is rearranged. | |
| style | COMBO | None | How the picture is made, emitted before everything else. Nine tested blocks, none of which need a LoRA. Pick None to let the checkpoint decide, or to use only your own wording in Style extra. |
| seed | INT | 00–18446744073709550000 | Seed for __wildcard__ picks. Same seed gives the same result; set the control to randomize to re-roll every run. |
| resolve_wildcards | BOOLEAN | true | ON: this node resolves __wildcards__ and {a|b} itself. OFF: they pass through untouched for an external wildcard node. @keywords are always expanded. |
| font_size | INT | 138–32 | Text size in this panel only. Does not change the prompt. |
| text_color | COMBO | default | Text colour in this panel only. Does not change the prompt. |
| surroundings_inopt | STRING | Text from another node, added to the end of Surroundings. Anything that outputs a STRING will do. | |
| style_inopt | STRING | Text from another node, added after the chosen style and your Style extra. | |
| subject_inopt | STRING | Text from another node, added to the end of Subject. | |
| light_and_colour_inopt | STRING | Text from another node, added to the end of Light and colour. Pair this with RedNode Describe To Boxes. | |
| style_extraopt | STRING | Your own style wording, added after the chosen style. Use it to adjust a preset, or on its own with style set to None. Right-click to convert to an input if you would rather wire it in. | |
| framing_pushopt | COMBO | Off | Push the framing harder when a long prompt is talking over it. Restate at the end repeats the shot as a closing sentence, so the framing holds the front and the end of the prompt instead of the middle. Camera words swap the descriptive cue for the label a caption would use ("extreme long shot" rather than "small in the distance"), which is read as an instruction about the camera. Off leaves the prompt exactly as it was. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| prompt | STRING | — |
| notice | STRING | — |