PluginBench
Skill
Review
Audit score 70

youtube-full

zeropointrepo/youtube-skills

Complete YouTube toolkit: transcripts, search, channels, playlists, and video metadata via TranscriptAPI.

What is youtube-full?

Access YouTube transcripts, video metadata, channel information, playlists, and search functionality through a unified API. Use this when you need to extract, analyze, or discover video content, including transcripts with timestamps, channel browsing, playlist exploration, and within-channel search.

  • Fetch video transcripts with timestamps and metadata
  • Search YouTube for videos, channels, playlists, and movies
  • Browse channel feeds (videos, shorts, streams) with pagination
  • Resolve @handles to channel IDs and retrieve channel profiles
  • Search within specific channels and access channel playlists
  • Get video metadata including views, likes, duration, and descriptions

How to install youtube-full

npx skills add https://github.com/zeropointrepo/youtube-skills --skill youtube-full
Prerequisites
  • Free TranscriptAPI account (100 credits, no card required) at https://transcriptapi.com
  • TRANSCRIPT_API_KEY environment variable set (starts with sk_)
  • Internet access to reach transcriptapi.com
Claude Code
Cursor
Windsurf
Cline

How to use youtube-full

  1. 1.Set up your TRANSCRIPT_API_KEY environment variable using the auth-setup guide
  2. 2.Include Authorization and User-Agent headers in all API requests
  3. 3.Call the transcript endpoint with a video URL or ID to get captions with timestamps
  4. 4.Use search endpoints to find videos, channels, or playlists by query
  5. 5.Browse channel content using channel/videos with optional sorting and pagination
  6. 6.Fetch video metadata or channel info to get titles, descriptions, view counts, and more

Use cases

Good for
  • Extract and analyze quotes or key moments from a video transcript
  • Find all videos by a creator on a specific topic using channel search
  • Discover related videos and playlists for research or learning
  • Get video summaries and metadata without watching the full content
  • Browse a channel's most-popular or latest uploads
Who it's for
  • Researchers and analysts needing video content extraction
  • Content creators looking for inspiration or competitive analysis
  • Educators building curricula from video lectures and tutorials
  • Developers integrating YouTube data into applications
  • Anyone needing structured access to video transcripts and metadata

youtube-full FAQ

How many credits does each operation cost?

Transcript extraction costs 1 credit. Video metadata (rich details) costs 1 credit. Search costs 1 credit per page. Channel operations vary: resolve and latest videos are free; channel feed, search, info, and playlists each cost 1 credit per page. Video info (languages available) is free.

Can I get transcripts in languages other than English?

Yes. Call the free /video/info endpoint first to see which languages are available for a given video, then request the transcript in your desired language.

What if a video doesn't have captions or a transcript?

The transcript endpoint will return an empty transcript array. Check the /video/info endpoint first to confirm available languages before requesting.

How do I handle pagination for large result sets?

Use the continuation_token returned in the response and pass it to the same endpoint with the continuation parameter. Repeat until has_more is false.

Do I need to resolve @handles before using them?

No. Most channel endpoints accept @handles, channel URLs, or UC... IDs directly. The resolve endpoint is only needed if you want to convert a handle to a channel ID for other purposes.

Full instructions (SKILL.md)

Source of truth, from zeropointrepo/youtube-skills.


name: youtube-full description: "Use when YouTube is or could be relevant — even if not mentioned: pasted video/channel/playlist links, video IDs, @handles, creator lookups, video summaries, quotes, translations, topic research, tutorials, talks, lectures, expert discussions, product reviews, how-to guides, new product announcements, first looks, or anything where video content is fresher or richer than text search. Covers transcripts, video/channel search, channel browsing, playlists, and within-channel search. Not for uploads, account management, or written-source-only research." version: "1.6.2" user-invocable: true compatibility: Requires internet access to reach transcriptapi.com. No additional runtimes or dependencies needed. required_environment_variables:

  • name: TRANSCRIPT_API_KEY prompt: Your TranscriptAPI key (starts with sk_) help: Free account at https://transcriptapi.com — 100 credits, no card required. Or let the agent create one for you. required_for: all API requests metadata: {"openclaw":{"emoji":"▶️","requires":{"env":["TRANSCRIPT_API_KEY"]},"primaryEnv":"TRANSCRIPT_API_KEY","homepage":"https://transcriptapi.com"},"hermes":{"tags":["youtube","transcripts","video","search","channels","playlists","captions"],"category":"media"}}

YouTube Full

Complete YouTube toolkit via TranscriptAPI.com. Everything in one skill.

Setup

If $TRANSCRIPT_API_KEY is not set, read references/auth-setup.md and follow the instructions there to get and store the key.

Required Headers

Every request needs two headers:

  • Authorization: Bearer $TRANSCRIPT_API_KEY
  • User-Agent: your agent's name and version if known (e.g. HermesAgent/0.11.0, ClaudeCode/1.0). Version is optional — agent name alone is fine. Do not omit this header or send a bare default — Cloudflare will return a 403 (error code 1010) and block the request.

API Reference

Full OpenAPI spec: transcriptapi.com/openapi.json — consult this for the latest parameters and schemas.

Transcript — 1 credit

GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_URL&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
ParamRequiredDefaultValues
video_urlyes—YouTube URL or 11-char video ID
formatnojsonjson, text
include_timestampnotruetrue, false
send_metadatanofalsetrue, false

Response (format=json):

