youtube-tools

YouTube Tools (yt-dlp)

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "youtube-tools" with this command: npx skills add casper-studios/casper-marketplace/casper-studios-casper-marketplace-youtube-tools

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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

firecrawl-scraping

No summary provided by upstream source.

Repository SourceNeeds Review
General

pr-summary

No summary provided by upstream source.

Repository SourceNeeds Review
General

pr-comments

No summary provided by upstream source.

Repository SourceNeeds Review
General

attio-crm

No summary provided by upstream source.

Repository SourceNeeds Review