youtube-data
Scannednpx machina-cli add skill ZeroPointRepo/youtube-skills/youtube-data --openclawYouTube Data
YouTube data access via TranscriptAPI.com — lightweight alternative to Google's YouTube Data API.
Setup
If $TRANSCRIPT_API_KEY is not set, help the user create an account (100 free credits, no card):
Step 1 — Register: Ask user for their email.
node ./scripts/tapi-auth.js register --email USER_EMAIL
→ OTP sent to email. Ask user: "Check your email for a 6-digit verification code."
Step 2 — Verify: Once user provides the OTP:
node ./scripts/tapi-auth.js verify --token TOKEN_FROM_STEP_1 --otp CODE
API key saved to your shell profile and agent config. Ready to use.
Manual option: transcriptapi.com/signup → Dashboard → API Keys.
API Reference
Full OpenAPI spec: transcriptapi.com/openapi.json — consult this for the latest parameters and schemas.
Video Data (transcript + metadata) — 1 credit
curl -s "https://transcriptapi.com/api/v2/youtube/transcript\
?video_url=VIDEO_URL&format=json&include_timestamp=true&send_metadata=true" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Response:
{
"video_id": "dQw4w9WgXcQ",
"language": "en",
"transcript": [
{ "text": "We're no strangers to love", "start": 18.0, "duration": 3.5 }
],
"metadata": {
"title": "Rick Astley - Never Gonna Give You Up",
"author_name": "Rick Astley",
"author_url": "https://www.youtube.com/@RickAstley",
"thumbnail_url": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg"
}
}
Search Data — 1 credit
curl -s "https://transcriptapi.com/api/v2/youtube/search?q=QUERY&type=video&limit=20" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Video result fields: videoId, title, channelId, channelTitle, channelHandle, channelVerified, lengthText, viewCountText, publishedTimeText, hasCaptions, thumbnails
Channel result fields (type=channel): channelId, title, handle, url, description, subscriberCount, verified, rssUrl, thumbnails
Channel Data
Channel endpoints accept channel — an @handle, channel URL, or UC... ID. No need to resolve first.
Resolve handle to ID (free):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/resolve?input=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Returns: {"channel_id": "UCsT0YIqwnpJCM-mx7-gSA4Q", "resolved_from": "@TED"}
Latest 15 videos with exact stats (free):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/latest?channel=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Returns: channel info, results array with videoId, title, published (ISO), viewCount (exact number), description, thumbnail
All channel videos (paginated, 1 credit/page):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/videos?channel=@NASA" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Returns 100 videos per page + continuation_token for pagination.
Search within channel (1 credit):
curl -s "https://transcriptapi.com/api/v2/youtube/channel/search\
?channel=@TED&q=QUERY&limit=30" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Playlist Data — 1 credit/page
Accepts playlist — a YouTube playlist URL or playlist ID.
curl -s "https://transcriptapi.com/api/v2/youtube/playlist/videos?playlist=PL_ID" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Returns: results (videos), playlist_info (title, numVideos, ownerName, viewCount), continuation_token, has_more
Credit Costs
| Endpoint | Cost | Data returned |
|---|---|---|
| transcript | 1 | Full transcript + metadata |
| search | 1 | Video/channel details |
| channel/resolve | free | Channel ID mapping |
| channel/latest | free | 15 videos + exact stats |
| channel/videos | 1/page | 100 videos per page |
| channel/search | 1 | Videos matching query |
| playlist/videos | 1/page | 100 videos per page |
Errors
| Code | Action |
|---|---|
| 402 | No credits — transcriptapi.com/billing |
| 404 | Not found |
| 408 | Timeout — retry once |
| 422 | Invalid param format |
Free tier: 100 credits, 300 req/min.
Source
git clone https://github.com/ZeroPointRepo/youtube-skills/blob/main/skills/youtube-data/SKILL.mdView on GitHub Overview
You can fetch YouTube transcripts, video metadata, channel info, and playlists via TranscriptAPI.com. It’s a lightweight alternative to Google’s YouTube Data API that avoids OAuth setup and daily quotas while returning structured data.
How This Skill Works
Authenticate with an API key from TranscriptAPI (register and verify OTP). Then call endpoints like /api/v2/youtube/transcript, /youtube/search, /youtube/channel/*, or /youtube/playlist/videos to obtain JSON data. Each data type is priced by credits (e.g., 1 credit per video data call or per page of results).
When to Use It
- You need transcripts and metadata for a specific YouTube video (e.g., video_id or video_url).
- You want search results across YouTube videos or channels without configuring Google API credentials.
- You need to resolve a channel handle to an ID and fetch latest videos from that channel.
- You want all videos from a channel or channel-wide search results with pagination.
- You want to retrieve all videos in a playlist by playlist URL or ID.
Quick Start
- Step 1: Register for an API key (email) using the provided script or sign up at transcriptapi.com/signup.
- Step 2: Verify your OTP; your API key is saved to your shell profile and agent config.
- Step 3: Make your first request, e.g. curl -s "https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_URL&format=json&include_timestamp=true&send_metadata=true" -H "Authorization: Bearer $TRANSCRIPT_API_KEY"
Best Practices
- Register for an API key first (email, OTP verification) to enable calls.
- Use the specific endpoints (transcript, search, channel, playlist) to match your data needs.
- Cache frequent results to minimize credit usage and improve latency.
- Handle pagination and continuation tokens when listing channel or playlist videos.
- Validate response fields against your schema (e.g., video_id, title, published, thumbnails) to extract only what you need.
Example Use Cases
- Fetch transcript and metadata for the Rick Astley video (dQw4w9WgXcQ) to power a lyric-search feature.
- Search for 'AI tutorials' and display video titles, thumbnails, and view counts in a dashboard.
- Resolve the @TED channel handle to its ID and pull the latest 15 videos for a feed.
- Get all NASA channel videos (paginated) to build a historical YouTube performance report.
- Retrieve videos from a playlist (PL_ID) to assemble a playlist curation page.