Prompt Styler Composition
Rule-of-thirds and framing without the essay
- positive_prompt_text_g
- negative_prompt_text_g
Most prompt stylers push a look - cyberpunk, watercolor, film grain. This one pushes structure. Its ten style options are classic composition principles: Balance, Framing, LeadingLines, NegativeSpace, Pattern, Perspective, RuleOfThirds, Simplicity, Symmetry, Texture. You keep your subject, pick how the frame is arranged, and the node appends the language that nudges SDXL toward that layout.
It's a niche but genuinely handy corner of wolfden's SDXL Prompt Styler pack. Composition is the thing beginners almost never prompt for, because they don't know the vocabulary - "leading lines drawing the eye toward the subject," "generous negative space, minimalist framing." This node hands you that vocabulary as a dropdown.
How it works
Each style is a template stored in JSON: a prompt field with a {prompt} placeholder and a negative_prompt. Your positive text drops into the placeholder, the composition wording wraps around it, and out comes a finished string. Leave the negative empty and you get the template's default negative; fill it in and yours is merged with it. No model runs, nothing downloads - it's text assembly, which means the actual influence on the image comes from your checkpoint and sampler, not the node.
Fair warning on expectations: prompting for composition is a bias, not a guarantee. SDXL will lean toward symmetry or rule-of-thirds, but it's not a layout engine. If you need hard control over where things sit, that's a job for a ControlNet, and this node is the cheap first pass before you reach for one.
The inputs and outputs that matter
- style - the composition principle. This is the whole point of the node; everything else is your content.
- text_positive - your subject and scene. The style adds the arrangement, so you don't have to.
- text_negative - optional; blank inherits the template's negative, or add your own recurring offenders.
log_prompt (No/Yes) prints the assembled prompt to the console so you can read exactly what "RuleOfThirds" expanded into - worth turning on the first few times.
Outputs are positive_prompt_text_g and negative_prompt_text_g, two strings. Send the positive into the CLIP Text Encode that feeds your positive conditioning and the negative into the one feeding your negative. Standard two-wire hookup.
Installing it
Through ComfyUI Manager: search SDXL Prompt Styler (wolfden's version), install, restart. Or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/wolfden/ComfyUi_PromptStylers
Restart afterward. There are no dependencies to install and no models to fetch. Once it's loaded, the styler nodes live under a Style Prompts submenu - grab the Composition one from there.
Common issues
"None" is a real option. The first entry, none by Composition, is a deliberate passthrough that changes nothing. If your output looks identical to your input, that's usually why.
The effect is subtle. Composition words steer softly. Combine with a matching subject - Symmetry on architecture, LeadingLines on a road or hallway, NegativeSpace on a lone figure - and it lands harder than a mismatched pairing.
Don't fight your own prompt. If your positive already dictates a busy, edge-to-edge scene, asking for Simplicity or NegativeSpace on top just gives the model contradictory instructions. Pick a composition that agrees with your subject.
On distilled or LLM-encoded models it underdelivers. These templates were written for SDXL. On Flux or Z-Image the negative half does nothing at CFG 1 and the extra descriptors are read as flat instruction text, so the composition steer is weak. This is an SDXL-family tool.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text_positive | STRING | — | |
| text_negative | STRING | — | |
| style | COMBO | 11 options: none by Composition, Balance, Framing, LeadingLines, NegativeSpace, Pattern, +5 | |
| log_prompt | COMBO | No | 2 options: No, Yes |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| positive_prompt_text_g | STRING | — |
| negative_prompt_text_g | STRING | — |