Nodes/AI Act Transparency Node/MP3 Tag Uploader / Loader (v5)
ComfyUI Node

MP3 Tag Uploader / Loader (v5)

The 'Uploader' that's really a tag reader — pull author, title & lyrics out of an MP3

By Mikerhinos·Created 2 months ago·Updated about a month ago· 0
MP3 Tag Uploader / Loader (v5)
  • audio
  • author
  • lyrics
  • title
  • filename_safe
audio_file_name

The name is a slight lie: there's no upload to any server here. MP3 Tag Uploader / Loader (v5) is a local tag reader that opens an MP3 on your disk and hands you its author, title, and lyrics as plain strings your workflow can use. It ships in the ComfyUI_AI_Act_50 pack (yes, the EU AI Act one), where it plays sidekick to UniversalAIActSaver: the saver stamps that metadata into an MP3, and this node reads it back out. Think of it as the "check what's inside the file" half of a round-trip.

What it's for

Say you've generated an audio clip - TTS narration, a song, a voice render - and saved it as an MP3. The file now carries tags (who the "artist" is, the title, maybe lyrics) that live inside the file, not in your graph. If you want that info to flow onward - into a filename, a text display, or the author/title/lyrics fields of UniversalAIActSaver so the next save reuses it - this node is the extractor.

It's a small tool with a small job, and it does it without calling any API or needing a key. Everything runs locally.

How it works

Under the hood it leans on mutagen, the standard Python library for audio tag wrangling. It reads artist and title via EasyID3, then digs into the ID3 USLT frame for lyrics, falling back to a COMM comment frame if there's no lyric frame. Given how the pack's own saver writes lyrics (as a USLT frame), files it produces read straight back.

To find the file it does a quick sweep of ComfyUI's input/, output/, and temp/ folders plus the working directory, matching the name you type. Wire an AUDIO tensor in instead and it'll try to lift the file path from the tensor, which is the clean path if you're going straight from a save node.

There's also a front-end touch: the extension adds a 📁 Browse & Load MP3 button right on the node. It opens your OS file picker, uploads the chosen file into ComfyUI's input/ folder, and fills in the audio_file_name box for you. That's the "uploader" part - and the part people expect to be a web upload, when it's really just "copy my file into ComfyUI."

The inputs and outputs that matter

Just two inputs, both optional:

  • audio_file_name - a STRING. The MP3's name or path. The browse button sets this for you.
  • audio - an AUDIO tensor, if you're feeding from another node rather than a file on disk.

Four outputs, all STRING:

  • author, title, lyrics - the extracted tags. Missing tags come back as Inconnu ("unknown") and empty lyrics, so don't be surprised by French words if the file has no metadata.
  • filename_safe - the first four words of the title, scrubbed into a filename-friendly string. This is the output you'd feed into a save node's filename field so your files get named after their content.

Installing it

It's a two-node pack, so install is standard for both:

cd ComfyUI/custom_nodes
git clone https://github.com/Mikerhinos/ComfyUI_AI_Act_50

Restart ComfyUI. Easier: open ComfyUI Manager, search for "AI Act 50", and let it handle the clone and the Python dependencies. The pack's requirements.txt lists mutagen, torchaudio, imageio-ffmpeg, and friends; for this reader node, mutagen is the load-bearing one.

Where people get burned

  • ERREUR: Dépendance manquante - mutagen isn't installed. In the ComfyUI environment run pip install mutagen (Manager usually does this automatically) and restart.
  • Fichier introuvable - the file isn't in any of the searched folders. Put the MP3 in input/, or just use the browse button, which uploads it there.
  • "Unknown" author / empty lyrics - the MP3 genuinely has no ID3 tags. Files your own saver wrote will have them; random internet MP3s often won't.

One last thing worth knowing: this is a niche, low-traffic node from a solo dev, so don't expect a huge support community behind it. For reading tags back out of files the pack itself writes, it works exactly as intended.

Categoryaudio/tags

Inputs (2)

NameTypeDefaultDescription
audio_file_nameoptSTRING
audiooptAUDIO

Outputs (4)

NameTypeDescription
authorSTRING
lyricsSTRING
titleSTRING
filename_safeSTRING