Nymbo commited on
Commit
f34fff6
·
verified ·
1 Parent(s): 9aa0651

better music-downloader Skill, reduces context bloat by 60%

Browse files
Filesystem/Skills/music-downloader/SKILL.md CHANGED
@@ -1,299 +1,118 @@
1
  ---
2
  name: music-downloader
3
- description: This skill should be used when users need to download audio or music from online platforms like YouTube, SoundCloud, Spotify, or other streaming services. It provides yt-dlp and spotdl command templates for high-quality audio extraction, playlist downloads, metadata embedding, and multi-platform support.
4
  ---
5
 
6
  # Music Downloader
7
 
8
- ## Overview
9
 
10
- This skill enables downloading high-quality audio from various platforms (YouTube, SoundCloud, Spotify, etc.) using yt-dlp and spotdl. It provides command templates for single tracks, playlists, albums, and advanced features like metadata embedding, thumbnail extraction, and format conversion.
11
 
12
- If the user did not provide a specific link to a song or playlist, you must search the web using tools in your environment to find what the user is looking for.
 
 
 
13
 
14
- When using the `Web_Search` tool, set the Search Type to `videos` and prefer official YouTube links.
15
 
 
16
 
17
- ## When to Use This Skill
18
-
19
- Use this skill when users request:
20
- - Downloading audio/music from YouTube, SoundCloud, Spotify, or other platforms
21
- - Extracting audio from videos in MP3, Opus, or other formats
22
- - Downloading entire playlists or albums
23
- - High-quality audio with metadata and album art
24
- - Batch downloading multiple tracks
25
- - Converting video content to audio files
26
-
27
- ## Quick Start
28
-
29
- **Most Common Use Case - Download MP3 from YouTube:**
30
  ```bash
31
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s" "VIDEO_URL"
32
  ```
33
 
34
- **Download from Spotify:**
35
- ```bash
36
- spotdl --audio-quality 320k --embed-metadata --output "{artist}/{title}.{ext}" "SPOTIFY_TRACK_URL"
37
- ```
38
 
39
- **Note:** If you encounter issues, try downloading or updating yt-dlp via pip: `pip install --upgrade yt-dlp`
 
 
 
 
 
 
 
 
40
 
41
- ## General Commands
42
 
43
- ## List Available Formats
44
- ```bash
45
- yt-dlp -F "URL"
46
- ```
 
47
 
48
- ## Download MP3 at Max Quality
49
- ```bash
50
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --postprocessor-args "-b:a 320k" -o "%(title)s.%(ext)s" "https://www.youtube.com/watch?v=xYJki23aeTQ&ab_channel=OnlyRealHipHop49"
51
- ```
52
 
53
- ## Basic High-Quality MP3 Download
54
  ```bash
55
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s" "VIDEO_URL"
56
  ```
57
 
58
- ## Download Custom Bitrate
59
  ```bash
60
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --postprocessor-args "-b:a 192k" -o "%(title)s.%(ext)s" "VIDEO_URL"
61
  ```
62
 
63
- ## Download and add Metadata Tags
64
  ```bash
65
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-metadata -o "%(title)s.%(ext)s" "VIDEO_URL"
66
  ```
67
 
68
- ## Download Entire Playlist
69
  ```bash
70
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "%(playlist_title)s/%(title)s.%(ext)s" "PLAYLIST_URL"
71
  ```
72
 
73
- ## Download Playlist (Specific Range)
74
  ```bash
75
  yt-dlp --playlist-items 1-5 -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "%(playlist_title)s/%(title)s.%(ext)s" "PLAYLIST_URL"
76
  ```
77
 
