Media & StreamingDocumentedScanned

youtube-playlist

Browse YouTube playlists and fetch video transcripts.

Share:

Installation

npx clawhub@latest install youtube-playlist

View the full skill documentation and source below.

Documentation

YouTube Playlist

Browse playlists and fetch transcripts via [TranscriptAPI.com]().

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.

GET /api/v2/youtube/playlist/videos — 1 credit/page

Paginated playlist video listing (100 per page).

# First page
curl -s "" \
  -H "Authorization: Bearer $TRANSCRIPT_API_KEY"

# Next pages
curl -s "" \
  -H "Authorization: Bearer $TRANSCRIPT_API_KEY"
ParamRequiredValidation
playlist_idconditionalstarts with PL, UU, LL, FL, or OL
continuationconditionalnon-empty string
Provide exactly one of playlist_id or continuation, not both.

Accepted playlist ID prefixes:

  • PL — user-created playlists
  • UU — channel uploads playlist
  • LL — liked videos
  • FL — favorites
  • OL — other system playlists
Response:
{
  "results": [
    {
      "videoId": "abc123xyz00",
      "title": "Playlist Video Title",
      "channelId": "UCuAXFkgsw1L7xaCfnd5JJOw",
      "channelTitle": "Channel Name",
      "channelHandle": "@handle",
      "lengthText": "10:05",
      "viewCountText": "1.5M views",
      "thumbnails": [{ "url": "...", "width": 120, "height": 90 }],
      "index": "0"
    }
  ],
  "playlist_info": {
    "title": "Best Tech of 2025",
    "numVideos": "47",
    "description": "My picks for the best tech this year",
    "ownerName": "MKBHD",
    "viewCount": "5000000"
  },
  "continuation_token": "4qmFsgKlARIYVVV1...",
  "has_more": true
}

Pagination flow:

  • First request: ?playlist_id=PLxxx — returns first 100 videos + continuation_token

  • Next request: ?continuation=TOKEN — returns next 100 + new token

  • Repeat until has_more: false or continuation_token: null
  • Workflow: Playlist → Transcripts

    # 1. List playlist videos
    curl -s "" \
      -H "Authorization: Bearer $TRANSCRIPT_API_KEY"
    
    # 2. Get transcript from a video in the playlist
    curl -s "
    ?video_url=VIDEO_ID&format=text&include_timestamp=true&send_metadata=true" \
      -H "Authorization: Bearer $TRANSCRIPT_API_KEY"

    Extract playlist ID from URL

    From the playlist ID is PLrAXtmErZgOeiKm4sgNOknGvNjby9efdf`.

    Errors

    CodeMeaningAction
    400Both or neither paramsProvide exactly one of playlist_id or continuation
    402No creditstranscriptapi.com/billing
    404Playlist not foundCheck if playlist is public
    408TimeoutRetry once
    422Invalid playlist_id formatMust start with PL/UU/LL/FL/OL
    1 credit per page. Free tier: 100 credits, 300 req/min.