Prompt With Style (Mikey)
Inline styles, LoRAs, and wildcards from one text box
- base_model
- clip_base
- clip_refiner
- base_model
- samples
- base_pos_cond
- base_neg_cond
- refiner_pos_cond
- refiner_neg_cond
- positive_prompt
- negative_prompt
This is the node the pack's README leads with, and it's the more powerful sibling of Prompt With Style V2. Instead of picking a style from a dropdown, you type everything - prompt, style, and LoRAs - into the same text field using inline syntax, and the node parses all of it out for you. One box, three features.
How it works
Inside positive_prompt (or negative_prompt), you can drop in <lora:lora_name> or <lora:lora_name:0.8> to apply a LoRA at a given weight right from the prompt text, no separate LoRA loader node needed. <style:style_name> does the same for styles - instead of a dropdown widget, you type the style name inline, and the node's own text carries it. Wildcards use __word__ syntax pointing at files in your ComfyUI/wildcards folder, with a few extra tricks layered on: 2$$__wildcard__ pulls two lines instead of one, __wildcard|word__ searches for a specific line inside the file, and __!wildcard__, __+wildcard__, __-wildcard__, __*wildcard__ control whether the selection is locked, offset forward, offset backward, or re-randomized.
Beyond parsing that syntax, this node also handles the sizing side of the pipeline directly - target_mode sets how the SDXL refiner's target-resolution conditioning relates to your generation size (match the base resolution, or scale it 2x/4x, with -90 variants for the rotated aspect), which is the same "target size" micro-conditioning concept SDXL's own text encoder uses to tell the model what final resolution it's aiming for versus what it's generating at now. And unlike V2, this node also threads your base_model straight through - wire your checkpoint's MODEL in, get it back out the other side, so you don't need a separate noodle running the model past this node to your sampler.
The inputs and outputs that matter
positive_prompt/negative_prompt(multiline STRING) - where all the inline<lora:>,<style:>, and__wildcard__syntax actually lives.ratio_selected- one of SDXL's 15 trained aspect ratios, same list as V2, unlesscustom_sizeis enabled.custom_size/fit_custom_size/custom_width/custom_height- an escape hatch from the preset ratio list for a specific resolution. V2 doesn't have this; it's strictly preset-driven.batch_size,seed- standard controls.target_mode(match,2x,4x,2x90,4x90,2048,2048-90,4096,4096-90; default4x) - sets the refiner's target-size conditioning relative to generation size.base_model,clip_base,clip_refiner- the model gets passed through, not just the two CLIP encoders.- Outputs:
base_model(passed through unchanged),samples(LATENT),base_pos_cond/base_neg_cond/refiner_pos_cond/refiner_neg_cond(CONDITIONING),positive_prompt/negative_prompt(the parsed strings, useful for metadata).
How to install it
Bundled with the rest of Mikey Nodes. ComfyUI Manager: search "Mikey Nodes," install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/bash-j/mikey_nodes
then restart. Wildcards need a ComfyUI/wildcards folder with your own text files in it - the pack doesn't ship any wildcard content, just the parsing logic. Custom styles beyond the built-in list need a hand-created user_styles.json in the ComfyUI root, same file format and same caveat as V2.
Common issues & troubleshooting
<style:name> doesn't match anything. Style names have to match exactly what's defined - either one of the built-ins listed in the README (SAI-Photographic, SAI-Anime, and dozens more) or an entry in your own user_styles.json. A typo just silently fails to apply rather than erroring loudly, so if a style isn't showing up in your output, check the exact spelling first.
Wildcards not resolving. The wildcard folder location is fixed at ComfyUI/wildcards - files placed anywhere else won't be found. On a hosted or serverless ComfyUI, that folder needs to actually exist inside the execution environment; a wildcards folder on your local machine isn't visible to a remote executor.
LoRA syntax silently doing nothing. <lora:name:weight> needs the LoRA file to be discoverable the normal way ComfyUI finds LoRAs - if the name doesn't match a file in your loras folder, expect the tag to be ignored rather than an obvious error.
Custom resolution ignored. custom_width/custom_height only take effect when custom_size is enabled; otherwise ratio_selected wins. If you've set a specific size and it's not showing up, check that toggle first.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| positive_prompt | STRING | Positive Prompt | — |
| negative_prompt | STRING | Negative Prompt | — |
| ratio_selected | COMBO | 15 options: 1:1 [1024x1024 square], 8:5 [1216x768 landscape], 4:3 [1152x896 landscape], 3:2 [1216x832 landscape], 7:5 [1176x840 landscape], 16:9 [1344x768 landscape], +9 | |
| custom_size | COMBO | false | 2 options: true, false |
| fit_custom_size | COMBO | 2 options: true, false | |
| custom_width | INT | 10241–8192 | — |
| custom_height | INT | 10241–8192 | — |
| batch_size | INT | 11–64 | — |
| seed | INT | 00–18446744073709550000 | — |
| target_mode | COMBO | 4x | 9 options: match, 2x, 4x, 2x90, 4x90, 2048, +3 |
| base_model | MODEL | — | |
| clip_base | CLIP | — | |
| clip_refiner | CLIP | — |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| base_model | MODEL | — |
| samples | LATENT | — |
| base_pos_cond | CONDITIONING | — |
| base_neg_cond | CONDITIONING | — |
| refiner_pos_cond | CONDITIONING | — |
| refiner_neg_cond | CONDITIONING | — |
| positive_prompt | STRING | — |
| negative_prompt | STRING | — |