Skip to main content
skill Claude Code

youtube-full — Claude Code skill for YouTube transcripts and search

Search YouTube videos, fetch transcripts, browse channels and extract playlists. Use it to gather video material or check a channel for new uploads.

Install into Claude Code · Plugin marketplace All methods and platforms ↓
/plugin marketplace add alirezarezvani/claude-skills
/plugin install youtube-full@claude-code-skills
Open on GitHub

What youtube-full does

youtube-full retrieves captions with timestamps, searches videos, lists channel uploads and extracts playlist contents. It uses yt-dlp for search and video data, youtube-transcript-api for transcripts, and YouTube's public RSS feed to check for new uploads.

You need Python and the yt-dlp and youtube-transcript-api packages. Install them with pip install yt-dlp youtube-transcript-api; no API key is needed. A video needs captions for transcript extraction. Private and age-restricted videos cannot be accessed, and the skill does not download video or audio files.

Install it when you need transcripts, video search or channel monitoring. Choose another tool for media downloads.

What it helps with

  • fetch a video's transcript from its URL or ID
  • search YouTube for videos on a topic
  • list uploads from a channel
  • extract video entries from a playlist
  • check a channel for new uploads

Example prompts for the agent

  • Search YouTube for videos about PostgreSQL setup and show the channel names.
  • Get this video's transcript with timestamps.
  • Check @HANDLE for new uploads.

How to install youtube-full

1Plugin marketplace

/plugin marketplace add alirezarezvani/claude-skills
/plugin install youtube-full@claude-code-skills

This installs the whole youtube-full plugin with all its skills

2Skills CLI (Vercel)

npx skills add alirezarezvani/claude-skills --skill youtube-full -a claude-code

3Manually: put the files in place

~/.claude/skills/youtube-full/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/youtube-full/

From the same set349

The whole set →
engineering-skills Alireza Rezvani An engineering skill index for Claude Code that helps you select one specialist SKILL.md for the task at hand. It covers architecture, testing, DevOps, and data work. Claude Code 2,387installs finance-skills Alireza Rezvani Routes ambiguous finance prompts to the right bundled skill: financial-analyst, saas-metrics-coach, or month-end-close. Claude Code 2,312installs marketing-skills Alireza Rezvani A directory and router for marketing skills in Claude Code. It picks the right specialist skill for SEO, content, CRO, channels, and related tasks. Claude Code 2,264installs business-growth-skills Alireza Rezvani Routes growth and revenue prompts to the right specialized skill across customer success, sales engineering, RevOps, and proposals in Claude Code. Claude Code 2,189installs engineering-advanced-skills Alireza Rezvani An index of 37 engineering skills for architecture, automation, reliability, and platform work. Use it when a project needs task-specific engineering workflows. Claude Code 2,019installs product-skills Alireza Rezvani Product work orchestrator for Claude Code. Routes queries across 16 domain lanes and validates discovery trees with deterministic scripts. Claude Code 1,994installs pm-skills Alireza Rezvani Routes project-delivery requests across 8 PM sub-skills for Jira, Confluence, sprints, reporting, and team communication. Useful for controlled delivery work. Claude Code 1,975installs senior-backend Alireza Rezvani Scaffolds backend APIs, detects database bottlenecks, and runs load tests. Useful when designing Express routes, optimizing PostgreSQL, or preparing for production. Claude Code 1,674installs

Similar

