ComfyUI Node

MetaMan Extract Components

Turn any image into a prompt, seed, and sampler you can reuse

By MatthewClayHarrison·Created about a year ago·Updated about a year ago· 2
MetaMan Extract Components
    • positive_prompt
    • negative_prompt
    • steps
    • cfg_scale
    • sampler
    • scheduler
    • seed
    • width
    • height
    • model_name
    • vae_name
    • loras
    • embeddings
    • denoising_strength
    metadata_json

    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_real field over the raw model_name when 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_prompt and negative_prompt → the two CLIPTextEncode nodes.
    • steps, cfg_scale, seed, sampler, scheduler, denoising_strengthKSampler (and KSamplerAdvanced if you're doing two-pass work).
    • width, heightEmptyLatentImage.
    • 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 sampler output comes back like DPM++ 2M Karras, which is not a valid value in KSampler's dropdown - ComfyUI wants dpmpp_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. loras and embeddings won't connect cleanly to a LoraLoader (which wants a concrete model-name string). Read them, load the files manually, move on.
    • It doesn't load models. model_name is 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.

    CategoryMetaMan

    Inputs (1)

    NameTypeDefaultDescription
    metadata_jsonSTRING

    Outputs (14)

    NameTypeDescription
    positive_promptSTRING
    negative_promptSTRING
    stepsINT
    cfg_scaleFLOAT
    samplerSTRING
    schedulerSTRING
    seedINT
    widthINT
    heightINT
    model_nameSTRING
    vae_nameSTRING
    loras*
    embeddings*
    denoising_strengthFLOAT