← Engineering log
RobOS Audio Player AI Fix Metadata & Artwork Open-Source Media Skill MusicBrainz & FFmpeg

RobOS Audio Player: AI Fix Metadata & Artwork with Open-Source Media Probing, MusicBrainz CC0, and FFmpeg

RobOS Audio Player (packages/audio-player) now includes ✦ AI Fix Metadata & Artwork, built on the shared <robos-agent-selector> and <robos-ai-textarea> components and backed by the new fix-media-metadata agent skill. It inspects local and cloud audio/video containers (.mp3, .flac, .m4a, .ogg, .opus, .wav, .mkv, .webm), sidecar files (.cue, .lrc, .nfo), and strictly legal open-data APIs (MusicBrainz WS/2 CC0, Cover Art Archive, and LRCLIB) to repair messy titles, resolve canonical artists/albums/composers/years, extract or synthesize cover art, and optionally write lossless tags back to disk via ffmpeg.

RobOS Audio Player showing the enriched Video Game Music album grid with extracted and open-source generated cover art
RobOS Audio Player after running ✦ AI Fix Metadata on a 12-track Google Drive video game music folder: what started as 1 generic folder album and 6 unknown/uploader artists was automatically organized into 11 canonical game soundtrack albums, 12 artists, 9 composers, 4 decades, and 100% cover art.

Reusable RobOS UI components and the fix-media-metadata skill. Rather than inventing custom prompt controls, AI Fix Metadata embeds the standard <robos-agent-selector> and <robos-ai-textarea> (packages/audio-player/src/AiFixMetadata.jsx) with /skills command browsing and @mention file typeahead wired to packages/robos-lib/skill-catalog.js. The textarea opens pre-populated with @skill(robos:fix-media-metadata) (plugins/robos/skills/fix-media-metadata/SKILL.md), giving your chosen coding agent (AGY, Claude Code, Codex, Gemini CLI, or GitHub Copilot) full domain instructions on container tag layouts, scene/ripper filename noise removal, open-data cross-referencing, and cover art selection.

AI Fix Metadata modal in RobOS Audio Player with robos-agent-selector and robos-ai-textarea pre-populated with @skill(robos:fix-media-metadata)
The ✦ AI Fix Metadata & Artwork modal reusing <robos-agent-selector> and <robos-ai-textarea> with @skill(robos:fix-media-metadata).
Enriched Songs table in RobOS Audio Player showing canonical titles, composers, albums, years, and Video Game Music genres
The enriched Songs view with cleaned titles, canonical soundtrack albums, release years, and genres.

100% open-source, legal media probing and artwork pipeline. For every track in the selected scope (selected rows, active folder, tracks missing metadata/art, or a library batch), packages/audio-player/lib/ai-metadata.js runs a multi-stage open-source pipeline: it parses container tags with MIT-licensed music-metadata, probes stream/container headers and attached pictures with ffprobe, inspects sibling .cue, .lrc, and .nfo sidecars, and queries the CC0 MusicBrainz WS/2 API and LRCLIB. For tracks missing cover art, it extracts embedded APIC / METADATA_BLOCK_PICTURE / covr streams or representative video frames via ffmpeg, checks folder images (cover.jpg, folder.png), downloads official sleeves from the Cover Art Archive, or synthesizes an open-source FFmpeg waveform / SVG album sleeve. Every proposed change is presented as an interactive before→after diff card so you can review and selectively apply updates to the library index, playlists, and (optionally) directly into local media files via lossless ffmpeg -c copy stream muxing.

# Run the open-source media metadata & FFmpeg tag-writing unit tests node --test packages/audio-player/lib/*.test.js # Trigger AI Fix Metadata on the running Audio Player via DOM Snapshot IPC (port 19196) node packages/robos-lib/snapshot-cli.js audio-player --click 'button#btn-library-ai-fix-metadata' node packages/robos-lib/snapshot-cli.js audio-player --click 'button#btn-ai-fix-metadata-run' node packages/robos-lib/snapshot-cli.js audio-player --click 'button#btn-ai-fix-metadata-apply'