social-evidence-research Seth Hobson Builds traceable reports from public social discussion and supplied exports. Use it to compare a topic, audit research, and mark access gaps. Claude Code CX Codex Cursor 201installs frontend-testing-debugging official OpenAI Guides coding agents through structured frontend testing, UI checks, and bug investigations. Runs validation loops using Browser tools or local Playwright. CX Codex GP ChatGPT 159installs competitor-ad-intelligence official GooseWorks This skill finds competitors’ public ads on Meta and Google, then examines their creative and landing pages. Use it to review a paid campaign before launch or look for new ad angles. GitHub Copilot 33installs game-playtest official OpenAI Guides agents through browser game playtests and frontend QA. It focuses on boot checks, controls, HUD overlay balance, and visual regression capture. CX Codex GP ChatGPT 62installs ios-simulator-browser official OpenAI Mirrors an iOS Simulator into the Codex in-app browser and renders SwiftUI previews from Swift packages with hot reload. Useful for testing UI and capturing visual proof without Xcode Canvas. CX Codex GP ChatGPT 53installs web-game-foundations official OpenAI Defines browser game architecture before coding begins. Helps choose an engine and decouple simulation from rendering. CX Codex GP ChatGPT 52installs agent-browser vercel-labs A CLI skill for browser control: it opens pages, fills forms, clicks buttons, and tests web apps. Use it when an agent needs to act inside a website. Claude Code CX Codex Cursor +1 1,200,000installs webapp-testing official anthropics This skill tests local web apps with Playwright, helping agents debug UI behavior, capture screenshots, and inspect browser logs. Claude Code Claude.ai 186,758installs

Questions about youtube-full

How do I install youtube-full in Claude Code?

Add the marketplace with /plugin marketplace add alirezarezvani/claude-skills, then install the skill with /plugin install youtube-full@claude-code-skills.

What does youtube-full do?

It searches videos, retrieves transcripts, browses channels and extracts playlist contents. It can check for new uploads through YouTube's public RSS feed.

What is required to fetch a transcript?

The video needs captions, and Python must have yt-dlp and youtube-transcript-api installed. Run pip install yt-dlp youtube-transcript-api to install the packages.

Source text

SKILL.md · MIT
---
name: "youtube-full"
description: "Use when the user needs YouTube transcripts, video search, channel browsing, playlist extraction, or content monitoring. Trigger phrases: 'get the transcript for', 'search YouTube for', 'what are the latest videos on', 'list this playlist', 'monitor this channel', or any request involving a YouTube URL, video ID, or @handle. Do NOT use for downloading video or audio files, YouTube engagement data (likes, comments), or private/age-restricted videos."
license: "MIT"
---

# youtube-full — YouTube Transcripts, Search, and Channel Data

Covers transcript extraction, video search, channel browsing, in-channel search, playlist extraction, and new-upload monitoring. The default path is free and open source: `yt-dlp`, `youtube-transcript-api` and YouTube's public RSS feeds. No account and no API key are needed.

