OpenParable
Skip to content
← Back to skills

Extract Audio

Documents
extract-audio

Extract Audio is an Agent Skill for documents published in the gupsammy/Claudest repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.

This skill should be used when the user asks to "extract audio", "get the mp3", "strip audio from video", "rip audio", "save audio from video", "convert to audio", "get the soundtrack", "pull the audio track", "save as mp3", "export audio", or "separate audio from video".

View on GitHub ↗
QUICK START

How to use this skill

Bring this guide into your coding agent with a prompt tailored to the tool you use.

  1. Open your project in Codex.
  2. Copy and paste the prompt below.
  3. Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/gupsammy/Claudest/blob/HEAD/plugins/claude-content/skills/extract-audio/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/extract-audio, but wait for my approval before writing files or running scripts.

Copying this prompt does not install or run the skill. Review third-party files before use.

Format Decision Tree

User wantsFormatFlagsWhy
Music, archive qualityFLAC-c:a flacLossless, no quality loss
Music, small + transparentMP3 VBR-c:a libmp3lame -q:a 0~200kbps avg, perceptually lossless
Podcast / voiceMP3 128k CBR-c:a libmp3lame -b:a 128kSufficient for speech, universally compatible
Mobile / streamingAAC 192k-c:a aac -b:a 192kBetter than MP3 at equivalent bitrate
DAW / editingWAV-c:a pcm_s16le -ar 44100No encoding loss, widest DAW support
Source already target formatCopy-c:a copyNo 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 stream

4. 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 copy where container compatibility allows.
  • For files >1 hour, ask whether the user wants the full file or a specific range — trimming can be added with -ss and -to before -vn.
  • M4A vs AAC: AAC is the codec, M4A is the container. Use .m4a extension for Apple device compatibility; use .aac for a raw stream.