Python Anthropic License No Scraping Platform Author


YouTube Transcript Toolkit

A fast, zero-scraping command-line toolkit that fetches YouTube transcripts directly via the caption API, then uses the Anthropic Claude API to reformat them into clean paragraphs and produce multi-mode summaries.

No Selenium. No BeautifulSoup. No headless browsers. Two AI-powered post-processing features built on top of direct caption API access.


Architecture

main.py          CLI entry point β€” five commands (fetch, list, clean, summarize, pipeline)
fetcher.py       Direct YouTube caption API β€” no HTML parsing
cleaner.py       AI paragraph reformatter (Anthropic Claude)
summarizer.py    AI summarizer with 4 output modes (Anthropic Claude)
pipeline.py      Orchestrates fetch -> clean -> summarize in one pass
ai_client.py     Shared Anthropic API wrapper with chunking and streaming
config.py        Model names, limits, summary modes, defaults

Features

  • Direct caption API β€” transcript fetch is near-instant regardless of video length
  • Paragraph Cleaner β€” reformats fragmented auto-captions into readable prose (no content removed)
  • Summarizer β€” four modes: brief, detailed, bullet points, hierarchical outline
  • Full pipeline β€” fetch + clean + summarize in a single command
  • Token streaming β€” see AI output in real time as it generates
  • Automatic chunking β€” handles transcripts of any length by splitting and merging
  • Fast model by default (claude-haiku), quality model available via --quality flag
  • Batch processing β€” multiple video IDs/URLs in one command
  • Output formats β€” plain text, JSON, SRT, WebVTT for the raw transcript

Installation

git clone https://github.com/algorembrant/youtube-transcript-toolkit.git
cd youtube-transcript-toolkit
python -m venv .venv
source .venv/bin/activate       # Windows: .venv\Scripts\activate
pip install -r requirements.txt
export ANTHROPIC_API_KEY="sk-ant-..."   # Windows: set ANTHROPIC_API_KEY=sk-ant-...

Commands

fetch β€” raw transcript only (no AI)

python main.py fetch "https://www.youtube.com/watch?v=VIDEO_ID"
python main.py fetch VIDEO_ID -f srt -o transcript.srt
python main.py fetch VIDEO_ID -f json -o transcript.json
python main.py fetch VIDEO_ID -t                          # with timestamps
python main.py fetch VIDEO_ID -l es en                   # Spanish, fall back to English

list β€” available languages

python main.py list VIDEO_ID

clean β€” reformat into paragraphs

python main.py clean VIDEO_ID
python main.py clean VIDEO_ID -o cleaned.txt
python main.py clean VIDEO_ID --quality                  # use higher-quality model
python main.py clean VIDEO_ID --no-stream                # disable live token output

summarize β€” AI-generated summary

python main.py summarize VIDEO_ID                        # brief (default)
python main.py summarize VIDEO_ID -m detailed
python main.py summarize VIDEO_ID -m bullets
python main.py summarize VIDEO_ID -m outline
python main.py summarize VIDEO_ID -m detailed --quality -o summary.txt

pipeline β€” fetch + clean + summarize

python main.py pipeline VIDEO_ID
python main.py pipeline VIDEO_ID -m bullets -o ./output/
python main.py pipeline VIDEO_ID --skip-clean            # fetch + summarize only
python main.py pipeline VIDEO_ID --skip-summary          # fetch + clean only
python main.py pipeline ID1 ID2 ID3 -o ./batch/          # batch

Summary Modes

Mode Description
brief 3-5 sentence executive summary
detailed Multi-section prose: Overview, Key Points, etc.
bullets Key takeaways grouped under bold thematic headers
outline Hierarchical Roman-numeral topic outline

Model Selection

Flag Model Used Best For
(default) claude-haiku-4-5 Speed, short-to-medium transcripts
--quality claude-sonnet-4-6 Long transcripts, deep summaries

CLI Reference

usage: main.py {fetch,list,clean,summarize,pipeline} [options] video [video ...]

commands:
  fetch       Fetch raw transcript (no AI)
  list        List available transcript languages
  clean       Fetch + AI paragraph formatting
  summarize   Fetch + AI summarization
  pipeline    Fetch + clean + summarize in one pass

shared options:
  -l, --languages LANG [LANG ...]    Language codes, in order of preference
  -o, --output PATH                  Output file (single) or directory (batch)
  --quality                          Use higher-quality Claude model
  --no-stream                        Disable live token streaming

fetch / pipeline options:
  -f, --format {text,json,srt,vtt}   Raw transcript format (default: text)
  -t, --timestamps                   Add timestamps to plain-text output

clean / summarize / pipeline options:
  -m, --mode {brief,detailed,bullets,outline}   Summary mode (default: brief)

pipeline options:
  --skip-clean     Skip paragraph cleaning step
  --skip-summary   Skip summarization step

Output Files (pipeline with -o)

When using pipeline -o ./output/, three files are saved per video:

./output/
  VIDEO_ID_transcript.txt    Raw transcript
  VIDEO_ID_cleaned.txt       Paragraph-cleaned transcript
  VIDEO_ID_summary.txt       Summary

Chunking Strategy

Transcripts larger than 60,000 characters are automatically split into chunks at paragraph or sentence boundaries. Each chunk is processed independently, then the partial results are merged in a final synthesis pass. This allows the toolkit to handle full-length lecture recordings, long-form interviews, and documentary transcripts without hitting token limits.


Supported URL Formats

https://www.youtube.com/watch?v=VIDEO_ID
https://youtu.be/VIDEO_ID
https://www.youtube.com/shorts/VIDEO_ID
https://www.youtube.com/embed/VIDEO_ID
VIDEO_ID  (raw 11-character ID)

Error Reference

Error Cause
TranscriptsDisabled Video owner has disabled captions
VideoUnavailable Video is private, deleted, or region-locked
NoTranscriptFound Requested language does not exist
NoTranscriptAvailable No captions of any kind exist for this video
AuthenticationError ANTHROPIC_API_KEY is missing or invalid

Dependencies

Package Version Purpose
anthropic >=0.40.0 Claude API (clean + summarize)
youtube-transcript-api 0.6.2 Direct YouTube caption API access

License

MIT License. See LICENSE for details.


Disclaimer

This tool uses YouTube's publicly accessible caption endpoint and the Anthropic API for personal, educational, and research use. An Anthropic API key is required for the clean and summarize features. Review YouTube's Terms of Service before using this tool in a production or commercial context.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support