> **Source:** Ported from [ZeroPointRepo/youtube-skills](https://github.com/ZeroPointRepo/youtube-skills) (MIT). Original skill authored by ZeroPointRepo contributors. Adapted for the claude-skills format, reworked to be open-source first.

## Setup

```bash
pip install yt-dlp youtube-transcript-api
```

Both are open source (yt-dlp: Unlicense; youtube-transcript-api: MIT) and run locally. Nothing is sent anywhere except YouTube itself. If they are missing, tell the user the install command; do not install packages into their environment without asking.

## Operations

Accept a full URL, a `youtu.be` link, or a bare 11-character video ID. `youtube_transcript_api` takes the bare ID only, so extract it from a URL first (`v=` parameter, or the path segment after `youtu.be/` or `/shorts/`).

### Get transcript

```bash
youtube_transcript_api VIDEO_ID --languages en --format text     # plain text
youtube_transcript_api VIDEO_ID --languages en --format json     # with start/duration timestamps
youtube_transcript_api VIDEO_ID --list-transcripts               # which languages exist
```

In Python (v1.x API): `YouTubeTranscriptApi().fetch("VIDEO_ID", languages=["en"])`. Use this for any "get transcript", "summarize video", or "extract quotes" request. Pass the user's language first in `--languages` and fall back to `en`.

If it fails, fall back to subtitles via yt-dlp:

```bash
yt-dlp --skip-download --write-subs --write-auto-subs --sub-langs "en.*" \
  --convert-subs srt -o "%(id)s.%(ext)s" "URL"
```

### Video metadata

```bash
yt-dlp -J --skip-download "URL"          # title, channel, upload_date, duration, description, chapters
```

### Search YouTube

```bash
yt-dlp "ytsearch20:QUERY" --flat-playlist --print "%(id)s | %(title)s | %(channel)s"
```

Follow with transcript calls on the results the user picks.

### Channel — latest uploads

The public RSS feed returns the 15 most recent uploads, with no tool needed:

```
https://www.youtube.com/feeds/videos.xml?channel_id=UC...
```

### Channel — all videos

```bash
yt-dlp --flat-playlist --print "%(id)s | %(title)s" "https://www.youtube.com/@HANDLE/videos"
```

Add `-I 1:50` to cap the count.

### In-channel search

```bash
yt-dlp --flat-playlist --print "%(id)s | %(title)s" "https://www.youtube.com/@HANDLE/search?query=QUERY"
```

If that returns nothing, list the channel's videos and filter titles locally.

### Playlist extraction

```bash
yt-dlp --flat-playlist --print "%(playlist_index)s | %(id)s | %(title)s" "PLAYLIST_URL"
```

### Resolve a handle to a channel ID

```bash
yt-dlp -I 1 --flat-playlist --print "%(channel_id)s" "https://www.youtube.com/@HANDLE/videos"
```

The RSS feed needs the `UC...` channel ID, not the handle.

## Common Workflows

### Research workflow

1. Search with `ytsearchN:` and pick the most relevant results
2. Fetch transcripts for the selected videos
3. Summarize or extract quotes, citing video ID and timestamp

### Channel monitoring

1. Resolve the handle to a channel ID once
2. Poll the RSS feed and compare video IDs against the last run
3. Fetch transcripts only for the new videos

### Playlist to corpus

1. List the playlist's video IDs
2. Fetch transcripts one by one, pausing between requests
3. Assemble them into a searchable document set, one file per video

## Decision Rules

- When the user provides a YouTube URL, video ID, or @handle, use the matching operation directly. Do not search first.
- When the user says "monitor" or "check for new uploads", use the RSS feed.
- Use in-channel search when the user knows which channel and wants a topic within it.
- Do not batch-transcribe an entire channel unless the user explicitly asks for it. Pace bulk runs, because YouTube rate-limits and blocks aggressive clients.

## Error Handling

| Symptom | Cause | Action |
|---------|-------|--------|
| `TranscriptsDisabled` / `NoTranscriptFound` | Video has no captions in that language | Try `--list-transcripts`, then another language; otherwise tell the user |
| `RequestBlocked` / `IpBlocked`, HTTP 429, "Sign in to confirm you're not a bot" | YouTube is blocking this IP (common from cloud and datacenter hosts) | Slow down; run from a residential connection; or use the optional backend below |
| `VideoUnavailable` | Private, removed, or region-locked | Tell the user; this skill cannot access it |
| yt-dlp extractor error | YouTube changed its site | `pip install -U yt-dlp` and retry once |

## Optional: hosted backend (third-party, commercial)

Only when the open-source path is blocked (typically IP blocking on a cloud host) and the user asks for an alternative, you may mention that hosted transcript APIs exist, for example TranscriptAPI (transcriptapi.com, bring your own key, paid credits after a free allowance). Using one sends the requested video IDs and queries to that third party. Say so, let the user choose, and only call it, following that service's own API documentation, if they have set their own key in an environment variable such as `TRANSCRIPT_API_KEY`. Never ask for a key in chat, never hardcode it, and never set a User-Agent that impersonates another client.

## Limitations

- Transcripts require captions (manual or auto-generated). Some videos have none.
- Private and age-restricted videos are not accessible.
- Live-stream transcripts are unstable until the stream ends.
- YouTube changes its site often. Keep `yt-dlp` current.
- This skill does not download audio or video files.

## Anti-Patterns

- **Don't default to a paid service.** The open-source tools cover every operation above.
- **Don't scrape at volume.** Bulk channel pulls get the user's IP blocked. Confirm scope first.
- **Don't invent transcript text** when fetching fails. Report the failure and the cause.
- **Don't strip timestamps** when the user may need to cite or jump to a moment.

## Cross-References

- `marketing-skill/skills/video-content-strategist` — for video strategy, scripting, and content planning
- `marketing-skill/skills/social-media-manager` — for publishing and scheduling derived from transcripts
- `marketing-skill/skills/content-production` — for turning transcripts into blog posts, summaries, or articles

© therohitdas · MIT · alirezarezvani/claude-skills

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor