Nodes/GenAsset/Save Metadata Patch To GenAsset
ComfyUI Node

Save Metadata Patch To GenAsset

Save Metadata Patch To GenAsset — fix the record without re-rendering

By steliosot·Created 4 months ago·Updated 3 months ago· 1
Save Metadata Patch To GenAsset
    • version_id
    • metadata_json
    • status_json
    base_urlhttps://genasset.xyz
    tokenComfyUI/user/genasset.json
    version_id
    metadata_patch_json{ "approval": "approved" }

    Here's a reality of versioned generations: the recipe is right but the record is wrong. The image is perfect, yet the version says nothing about whether it was approved, what the client's feedback was, or which campaign it belongs to. You don't want to re-upload the image to fix that - you just want to update the metadata. Save Metadata Patch To GenAsset is precisely that: it merges a JSON patch into an existing version's metadata without touching the image.

    In image-generation workflows, metadata is the whole reproducibility story - the workflow, seed, and settings that make a version re-runnable live in there. This node treats that metadata as a living document: you can annotate, approve, tag, or correct it after the fact, turning a plain save into an organized one.

    How it works

    You give it a version_id and a metadata_patch_json - a JSON object. The node merges that object into the version's existing metadata on the server (a deep merge, not a full overwrite), so fields you don't mention are untouched. The default value in the widget is {"approval": "approved"}, which tells you exactly what the author had in mind: stamping an approval status onto a version after the fact.

    It's an output node, so it displays a summary in the UI and returns the updated metadata_json so you can see the merge result, plus version_id and status_json. Nothing about this node is destructive - the image and all existing metadata fields stay as they were.

    Inputs and outputs that matter

    Four required inputs: base_url, token, version_id, and metadata_patch_json. The last two are the whole show. version_id is the version whose record you're patching. metadata_patch_json must be valid JSON (a bare string like approved won't parse as a patch - it needs to be an object). Past the default, you might patch things like:

    {
      "approval": "approved",
      "campaign": "summer-2026",
      "reviewer": "alex"
    }
    

    Outputs: version_id (echo), metadata_json (the merged result), and status_json. Wire metadata_json into a display node if you want to verify the merge.

    Installation

    Part of the steliosot/ComfyUI-GenAsset pack. ComfyUI Manager → search GenAsset → install, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/steliosot/ComfyUI-GenAsset.git
    

    Restart after. No extra dependencies; needs a workspace token (widget, GENASSET_WORKSPACE_TOKEN, or ComfyUI/user/genasset.json).

    Common issues

    • Invalid JSON error - metadata_patch_json must parse as a JSON object. A trailing comma, single quotes, or a plain string all fail. Test it in a JSON checker first if you're unsure.
    • The patch didn't show up in metadata_json - check you used an object, not an array, and that the version id is correct. A patch to the wrong version obviously merges into the wrong record.
    • You want to remove a field, not add one - this node merges; it doesn't delete keys. For removing something, you'd need to re-save or handle it on the GenAsset side. It's a patch, not a full editor.

    Use this node as your annotation layer. Every version can carry approval state, review comments, or campaign tags long after the render, without a single wasted re-generation.

    Categorygenasset

    Inputs (4)

    NameTypeDefaultDescription
    base_urlSTRINGhttps://genasset.xyz
    tokenSTRINGComfyUI/user/genasset.json
    version_idSTRINGVersion id to patch.
    metadata_patch_jsonSTRING{ "approval": "approved" }

    Outputs (3)

    NameTypeDescription
    version_idSTRING
    metadata_jsonSTRING
    status_jsonSTRING