youtube-api
YouTube API access without the official API quota hassle — transcripts, search, channels, playlists.
Installation
npx clawhub@latest install youtube-apiView the full skill documentation and source below.
Documentation
YouTube API
YouTube data access via [TranscriptAPI.com]() — no Google API quota needed.
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, generate a secure password.
node ./scripts/tapi-auth.js register --email USER_EMAIL --password SECURE_PASS --json
→ OTP sent to email. Ask user: _"Check your email for a 6-digit verification code."_
⚠️ SAVE THE PASSWORD — you need it again in Step 2!
Step 2 — Verify: Once user provides the OTP (use SAME password from Step 1):
node ./scripts/tapi-auth.js verify --email USER_EMAIL --password SECURE_PASS --otp CODE --json
→ Returns api_key (starts with sk_).
Step 3 — Save: Store the key (auto-configures agent + shell):
node ./scripts/tapi-auth.js save-key --key API_KEY --json
→ Ready to use. Agent runtime picks up the key automatically.
Manual option: [transcriptapi.com/signup]() → Dashboard → API Keys.
Endpoint Reference
All endpoints:
| Endpoint | Method | Cost |
| -------------------------------------- | ------ | -------- |
| /transcript?video_url=ID | GET | 1 |
| /search?q=QUERY&type=video | GET | 1 |
| /channel/resolve?input=@handle | GET | **free** |
| /channel/latest?channel_id=UC_ID | GET | **free** |
| /channel/videos?channel_id=UC_ID | GET | 1/page |
| /channel/search?channel_id=UC_ID&q=Q | GET | 1 |
| /playlist/videos?playlist_id=PL_ID | GET | 1/page |
## Quick Examples
**Search videos:**
__CODE_BLOCK_3__
**Get transcript:**
__CODE_BLOCK_4__
**Resolve channel handle (free):**
__CODE_BLOCK_5__
**Latest videos (free):**
__CODE_BLOCK_6__
**Browse channel uploads (paginated):**
__CODE_BLOCK_7__
**Browse playlist (paginated):**
__CODE_BLOCK_8__
## Parameter Validation
| Field | Rule |
| -------------- | ------------------------------------------- |
| channel_id | ^UC[a-zA-Z0-9_-]{22}$ (24 chars total) |
| playlist_id | starts with PL, UU, LL, FL, or OL |
| q (search) | 1-200 chars |
| limit | 1-50 |
| continuation` | non-empty string |
Why Not Google's API?
| Google YouTube Data API | TranscriptAPI |
| Quota | 10,000 units/day (100 searches) | Credit-based, no daily cap |
| Setup | OAuth + API key + project | Single API key |
| Transcripts | Not available | Core feature |
| Pricing | $0.0015/unit overage | $5/1000 credits |
Errors
| Code | Meaning | Action |
| 401 | Bad API key | Check key |
| 402 | No credits | transcriptapi.com/billing |
| 404 | Not found | Resource doesn't exist |
| 408 | Timeout/retryable | Retry once after 2s |
| 422 | Validation error | Check param format |
| 429 | Rate limited | Wait, respect Retry-After |