Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
casper-studios avatar

Youtube Tools

  • 280 installs
  • 11 repo stars
  • Updated August 4, 2026
  • casper-studios/casper-marketplace

youtube-tools is an agent skill that runs local yt-dlp Python scripts to download YouTube videos, extract transcripts, and fetch metadata without API keys for developers building free offline video datasets.

About

Downloads YouTube videos, audio, transcripts, and metadata (single or bulk) using yt-dlp with no API keys. A developer uses it to grab video files, subtitles, or metadata for free.

  • Free downloads via yt-dlp, no API keys
  • Single or bulk video, audio, transcript and metadata retrieval

Youtube Tools by the numbers

  • 280 all-time installs (skills.sh)
  • Ranked #503 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/casper-studios/casper-marketplace --skill youtube-tools

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs280
repo stars11
Last updatedAugust 4, 2026
Repositorycasper-studios/casper-marketplace

How do you download YouTube transcripts locally?

Download YouTube videos, audio, transcripts/subtitles, and metadata in bulk using yt-dlp with no API keys.

Who is it for?

Developers building local video datasets, transcript corpora, or playlist archives without YouTube Data API keys or per-video costs.

Skip if: YouTube search-result scraping at scale, comment mining, or cloud-only Apify workflows that need trending discovery rather than direct URL downloads.

When should I use this skill?

User requests YouTube video download, transcript extraction, playlist archiving, or metadata export for specific video URLs.

What you get

Local video or audio files, transcript text files, and metadata JSON under .tmp/youtube/ directories.

  • Downloaded video or audio files
  • Transcript text files
  • metadata.json from get_video_info.py

By the numbers

  • Bundles 3 Python scripts for download, transcript, and metadata operations
  • Zero API keys and zero per-video fees documented in SKILL.md
  • Default output restricted to .tmp/youtube/ subdirectories

Files

SKILL.mdMarkdownGitHub ↗

YouTube Tools (yt-dlp)

Overview

Free, local YouTube operations using yt-dlp. No API keys required, no per-video costs. Works offline after installation.

When to Use This vs Apify

┌─────────────────────────────────────────────────────────────────┐
│ DECISION: YouTube Tools (yt-dlp) vs Apify                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│ Use youtube-tools (FREE) when:                                  │
│ ├── Downloading videos to local storage                         │
│ ├── Extracting transcripts/subtitles                            │
│ ├── Getting video metadata (title, duration, views, etc.)       │
│ ├── Bulk downloading playlists or channels                      │
│ ├── Converting to audio-only (MP3)                              │
│ └── You want zero API costs                                     │
│                                                                 │
│ Use apify-scrapers when:                                        │
│ ├── Scraping YouTube SEARCH results                             │
│ ├── Getting comments at scale                                   │
│ ├── Channel analytics and statistics                            │
│ ├── Trending video discovery                                    │
│ └── You need cloud-based processing                             │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Quick Decision Tree

What do you need?
│
├── Download video(s)
│   ├── Single video → scripts/download_video.py URL
│   ├── Multiple videos → scripts/download_video.py --urls-file list.txt
│   ├── Playlist → scripts/download_video.py "playlist_url"
│   ├── Audio only → scripts/download_video.py URL --audio-only
│   └── Specific quality → scripts/download_video.py URL --quality 720p
│
├── Get transcript/subtitles
│   ├── Auto-generated captions → scripts/get_transcript.py URL
│   ├── Manual subtitles → scripts/get_transcript.py URL --manual-only
│   ├── Specific language → scripts/get_transcript.py URL --lang es
│   └── All available → scripts/get_transcript.py URL --all-langs
│
├── Get video metadata
│   ├── Single video → scripts/get_video_info.py URL
│   ├── Multiple videos → scripts/get_video_info.py --urls-file list.txt
│   └── Playlist info → scripts/get_video_info.py "playlist_url"
│
└── Advanced
    ├── Age-restricted → scripts/download_video.py URL --cookies-from-browser chrome
    ├── Private videos → Requires authentication (see references/yt-dlp-guide.md)
    └── Live streams → scripts/download_video.py URL --live-from-start

Environment Setup

# Install yt-dlp (required)
pip install yt-dlp

# Optional: Install ffmpeg for format conversion
# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Windows
winget install ffmpeg

No API keys required! This is completely free.

Common Usage

Download Single Video

python scripts/download_video.py "https://www.youtube.com/watch?v=VIDEO_ID"

Download with Specific Quality

python scripts/download_video.py "https://youtu.be/VIDEO_ID" --quality 1080p

