v1.4.1

Youtube Data

therohitdas therohitdas ← All skills

Access YouTube video data — transcripts, metadata, channel info, search, and playlists. A lightweight alternative to Google's YouTube Data API with no quota limits. Use when the user needs structured data from YouTube videos, channels, or playlists without dealing with Google API setup, OAuth, or daily quotas.

Downloads
1.3k
Stars
0
Versions
12
Updated
2026-02-24

Install

npx clawhub@latest install youtube-data

Documentation

YouTube Data

YouTube data access via [TranscriptAPI.com](https://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 ~/.openclaw/openclaw.json. See File Writes below for details. Existing file is backed up before modification.

Manual option: [transcriptapi.com/signup](https://transcriptapi.com/signup) → Dashboard → API Keys.

File Writes

The verify and save-key commands save the API key to ~/.openclaw/openclaw.json (sets skills.entries.transcriptapi.apiKey and enabled: true). Existing file is backed up to ~/.openclaw/openclaw.json.bak before modification.

To use the API key in terminal/CLI outside the agent, add to your shell profile manually:

export TRANSCRIPT_API_KEY=<your-key>

API Reference

Full OpenAPI spec: [transcriptapi.com/openapi.json](https://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.

Launch an agent with Youtube Data on Termo.