Nodes/ComfyUI-CustomNodePacks/Magnific Metadata (unpack)
ComfyUI Node

Magnific Metadata (unpack)

Find out which model actually made that image

By Code2CollapseΒ·Created 8 months agoΒ·Updated a day agoΒ· 58
Magnific Metadata (unpack)
    • model
    • prompt
    • seed
    • creation_identifier
    • tool
    • url
    • json
    β—„metadataβ€”β–Ί
    β—„index0β–Ί

    Every Magnific node in this pack - image, video, music, retouch, skin enhancer, background removal, upscale, voiceover - hands back a metadata string alongside the media. It's JSON: the model, the prompt, the seed, the size or duration, the creation date, and a link to the creation on magnific.com. One entry per result, in batch order.

    This node turns that blob into individual sockets. Feed metadata in, get model, prompt, seed, creation_identifier, tool, url and the raw json back out.

    It sounds like plumbing, and it mostly is - but it fixes a real problem. You asked for eight images on auto model selection, you liked number six, and you have no idea what made it. Here's the answer.

    What you set

    Two inputs, both required. metadata wants the metadata output of a Magnific generation or edit node. index picks which result in a batch to read - 0 to 63, and it clamps to the last entry rather than erroring, so asking for index 7 on a batch of 4 gives you entry 4. That clamp is friendly and also means an off-by-one won't announce itself; if the model name looks wrong for the image you're looking at, check your index before you check the JSON.

    What you do with it

    The obvious move is provenance: wire model into the filename_prefix of a Save Image node and every file that comes out names the model that made it. That habit pays off later, because ComfyUI re-encodes what a node returns and the write-out is a new PNG with your graph in its text chunks - the Magnific metadata does not ride along inside the file. The node values are the record, and a saved workflow keeps them. If you want the record to survive outside ComfyUI, put it in the filename or write the json somewhere deliberately.

    The second move is reproducibility. prompt and seed as sockets mean you can feed them back into another generation node, or into a text node, without copying text out of a JSON blob by hand. Just remember what the generation tooltips say: seeds only reproduce on models that honour them, so a seed you pulled out of metadata is a hint, not a guarantee.

    url is the link back to the creation on magnific.com - handy for a notes node, or for grabbing the version in the browser when you want the web app's own controls.

    Install

    cd ComfyUI/custom_nodes
    git clone https://github.com/Code2Collapse/ComfyUI-CustomNodePacks.git
    

    Or "CustomNodePacks" in ComfyUI Manager, then restart. The Magnific nodes are ported into this pack from Magnific's vendor pack magnific-comfyui 0.7.0, which is why one install covers the whole family. Don't install the vendor zip as well. This particular node needs no models, no sign-in and no network - it's string parsing, so it'll happily run on a metadata string you saved weeks ago.

    The honest caveat

    Metadata is only as good as what the service reports. auto model selection means the model field says whatever Magnific actually used, which is useful - but "prompt" is the prompt you sent, not a reconstruction of the model's internal conditioning, and if you added Library references their @name tokens may or may not appear in it depending on whether you typed them or the node appended them.

    So treat the unpack as a receipt, not a recipe. It tells you what happened. Recreating exactly the same image is a different job.

    Category🐺 C2C/🧰 Core/Magnific

    Inputs (2)

    NameTypeDefaultDescription
    metadataSTRINGThe metadata output of a Magnific generation or edit node.
    indexINT00–63Which result of a batch to read; clamped to the last one.

    Outputs (7)

    NameTypeDescription
    modelSTRINGβ€”
    promptSTRINGβ€”
    seedINTβ€”
    creation_identifierSTRINGβ€”
    toolSTRINGβ€”
    urlSTRINGβ€”
    jsonSTRINGβ€”