78
- ## Download HQ from SoundCloud
79
- ```bash
80
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s" "SOUNDCLOUD_TRACK_URL"
81
-
82
- ```
83
-
84
- ## Embed Album Art Automatically
85
- ```bash
86
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --embed-thumbnail --audio-quality 0 -o "%(title)s.%(ext)s" "VIDEO_URL"
87
- ```
88
-
89
- ## Download Specific Formats
90
- *Opus instead of MP3*
91
- ```bash
92
- yt-dlp -f bestaudio --extract-audio --audio-format opus -o "%(title)s.%(ext)s" "VIDEO_URL"
93
- ```
94
-
95
- ## Skip Already Downloaded Files
96
- ```bash
97
- yt-dlp --download-archive "downloaded.txt" -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s" "VIDEO_URL"
98
- ```
99
-
100
- ## Download Multiple Individual Files
101
- ```bash
102
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --add-metadata --embed-thumbnail --write-description --postprocessor-args "-b:a 320k" -o "%(title)s.%(ext)s" "https://www.youtube.com/watch?v=xYJki23aeTQ&ab_channel=OnlyRealHipHop49" "https://www.youtube.com/watch?v=xKJaew2gMSo&ab_channel=OnlyRealHipHop49" "https://www.youtube.com/watch?v=zLJkO3RnWUk&ab_channel=OnlyRealHipHop49"
103
- ```
104
-
105
- ## Download and Automatically Split by Chapters
106
- ```bash
107
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --split-chapters -o "%(title)s.%(ext)s" "VIDEO_URL"
108
- ```
109
-
110
- ## Extract Only a Portion of a Video (by Time)
111
- ```bash
112
- yt-dlp -f bestvideo+bestaudio --external-downloader ffmpeg --external-downloader-args "ffmpeg_i:-ss 00:01:00 -to 00:05:00" -o "%(title)s.%(ext)s" "VIDEO_URL"
113
- ```
114
-
115
- ## Update Metadata of Existing Files
116
- ```bash
117
- yt-dlp --download-archive "downloaded.txt" --skip-download --embed-metadata --embed-thumbnail --write-description "VIDEO_URL"
118
- ```
119
-
120
- ## Auto-Rename Duplicate Files
121
  ```bash
122
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --force-overwrites -o "%(title)s.%(ext)s" "VIDEO_URL"
123
  ```
124
 
125
- ## Download from a URL List File
126
  ```bash
127
  yt-dlp -a "urls.txt" -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s"
128
  ```
129
 
130
- ## Download and Limit Download Speed
131
- ```bash
132
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --rate-limit 1M -o "%(title)s.%(ext)s" "VIDEO_URL"
133
- ```
134
-
135
- ## Download from Vimeo
136
- ```bash
137
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "Vimeo/%(uploader)s - %(title)s.%(ext)s" "VIMEO_VIDEO_URL"
138
- ```
139
-
140
- ## Download from Facebook
141
- ```bash
142
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "Facebook/%(uploader)s - %(title)s.%(ext)s" "FACEBOOK_VIDEO_URL"
143
- ```
144
-
145
- ## Download from Instagram
146
- ```bash
147
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "Instagram/%(uploader)s - %(title)s.%(ext)s" "INSTAGRAM_VIDEO_URL"
148
- ```
149
-
150
- ## Download from Twitter
151
- ```bash
152
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "Twitter/%(uploader)s - %(title)s.%(ext)s" "TWITTER_VIDEO_URL"
153
- ```
154
-
155
- ## Download from TikTok
156
  ```bash
157
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "TikTok/%(uploader)s - %(title)s.%(ext)s" "TIKTOK_VIDEO_URL"
158
  ```
159
 
160
- ## Download from Reddit
161
  ```bash
162
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "Reddit/%(uploader)s - %(title)s.%(ext)s" "REDDIT_VIDEO_URL"
163
  ```
164
 
165
- ## Download from Dailymotion
166
  ```bash
167
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "Dailymotion/%(uploader)s - %(title)s.%(ext)s" "DAILYMOTION_VIDEO_URL"
168
  ```
169
 
