⚙️ Prompt Property Extractor
Put the Sampler, CFG and Checkpoint Inside the Prompt Text
- model
- clip
- vae
- MODEL
- CLIP
- VAE
- positive
- negative
- latent
- seed
- steps
- cfg
- sampler
- denoise
- start_step
- end_step
- positive
- negative
- other_tags
- resolved_string
- width
- height
This is the weird, ambitious one in the pack. ⚙️ Prompt Property Extractor parses tags like <cfg:6>, <steps:30>, <sampler:dpmpp_2m>, <checkpoint:realvis> and <neg:blurry> straight out of your prompt string, and outputs both the values and the loaded models and conditioning. Combined with a KSampler, the author's own framing is that you can run a whole generation out of one text block - and that text block can contain wildcards, so settings randomise along with the prompt.
That's the real use case: randomised discovery runs. Thirty queues where CFG, sampler and checkpoint vary along with the prompt, and the filename tells you what happened. It's the closest thing in ComfyUI to how the wildcard-and-random people run their batches over in A1111-land.
How it works
Wildcards resolve first, then tags get parsed out. That order is the point - <cfg:{5|6|7}> works.
Model resolution follows a documented priority, and it's the thing to read twice. <clip:name> and <vae:name> tags always win. Otherwise, if there's a <checkpoint:name> tag, the model comes from that checkpoint, and CLIP/VAE come from it too only if load_clip_from_checkpoint / load_vae_from_checkpoint are on. Failing all that, the model/clip/vae input pins are used. So a checkpoint tag silently overrides a CLIP you wired in unless you turn that toggle off - that's the classic "why is my CLIP being ignored" moment with this node.
<pos:...> and <neg:...> tags are collected and joined with , , and both are encoded into CONDITIONING inside the node - so you get positive and negative conditioning outputs directly, no CLIP Text Encode nodes required. Multiple negatives are additive. To put a literal > inside a tag, escape it: <neg:(cat:1.5)\, ugly>.
The outputs include a cleaned positive string (all recognised tags stripped, wildcards already resolved) and other_tags, which is anything the parser didn't recognise - check it when a tag silently does nothing. <res:1024x768> / <resolution:...> strictly override <width>/<height> anywhere in the string. And the author's own caveat: the scheduler is the one property that doesn't work properly, which is why there's no scheduler output.
Inputs and outputs
You mostly set the defaults - cfg, steps, sampler_name, denoise, width, height, seed, start_step, end_step, plus the two checkpoint toggles. Tags override them. input_string is the star.
Outputs: MODEL, CLIP, VAE, positive/negative as CONDITIONING, a latent built from the resolved width/height, then seed, steps, cfg, sampler, denoise, start_step, end_step, and strings: positive, negative, other_tags, resolved_string, width, height. Wire those into a KSampler and an Empty Latent gets skipped entirely.
Install
Manager → "ComfyUI-mnemic-nodes" → restart, or clone it:
cd ComfyUI/custom_nodes
git clone https://github.com/MNeMoNiCuZ/ComfyUI-mnemic-nodes
It uses the pack's wildcard engine, so wildcard files live in the pack's wildcards/ folder (and the pack's other wildcard directories). No API keys.
Common issues
A tag does nothing. Look at other_tags - unrecognised tags land there instead of silently vanishing. Also check the aliases: it's <step> or <steps>, <ckpt> or <checkpoint> or <model>.
Your wired CLIP is ignored. The checkpoint tag plus load_clip_from_checkpoint = True. Turn it off.
Checkpoint names not found. Tags resolve against your models/checkpoints folder; a name that fuzzy-matches nothing fails quietly-ish. Use a distinctive fragment.
This is not a tiny node. It loads checkpoints, applies LoRAs, encodes text and builds latents - every one of which the workflow would otherwise do in separate, inspectable nodes. It's a convenience, and the cost is that a broken run has fewer obvious places to look.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| input_string | STRING | Input string with property tags. Supported tags: - <checkpoint:name> | <model:name> | <ckpt:name> - <clip:name> - <vae:name> - <lora:name:weight> - <cfg:value> - <steps:value> | <step:value> - <sampler:name> | <sampler_name:name> - <denoise:value> - <width:value> - <height:value> - <resolution:WxH> | <res:WxH> (e.g. 1024x768) - <seed:value> - <start_step:value> | <start:value> | <start_at_step:value> - <end_step:value> | <end:value> | <end_at_step:value> - <pos:value> | <positive:value> (Positive Prompt - multiple allowed) - <neg:value> | <negative:value> (Negative Prompt - multiple allowed) Note: Multiple <pos> and <neg> tags are combined with ', '. Note: Use \> to include a literal > in tag values (e.g. <neg:(cat:1.5)\, ugly>) | |
| load_clip_from_checkpoint | BOOLEAN | true | Determines CLIP source priority: 1. <clip:name> tag (Highest Priority) 2. Checkpoint CLIP (if <checkpoint> tag exists AND this is True) 3. Input CLIP pin (Lowest Priority) If no <checkpoint> tag is found, this setting is ignored and the Input CLIP is used. |
| load_vae_from_checkpoint | BOOLEAN | true | Determines VAE source priority: 1. <vae:name> tag (Highest Priority) 2. Checkpoint VAE (if <checkpoint> tag exists AND this is True) 3. Input VAE pin (Lowest Priority) If no <checkpoint> tag is found, this setting is ignored and the Input VAE is used. |
| cfg | FLOAT | 8.000–100 | Default CFG scale. Can be overridden by a <cfg:value> tag. |
| steps | INT | 201–10000 | Default number of steps. Can be overridden by a <steps:value> tag. |
| sampler_name | COMBO | Default sampler. Can be overridden by a <sampler:name> tag. | |
| denoise | FLOAT | 1.000–1 | Default denoise value. Can be overridden by a <denoise:value> tag. |
| width | INT | 51264–4096 | Default image width. Can be overridden by a <width:value> tag. |
| height | INT | 51264–4096 | Default image height. Can be overridden by a <height:value> tag. |
| seed | INT | 00–18446744073709550000 | Default seed. Can be overridden by a <seed:value> tag. |
| start_step | INT | 00–10000 | Default start step for KSampler. Can be overridden by a <start_step:value> tag. |
| end_step | INT | 100000–10000 | Default end step for KSampler. Can be overridden by a <end_step:value> tag. |
| modelopt | MODEL | Default MODEL input (Lowest Priority). Overridden by: 1. <checkpoint:name> tag (Highest Priority) | |
| clipopt | CLIP | Default CLIP input (Lowest Priority). Overridden by: 1. <clip:name> tag (Highest Priority) 2. <checkpoint:name> tag CLIP (if load_clip_from_checkpoint is True) | |
| vaeopt | VAE | Default VAE input (Lowest Priority). Overridden by: 1. <vae:name> tag (Highest Priority) 2. <checkpoint:name> tag VAE (if load_vae_from_checkpoint is True) |
Outputs (19)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | The final loaded model after applying checkpoint and LoRA tags. |
| CLIP | CLIP | The final loaded CLIP after applying checkpoint and LoRA tags. |
| VAE | VAE | The final loaded VAE after applying checkpoint and VAE tags. |
| positive | CONDITIONING | The positive conditioning (CLIP encoding of the cleaned string). |
| negative | CONDITIONING | The negative conditioning (CLIP encoding of the <neg:value> or <negative:value> tag). |
| latent | LATENT | A latent tensor with dimensions based on the selected width and height. |
| seed | INT | The final seed value. Tag: <seed:value> |
| steps | INT | The final number of steps. Tags: <steps:value>, <step:value> |
| cfg | FLOAT | The final CFG scale value. Tag: <cfg:value> |
| sampler | COMBO | The final sampler name. Tags: <sampler:name>, <sampler_name:name> |
| denoise | FLOAT | The final denoise value. Tag: <denoise:value> |
| start_step | INT | The final start_step for KSampler. Tags: <start_step:value>, <start:value>, <start_at_step:value> |
| end_step | INT | The final end_step for KSampler. Tags: <end_step:value>, <end:value>, <end_at_step:value> |
| positive | STRING | The input string with all recognized property tags removed. Wildcard content is included in this string. (Positive Prompt) |
| negative | STRING | The negative prompt string extracted from <neg:value> or <negative:value> tags. |
| other_tags | STRING | A string containing any tags that were not recognized by the parser. |
| resolved_string | STRING | The input string with wildcards resolved but ALL tags still present. |
| width | INT | The final image width. Tags: <width:value>, <resolution:WxH>, <res:WxH> |
| height | INT | The final image height. Tags: <height:value>, <resolution:WxH>, <res:WxH> |