Youtube Data

v1.4.1

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.

1· 3.2k·4 current·4 all-time
byRohit Das@therohitdas
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description (YouTube data via TranscriptAPI) matches the required items: TRANSCRIPT_API_KEY, a node binary, and the OpenClaw config path. None of the required env vars or binaries appear unrelated to the described functionality.
Instruction Scope
SKILL.md instructs only: register (email), verify (OTP), and run the provided node script which calls transcriptapi.com and saves the returned API key to ~/.openclaw/openclaw.json. The instructions do not ask the agent to read unrelated files or exfiltrate other credentials.
Install Mechanism
No install spec; the skill is instruction + a small CLI script. There are no download/install steps or external archives. The included script is executed locally via node and makes network requests to transcriptapi.com.
Credentials
Only TRANSCRIPT_API_KEY is required and declared as the primary credential. No unrelated secrets, multiple credentials, or unexplained environment access are requested.
Persistence & Privilege
always:false and agent invocation allowed by default. The script writes only to the declared config path (~/.openclaw/openclaw.json) and backs it up; it does not request system-wide privilege changes or modify other skills' configs.
Assessment
This skill appears internally consistent: it needs node and a TranscriptAPI key and will contact transcriptapi.com to register/verify and retrieve an API key, which it saves to ~/.openclaw/openclaw.json (backed up first). Before installing, consider: (1) Do you trust transcriptapi.com and its privacy policy? the service is acting as an alternative to Google's API and may scrape or aggregate data differently; (2) The CLI will send your email to the service and will receive an API key — avoid using a sensitive or corporate email if you're unsure; (3) The script will write to your OpenClaw config file — review ~/.openclaw/openclaw.json after use to ensure no unexpected data was added; (4) Network activity is limited to transcriptapi.com endpoints according to the code — if you need stricter isolation, review the script and run in a controlled environment first. Overall, nothing in the package looks disproportionate to the stated purpose.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

📊 Clawdis
Binsnode
EnvTRANSCRIPT_API_KEY
Config~/.openclaw/openclaw.json
Primary envTRANSCRIPT_API_KEY
latestvk976jps7zn0a06rd01nwjnd3a980zde2
3.2kdownloads
1stars
12versions
Updated 1mo ago
v1.4.1
MIT-0

YouTube 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 ~/.openclaw/openclaw.json. See File Writes below for details. Existing file is backed up before modification.

Manual option: 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 — 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

EndpointCostData returned
transcript1Full transcript + metadata
search1Video/channel details
channel/resolvefreeChannel ID mapping
channel/latestfree15 videos + exact stats
channel/videos1/page100 videos per page
channel/search1Videos matching query
playlist/videos1/page100 videos per page

Errors

CodeAction
402No credits — transcriptapi.com/billing
404Not found
408Timeout — retry once
422Invalid param format

Free tier: 100 credits, 300 req/min.

Comments

Loading comments...