170
- ## Download YouTube Transcript as Text
171
- ```bash
172
- yt-dlp --write-auto-subs --sub-lang en --skip-download -o "%(title)s.%(ext)s" "VIDEO_URL"
173
- ```
174
 
175
- ## Download YouTube Transcript as Markdown
176
- ```bash
177
- yt-dlp --write-auto-subs --sub-lang en --skip-download --convert-subs srt -o "%(title)s.md" "VIDEO_URL"
178
- ```
 
 
 
 
179
 
180
- ## Download Video Info and Save as JSON
181
  ```bash
182
- yt-dlp --write-info-json --skip-download -o "%(title)s.json" "VIDEO_URL"
183
  ```
184
 
185
- ## List Available Formats without Downloading
186
- ```bash
187
- yt-dlp -F "VIDEO_URL"
188
- ```
189
-
190
- ## Download from YouTube Age-Restricted Content
191
- ```bash
192
- yt-dlp --username "YOUR_YOUTUBE_EMAIL" --password "YOUR_PASSWORD" -f bestvideo+bestaudio -o "%(title)s.%(ext)s" "AGE_RESTRICTED_VIDEO_URL"
193
- ```
194
-
195
- ---
196
-
197
- # SoundCloud Commands
198
-
199
- ## List Available Formats
200
- ```bash
201
- yt-dlp -F "URL"
202
- ```
203
-
204
- ## Download High-Quality MP3 from SoundCloud
205
- ```bash
206
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s" "SOUNDCLOUD_TRACK_URL"
207
- ```
208
-
209
- ## Download HQ with Metadata from SoundCloud
210
- ```bash
211
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-metadata -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s" "SOUNDCLOUD_TRACK_URL"
212
- ```
213
-
214
- ## Download Entire Playlist from SoundCloud
215
- ```bash
216
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "SoundCloud/%(playlist_title)s/%(title)s.%(ext)s" "SOUNDCLOUD_PLAYLIST_URL"
217
- ```
218
-
219
- ## Download Entire Playlist from SoundCloud with Metadata
220
- ```bash
221
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-metadata --add-metadata --embed-thumbnail -o "%(playlist_title)s/%(title)s.%(ext)s" "SOUNDCLOUD_PLAYLIST_URL"
222
- ```
223
-
224
- ## Download Multiple Playlists with Metadata
225
- ```bash
226
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-metadata --add-metadata --embed-thumbnail -o "SoundCloud/%(playlist_title)s/%(title)s.%(ext)s" "x" "x" "x" "x" "x" "x" "x"
227
- ```
228
-
229
- ## Download Playlist with Specific Range
230
- ```bash
231
- yt-dlp --playlist-items 1-5 -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "SoundCloud/%(playlist_title)s/%(title)s.%(ext)s" "SOUNDCLOUD_PLAYLIST_URL"
232
- ```
233
-
234
- ## Download and Embed Album Art
235
- ```bash
236
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-thumbnail -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s" "SOUNDCLOUD_TRACK_URL"
237
- ```
238
-
239
- ## Skip Downloading Already Downloaded SoundCloud Files
240
- ```bash
241
- yt-dlp --download-archive "downloaded_soundcloud.txt" -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s" "SOUNDCLOUD_TRACK_URL"
242
- ```
243
-
244
- ## Download Multiple Tracks from SoundCloud
245
- ```bash
246
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s" "SOUNDCLOUD_TRACK_URL_1" "SOUNDCLOUD_TRACK_URL_2" "SOUNDCLOUD_TRACK_URL_3"
247
- ```
248
-
249
- ## Limit Download Speed for SoundCloud
250
- ```bash
251
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --rate-limit 1M -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s" "SOUNDCLOUD_TRACK_URL"
252
- ```
253
-
254
- ## Download from SoundCloud and Split by Chapters (if available)
255
- ```bash
256
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --split-chapters -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s" "SOUNDCLOUD_TRACK_URL"
257
- ```
258
-
259
- ## Download SoundCloud Track and Extract a Specific Portion
260
- ```bash
261
- yt-dlp -f bestaudio --external-downloader ffmpeg --external-downloader-args "ffmpeg_i:-ss 00:01:00 -to 00:05:00" -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s" "SOUNDCLOUD_TRACK_URL"
262
- ```
263
-
264
- ## Update Metadata of Existing SoundCloud Downloads
265
- ```bash
266
- yt-dlp --download-archive "downloaded_soundcloud.txt" --skip-download --embed-metadata --embed-thumbnail "SOUNDCLOUD_TRACK_URL"
267
- ```
268
-
269
- ## Auto-Rename Duplicate SoundCloud Files
270
- ```bash
271
- yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --force-overwrites -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s" "SOUNDCLOUD_TRACK_URL"
272
- ```
273
-
274
- ## Download from SoundCloud URL List File
275
- ```bash
276
- yt-dlp -a "soundcloud_urls.txt" -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "SoundCloud/%(uploader)s - %(title)s.%(ext)s"
277
- ```
278
-
279
- ---
280
-
281
- # SpotifyDL Commands
282
-
283
- ## Download Single Song
284
- ```bash
285
- spotdl --audio-quality 320k --embed-metadata --output "{artist}/{title}.{ext}" "SPOTIFY_TRACK_URL"
286
- ```
287
- ## Download Entire Playlist
288
- ```bash
289
- spotdl --playlist "SPOTIFY_PLAYLIST_URL" --audio-quality 320k --embed-metadata --output "{playlist}/{title}.{ext}"
290
- ```
291
- ## Download Entire Album
292
- ```bash
293
- spotdl --album "SPOTIFY_ALBUM_URL" --audio-quality 320k --embed-metadata --output "{album}/{title}.{ext}"
294
- ```
295
- ## Download Multiple Albums & Playlists at Once
296
  ```bash
297
- spotdl --playlist "SPOTIFY_PLAYLIST_URL1" "SPOTIFY_PLAYLIST_URL2" --audio-quality 320k --embed-metadata --output "{playlist}/{title}.{ext}"
298
- spotdl --album "SPOTIFY_ALBUM_URL1" "SPOTIFY_ALBUM_URL2" --audio-quality 320k --embed-metadata --output "{album}/{title}.{ext}"
 
299
  ```
 
