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.
74
93%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
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 (MIT). Original skill authored by ZeroPointRepo contributors. Adapted for the claude-skills format, reworked to be open-source first.
pip install yt-dlp youtube-transcript-apiBoth 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.
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/).
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 existIn 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:
yt-dlp --skip-download --write-subs --write-auto-subs --sub-langs "en.*" \
--convert-subs srt -o "%(id)s.%(ext)s" "URL"yt-dlp -J --skip-download "URL" # title, channel, upload_date, duration, description, chaptersyt-dlp "ytsearch20:QUERY" --flat-playlist --print "%(id)s | %(title)s | %(channel)s"Follow with transcript calls on the results the user picks.
The public RSS feed returns the 15 most recent uploads, with no tool needed:
https://www.youtube.com/feeds/videos.xml?channel_id=UC...yt-dlp --flat-playlist --print "%(id)s | %(title)s" "https://www.youtube.com/@HANDLE/videos"Add -I 1:50 to cap the count.
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.
yt-dlp --flat-playlist --print "%(playlist_index)s | %(id)s | %(title)s" "PLAYLIST_URL"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.
ytsearchN: and pick the most relevant results| 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 |
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.
yt-dlp current.marketing-skill/skills/video-content-strategist — for video strategy, scripting, and content planningmarketing-skill/skills/social-media-manager — for publishing and scheduling derived from transcriptsmarketing-skill/skills/content-production — for turning transcripts into blog posts, summaries, or articlesalirezarezvani/claude-skills
27cfcd0
Also appears in
last in sync Aug 28, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.