Overview
This skill transcribes and summarizes video content by running the
python -m summarizer
CLI tool. It handles YouTube (captions or audio), local files, Google Drive, and Dropbox. Transcripts are chunked, processed in parallel through an OpenAI-compatible LLM, and merged into a final summary.
IMPORTANT: Always use the CLI command below. Never try to fetch, scrape, or download video URLs directly (e.g., with webfetch or curl). The CLI handles all downloading, transcription, and summarization internally.
Quick Start (Step-by-Step)
Follow these steps exactly:
Step 1 -- Run the CLI:
python
-m
summarizer
--source
"VIDEO_URL"
The tool uses the default provider from
summarizer.yaml
(already configured). No extra flags needed for basic usage.
Step 2 -- Read the output file:
The CLI prints the output filename on success. It is always saved inside the
summaries/
subdirectory relative to the project working directory. For example:
[+] Saved watch_20260207_234533.md
The full path to read is:
summaries/watch_20260207_234533.md
Step 3 -- Show the result to the user.
That's it. Three steps.
Where Files Live
All paths are relative to the
project working directory
(where
summarizer.yaml
and
setup.py
are).
File
Location
Config
./summarizer.yaml
API keys
./.env
Prompt templates
./summarizer/prompts.json
Output summaries
./summaries/
Output: summaries/watch_YYYYMMDD_HHMMSS.md
Specify a provider python -m summarizer --source "https://youtube.com/watch?v=VIDEO_ID" --provider gemini
Output: summaries/watch_YYYYMMDD_HHMMSS.md
Extract key insights with Distill Wisdom python -m summarizer \ --source "https://youtube.com/watch?v=VIDEO_ID" \ --provider openrouter \ --prompt-type "Distill Wisdom"
Output: summaries/watch_YYYYMMDD_HHMMSS.md
Fact-check video claims using Perplexity python -m summarizer \ --source "https://youtube.com/watch?v=VIDEO_ID" \ --base-url "https://api.perplexity.ai" \ --model "sonar-pro" \ --prompt-type "Fact Checker"
Output: summaries/watch_YYYYMMDD_HHMMSS.md
Generate a Mermaid diagram from a lecture python -m summarizer \ --source "https://youtube.com/watch?v=VIDEO_ID" \ --provider gemini \ --prompt-type "Mermaid Diagram"
Output: summaries/watch_YYYYMMDD_HHMMSS.md
Summarize a local file python -m summarizer \ --type "Local File" \ --source "./lecture.mp4" \ --provider groq
Output: summaries/lecture_YYYYMMDD_HHMMSS.md
Batch-process multiple videos python -m summarizer \ --source "URL1" "URL2" "URL3" \ --provider gemini \ --prompt-type "Summarization"
Output: one file per URL in summaries/
Use without config file (all flags explicit) python -m summarizer \ --source "https://youtube.com/watch?v=VIDEO_ID" \ --base-url "https://openrouter.ai/api/v1" \ --model "google/gemini-2.0-flash-exp:free" \ --api-key "sk-or-v1-YOUR_KEY" \ --prompt-type "Tutorial" \ --no-config
Output: summaries/watch_YYYYMMDD_HHMMSS.md
Reading the Output After running the CLI, always read the output file from summaries/ :
The CLI prints something like:
[+] Saved watch_20260207_234533.md
The file is at:
- summaries/watch_20260207_234533.md
- Use the Read tool on the full path:
- summaries/
- (relative to project root).
- Multi-Step Workflow
- For comprehensive analysis, chain multiple styles on the same video:
- Start with
- Summarization
- for a quick overview
- Use
- Distill Wisdom
- to extract key insights
- Run
- Fact Checker
- (ideally with Perplexity) to verify claims
- Generate a
- Mermaid Diagram
- for visual reference
- Error Handling
- If no API key is found, the tool checks
- .env
- for a key matching the provider URL keyword
- If YouTube captions are unavailable, the tool falls back to audio download + Whisper transcription
- Use
- --verbose
- to see detailed progress and debug issues
- Cloud Whisper requires a Groq API key (free tier available)
- Configuration Files
- All in the project working directory:
- summarizer.yaml
-
- Provider definitions (base_url, model, chunk-size) and defaults
- .env
-
- API keys, auto-matched by URL keyword (e.g.,
- generativelanguage = YOUR_KEY
- )
- summarizer/prompts.json
- Prompt templates using {text} as transcript placeholder Testing python -m pytest tests/ -v