Prompt Styler Extra 🖌️
Stack four style templates into one prompt
- positive_prompt
- negative_prompt
- used_templates
Regular iTools Prompt Styler picks one template from one YAML file. This node does the same trick four times over and mixes the results into a single prompt - the README's own example is a plain "cute cat" prompt getting run through four different style layers at once and coming out considerably more interesting than any single template would produce alone.
How it works
Four independent file+template pairs - base, second, third, fourth - each with its own _file selector (which YAML to pull from) and matching _style selector (which template inside that file). The defaults are deliberately chosen to hit four different flavors at once: base_file defaults to basic.yaml (the same 68 general templates as plain Prompt Styler), second_file to camera.yaml (camera-body names - the sample list is full of specific models like the Canon EOS R5), third_file to artist.yaml (by far the biggest single list in the pack, at 1,835 entries - this is where most of the combinatorial range comes from), and fourth_file to mood.yaml (adjective-driven atmosphere, "Chaotic," "Dreamy Serenity," and the like). You can point any of the four slots at any of the six style files if you want a different combination than the defaults.
Each slot, like the single-template node, accepts none (skip that layer) or random (roll it). Set a couple of slots to random and you get a template-mixing machine that generates variety without you writing new prompts by hand.
The inputs and outputs that matter
text_positive/text_negative- your base subject text, same as the single-template node.base_file/base_style,second_file/second_style,third_file/third_style,fourth_file/fourth_style- four independent template picks, defaulting to basic + camera + artist + mood respectively.
Outputs: positive_prompt, negative_prompt, and used_templates (plural, unlike the single node's singular used_template) - worth wiring to a Text Preview node so you can actually see which four templates combined to make a result you liked, especially if you're running any slots on random.
One caveat worth carrying over from the single-template node: this whole approach is tag-and-descriptor styling - artist names, camera bodies, mood words spliced onto your text - and it's built for SDXL/CLIP-lineage checkpoints (Illustrious, Pony, and friends), not LLM-encoded models like Z-Image or Anima. The one partial exception is the camera layer specifically: naming a physical camera is one of the few prompting habits that actually carries weight on both older CLIP models and newer LLM-encoded ones, so second_file's default is arguably the most universally useful of the four.
Installing it
Via ComfyUI Manager, search "iTools" (or "ComfyUI-iTools"), install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/MohammadAboulEla/ComfyUI-iTools
then restart. No extra dependencies beyond the base pack - this node reads the same YAML files as the single Prompt Styler.
Troubleshooting
Prompt comes out as a wall of text. That's the expected behavior with four active layers stacked - if it's too much, set one or two slots to none rather than fighting the merge logic. Two active layers usually reads better than all four.
Results feel repetitive across runs. Fixed (non-random) selections on all four slots will always produce the same combined template with the same subject. Set at least one slot - third_style (artist) is the deepest well at 1,835 options - to random if you want variety run to run.
You changed a _file value and the matching _style dropdown looks wrong. Each style dropdown's option list is tied to the YAML file it's currently pointed at, so switching third_file from artist.yaml to mood.yaml collapses your choices from ~1,835 down to ~32. Re-pick the style after changing the file, don't assume the old selection carried over correctly.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| text_positive | STRING | — | |
| text_negative | STRING | — | |
| base_file | COMBO | basic.yaml | 6 options: camera.yaml, original.yaml, artist.yaml, nexus.yaml, mood.yaml, basic.yaml |
| base_style | COMBO | 68 options: none, random, 3D Model, Abstract, Analog, Anime, +62 | |
| second_file | COMBO | camera.yaml | 6 options: camera.yaml, original.yaml, artist.yaml, nexus.yaml, mood.yaml, basic.yaml |
| second_style | COMBO | 128 options: none, random, Canon EOS 90D, Canon EOS M50, Canon EOS M50 Mark II, Canon EOS M6 Mark II, +122 | |
| third_file | COMBO | artist.yaml | 6 options: camera.yaml, original.yaml, artist.yaml, nexus.yaml, mood.yaml, basic.yaml |
| third_style | COMBO | 1835 options: none, random, A.J.Casson, Aaron Douglas, Aaron Horkey, Aaron Jasinski, +1829 | |
| fourth_file | COMBO | mood.yaml | 6 options: camera.yaml, original.yaml, artist.yaml, nexus.yaml, mood.yaml, basic.yaml |
| fourth_style | COMBO | 32 options: none, random, Abyssal Silence, Aggressive, Bittersweet Nostalgia, Calm, +26 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive_prompt | STRING | — |
| negative_prompt | STRING | — |
| used_templates | STRING | — |