
Extract Audio
- 32 installs
- 269 repo stars
- Updated June 11, 2026
- gupsammy/claudest
Strip or export soundtrack from video files with ffmpeg/ffprobe format rules instead of guessing codec flags.
About
extract-audio is an agent skill that turns natural-language requests like “get the mp3” or “strip audio from video” into a repeatable ffmpeg workflow. Solo builders shipping courses, podcasts, or short-form content install it when they need dependable audio exports without memorizing codec tables. The skill opens with a format decision tree—music archive vs voice podcast vs DAW editing—then walks through probing streams with ffprobe and applying the matching ffmpeg flags. It sits in the build phase as a CLI integration pattern: the agent runs constrained Bash, interprets stream metadata, and can ask clarifying questions when multiple audio tracks exist. Compared to one-off chat answers, the procedural structure reduces wrong-bitrate exports and accidental re-encodes when copy would suffice.
- Format decision tree maps use cases to FLAC, MP3 VBR/CBR, AAC, WAV, or stream copy
- ffprobe JSON probe step lists audio streams before choosing encode flags
- Explicit Bash allowlist for ffprobe and ffmpeg only plus AskUserQuestion for ambiguous inputs
- Re-encode vs copy guidance avoids unnecessary quality loss when source already matches target
Extract Audio by the numbers
- 32 all-time installs (skills.sh)
- Ranked #343 of 550 CLI & Terminal skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/gupsammy/claudest --skill extract-audioAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 32 |
|---|---|
| repo stars | ★ 269 |
| Security audit | 3 / 3 scanners passed |
| Last updated | June 11, 2026 |
| Repository | gupsammy/claudest ↗ |
What it does
Strip or export soundtrack from video files with ffmpeg/ffprobe format rules instead of guessing codec flags.
Files
Format Decision Tree
| User wants | Format | Flags | Why |
|---|---|---|---|
| Music, archive quality | FLAC | -c:a flac | Lossless, no quality loss |
| Music, small + transparent | MP3 VBR | -c:a libmp3lame -q:a 0 | ~200kbps avg, perceptually lossless |
| Podcast / voice | MP3 128k CBR | -c:a libmp3lame -b:a 128k | Sufficient for speech, universally compatible |
| Mobile / streaming | AAC 192k | -c:a aac -b:a 192k | Better than MP3 at equivalent bitrate |
| DAW / editing | WAV | -c:a pcm_s16le -ar 44100 | No encoding loss, widest DAW support |
| Source already target format | Copy | -c:a copy | No re-encode, instant, lossless |
Process
1. Probe audio streams
ffprobe -v quiet -print_format json -show_streams "$INPUT" | \
python3 -c "
import json, sys
streams = [s for s in json.load(sys.stdin)['streams'] if s['codec_type']=='audio']
for i, s in enumerate(streams):
print(f'Stream {i}: {s[\"codec_name\"]} {s.get(\"bit_rate\",\"?\")} bps {s.get(\"channel_layout\",\"?\")}')
"2. Determine format
Apply the decision tree above if the user didn't specify. If the source audio codec already matches the target, use -c:a copy to avoid transcoding.
If multiple audio streams exist, ask the user which to extract — or use -map 0:a to extract all. Once the user responds, apply -map 0:a:N (where N is the zero-based stream index they chose) or -map 0:a for all streams in the Phase 3 command.
3. Construct command
# General pattern (-vn drops the video stream entirely):
ffmpeg -i "$INPUT" -vn [FORMAT_FLAGS] "$OUTPUT"
# Examples:
ffmpeg -i video.mp4 -vn -c:a libmp3lame -q:a 0 audio.mp3 # MP3 VBR best quality
ffmpeg -i video.mp4 -vn -c:a libmp3lame -b:a 128k podcast.mp3 # MP3 128k CBR
ffmpeg -i video.mp4 -vn -c:a flac archive.flac # FLAC lossless
ffmpeg -i video.mp4 -vn -c:a aac -b:a 192k mobile.aac # AAC
ffmpeg -i video.mp4 -vn -c:a pcm_s16le -ar 44100 edit.wav # WAV for DAW
ffmpeg -i video.mp4 -vn -c:a copy original.m4a # Copy audio stream4. Confirm and run
Show: detected source codec and bitrate, chosen output format, output path. Wait for approval, then run.
Report output file size and duration: ffprobe -v quiet -show_format "$OUTPUT" | grep -E "duration|size"
Key Decisions
Preserve generation quality: avoid transcoding chains that degrade source fidelity. Each decision below is an application of this principle.
- Lossy-to-lossy warning: if the source is already lossy (MP3, AAC, OGG) and the user wants a different lossy format, warn them that re-encoding degrades quality. Recommend keeping the source format or using
-c:a copywhere container compatibility allows. - For files >1 hour, ask whether the user wants the full file or a specific range — trimming can be added with
-ssand-tobefore-vn. - M4A vs AAC: AAC is the codec, M4A is the container. Use
.m4aextension for Apple device compatibility; use.aacfor a raw stream.
Related skills
FAQ
Is Extract Audio safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.