MetaMan Extract Components
Turn any image into a prompt, seed, and sampler you can reuse
- positive_prompt
- negative_prompt
- steps
- cfg_scale
- sampler
- scheduler
- seed
- width
- height
- model_name
- vae_name
- loras
- embeddings
- denoising_strength
The middle child of the MetaMan pack, and honestly the one you'll reach for most. MetaManLoadImage hands you a big JSON blob full of someone's generation settings. MetaManExtractComponents takes that blob and cracks it open into individual typed outputs - the prompt, the seed, the steps, the CFG - so you can wire a stranger's recipe straight into your own KSampler.
This is the node that makes "steal the settings from any image" a five-minute job instead of a squinting contest over a parameter string.
What it's for
Every workflow starts the same way: you want to reproduce or riff on something. In ComfyUI's golden era, sharing an image meant sharing the pipeline - the whole graph lives in the PNG metadata (the "workflow included" culture is real). This node is how you go the other direction: image in, individual settings out, ready to plug into CLIPTextEncode, KSampler, and EmptyLatentImage.
How it works
It's a pure parser - no image processing at all. Feed it a JSON string and it reads the fields, fills in sensible defaults where something's missing, and returns fourteen values. Two details are worth knowing:
- De-obfuscation. Tensor.AI renames models to junk strings when it exports. The node prefers a
model_name_realfield over the rawmodel_namewhen it's present, which is a genuinely thoughtful touch for a pack this size. - LoRA simplification. LoRAs come out as a list of
{real_name, weight}pairs - the info you actually need, without the hash noise.
If the metadata is empty or unparseable it doesn't error; it hands you defaults: 20 steps, 7.0 CFG, euler, seed -1, 512×512. Fine when a setting was never recorded, slightly dangerous when you forget it did that and wonder why everything regenerates as a 512² blur.
Inputs and outputs that matter
One input: metadata_json (STRING). It's forceInput - there's no text box, you must wire it. Feed it from MetaManLoadImage's string output or any other JSON source.
The outputs, in the order that matters:
positive_promptandnegative_prompt→ the twoCLIPTextEncodenodes.steps,cfg_scale,seed,sampler,scheduler,denoising_strength→KSampler(andKSamplerAdvancedif you're doing two-pass work).width,height→EmptyLatentImage.model_name,vae_name→ informational; you still pick the actual checkpoint yourself.loras,embeddings→ wildcard (*) types.
The honest caveats
- Sampler names are A1111-isms. The
sampleroutput comes back likeDPM++ 2M Karras, which is not a valid value in KSampler's dropdown - ComfyUI wantsdpmpp_2m+karras. Treat the extracted strings as a hint, not a wire-in-ready value, and pick the matching entries yourself. - The wildcard outputs are mostly for reading.
lorasandembeddingswon't connect cleanly to aLoraLoader(which wants a concrete model-name string). Read them, load the files manually, move on. - It doesn't load models.
model_nameis just a string; you still drag the checkpoint into your loader. The "recreate this image" promise is you, wiring these values up.
Installing and wiring
Same story as the rest of the pack: ComfyUI Manager (search "MetaMan") or
cd ComfyUI/custom_nodes
git clone https://github.com/MatthewClayHarrison/ComfyUI-MetaMan
then restart. No model downloads, no heavy dependencies - the parser is pure Python on top of what ComfyUI already ships. One heads-up: the README describes a "MetaMan Universal" mega-node that never made it into the code. What's real is this node, MetaManLoadImage, and MetaManEmbedAndSave. Use those and you're on solid ground.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| metadata_json | STRING | — |
Outputs (14)
| Name | Type | Description |
|---|---|---|
| positive_prompt | STRING | — |
| negative_prompt | STRING | — |
| steps | INT | — |
| cfg_scale | FLOAT | — |
| sampler | STRING | — |
| scheduler | STRING | — |
| seed | INT | — |
| width | INT | — |
| height | INT | — |
| model_name | STRING | — |
| vae_name | STRING | — |
| loras | * | — |
| embeddings | * | — |
| denoising_strength | FLOAT | — |