Media Downloader
Download Video/Music from YouTube/Bilibili/X/etc.
guoqiao
@guoqiao
What This Skill Does
Downloads video and music from URLs (YouTube, Bilibili, X, etc.) and saves them to organized local folders (e.g., ~/Movies, ~/Music). Supports playlists by creating subdirectories.
Replaces manual downloading and file organization by automatically routing media to the correct folders for instant playback on a local media server.
When to Use It
- Download a YouTube video to watch offline on your TV
- Save a Bilibili music playlist to your local music library
- Archive a video from X (Twitter) for later viewing
- Organize downloaded media into folders compatible with Jellyfin or Universal Media Server
- Batch download a playlist and keep files in a named subdirectory
Install
$ openclaw skills install @guoqiao/dlMedia Downloader
Smartly download media (Video/Music) from URLs (YouTube, Bilibili, X, etc.) to the appropriate local folders.
- Video: Save into
~/Movies/or~/Videos/. - Music: Save into
~/Music/. - Playlists: Saves items into a subdirectory (e.g.,
~/Music/<playlist_name>/).
Designed to work with a local Media Server (e.g., Universal Media Server, Jellyfin) for instant playback on TV/devices.
Agent Procedure
When the user provides a URL or asks to download media, you MUST follow this exact sequence:
-
Acknowledge:
- Immediately reply to the user: "Downloading with dl skill..."
-
Execute:
- Run the script:
uv run --script ${baseDir}/dl.py "<url>"
- Run the script:
-
Capture Path:
- Read the script output, a path will be printed to stdout at the end, points to either a single file or a folder contains the playlist items.
-
Upload (Telegram Only):
- If the user is on Telegram (check context or session) AND the file is audio (mp3/m4a):
- Use the
messagetool to send the file to the user:{ "action": "send", "filePath": "<filepath>", "caption": "Here is your music." }
Usage
Run dl.py as a uv script:
# save into default dirs ~/Music or ~/Movies or ~/Videos
uv run --script ${baseDir}/dl.py <url>
# specify your own output dir
uv run --script ${baseDir}/dl.py <url> -o <out_dir>
The script will print output path, either a file or a folder.
A optional cookies file could be provided to make yt-dlp more reliable, with which ever of these detected first:
${baseDir}/.cookies.txt$DL_COOKIES_FILE$COOKIES_FILE~/.cookies.txt
Setup (User)
This skill will be much more useful if you setup a media server on same machine to share the downloaded media in your LAN:
- Install a DLNA/UPnP Media Server (Universal Media Server, miniDLNA, Jellyfin).
- Share
~/Musicand~/Movies(or~/Videos) folders. - Downloaded media will appear automatically on your TV, with apps support DLNA/UPnP, such as VLC.
See example script to setup Universal Media Server on Mac.
Top skills in this category
Nano Banana Pro
@steipeteGenerate/edit images with Nano Banana Pro (Gemini 3 Pro Image). Use for image create/modify requests incl. edits. Supports text-to-image + image-to-image; 1K/2K/4K; use --input-image.
AdMapix
@fly0pantsAdMapix raw data layer for ad creatives, apps, rankings, downloads/revenue, and market metadata. Returns structured JSON from the AdMapix API; the calling ag...
YouTube Watcher
@michaelgatharaFetch and read transcripts from YouTube videos. Use when you need to summarize a video, answer questions about its content, or extract information from it.
SuperDesign
@mpociotExpert frontend design guidelines for creating beautiful, modern UIs. Use when building landing pages, dashboards, or any user interface.
Video Frames
@steipeteExtract frames or short clips from videos using ffmpeg.