Files
av-club/tasks/convert-audio/TASK.md
T
pastilhasandClaude Opus 5 7d57deeb3f three tasks on the right-click menu, and a skill for the agents
Convert Audio, Extract Audio, Convert Video. ported from the versions that ran on
alpha for months, which is where the rules come from — they are not invented:

  skip a file already in the target format (re-encoding mp3 to mp3 loses quality
    for nothing)
  never overwrite an existing output (the file there may be one somebody made)
  delete the source only AFTER the output exists, and only when asked

`inline: ask`, so the modal offers running it now or as a job — a few files inline,
a discography as a job. that was the affordance the old ones had and the reason the
choice exists.

THIN CLIENTS. every one calls /v1/ffmpeg; none of them runs ffmpeg. what to tell
ffmpeg lives once in av-club rather than three times in bash, which is the whole
point of the plugin existing. the three files nevertheless repeat their walk and
their reporting, because the task runner materialises ONLY index.ts and a script
task cannot import a sibling — that duplication is the platform's shape, not a
choice, and each file says so.

CONVERT VIDEO PROBES BEFORE IT DECIDES. if the codecs already fit the container it
asks for `c:v copy, c:a copy` — a remux, lossless, roughly a hundred times faster
than re-encoding. guessing from the extension is how a "fast remux" silently
re-encodes, since plenty of .avi holds h264. that needed a path probe, so
/v1/probe?path= is added beside it, same containment, read-only.

EXTRACT AUDIO HAS NO delete_source, deliberately. extracting is additive; offering
to delete would be offering to trade a video for its soundtrack. a video with no
audio track is reported as a skip rather than a failure — in a folder of screen
recordings that is most of them.

what is NOT here: track selection, subtitle handling, downmixing, per-file
percentage. those belong with jellyfin rather than with basic conversion and are
left where they are rather than half-ported. convert-video's TASK.md says so.

VERIFIED by running each task the way the runner does — temp dir, env vars, argv:
flac→mp3 on a folder; the re-run skipping both files for the two different reasons;
extraction skipping the silent clip and converting the other; mp4→mkv copying h264
and aac through untouched; mp4→webm re-encoding to vp9/opus; delete_source removing
a source after success and LEAVING it after a failure.

the skill tells an agent to use the endpoint and never to shell out to ffmpeg —
everything that makes this safe is on the far side of it — and to offer the
right-click tasks first when somebody is at a screen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-29 02:17:57 +01:00

1.5 KiB

name, description, category, version, mode, language, inline, args, inputs, trigger
name description category version mode language inline args inputs trigger
Convert Audio Convert audio files between formats through av-club, preserving tags. Works on one file or a whole folder. Audio 1 script typescript ask
file_path
file_path target_format delete_source
type description
string An audio file, or a folder to convert recursively.
type default options description
string mp3
mp3
m4a
flac
wav
ogg
opus
Format to convert to.
type default description
boolean false Delete each source file once its conversion has been written.
type extensions
file
mp3
flac
wav
ogg
oga
wma
aac
m4a
opus
aiff
aif
ape
wv
alac
dsf
dff
type
directory

Convert Audio

Writes the result beside the original — song.flac becomes song.mp3 in the same folder. The original is never modified, and is only deleted if you tick the box.

Quality is chosen for the format rather than for size: 320k for mp3, 256k for m4a, 192k for opus, q6 for ogg, and lossless for flac and wav. Tags are carried across.

Two things it will not do, both deliberate:

  • A file already in the target format is skipped. Re-encoding mp3 to mp3 loses quality for nothing.
  • An existing output is never overwritten. If song.mp3 is already there, the file is skipped and said so — you may have edited that one.

The work happens in the av-club plugin, so the conversion rules live in one place rather than in this script. Run it inline for a few files, or as a job for a discography.