Prompt Styler ποΈ
YAML template packs for your prompt, no JSON required
- positive_prompt
- negative_prompt
- used_template
If you've used one of the old A1111-style "SDXL Prompt Styler" nodes - a dropdown that bolts a canned style onto your prompt - iTools Prompt Styler is the same idea, just backed by YAML instead of JSON. Pick a style file, pick a template inside it, type your subject, and the node splices your text into a pre-written template and hands back a finished prompt.
The mechanism is straightforward once you see it: the pack ships a styles folder of .yaml files, and each one holds named templates that look roughly like {prompt}, cinematic lighting, 35mm film. You supply the {prompt} fragment, the node drops it into whichever template you picked, and out comes the full string. The author picked YAML over JSON specifically because it's easier to open in a text editor and extend - that's the whole point of this node existing rather than you just typing the style text yourself every time.
The inputs and outputs that matter
text_positive is your subject line - what you'd normally type straight into a CLIP Text Encode. text_negative lets you add your own negative text alongside whatever the chosen template contributes. style_file picks which of the six shipped YAML files to draw from (basic.yaml, camera.yaml, artist.yaml, nexus.yaml, mood.yaml, original.yaml), and template_name picks the specific template inside it - 68 across the set, from "3D Model" and "Anime" to entries buried in the mood and nexus files. Two values are worth knowing: none skips styling and passes your text straight through, and random rolls a different template every run - a genuinely useful way to browse a style file you haven't read yet.
Outputs: positive_prompt and negative_prompt go straight to your two CLIP Text Encode nodes. used_template tells you which template actually fired, which matters mainly when you've left template_name on random and want to know afterward what you got - or if you're logging results with something like this pack's Add Text Overlay.
Worth knowing before you lean on it: the shipped style files are built around tag-and-descriptor styling - camera makes, artist names, mood adjectives spliced onto your text. That's classic SDXL/CLIP-era prompting, and it works well on SDXL-lineage checkpoints - Illustrious, Pony, NoobAI, WAI. If you're on an LLM-encoded model like Z-Image or Anima, tag-stacking like this is a lot less reliable, because those models read your prompt as an instruction rather than a bag of tags. A template built for SDXL won't automatically transfer.
Installing it
Easiest path: open ComfyUI Manager, search "iTools" (or the full name, "ComfyUI-iTools"), install, restart. Manually, it's the standard drop-in:
cd ComfyUI/custom_nodes
git clone https://github.com/MohammadAboulEla/ComfyUI-iTools
then restart ComfyUI. The README doesn't call out any unusual dependencies for this node - it's reading YAML off disk, nothing heavier - so a normal install gets you running.
Troubleshooting
The template list doesn't match a screenshot you're following. The node loads every .yaml file sitting in the pack's styles folder. If you or someone else on the machine has dropped in a custom file, your style_file dropdown will have more entries than the stock six, and template counts inside a file can shift too.
Negative prompt comes back blank even though you expect one. Not every template defines a negative half - some style files are positive-only. That's the template, not a bug; type your own into text_negative if you need one regardless.
You want your own styles. That's exactly why this is YAML instead of JSON. Open one of the shipped files as a reference for the structure, drop a new file into the same styles folder, and restart (or refresh via Manager) to pick it up - no code changes needed.
Wondering why a style feels flat on a newer model. If you're on Z-Image, Anima, Flux 2, or anything else with an LLM text encoder, remember these templates were written for tag-based CLIP prompting. They'll still parse, but they won't carry the same weight they do on SDXL-lineage checkpoints.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| text_positive | STRING | β | |
| text_negative | STRING | β | |
| style_file | COMBO | basic.yaml | 6 options: camera.yaml, original.yaml, artist.yaml, nexus.yaml, mood.yaml, basic.yaml |
| template_name | COMBO | 68 options: none, random, 3D Model, Abstract, Analog, Anime, +62 |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive_prompt | STRING | β |
| negative_prompt | STRING | β |
| used_template | STRING | β |