YouTube Transcripts

io.github.fbetteoPublished by GitHub account fbetteov1.0.0Updated Oct 25, 2026

Transcripts from YouTube videos, whole channels and playlists for AI agents, with bulk ZIP export.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingMedia & Design

Overview

AI-generated overview

A hosted MCP server that fetches YouTube transcripts for single videos, channels and playlists, with bulk ZIP export.

What you can do
Fetch the transcript of a single YouTube video by URL or ID, optionally with timestamps and channel metadata for a channel before starting a job. List a channel's videos with duration metadata in the order channel jobs use, and preview how many videos a job would download. Start asynchronous jobs that download transcripts for a whole channel or playlist. Poll job status, get a ZIP download URL when a job is ready, and cancel a job with a refund for unprocessed videos.
When to use it
Useful when an assistant needs the spoken content of YouTube videos as text context, for example to summarize or search a single video, or to collect transcripts across a channel or playlist in bulk.
Requirements
A remote endpoint at the provider's hosted API, reachable over the network. A bearer API key from the provider's API access page, sent in the Authorization header. The README also documents a local npm CLI and stdio server that read the key from the YOUTUBE_TRANSCRIPT_API_KEY environment variable.
Before you install
Requires a paid-style API key sent in the Authorization header; keep it secret. Bulk channel and playlist jobs consume account credits, and cancelling refunds only unprocessed videos. Jobs write data and produce ZIP downloads, and video URLs and channel or playlist identifiers are sent to the third-party provider.

Installation

In SourceWeft

  1. Open YouTube Transcripts in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.fbetteo%2Fyoutube-transcripts/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "youtube-transcripts": {
      "type": "http",
      "url": "https://api.youtubetranscripts.fbetteo.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

YouTube Transcript Agent

Turn any YouTube video, playlist, or channel into agent-ready transcript context.

This package provides:

  • ytx, a CLI for transcripts, channel jobs, playlist jobs, polling, and ZIP downloads
  • a local stdio MCP server for coding agents and desktop assistants
  • docs for using the hosted /mcp endpoint and Developer API

Install

Run without installing:

bash
npx youtube-transcript-agent --help

Or install globally:

bash
npm install -g youtube-transcript-agentytx --help

Authentication

The CLI reads auth in this order:

  1. YOUTUBE_TRANSCRIPT_API_KEY
  2. local config created by ytx auth set-key

Set an API key:

bash
npx youtube-transcript-agent auth set-key <api_key>

Or use environment variables:

bash
export YOUTUBE_TRANSCRIPT_API_KEY=<api_key>

PowerShell:

powershell
$env:YOUTUBE_TRANSCRIPT_API_KEY="<api_key>"

CLI Usage

Get account credits:

bash
npx youtube-transcript-agent credits

Fetch one transcript:

bash
npx youtube-transcript-agent transcript FOp280ZAxhg --timestamps

Download channel transcripts:

bash
npx youtube-transcript-agent channel download "@mkbhd" --max 25 --wait --output channel.zip

Download playlist transcripts:

bash
npx youtube-transcript-agent playlist download <playlist_url_or_id> --max 25 --wait --output playlist.zip

Poll a job:

bash
npx youtube-transcript-agent jobs status <job_id>

Download a completed job:

bash
npx youtube-transcript-agent jobs download <job_id> --output transcripts.zip

Local MCP

Start the local stdio MCP server:

bash
npx youtube-transcript-agent mcp

This command waits for JSON-RPC messages on stdin. Agent clients should launch it with:

text
Command: npxArgs: youtube-transcript-agent mcpEnv:  YOUTUBE_TRANSCRIPT_API_KEY=<api_key>

Available MCP tools:

  • get_transcript
  • get_channel_info
  • list_channel_videos
  • start_channel_job
  • start_playlist_job
  • get_job_status
  • get_download_url

Manual smoke test:

bash
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | npx youtube-transcript-agent mcp

Hosted MCP

If your API server is deployed with hosted MCP enabled:

text
Endpoint: https://api.youtubetranscripts.fbetteo.com/mcpAuth: Authorization: Bearer <api_key>

List tools:

bash
curl -X POST "https://api.youtubetranscripts.fbetteo.com/mcp" \  -H "Content-Type: application/json" \  --data-raw '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Call a tool:

bash
curl -X POST "https://api.youtubetranscripts.fbetteo.com/mcp" \  -H "Authorization: Bearer <api_key>" \  -H "Content-Type: application/json" \  --data-raw '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_transcript","arguments":{"video_url":"FOp280ZAxhg"}}}'

Agent Skill

The repo includes an installable skill template at:

text
agent-skill/skill.md

For distribution, publish that file as the root skill.md in a separate public skill repo.

Troubleshooting

Advanced API Host Override

Most users do not need to set an API URL. The package defaults to the hosted production API.

Only set a custom base URL for local development, staging, self-hosted deployments, or debugging:

bash
export YOUTUBE_TRANSCRIPT_API_BASE_URL=http://127.0.0.1:8000

Or save it in local CLI config:

bash
npx youtube-transcript-agent auth set-key <api_key> --base-url http://127.0.0.1:8000

Troubleshooting

If fetch failed appears and the API logs show nothing, the CLI is not reaching the API host. Check:

bash
echo "$YOUTUBE_TRANSCRIPT_API_BASE_URL"echo "$API_BASE_URL"cat ~/.youtube-transcript-agent/config.json 2>/dev/null

The CLI base URL priority is:

  1. YOUTUBE_TRANSCRIPT_API_BASE_URL
  2. API_BASE_URL
  3. saved local config
  4. package default

On Windows PowerShell, quote channel handles:

powershell
node cli/dist/cli.js channel download "@mkbhd" --max 2 --wait

PowerShell aliases curl to Invoke-WebRequest; use curl.exe or Invoke-RestMethod.

Source: README.MD at commit 4be56f6

Tools

8

get_transcript

Return the transcript for a single YouTube video URL or ID.

Parametersvideo_urlrequiredinclude_timestamps

get_channel_info

Return metadata for a YouTube channel before starting a job.

Parameterschannelrequired

list_channel_videos

List a YouTube channel's videos with duration metadata, in the order channel jobs use (long-form, then Shorts, then livestreams; newest first). limit=N previews what start_channel_job with max_videos=N downloads; has_more tells if the channel has more.

Parameterslimitchannelrequired

start_channel_job

Start an async job that downloads channel transcripts.

Parameterschannelrequiredmax_videosconcatenate_allinclude_timestamps

start_playlist_job

Start an async job that downloads playlist transcripts.

Parametersplaylistrequiredmax_videosconcatenate_allinclude_timestamps

get_job_status

Poll an async transcript job and get a download URL when ready.

Parametersjob_idrequired

get_download_url

Return the ZIP download URL for a completed job.

Parametersjob_idrequired

cancel_job

Cancel an async transcript job and refund unprocessed videos.

Parametersjob_idrequired

Version history

1
  1. v1.0.0LatestOct 15, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.