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

Set Audio Metadata

Label your clips so the bucket stops being anonymous

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

Here's the thing about a bucket full of audio: every clip is a UUID key, and UUIDs tell you nothing. Set Audio Metadata is how you attach the meaning - a description, tags, a source - to an audio asset's sidecar manifest, without re-encoding the audio or touching a single sample.

Inputs: manifest (BUCKET_MANIFEST, from any audio bucket node), plus optional description, tags (comma-separated), and source. Output: the updated manifest, written back to the bucket as <key>.json.

How it works

The empty-means-keep rule is the whole ergonomic: leave a field blank and it's left exactly as it is. Fill in description now, come back tomorrow and add tags, and you've never clobbered anything. Because the write happens on the manifest sidecar, the audio bytes themselves are untouched - lossless in the most literal sense.

That's the pattern the pack is built around: the manifest is the source of truth a database would otherwise provide, so a voiceover directory stays self-describing and an index can be rebuilt from the files at any time. Tags ride as comma-separated strings, matching what Batch Audio Metadata emits downstream.

When you'd reach for it

Any time you're building a reusable audio library: a TTS pass that generates a dozen takes, each annotated with the prompt or character; a dubbing pipeline that tags clips by language and scene; a curation step where a human (or an LLM) reviews and labels. In an API context, it's how a job reports "this is the clip for scene 7, line 3" - the tag becomes queryable by whatever consumes your bucket.

Install

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/audio. Deps: boto3 + python-dotenv; PyAV ships with ComfyUI.

Gotchas

The empty-keeps semantics mean you can't clear a field by emptying it - write a replacement string if you need to unset something. And this node only touches metadata; if your description shows up empty later, check that the manifest you wired in actually carried a key (a derived manifest still works - it gets persisted - but the bucket must be reachable to write). Standard S3 connectivity rules apply: endpoint, credentials, and S3_ADDRESSING_STYLE=path for RustFS/MinIO.

Categorybuckets/audio

Inputs (4)

NameTypeDefaultDescription
manifestBUCKET_MANIFESTManifest from an audio bucket node.
descriptionoptSTRINGEmpty = keep existing.
tagsoptSTRINGComma-separated tags. Empty = keep existing.
sourceoptSTRINGEmpty = keep existing.

Outputs (1)

NameTypeDescription
manifestBUCKET_MANIFESTThe updated manifest that was written.