Yt Dlp Downloader
MapleShaw/yt-dlp-downloader-skill
Download videos from YouTube, Bilibili, Twitter, and thousands of other sites using yt-dlp.
Generic media transformation orchestrator — download videos from any source (X/Twitter, Zoom, YouTube, web embeds), upload to YouTube, transcribe with timestamps, generate chapters, create…
$ npx skills add swyxio/skills --skill media-transform -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install swyxio/skills media-transform --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/media-transform .claude/skills/media-transform && 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 "media-transform" agent skill from https://github.com/swyxio/skills/tree/main/media-transform into .claude/skills/media-transform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "media-transform", 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/media-transformType 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 media-transform -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install swyxio/skills media-transform --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/media-transform .agents/skills/media-transform && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "media-transform" agent skill from https://github.com/swyxio/skills/tree/main/media-transform into .agents/skills/media-transform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "media-transform", 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 media-transform -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install swyxio/skills media-transform --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/media-transform .cursor/skills/media-transform && 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 "media-transform" agent skill from https://github.com/swyxio/skills/tree/main/media-transform into .cursor/skills/media-transform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "media-transform", 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 media-transform--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 media-transform -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install swyxio/skills media-transform --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/media-transform .gemini/skills/media-transform && 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 "media-transform" agent skill from https://github.com/swyxio/skills/tree/main/media-transform into .gemini/skills/media-transform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "media-transform", 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 media-transformInstalls 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 media-transform -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/media-transform .github/skills/media-transform && 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 "media-transform" agent skill from https://github.com/swyxio/skills/tree/main/media-transform into .github/skills/media-transform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "media-transform", 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 media-transform -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 media-transform --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/media-transform .opencode/skills/media-transform && 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 "media-transform" agent skill from https://github.com/swyxio/skills/tree/main/media-transform into .opencode/skills/media-transform/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "media-transform", 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.
media-transformGeneric media transformation orchestrator — download videos from any source (X/Twitter, Zoom, YouTube, web embeds), upload to YouTube, transcribe with timestamps, generate chapters, create…
Media Transform is an agent skill from swyxio/skills. Generic media transformation orchestrator — download videos from any source (X/Twitter, Zoom, YouTube, web embeds), upload to YouTube, transcribe with timestamps, generate chapters, create thumbnails with GPT-Image-2, and A/B test titles. Use when the user wants to move a video from one platform to another, or asks to "download and upload this video to YouTube", "publish this recording", "save and transcribe this", or any video pipeline task. Encodes learned best practices and preferences for each stage.
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative, covering Transcription, A/B testing and Image generation. It works with YouTube and X (Twitter). The repository describes itself as: Agent skills for Claude Code and other AI agents. The licence is MIT.
4 steps, taken from the first numbered list 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:
python3yt-dlpbrewgcloudpipxFrom 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:
x.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.
Media Transform loads about 2.6k tokens when it runs. Until then it costs about 131 tokens; SKILL.md has 975 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). 975 words, ~2,589 tokens.
.claude/skills/media-transform/SKILL.md (or your agent's skills folder).Generic orchestrator for media transformation pipelines. Chains atomic skills based on source and destination, with stage-by-stage checkpoints.
Each pipeline stage is handled by a dedicated atomic skill. This orchestrator provides:
| Stage | Skill | Notes |
|---|---|---|
| Download (X/Twitter) | download-x-video | yt-dlp, --print after_move:filepath |
| Download (Zoom) | zoom-download | Browser-based, gallery view preferred |
| Download (web embeds) | download-video | Handles Vimeo, YouTube embeds, referer headers |
| Download (generic URL) | yt-dlp directly | brew install yt-dlp |
| Upload to YouTube | youtube-api | OAuth, resumable upload, tags, metadata |
| Update metadata | youtube-api | update_metadata.py — title, description, tags |
| Set thumbnail | youtube-api | set_thumbnail.py — upload custom thumbnail |
| Transcribe | transcribe-anything | Multi-backend, auto-selects best |
| Chapters (LLM titles) | podcast-publishing-assistant | High-quality chapter summaries |
download-x-video → youtube-api (upload) → transcribe-anything → youtube-api (update description)# 1. Download
python3 download-x-video/scripts/download_x_video.py "https://x.com/user/status/123/video/1" /tmp
# 2. Upload (unlisted)
python3 youtube-api/scripts/upload_video.py \
--file /tmp/x_video_<id>.mp4 \
--title "Video Title" \
--privacy unlisted
# 3. Transcribe (prefer mlx_whisper on Apple Silicon)
mlx_whisper /tmp/x_video_<id>.mp4 \
--model mlx-community/whisper-turbo \
--output-dir /tmp --output-format json \
--word-timestamps True
# 4. Generate chapters + update description
# See Chapter Generation section belowzoom-download → youtube-api (upload + metadata + thumbnail)Zoom recordings typically have built-in transcripts. Focus on proper titling, playlist assignment, and thumbnails.
yt-dlp download → youtube-api (upload) → transcribe-anythingFor any video URL that yt-dlp supports (YouTube, Vimeo, etc.), download and re-publish.
Generate 3-5 title candidates using the LLM. Evaluate against these heuristics:
What makes a good YouTube title:
Title generation prompt template:
Generate 5 YouTube title candidates for a video about [topic].
The video is [duration] and [brief content description].
Requirements:
- Under 70 characters each
- Different angles: (1) curiosity-driven, (2) how-to/value, (3) controversial/contrarian,
(4) specific/numbers-driven, (5) question-based
- No ALL CAPS, no emoji overuse
- Titles must accurately reflect the contentYouTube Studio has native "Test & Compare" (tests up to 3 titles/thumbnails, runs up to 2 weeks, winner based on watch time share). This is NOT available via the YouTube Data API directly.
Programmatic DIY A/B testing:
Use youtube-api/scripts/update_metadata.py to rotate titles on a schedule, then analyze performance via YouTube Analytics:
# Start test: set title A
python3 youtube-api/scripts/update_metadata.py --video-id <ID> --title "Title A"
# After 24-48h: rotate to title B
python3 youtube-api/scripts/update_metadata.py --video-id <ID> --title "Title B"
# After 24-48h more: check analytics to determine winner
# Winner = higher CTR * average view duration (or just CTR for early tests)A/B testing schedule:
GPT-Image-2 (openai/gpt-image-2) via the image_generate tool is the preferred thumbnail generator:
Key capabilities relevant to thumbnails:
Thumbnail prompt template:
YouTube thumbnail for a video titled "[TITLE]". Style: [clean/bold/minimalist/tech].
[Specific visual elements: faces, diagrams, text overlays].
Aspect ratio: 16:9. High contrast, eye-catching. No clutter.
Text on image (if any): "[KEY PHRASE]" in [position].Post-generation:
youtube-api/scripts/set_thumbnail.py to uploadconvert -resize 1280x720 -quality 85 input.png output.jpgYouTube's native "Test & Compare" supports up to 3 thumbnails. Generate 3 distinct concepts:
yt-dlp path detection:
--print after_move:filepath for reliable final path (don't parse stdout for [download] Destination)after_move path is the final merged fileX/Twitter auth:
yt-dlp --cookies-from-browser chromeOAuth token caching:
youtube-api skill handles this: ~/.config/youtube-api/token.pickle (or Cowork path)Privacy default:
unlisted unless user explicitly asks for publicResumable uploads:
Prefer mlx_whisper on Apple Silicon (10x faster):
mlx_whisper (pipx install mlx-whisper): ~1300 frames/s → ~2 min for 27 min audioopenai-whisper CLI: ~95 frames/s → ~28 min for same audioopenai-whisper with --device mps produces NaN errors with turbo/large models — avoid, use mlx_whisper insteadTurbo model is the sweet spot:
Diarization is aspirational:
transcribe-anything with --diarize flag when availableGarbage filtering is essential:
Word-boundary truncation:
LLM titles when quality matters:
podcast-publishing-assistant or feed segments to an LLMInterval tuning:
Before each action phase, present a summary and get confirmation. This catches mismatches early:
gcloud services enable youtube.googleapis.com --project=<PROJECT_ID>lsof -i :8080http://localhost in redirect URIsbrew install ffmpegpodcast-publishing-assistant or LLM post-processingconvert -resize 1280x720 -quality 85 input.png output.jpg© swyxio, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in media-transform of swyxio/skills.
Open the folder on GitHubat commit 038ef34
Media Transform 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 |
|---|---|---|---|---|---|---|
| Media Transform this skillswyxio/skills | 175 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Yt Dlp DownloaderMapleShaw/yt-dlp-downloader-skill | 209 | 1 repos | ~1.5k | Automated safety check: Pass | None | |
| Videohub Youtubecacity/VideoHub | 168 | — | ~550 | Automated safety check: Pass | MIT | |
| Watchmathiaschu/watch | 142 | — | ~4k | Automated safety check: Warn | MIT | |
| Generate Youtube Thumbnailkrusemediallc/arcads-claude-code | 1.6k | — | ~2.4k | Automated safety check: Notes | MIT | |
| Youtube Thumbnailhassancs91/claude-youtube-editor | 325 | — | ~2.1k | Automated safety check: Notes | MIT |
MapleShaw/yt-dlp-downloader-skill
Download videos from YouTube, Bilibili, Twitter, and thousands of other sites using yt-dlp.
cacity/VideoHub
处理 YouTube、Twitter(X)、Bilibili 和本地音视频/文本的转写、字幕、翻译与总结。优先复用 src/youtubetranscriber.py 现有 CLI。
mathiaschu/watch
Watch a video from YouTube, Instagram, X/Twitter, Vimeo, TikTok or any of ~1800 yt-dlp sites (or a local path).
krusemediallc/arcads-claude-code
Generate high-CTR YouTube thumbnails using Nano Banana 2 via the Arcads external API.
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…
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
Generic media transformation orchestrator — download videos from any source (X/Twitter, Zoom, YouTube, web embeds), upload to YouTube, transcribe with timestamps, generate chapters, create…. Media Transform is an agent skill from swyxio/skills. Generic media transformation orchestrator — download videos from any source (X/Twitter, Zoom, YouTube, web embeds), upload to YouTube, transcribe with timestamps, generate chapters, create thumbnails with GPT-Image-2, and A/B test titles.
Media Transform fits situations like: the user wants to move a video from one platform to another; asks to download and upload this video to YouTube; publish this recording; save and transcribe this.
Run `npx skills add swyxio/skills --skill media-transform -a claude-code`. Or copy the skill folder (media-transform in swyxio/skills) into .claude/skills/media-transform in your project. Claude Code loads it when a task matches its description.
Run `npx skills add swyxio/skills --skill media-transform -a codex`. Or copy the skill folder (media-transform in swyxio/skills) into .agents/skills/media-transform 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 media-transform -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/media-transform, .gemini/skills/media-transform, .github/skills/media-transform and .opencode/skills/media-transform in your project.
Going by SKILL.md and its folder, Media Transform needs the command-line tools its instructions call (python3, yt-dlp, brew, gcloud and pipx). Our summary lists: Python 3.
SKILL.md names 1 domain. In commands or code: x.com; the agent is likely to contact it 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.
Media Transform is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k 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 Media Transform: Yt Dlp Downloader (MapleShaw/yt-dlp-downloader-skill, 209 stars), Videohub Youtube (cacity/VideoHub, 168 stars), Watch (mathiaschu/watch, 142 stars) and Generate Youtube Thumbnail (krusemediallc/arcads-claude-code, 1.6k 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 175 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.