Download Audio Only (MP3)

python scripts/download_video.py "https://youtube.com/watch?v=VIDEO_ID" --audio-only

Download Entire Playlist

python scripts/download_video.py "https://youtube.com/playlist?list=PLAYLIST_ID" --output-dir ./videos

Bulk Download from File

# Create urls.txt with one URL per line
python scripts/download_video.py --urls-file urls.txt --output-dir ./downloads

Get Transcript

python scripts/get_transcript.py "https://youtube.com/watch?v=VIDEO_ID"

Get Transcript in Specific Language

python scripts/get_transcript.py "https://youtu.be/VIDEO_ID" --lang es

Get Video Metadata

python scripts/get_video_info.py "https://youtube.com/watch?v=VIDEO_ID"

Get Metadata for Multiple Videos

python scripts/get_video_info.py --urls-file videos.txt --output metadata.json

Output Location

All outputs save to .tmp/youtube/ by default:

  • Videos: .tmp/youtube/videos/
  • Audio: .tmp/youtube/audio/
  • Transcripts: .tmp/youtube/transcripts/
  • Metadata: .tmp/youtube/metadata/

Cost

FREE - No API keys, no per-video costs, no subscriptions.

Security Notes

Safe by Design

  • URL validation: Only accepts YouTube URLs (youtube.com, youtu.be)
  • Filename sanitization: Removes dangerous characters
  • Output restriction: Only writes to .tmp/ directory
  • No shell injection: Uses subprocess with argument lists, not string concatenation
  • No stored credentials: Cookies only used when explicitly requested

Copyright Warning

  • Only download content you have rights to access
  • Respect YouTube's Terms of Service
  • Do not redistribute copyrighted content
  • Use for personal/educational purposes

Rate Limiting

  • yt-dlp has built-in rate limiting
  • For bulk downloads, use --sleep-interval 5 to avoid throttling
  • YouTube may temporarily block IPs with excessive requests

Troubleshooting

Issue: "Video unavailable"

Cause: Video is private, age-restricted, or region-locked Solution: Use --cookies-from-browser chrome for age-restricted content

Issue: "Unable to extract video data"

Cause: YouTube changed their page structure Solution: Update yt-dlp: pip install -U yt-dlp

Issue: No subtitles found

Cause: Video has no captions (auto or manual) Solution: Use --list-subs to see available subtitles first

Issue: Slow downloads

Cause: YouTube throttling or network issues Solution: Try --concurrent-fragments 4 for faster downloads

Issue: Format conversion failed

Cause: ffmpeg not installed Solution: Install ffmpeg (see Environment Setup)

Integration Patterns

Download + Transcribe + Summarize

# 1. Download video
python scripts/download_video.py "URL" --output-dir .tmp/video

# 2. Get transcript
python scripts/get_transcript.py "URL" --output .tmp/transcript.txt

# 3. Use content-generation to summarize
# (transcript file is now ready for summarization)

Bulk Research Workflow

# 1. Get metadata for research videos
python scripts/get_video_info.py --urls-file research_videos.txt --output .tmp/metadata.json

# 2. Download transcripts for text analysis
python scripts/get_transcript.py --urls-file research_videos.txt --output-dir .tmp/transcripts

# 3. Use parallel-research to analyze content

Course Content Download

# Download entire playlist as course modules
python scripts/download_video.py "PLAYLIST_URL" --output-dir .tmp/course --quality 720p

# Get all transcripts for notes
python scripts/get_transcript.py "PLAYLIST_URL" --output-dir .tmp/course/transcripts

Resources

  • references/yt-dlp-guide.md - Complete yt-dlp reference with all options
  • yt-dlp documentation: https://github.com/yt-dlp/yt-dlp#readme

Related skills

How it compares

Pick youtube-tools for free local yt-dlp downloads and transcripts; pick apify-scrapers when the task is YouTube search, comments, or cloud analytics at scale.

FAQ

Does youtube-tools require YouTube API keys?

youtube-tools uses local yt-dlp via three Python scripts with no API keys, no per-video costs, and offline operation after yt-dlp and optional ffmpeg are installed.

Where does youtube-tools save downloaded files?

youtube-tools writes videos, audio, transcripts, and metadata under .tmp/youtube/ subdirectories with URL validation and filename sanitization enforced by the bundled scripts.

When should developers choose youtube-tools over Apify?

youtube-tools fits direct video downloads, transcript extraction, playlist archiving, and metadata retrieval; Apify scrapers are recommended for search results, comments at scale, and channel analytics.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.