1
  ---
2
  name: music-downloader
3
+ description: Download audio/music from YouTube, SoundCloud, and 1000+ other platforms using yt-dlp. Use when users request downloading songs, extracting audio from videos, downloading playlists/albums, or converting video to MP3/audio formats.
4
  ---
5
 
6
  # Music Downloader
7
 
8
+ Downloads audio from online platforms using yt-dlp. Works with YouTube, SoundCloud, Vimeo, TikTok, Instagram, Twitter, Facebook, Dailymotion, and 1000+ other sites.
9
 
10
+ ## Workflow
11
 
12
+ 1. **No URL provided?** Use `Web_Search` tool (set search type to `videos`, prefer official YouTube links)
13
+ 2. **Determine scope** → Single track, playlist, or batch
14
+ 3. **Run command** → See patterns below
15
+ 4. **Verify download** → Check file exists and has reasonable size
16
 
17
+ ## Command Pattern
18
 
19
+ All yt-dlp audio downloads follow this structure:
20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  ```bash
22
+ yt-dlp [FLAGS] -o "OUTPUT_TEMPLATE" "URL"
23
  ```
24
 
25
+ ### Core Flags
 
 
 
26
 
27
+ | Flag | Purpose | Recommendation |
28
+ |------|---------|----------------|
29
+ | `-f bestaudio` | Select best audio stream | Always include |
30
+ | `--extract-audio` | Extract audio from video | Always include |
31
+ | `--audio-format mp3` | Output format (mp3/opus/m4a/wav) | mp3 for compatibility |
32
+ | `--audio-quality 0` | Quality (0=best, 9=worst) | 0 |
33
+ | `--embed-metadata` | Add title/artist/etc. tags | Recommended |
34
+ | `--embed-thumbnail` | Add album art | Recommended |
35
+ | `--postprocessor-args "-b:a 320k"` | Force specific bitrate | Optional |
36
 