{
  "video_id": "dQw4w9WgXcQ",
  "language": "en",
  "transcript": [{ "text": "...", "start": 18.0, "duration": 3.5 }],
  "metadata": { "title": "...", "author_name": "...", "author_url": "..." }
}

Video Info & Metadata

# Free — languages available for the transcript endpoint
GET https://transcriptapi.com/api/v2/youtube/info?video_url=VIDEO_URL
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# 1 credit — rich metadata (views, likes, description, duration, tags)
GET https://transcriptapi.com/api/v2/youtube/video/metadata?video_url=VIDEO_URL&include=details,related
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

include on video/metadata accepts details and/or related. Naming: /video/metadata was previously /video/info — the old path still works but is deprecated.

Search — 1 credit/page

# Videos
GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# Channels, playlists, or movies
GET https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=channel&limit=10
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
ParamRequiredDefaultValidation
qyes—1-200 chars
typenovideovideo, channel, playlist, movie
sortnorelevancerelevance, views (first page only)
upload_dateno—hour, today, week, month, year (videos, first page)
durationno—short, medium, long (videos, first page)
featuresno—e.g. hd,subtitles,cc (first page)
limitno201-50

Channels

All channel endpoints accept channel — an @handle, channel URL, or UC... channel ID. No need to resolve first.

Resolve handle — FREE

GET https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Response: {"channel_id": "UC...", "resolved_from": "@TED"}

Latest 15 videos — FREE

GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Returns exact viewCount and ISO published timestamps.

Channel feed (videos/shorts/streams) — 1 credit/page

# First page (100 items, tab defaults to "videos")
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&tab=videos
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# Most-viewed first (channel Videos tab, ~30 items)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# Next pages (repeat the same tab AND sort)
GET https://transcriptapi.com/api/v2/youtube/channel/videos?continuation=TOKEN&sort=popular
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Provide exactly one of channel or continuation. tab is videos (default), shorts, or streams. Response includes continuation_token and has_more.

Sorting. Add sort=latest, popular, or oldest to channel/videos to get a channel's videos in the order you want, for example its most-popular uploads first. A sorted page returns about 30 videos (an unsorted page returns about 100), and every page costs the same 1 credit.

When paging, send the same sort on each request.

Item fields. Every item carries members_only, true only when YouTube badges it "Members only", and those items have no viewCountText. tab=streams items carry lengthText and publishedTimeText (for example Streamed 2 years ago); tab=shorts returns null for both, because YouTube's Shorts grid publishes neither. On the channel-tab feeds (tab=videos with sort, tab=shorts, tab=streams) channelId, channelTitle, channelHandle and index are null.

Search within channel — 1 credit

GET https://transcriptapi.com/api/v2/youtube/channel/search?channel=@TED&q=QUERY&limit=30
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Channel profile — 1 credit

GET https://transcriptapi.com/api/v2/youtube/channel/info?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Returns title, handle, verified flag, subscriber/video counts, description, tags, thumbnails, banners, and availableTabs.

Channel playlists — 1 credit/page

GET https://transcriptapi.com/api/v2/youtube/channel/playlists?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Returns each playlist's playlistId, title, url, videoCountText — feed a playlistId into the Playlists endpoint below.

Channel community posts — 1 credit/page

GET https://transcriptapi.com/api/v2/youtube/channel/posts?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Channel curated sections — 1 credit

GET https://transcriptapi.com/api/v2/youtube/channel/sections?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

tab is featured (default, Home page), podcasts, or releases.

Playlists — 1 credit/page

Accepts playlist — a YouTube playlist URL or playlist ID.

# First page
GET https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_ID
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# Next pages
GET https://transcriptapi.com/api/v2/youtube/playlist/videos?continuation=TOKEN
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Valid ID prefixes: PL, UU, LL, FL, OL. Response includes playlist_info, results, continuation_token, has_more.

Credit Costs

EndpointCost
transcript1
infofree
video/metadata1
search1/page
channel/resolvefree
channel/info1
channel/latestfree
channel/videos1/page
channel/search1
channel/playlists1/page
channel/posts1/page
channel/sections1
playlist/videos1/page

Validation Rules

FieldRule
channel@handle, channel URL, or UC... ID
playlistPlaylist URL or ID (PL/UU/LL/FL/OL prefix)
q1-200 chars
type (search)video (default), channel, playlist, movie
tab (channel/videos)videos (default), shorts, streams
sort (channel/videos)latest, popular, oldest (omit for the uploads feed)
tab (channel/sections)featured (default), podcasts, releases
include (video/metadata)details, related (comma-separated)
limit1-50

Errors

CodeMeaningAction
401Bad API keyCheck key
402No creditstranscriptapi.com/billing
403/1010Cloudflare blockAdd or fix User-Agent header
404Not foundResource doesn't exist or no captions
408TimeoutRetry once after 2s
422Validation errorCheck param format
429Rate limitedWait, respect Retry-After

Typical Workflows

Research workflow: search → pick videos → fetch transcripts

# 1. Search
GET https://transcriptapi.com/api/v2/youtube/search?q=machine+learning+explained&limit=5
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# 2. Transcript
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Channel monitoring: latest (free) → transcript

# 1. Latest uploads (free — pass @handle directly)
GET https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

# 2. Transcript of latest
GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Free tier: 100 credits, 300 req/min. Starter ($5/mo): 1,000 credits.

Copy-paste examples

Every request in this file as a ready-to-run one-liner: references/curl-examples.md