audio-extractor
Originally frommoosegoose0701/skill-compose
SKILL.md
Audio Extractor
Extract pure audio from videos and download audio content. Supports format conversion, metadata embedding, and batch playlist processing.
Prerequisites
- Executor: Must use the
remotionexecutor (provides yt-dlp, ffmpeg, deno) - JS Runtime: deno is required for YouTube extraction (yt-dlp 2025+ default). The remotion executor includes deno.
- ffmpeg: Required for audio format conversion and metadata embedding. Included in remotion executor.
Limitations
| Issue | Detail |
|---|---|
| YouTube rate limiting | Server IPs are frequently rate-limited by YouTube. If you get "This content isn't available, try again later", wait ~1 hour or ask the user to upload the audio file directly. |
| YouTube JS runtime | yt-dlp requires deno for YouTube. Without it: No supported JavaScript runtime could be found. |
| Geo-restrictions | Some content may be region-locked. Use --geo-bypass flag. |
| Authentication | Some platforms require cookies. Use --cookies-from-browser or --cookies cookies.txt. |
Fallback strategy: If YouTube download fails, suggest the user upload the audio file directly or provide a direct audio URL.
Quick Start
# Extract audio (best quality, original format)
yt-dlp -x "URL"
# Extract as MP3
yt-dlp -x --audio-format mp3 "URL"
# MP3 with metadata and cover art
yt-dlp -x --audio-format mp3 --embed-metadata --embed-thumbnail "URL"
Audio Formats
Format Selection
| Format | Command | Use Case |
|---|---|---|
| MP3 | --audio-format mp3 |
Universal compatibility |
| M4A/AAC | --audio-format m4a |
Apple devices, good quality/size |
| FLAC | --audio-format flac |
Lossless, archival |
| WAV | --audio-format wav |
Uncompressed, editing |
| OPUS | --audio-format opus |
Best quality/size ratio |
| Vorbis | --audio-format vorbis |
Open source, OGG container |
| Best | --audio-format best |
Keep original (no conversion) |
Quality Control
# VBR quality (0=best, 10=worst)
yt-dlp -x --audio-format mp3 --audio-quality 0 "URL"
# Specific bitrate
yt-dlp -x --audio-format mp3 --audio-quality 320K "URL"
yt-dlp -x --audio-format mp3 --audio-quality 192K "URL"
# FLAC (lossless - quality setting ignored)
yt-dlp -x --audio-format flac "URL"
Metadata Embedding
Embed All Metadata
# Metadata + thumbnail as cover art
yt-dlp -x --audio-format mp3 \
--embed-metadata \
--embed-thumbnail \
"URL"
What Gets Embedded
- Title
- Artist/Uploader
- Album (playlist name if applicable)
- Track number (playlist index)
- Upload date
- Description
- Thumbnail as cover art
Custom Metadata
# Override artist
yt-dlp -x --audio-format mp3 \
--embed-metadata \
--parse-metadata "uploader:%(artist)s" \
"URL"
# Set album name
yt-dlp -x --audio-format mp3 \
--embed-metadata \
--parse-metadata "playlist:%(album)s" \
"URL"
Playlist/Batch Processing
Download Full Playlist as Audio
# Basic playlist extraction
yt-dlp -x --audio-format mp3 "PLAYLIST_URL"
# With numbering and organization
yt-dlp -x --audio-format mp3 \
--embed-metadata --embed-thumbnail \
-o "%(playlist)s/%(playlist_index)02d - %(title)s.%(ext)s" \
"PLAYLIST_URL"
# Skip already downloaded
yt-dlp -x --audio-format mp3 \
--download-archive downloaded.txt \
"PLAYLIST_URL"
Selective Download
# First 10 tracks
yt-dlp -x --audio-format mp3 -I 1:10 "PLAYLIST_URL"
# Specific tracks
yt-dlp -x --audio-format mp3 -I 1,5,10 "PLAYLIST_URL"
# Last 5 tracks
yt-dlp -x --audio-format mp3 -I -5: "PLAYLIST_URL"
Output Naming
Template Variables
| Variable | Description | Example |
|---|---|---|
%(title)s |
Track title | Song Name |
%(uploader)s |
Artist/Channel | Artist Name |
%(playlist)s |
Album/Playlist | My Playlist |
%(playlist_index)s |
Track number | 1 |
%(upload_date)s |
Release date | 20231215 |
%(ext)s |
Extension | mp3 |
Common Patterns
# Artist - Title
yt-dlp -x -o "%(uploader)s - %(title)s.%(ext)s" "URL"
# Album folder with track numbers
yt-dlp -x -o "%(playlist)s/%(playlist_index)02d - %(title)s.%(ext)s" "PLAYLIST_URL"
# Date-organized
yt-dlp -x -o "%(upload_date>%Y-%m)s/%(title)s.%(ext)s" "URL"
Platform-Specific
YouTube Music / YouTube
# Standard extraction
yt-dlp -x --audio-format mp3 --embed-metadata --embed-thumbnail "URL"
# For music videos, prefer audio stream
yt-dlp -f "bestaudio" -x --audio-format mp3 "URL"
SoundCloud
# Direct audio (often already MP3)
yt-dlp -x "https://soundcloud.com/artist/track"
# Playlist/album
yt-dlp -x --audio-format mp3 \
-o "%(uploader)s - %(album)s/%(playlist_index)02d - %(title)s.%(ext)s" \
"https://soundcloud.com/artist/sets/album"
Bandcamp
# Full album with metadata
yt-dlp -x --audio-format flac \
--embed-metadata --embed-thumbnail \
-o "%(album)s/%(track_number)02d - %(track)s.%(ext)s" \
"https://artist.bandcamp.com/album/name"
Podcasts
# Single episode
yt-dlp -x --audio-format mp3 --embed-metadata "EPISODE_URL"
# Full podcast feed (RSS)
yt-dlp -x --audio-format mp3 \
-o "%(playlist)s/%(upload_date)s - %(title)s.%(ext)s" \
--download-archive podcasts.txt \
"RSS_FEED_URL"
# Apple Podcasts
yt-dlp -x --audio-format mp3 \
--embed-metadata \
"https://podcasts.apple.com/..."
Bilibili
yt-dlp -x --audio-format mp3 \
--cookies-from-browser chrome \
"https://bilibili.com/video/BV..."
Advanced Options
Parallel Downloads
# Faster playlist downloads
yt-dlp -x --audio-format mp3 \
--concurrent-fragments 4 \
"PLAYLIST_URL"
Post-Processing
# Normalize audio volume
yt-dlp -x --audio-format mp3 \
--postprocessor-args "ffmpeg:-af loudnorm" \
"URL"
# Trim silence
yt-dlp -x --audio-format mp3 \
--postprocessor-args "ffmpeg:-af silenceremove=1:0:-50dB" \
"URL"
Split by Chapters
# Split video into separate audio files by chapter
yt-dlp -x --audio-format mp3 \
--split-chapters \
-o "chapter:%(section_title)s.%(ext)s" \
"URL"
Complete Examples
Extract audio from YouTube playlist as high-quality MP3:
yt-dlp -x --audio-format mp3 --audio-quality 0 \
--embed-metadata --embed-thumbnail \
-o "%(playlist)s/%(playlist_index)02d - %(title)s.%(ext)s" \
--download-archive downloaded.txt \
"https://youtube.com/playlist?list=..."
Download podcast episode:
yt-dlp -x --audio-format mp3 \
--embed-metadata \
-o "%(uploader)s - %(title)s.%(ext)s" \
"https://podcasts.apple.com/..."
Extract FLAC from Bandcamp album:
yt-dlp -x --audio-format flac \
--embed-metadata --embed-thumbnail \
-o "%(album)s/%(track_number)02d - %(track)s.%(ext)s" \
"https://artist.bandcamp.com/album/..."
Extract audio from local video file:
ffmpeg -i video.mp4 -vn -acodec libmp3lame -q:a 0 audio.mp3
Troubleshooting
| Issue | Solution |
|---|---|
| "ffmpeg not found" | Install ffmpeg: brew install ffmpeg / apt install ffmpeg |
| No cover art | Add --embed-thumbnail (requires ffmpeg) |
| Wrong metadata | Use --parse-metadata to remap fields |
| Poor quality | Use --audio-quality 0 or lossless format |
Weekly Installs
4
Repository
dp-archive/archiveGitHub Stars
1.1K
First Seen
7 days ago
Security Audits
Installed on
opencode4
gemini-cli4
claude-code4
github-copilot4
codex4
kimi-cli4