Yt Dlp Downloader
MapleShaw/yt-dlp-downloader-skill
Download videos from YouTube, Bilibili, Twitter, and thousands of other sites using yt-dlp.
Downloads embedded videos from web pages. An agent skill from swyxio/skills.
$ npx skills add swyxio/skills --skill download-video -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install swyxio/skills download-video --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/swyxio/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/download-video .claude/skills/download-video && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "download-video" agent skill from https://github.com/swyxio/skills/tree/main/download-video into .claude/skills/download-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "download-video", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/swyxio/skills/tree/main/download-videoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add swyxio/skills --skill download-video -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install swyxio/skills download-video --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swyxio/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/download-video .agents/skills/download-video && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "download-video" agent skill from https://github.com/swyxio/skills/tree/main/download-video into .agents/skills/download-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "download-video", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add swyxio/skills --skill download-video -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install swyxio/skills download-video --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swyxio/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/download-video .cursor/skills/download-video && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "download-video" agent skill from https://github.com/swyxio/skills/tree/main/download-video into .cursor/skills/download-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "download-video", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/swyxio/skills.git --path download-video--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add swyxio/skills --skill download-video -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install swyxio/skills download-video --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swyxio/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/download-video .gemini/skills/download-video && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "download-video" agent skill from https://github.com/swyxio/skills/tree/main/download-video into .gemini/skills/download-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "download-video", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install swyxio/skills download-videoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add swyxio/skills --skill download-video -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/swyxio/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/download-video .github/skills/download-video && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "download-video" agent skill from https://github.com/swyxio/skills/tree/main/download-video into .github/skills/download-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "download-video", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add swyxio/skills --skill download-video -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install swyxio/skills download-video --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/swyxio/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/download-video .opencode/skills/download-video && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "download-video" agent skill from https://github.com/swyxio/skills/tree/main/download-video into .opencode/skills/download-video/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "download-video", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
download-videoDownloads embedded videos from web pages. An agent skill from swyxio/skills.
Download Video is an agent skill from swyxio/skills. Downloads embedded videos from web pages. Fetches the page, identifies the video hosting service (Vimeo, YouTube, etc.), resolves the correct embed/player URL, and downloads using yt-dlp. Handles private/unlisted videos that require referer headers or embed URLs. Use this skill when someone says "download this video", "save this video", "grab the video from this page", "rip this video", or provides a URL and asks to download media from it. Also trigger when someone pastes a URL to a page with an embedded video…
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `README.md`). Compatibility notes: Requires macOS or Linux with yt-dlp installed (brew install yt-dlp). curlcffi Python package recommended for impersonation support (pip3 install curlcffi)…
It sits in Media & Creative, covering Video production. It works with YouTube. The repository describes itself as: Agent skills for Claude Code and other AI agents. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 038ef34. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
yt-dlpbrewpip3From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
player.vimeo.comvimeo.comforum.openai.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires macOS or Linux with yt-dlp installed (brew install yt-dlp). curl_cffi Python package recommended for impersonation support (pip3 install curl_cffi). Internet connection required.
From compatibility in the SKILL.md frontmatter.
Download Video loads about 2k tokens when it runs. Until then it costs about 141 tokens; SKILL.md has 730 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from swyxio/skills at commit 038ef34, republished under its MIT licence (© swyxio). 730 words, ~2,003 tokens.
.claude/skills/download-video/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.This skill downloads embedded videos from web pages by inspecting the page source, identifying the video hosting service and embed URL, then using yt-dlp to download the video file.
Many event replays, webinars, and talks are embedded on pages using private/unlisted video hosting (especially Vimeo). The direct video URL often returns 404 because the video is only accessible through the embed player with the correct referer. This skill handles that automatically.
Ensure yt-dlp is installed and up to date (older versions hit different errors):
which yt-dlp || brew install yt-dlp
brew upgrade yt-dlpInstall the impersonation library. On modern macOS (Python installed via Homebrew), the --break-system-packages flag is required:
pip3 install --break-system-packages curl_cffiNote: curl_cffi alone does not fix private Vimeo downloads. The embed URL approach (Step 2) is what actually works. But curl_cffi prevents a misleading OAuth 400 error that obscures the real issue.
Use WebFetch to inspect the target URL. Look for:
contentUrl, embedUrl)Extract the video hosting service and any identifying info:
| Host | URL Pattern | Embed Pattern |
|---|---|---|
| Vimeo | vimeo.com/{id} | player.vimeo.com/video/{id} |
| YouTube | youtube.com/watch?v={id} | youtube.com/embed/{id} |
| Wistia | fast.wistia.com/medias/{id} | fast.wistia.com/embed/medias/{id} |
| Brightcove | varies | players.brightcove.net/{account}/{player}/index.html?videoId={id} |
| Loom | loom.com/share/{id} | loom.com/embed/{id} |
The direct URL (e.g., vimeo.com/123456) often fails for private/unlisted videos. Use the embed/player URL instead:
https://player.vimeo.com/video/{id} instead of https://vimeo.com/{id}If the video has a privacy hash (Vimeo h= parameter), include it:
https://player.vimeo.com/video/{id}?h={hash}For Vimeo specifically, skip the direct URL and go straight to the embed URL. The direct URL almost always fails for private/unlisted videos. For other hosts, try in order and stop at the first that works.
Attempt 1 — Embed/player URL (start here for Vimeo):
yt-dlp "https://player.vimeo.com/video/{id}"Attempt 2 — With referer header (if Attempt 1 returns 403):
yt-dlp --referer "{source_page_url}" "https://player.vimeo.com/video/{id}"Attempt 3 — With referer + origin headers:
yt-dlp --referer "{source_page_url}" --add-header "Origin: {source_origin}" "https://player.vimeo.com/video/{id}"Attempt 4 — Direct URL (only for public videos or non-Vimeo hosts):
yt-dlp "{video_url}"If the user wants a specific quality:
# List available formats
yt-dlp -F "{url}"
# Download best quality (default)
yt-dlp -f "bestvideo+bestaudio" "{url}"
# Download specific resolution
yt-dlp -f "bestvideo[height<=1080]+bestaudio" "{url}"
# Download audio only
yt-dlp -f "bestaudio" -x --audio-format mp3 "{url}"By default yt-dlp saves to the current directory. To specify an output path:
yt-dlp -o "~/Downloads/%(title)s.%(ext)s" "{url}"ERROR: Failed to fetch OAuth token: HTTP Error 400: Bad RequestThis happens when yt-dlp tries the direct vimeo.com/{id} URL without impersonation support. Two things to do:
curl_cffi: pip3 install --break-system-packages curl_cfficurl_cffi, the direct URL will likely fail with a 404 (see below) because the video is private.ERROR: Unable to download macos API JSON: HTTP Error 404: Not FoundThis is what you get after installing curl_cffi and updating yt-dlp — the OAuth error goes away but the video still can't be found because it's private/unlisted on the direct URL. Switch to the embed URL:
vimeo.com/{id} -> player.vimeo.com/video/{id}The typical Vimeo error progression is: OAuth 400 -> (install curl_cffi + update yt-dlp) -> 404 -> (use embed URL) -> success.
ERROR: HTTP Error 403: ForbiddenFix: Add the referer header from the source page:
yt-dlp --referer "{source_page_url}" "{embed_url}"WARNING: The extractor is attempting impersonation, but no impersonate target is availableFix: Install curl_cffi. This is a non-fatal warning but may cause downstream failures.
ERROR: This video is not available in your countryFix: Consider using a VPN. yt-dlp supports --proxy flag:
yt-dlp --proxy socks5://127.0.0.1:1080 "{url}"This is the exact sequence that works, tested on forum.openai.com event replay pages (2026-03-28):
# 1. Page has schema.org VideoObject with contentUrl: https://vimeo.com/1174947711
# Direct URL fails (private video).
# 2. This works — use the player embed URL:
yt-dlp --referer "https://forum.openai.com/" "https://player.vimeo.com/video/1174947711"
# 3. yt-dlp downloads HLS fragments (484 in this case), merges video+audio.
# Result: ~683MB MP4 file.The referer wasn't strictly required for this specific video (Attempt 1 worked), but including it is good practice for Vimeo embeds.
contentUrlplayer.vimeo.com/video/{id} — referer optional but recommendediframe elements in the page source--cookies-from-browser chrome if neededcontentUrl field has the Vimeo URL, but it's the public-facing URL that won't work for downloadplayer.vimeo.com embed form© swyxio, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in download-video of swyxio/skills.
Open the folder on GitHubat commit 038ef34
Download Video next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Download Video this skillswyxio/skills | 176 | — | ~2k | Automated safety check: Pass | MIT | |
| Yt Dlp DownloaderMapleShaw/yt-dlp-downloader-skill | 209 | 1 repos | ~1.5k | Automated safety check: Pass | None | |
| Media Downloaderyizhiyanhua-ai/media-downloader | 403 | 1 repos | ~824 | Automated safety check: Pass | None | |
| Youtube Thumbnailhassancs91/claude-youtube-editor | 328 | — | ~2.1k | Automated safety check: Notes | MIT | |
| Shorts Video Makeruxjoseph/content-marketing-team | 107 | — | ~665 | Automated safety check: Pass | None | |
| Motion Video in Remotionooiyeefei/ccc | 495 | — | ~2.9k | Automated safety check: Pass | MIT |
MapleShaw/yt-dlp-downloader-skill
Download videos from YouTube, Bilibili, Twitter, and thousands of other sites using yt-dlp.
yizhiyanhua-ai/media-downloader
智能媒体下载器。根据用户描述自动搜索和下载图片、视频片段,支持视频自动剪辑. An agent skill from yizhiyanhua-ai/media-downloader.
hassancs91/claude-youtube-editor
Dedicated YouTube thumbnail generator — interviews you for exactly the style elements you want (environment, text budget, extras, accent color), then renders high-contrast, vibrant, face-consistent…
uxjoseph/content-marketing-team
YouTube 영상에서 쇼츠 클립 3개를 자동 제작합니다. An agent skill from uxjoseph/content-marketing-team.
ooiyeefei/ccc
Builds marketing and explainer videos in Remotion from rendered scenes, with one real product capture as proof, and cuts them for each platform's formats.
chenzixin1/watchless
A skill your agent uses when turning a YouTube URL or local presentation, explainer, interview, podcast, or product-demo video into complete screenshot-led notes, faithful light-polished text, HTML…
swyxio/skills
Run a selected coding-agent CLI programmatically, with latency, error, usage, cost, and trace logging.
swyxio/skills
Design, implement, audit, or refresh protected username and handle namespaces for public products.
swyxio/skills
Fully automated new Mac setup for fullstack web developers and AI engineers.
swyxio/skills
Manage YouTube videos programmatically via the YouTube Data API v3 — upload video files, upload custom thumbnails, update video metadata (titles, descriptions, tags), and query video/channel info…
swyxio/skills
Batch YouTube Studio upload workflow for videos sourced from Airtable, Google Drive, Loom, YouTube, or local files.
swyxio/skills
Reconstruct and visually analyze paired agent, game, or policy trajectories to determine whether changed actions produced their intended effects.
Works with
Categories
Downloads embedded videos from web pages. An agent skill from swyxio/skills. Download Video is an agent skill from swyxio/skills. Downloads embedded videos from web pages.
Download Video fits situations like: someone says download this video; save this video; grab the video from this page; provides a URL and asks to download media from it.
Run `npx skills add swyxio/skills --skill download-video -a claude-code`. Or copy the skill folder (download-video in swyxio/skills) into .claude/skills/download-video in your project. Claude Code loads it when a task matches its description.
Run `npx skills add swyxio/skills --skill download-video -a codex`. Or copy the skill folder (download-video in swyxio/skills) into .agents/skills/download-video in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add swyxio/skills --skill download-video -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/download-video, .gemini/skills/download-video, .github/skills/download-video and .opencode/skills/download-video in your project.
Going by SKILL.md and its folder, Download Video needs the command-line tools its instructions call (yt-dlp, brew and pip3). Our summary lists: Python 3. Compatibility (from SKILL.md): Requires macOS or Linux with yt-dlp installed (brew install yt-dlp). curl_cffi Python package recommended for impersonation support (pip3 install curl_cffi). Internet connection required. .
SKILL.md names 3 domains. In commands or code: player.vimeo.com, vimeo.com and forum.openai.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Download Video is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Download Video: Yt Dlp Downloader (MapleShaw/yt-dlp-downloader-skill, 209 stars), Media Downloader (yizhiyanhua-ai/media-downloader, 403 stars), Youtube Thumbnail (hassancs91/claude-youtube-editor, 328 stars) and Shorts Video Maker (uxjoseph/content-marketing-team, 107 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
swyxio (a GitHub user) maintains it in swyxio/skills, which has 176 GitHub stars. The repository holds 89 skills in this directory. The repository was last updated on October 5, 2026.
Source: swyxio/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.