Extract audio from videos and download audio-only content from 1500+ websites using yt-dlp. Converts to MP3, M4A, FLAC, WAV, or OPUS with embedded metadata and cover art. Use when the user wants to extract audio from videos, download podcasts, download music from YouTube/SoundCloud/Bandcamp, convert video to audio, or batch download playlist audio. Triggers on requests like 'extract audio', 'download as MP3', 'get the audio from this video', 'download this podcast', 'download music', 'convert to FLAC'.
Extract pure audio from videos and download audio content. Supports format conversion, metadata embedding, and batch playlist processing.
remotion executor (provides yt-dlp, ffmpeg, deno)| 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.
# 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"
| 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) |
# 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 + thumbnail as cover art
yt-dlp -x --audio-format mp3 \
--embed-metadata \
--embed-thumbnail \
"URL"
# 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"
# 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"
# 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"
| 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 |
# 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"
# 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"
# 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"
# 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"
# 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/..."
yt-dlp -x --audio-format mp3 \
--cookies-from-browser chrome \
"https://bilibili.com/video/BV..."
# Faster playlist downloads
yt-dlp -x --audio-format mp3 \
--concurrent-fragments 4 \
"PLAYLIST_URL"
# 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 video into separate audio files by chapter
yt-dlp -x --audio-format mp3 \
--split-chapters \
-o "chapter:%(section_title)s.%(ext)s" \
"URL"
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
| 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 |