Nodes/ComfyUI In-N-Out Bucket/Set Image Metadata
ComfyUI Node

Set Image Metadata

Annotate bucket assets without rewriting pixels

By littleowl·Created 3 months ago·Updated 3 months ago· 2
Set Image Metadata
  • manifest
  • manifest
description
tags
source

Every asset in this pack carries a sidecar manifest - a <key>.json sitting next to the image in the bucket - and by default those manifests are mostly empty except for the technical facts: dimensions, format, batch size, creation time. Set Image Metadata is how you give an asset a description, tags, and a source - without touching the pixels at all. The image bytes stay byte-identical; only the JSON sidecar changes.

Inputs: manifest (BUCKET_MANIFEST - from any image bucket node; its key decides what gets written), plus optional description (multiline), tags (comma-separated), and source. Output: the updated manifest, now persisted to the bucket.

How it works

The rule that makes it safe to use casually: empty field = keep the existing value. Fill in only what you want to change. So you can apply it incrementally - set the description on one run, come back later and tag it, add provenance after that - without stomping on earlier work.

Two details worth knowing:

  • It works even if no manifest is stored yet. The incoming manifest (possibly derived on the fly at load) gets persisted, and the system fields like dimensions and format were already reconstructed, so nothing's lost.
  • Editing metadata invalidates the load cache. The image loader's fingerprint includes the manifest's ETag, so after a Set Image Metadata write, an Input/Load node pointing at that key re-runs and surfaces the new metadata instead of serving a stale copy until restart. Nice touch.

Why you'd reach for it

Metadata is what turns a bucket into a searchable library instead of a pile of UUID-named objects. If you're building a pipeline where images get captioned or classified - a VLM tagging pass, a curation step, a client-project annotation - this is the write path. The source field is explicitly for provenance: a workflow id, a prompt reference, or the upstream key a derivative came from. And since Batch Image Metadata can read these fields back, you can build a workflow that tags an image, then a later workflow filters on those tags.

Install

Install the pack once via ComfyUI Manager (search In-N-Out Bucket) or:

cd ComfyUI/custom_nodes
git clone https://github.com/littleowl/ComfyUI_In-N-Out_Bucket.git
pip install -r ComfyUI_In-N-Out_Bucket/requirements.txt
cp ComfyUI_In-N-Out_Bucket/.env.example ComfyUI_In-N-Out_Bucket/.env

Restart, under buckets/image. Deps: boto3 + python-dotenv only.

Gotchas

The "empty = keep" semantics cut both ways: you can't clear a field by setting it to empty - you'd need to delete the manifest or write a non-empty replacement. Also remember this node only writes metadata; the pixels are whatever the Output node saved. If you edited an asset's manifest on one machine, the cache invalidation handles the load side, but the dropdown key list is still a load-time snapshot - refresh if a new asset should appear.

Categorybuckets/image

Inputs (4)

NameTypeDefaultDescription
manifestBUCKET_MANIFESTManifest from a bucket node. Its 'key' decides what gets written.
descriptionoptSTRINGSet the description. Empty = keep the existing value.
tagsoptSTRINGComma-separated tags. Empty = keep the existing value.
sourceoptSTRINGSet the source/provenance. Empty = keep the existing value.

Outputs (1)

NameTypeDescription
manifestBUCKET_MANIFESTThe updated manifest that was written to the bucket.