Universal AI Act Saver (Image PNG / Audio MP3 / Vidéo MP4)
A save node that stamps 'AI generated' on PNG, MP3, and MP4 — the EU AI Act in one node
- images
- audio
- saved_path
ComfyUI's default SaveImage will happily write your PNG and forget who made it. Universal AI Act Saver is the opposite: it's a single save node for images, audio, and video that bakes an "AI generated" disclosure straight into the file's metadata - author, title, and a label - which is exactly the transparency Article 50 of the EU AI Act is after. It's the headliner of the Mikerhinos/ComfyUI_AI_Act_50 pack, and the reason the pack exists.
A quick reality check before the sales pitch: Article 50 is a disclosure duty, not a ban - from 2 August 2026, providers of generative systems have to mark synthetic output in a machine-readable way, and the FOSS exemption doesn't cover it. What this node writes is metadata, which is one lightweight way to do that. It's a label, not a tamper-proof C2PA signature, and anyone can strip it. Fine for honest provenance; not a legal shield.
How it works
It's an output node that ends your graph, and it picks its format for you. export_mode defaults to Auto-détection, which reads the inputs: audio alone → MP3, images + audio → MP4 (video with a soundtrack), images alone → PNG. Or force it with the explicit Image PNG / Vidéo MP4 / Audio MP3 choices.
What lands in the file varies by format:
- PNG - the image plus PNG
tEXttext chunks (Author,Artist,Title,Comment= your label + "EU AI Act Art. 50") and a few EXIF fields. Numbered filenames. - MP3 - encodes through torchaudio → WAV → ffmpeg at 192 kbps, writing
title,artist, and (if you supplylyrics) an ID3 USLT + comment frame. - MP4 - writes H.264 frames at your
fps, muxes the audio in as AAC when you've got some, and stampsartist/title/comment/description.
It also ships a front-end preview: after a run, the MP4 or MP3 plays back right on the node, so you can check before you go hunting in the filesystem.
The inputs that matter
Five required, and you'll actually set most of them:
filename- defaultAI_Act_OutputNNNN. Supports%date%and%date:yyyy-MM-dd%tokens plus anNNNNcounter that increments so you don't overwrite.author- defaultAI Generator. Goes into the file's metadata; make it yours.title- defaultAI Generated Media.ai_label- the disclosure text itself. Default isGénéré par IA- French, because the author is. Change it to "AI generated" (or whatever) unless you want French provenance.save_path- where files land. Heads-up: it defaults to your~/Downloadsfolder if one exists, not ComfyUI'soutput/. Easy to miss, and the cause of most "where did my file go" confusion.
Then the optional wiring: images (IMAGE), audio (AUDIO), fps (default 24), and lyrics (multiline string, embedded in MP3/MP4). The one output, saved_path, returns the full path(s) of what you saved.
Installing it
Standard two-node pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/Mikerhinos/ComfyUI_AI_Act_50
Restart, or search "AI Act 50" in ComfyUI Manager and let it do the work. The heavier dependencies to know about: torchaudio (for MP3), mutagen (tag writing), and an ffmpeg binary - imageio-ffmpeg bundles one, and the code falls back to a system ffmpeg if it's missing.
Common issues
FFmpeg introuvableon MP3/MP4 - no ffmpeg anywhere. Installimageio-ffmpeg(pip install imageio-ffmpeg) or add system ffmpeg, then restart.- MP3 files overwrite silently. The MP3 branch deliberately drops the counter and uses just the first four words of your filename - a recent change, per the repo history. Save twice with the same name and the second run replaces the first. PNG and MP4 increment; MP3 doesn't.
- The French defaults -
Généré par IA,Auto-détection,Vidéo MP4. Harmless, but if you don't want French strings in your metadata, change the label once. - No workflow chunk. This node writes its disclosure metadata but not the standard ComfyUI
workflow/prompttext chunks thatSaveImageembeds. If you also want the graph-in-the-PNG, you'll want a second save node alongside it.
Small, honest pack from a solo dev, and for what it does - provenance metadata on three formats with zero external services - it's genuinely handy.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| filename | STRING | AI_Act_OutputNNNN | — |
| author | STRING | AI Generator | — |
| title | STRING | AI Generated Media | — |
| ai_label | STRING | Généré par IA | — |
| save_path | STRING | /tmp/ComfyUI/output | — |
| export_mode | COMBO | Auto-détection | 4 options: Auto-détection, Image PNG, Vidéo MP4, Audio MP3 |
| imagesopt | IMAGE | — | |
| audioopt | AUDIO | — | |
| fpsopt | FLOAT | 241–120 | — |
| lyricsopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| saved_path | STRING | — |