mcpField
S
subtitles

subtitles

github.com/zeropointrepoProductivity1.1k817 installsUpdated 5w ago
Repository

About subtitles

subtitles is an agent skill for fetching YouTube subtitles through TranscriptAPI.com. It supports clean text for reading or translation, and structured segments with timing for synchronized use.

Key features

  1. 01Fetch subtitles by URL or video ID
  2. 02Return structured timed segments
  3. 03Omit timestamps for clean text
  4. 04Include video metadata

Use cases

  1. 01Read subtitles without timestamp clutter
  2. 02Prepare subtitle text for translation
  3. 03Follow timed subtitle segments while watching
  4. 04Use subtitle timing for language study

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/zeropointrepo/youtube-skills --skill subtitles

After installing, type/subtitlesin Claude Code to confirm it loaded.

Bundled filesreferences/auth-setup.mdreferences/curl-examples.md

Details

From the project README

Subtitles

Fetch YouTube video subtitles via TranscriptAPI.com.

Setup

If $TRANSCRIPT_API_KEY is not set, read references/auth-setup.md and follow the instructions there to get and store the key.

Required Headers

Every request needs two headers:

  • Authorization: Bearer $TRANSCRIPT_API_KEY
  • User-Agent: your agent's name and version if known (e.g. HermesAgent/0.11.0, ClaudeCode/1.0). Version is optional — agent name alone is fine. Do not omit this header or send a bare default — Cloudflare will return a 403 (error code 1010) and block the request.

GET /api/v2/youtube/transcript

GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_URL&format=text&include_timestamp=false&send_metadata=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0
ParamValuesUse case
video_urlYouTube URL or video IDRequired
formatjson, textjson for sync'd subs with timing
include_timestamptrue, falsefalse for clean text for reading/translation
send_metadatatrue, falseInclude title, channel, description

For language learning — clean text without timestamps:

GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=text&include_timestamp=false
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

For translation — structured segments:

GET https://transcriptapi.com/api/v2/youtube/transcript?video_url=VIDEO_ID&format=json&include_timestamp=true
Authorization: Bearer $TRANSCRIPT_API_KEY
User-Agent: YourAgent/1.0

Response (format=json):

{
  "video_id": "dQw4w9WgXcQ",
  "language": "en",
  "transcript": [
    { "text": "We're no strangers to love", "start": 18.0, "duration": 3.5 }
  ]
}

Response (format=text, include_timestamp=false):

{
  "video_id": "dQw4w9WgXcQ",
  "language": "en",
  "transcript": "We're no strangers to love\nYou know the rules and so do I..."
}

Tips

  • Many videos have auto-generated subtitles in multiple languages.
  • Use format=json to get timing for each line (great for sync'd reading).
  • Use include_timestamp=false for clean text suitable for translation apps.

Errors

CodeMeaningAction
401Bad API keyCheck key
402No creditstranscriptapi.com/billing
403/1010Cloudflare blockAdd or fix User-Agent header
404No subtitlesNo subtitles available
408TimeoutRetry once after 2s

1 credit per request. Free tier: 100 credits, 300 req/min.

Copy-paste examples

Every request in this file as a ready-to-run one-liner: references/curl-examples.md

Comments

Markdown supported