Skip to main content

Summarize YouTube videos using AI (OpenAI, Anthropic, or OpenRouter)

Project description

YouTube Summariser

A command-line tool that summarizes YouTube videos using AI. It extracts transcripts from YouTube videos and generates structured summaries using OpenAI, Anthropic, or OpenRouter (300+ models).

Installation

pip install youtube-summariser

Note: youtube-summariser (British), youtube-summarizer (American), and ys (short alias) commands are all available.

Or install from source:

git clone https://github.com/weijianzhg/youtube-summariser
cd youtube-summariser
pip install -e .

Quick Start

Run the interactive setup to configure your API keys:

youtube-summariser init

This guides you through:

  • Selecting your default provider (Anthropic, OpenAI, or OpenRouter)
  • Entering your API key (securely masked)
  • Optionally configuring additional providers

Configuration

Option 1: Interactive Setup (Recommended)

youtube-summariser init

Settings are saved to a platform-appropriate location:

  • macOS/Linux: ~/.youtube-summariser/config.yaml
  • Windows: %APPDATA%\youtube-summariser\config.yaml

Re-run init anytime to update your settings.

Option 2: Environment Variables

# For Anthropic (default provider)
export ANTHROPIC_API_KEY=your_anthropic_api_key

# For OpenAI
export OPENAI_API_KEY=your_openai_api_key

# For OpenRouter (access 300+ models)
export OPENROUTER_API_KEY=your_openrouter_api_key

Or create a .env file in your working directory.

Configuration Priority

  1. Environment variables (highest priority)
  2. User config file (~/.youtube-summariser/config.yaml)
  3. Bundled defaults

Default Provider

The default provider is Anthropic. You can change this via init or override per command using --provider.

Usage

# Interactive configuration
youtube-summariser init

# Same command with the short alias
ys init

# Summarize a video (saves to auto-generated filename)
youtube-summariser "https://www.youtube.com/watch?v=VIDEO_ID"

# Specify output filename
youtube-summariser "https://youtu.be/VIDEO_ID" -o my_summary.md

# Print to terminal only (no file saved)
youtube-summariser "https://youtube.com/watch?v=VIDEO_ID" --no-save

# Use a specific provider
youtube-summariser "https://youtu.be/VIDEO_ID" --provider openai

# Use OpenRouter with access to 300+ models
youtube-summariser "https://youtu.be/VIDEO_ID" --provider openrouter

Search by Title

Don't have a URL? Search for videos by title:

# Interactive selection (shows top 5 results)
youtube-summariser search "How to make mass"

# Auto-select first result
youtube-summariser search "Python tutorial" --first

# Show more results
youtube-summariser search "cooking recipes" --max-results 10

Summarize a Channel

Summarize every video published on a channel:

youtube-summariser channel "https://www.youtube.com/@CHANNEL"

For large channels, limit the run to the most recent videos:

youtube-summariser channel "https://www.youtube.com/@CHANNEL" --max-videos 10

Each video goes through the same transcript and LLM summarization pipeline as the single-video command. Summaries are saved individually under channel-summaries/ by default. Use --output-dir to choose another directory.

Note: Without --max-videos, the command processes every video on the channel. This can take a long time and make many LLM API calls on a large channel.

Commands

Command Description
init Interactive setup for API keys and preferences
summarise Summarize a YouTube video (also aliased as summarize)
search Search YouTube by title and summarize
channel Summarize all or the most recent videos from a channel

You can also pass a URL directly without the summarise subcommand for convenience.

Options

Flag Description
-o, --output Specify output filename (default: YYYY-MM-DD__video-title-slug__video-id.md)
--no-save Print summary to terminal without saving to file
--provider LLM provider to use: openai, anthropic, or openrouter
--no-stream Disable streaming output
--first, -1 Auto-select first search result (search command only)
--max-results Number of search results to display (default: 5)
--max-videos Maximum recent channel videos to summarize (default: all)
--output-dir Directory for channel summary files (default: channel-summaries)
-v, --version Show version number
-h, --help Show help message

zsh Tip (URLs Without Quotes)

In zsh, unquoted YouTube URLs containing ? are treated as glob patterns before the CLI runs.

Use one of these approaches:

# Escape ? in the URL
ys https://www.youtube.com/watch\?v=VIDEO_ID

# Or disable globbing for this command
noglob ys https://www.youtube.com/watch?v=VIDEO_ID

To make this convenient permanently, add to ~/.zshrc:

ys() { noglob command ys "$@"; }

Output Format

Summary files are saved as Obsidian-friendly markdown (.md) with YAML frontmatter:

---
title: "Video Title"
url: "https://www.youtube.com/watch?v=VIDEO_ID"
video_id: VIDEO_ID
channel: "Channel Name"
created: 2026-07-28
tags:
  - youtube
  - summary
model: "anthropic/claude-sonnet-4-5-20250929"
---

# Video Title

### TL;DR
...

### Key Takeaways
- Insight with a linked timestamp [12:34](https://www.youtube.com/watch?v=VIDEO_ID&t=754)

### Detailed Summary
...

### Notable Quotes
...

#youtube #topic

Notes are ready to drop into an Obsidian vault. Point --output-dir at a vault folder for channel runs.

Requirements

  • Python 3.10+
  • An API key for OpenAI, Anthropic, or OpenRouter

License

MIT License - see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

youtube_summariser-0.7.1.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

youtube_summariser-0.7.1-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file youtube_summariser-0.7.1.tar.gz.

File metadata

  • Download URL: youtube_summariser-0.7.1.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.15

File hashes

Hashes for youtube_summariser-0.7.1.tar.gz
Algorithm Hash digest
SHA256 9a6f5f84e7a687c86b7209c50b7bb1ccad17260bb7032d5a7754bbac774e79f6
MD5 077fc4c0fc9f778483066536274ab888
BLAKE2b-256 ec68b2d383d4cedfee9507c1144c214f8ef73816ace8948f2cfeb1975f0fcc65

See more details on using hashes here.

File details

Details for the file youtube_summariser-0.7.1-py3-none-any.whl.

File metadata

File hashes

Hashes for youtube_summariser-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 82d0e42fdf0b4b39e9b858650538b470f06c4fb0ba7b34c26fff003df397cf41
MD5 12f220ed5bfce0ac777e41a5aec60110
BLAKE2b-256 dcc97a55349b963d41fd92e6eea2b5224deb6be3623cff24f560474c546ce4fb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page