37
+ ### Output Templates
38
 
39
+ | Template | Use Case |
40
+ |----------|----------|
41
+ | `%(title)s.%(ext)s` | Single track |
42
+ | `%(playlist_title)s/%(title)s.%(ext)s` | Playlist (creates folder) |
43
+ | `%(uploader)s - %(title)s.%(ext)s` | Include artist name |
44
 
45
+ ## Common Commands
 
 
 
46
 
47
+ ### Standard HQ Download
48
  ```bash
49
+ yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s" "URL"
50
  ```
51
 
52
+ ### With Metadata + Album Art
53
  ```bash
54
+ yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-metadata --embed-thumbnail -o "%(title)s.%(ext)s" "URL"
55
  ```
56
 
57
+ ### Max Quality (320kbps forced)
58
  ```bash
59
+ yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --postprocessor-args "-b:a 320k" -o "%(title)s.%(ext)s" "URL"
60
  ```
61
 
62
+ ### Download Playlist
63
  ```bash
64
+ yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-metadata -o "%(playlist_title)s/%(title)s.%(ext)s" "PLAYLIST_URL"
65
  ```
66
 
67
+ ### Playlist (Specific Range)
68
  ```bash
69
  yt-dlp --playlist-items 1-5 -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "%(playlist_title)s/%(title)s.%(ext)s" "PLAYLIST_URL"
70
  ```
71
 
72
+ ### Multiple Individual URLs
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  ```bash
74
+ yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-metadata --embed-thumbnail -o "%(title)s.%(ext)s" "URL1" "URL2" "URL3"
75
  ```
76
 
77
+ ### From URL List File
78
  ```bash
79
  yt-dlp -a "urls.txt" -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s"
80
  ```
81
 
82
+ ### Split by Chapters (for compilations)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  ```bash
84
+ yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --split-chapters -o "%(title)s.%(ext)s" "URL"
85
  ```
86
 
87
+ ### Extract Time Segment
88
  ```bash
89
+ yt-dlp -f bestaudio --extract-audio --audio-format mp3 --external-downloader ffmpeg --external-downloader-args "ffmpeg_i:-ss 00:01:00 -to 00:05:00" -o "%(title)s.%(ext)s" "URL"
90
  ```
91
 
92
+ ### Skip Already Downloaded
93
  ```bash
94
+ yt-dlp --download-archive "downloaded.txt" -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 -o "%(title)s.%(ext)s" "URL"
95
  ```
96
 
97
+ ## Troubleshooting
 
 
 
98
 
99
+ | Error | Fix |
100
+ |-------|-----|
101
+ | `yt-dlp: command not found` | `pip install yt-dlp --break-system-packages` |
102
+ | `ffmpeg not found` | `apt install ffmpeg` |
103
+ | 403 Forbidden / Unable to download | `pip install --upgrade yt-dlp --break-system-packages` |
104
+ | Rate limited (429) | Add `--sleep-interval 5` to command |
105
+ | Geo-restricted | Add `--geo-bypass` to command |
106
+ | File exists | Add `--force-overwrites` or `--no-overwrites` |
107
 
108
+ ### Age-Restricted Content
109
  ```bash
110
+ yt-dlp --cookies-from-browser chrome -f bestaudio --extract-audio --audio-format mp3 "URL"
111
  ```
112
 
113
+ ### Debug / Check Formats
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  ```bash
115
+ yt-dlp -F "URL" # List available formats
116
+ yt-dlp -v "URL" # Verbose output
117
+ yt-dlp --version # Check version
118
  ```