yt-summarizer is a Python CLI
that reads YouTube videos from a Notion database,
retrieves transcripts,
generates per-video summaries and main points with an LLM,
and writes the results back to Notion.
It also supports ingesting a full YouTube playlist into the processing queue
and produces an executive summary
that synthesizes the collection.
- Notion-backed workflow: Reads video records from a Notion database and updates them in place.
- YouTube playlist support:
Accepts a
--playlist-urland adds new playlist videos to the current run. - Per-video analysis: Generates a concise summary and a list of main points for each video.
- Executive summaries: Produces a synthesized playlist or collection-level executive summary at the end of the run.
- Flexible LLM backends: Works with local Ollama models and other LiteLLM-compatible providers.
- Operational visibility: Includes structured logging and clearer connection errors for unreachable LLM endpoints.
- Load existing video records from Notion.
- Optionally expand the queue with videos discovered from
--playlist-url. - Fetch each video's title and transcript from YouTube.
- Generate a summary and main points for each video with the configured LLM.
- Upsert the results into Notion.
- Print an executive summary across the processed collection.
The CLI updates Notion properties with these names:
TitleURLSummaryMain Points
- Build a shared Notion knowledge base from conference talks and technical playlists.
- Batch-summarize videos already curated in Notion.
- Import a new playlist and immediately generate a higher-level executive brief.
- Capture key points for later review without rewatching full videos.
- Age-restricted videos are not supported by the current transcript retrieval flow.
- Videos without captions or transcripts cannot be summarized.
- Private, deleted, or otherwise inaccessible videos cannot be processed.
- Playlist processing still depends on each individual video being reachable and transcribed.
