video summarizer

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.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "video summarizer" with this command: npx skills add martinopiaggi/summarize/martinopiaggi-summarize-video-summarizer

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/<filename>.md

CLI entry point python -m summarizer

Do NOT look for .env or config files in your home directory or in the skill directory. They are in the project root.

CLI Reference

python -m summarizer [OPTIONS]

Required

Flag Description

--source

One or more video URLs or file paths

Provider Options

Flag Description Default

--provider

Named provider from summarizer.yaml

default_provider from YAML

--base-url

API endpoint URL (overrides provider) From YAML

--model

Model identifier (overrides provider) From YAML

--api-key

API key (overrides .env auto-matching) Auto from .env

Source Options

Flag Description Default

--type

YouTube Video , Video URL , Local File , Google Drive Video Link , Dropbox Video Link

YouTube Video

--force-download

Skip YouTube captions, download audio instead False

--transcription

Cloud Whisper (Groq API) or Local Whisper

Cloud Whisper

--whisper-model

tiny , base , small , medium , large

tiny

--language

Language code for captions (e.g., en , it , es ) auto

Processing Options

Flag Description Default

--prompt-type

Summary style (see Styles below) From YAML defaults

--chunk-size

Characters per text chunk From YAML defaults

--parallel-calls

Concurrent API requests 30

--max-tokens

Max output tokens per chunk 4096

Output Options

Flag Description Default

--output-dir

Directory to save summaries summaries

--output-format

markdown , json , or html

markdown

--no-save

Print to stdout only, don't save file False

--verbose , -v

Detailed progress output False

Warning: Do NOT use --no-save on Windows. There is a known encoding bug where Unicode characters in the summary crash stdout output. Always let the tool save to a file, then read the file.

Config Options

Flag Description

--config

Path to config file (default: auto-detect)

--no-config

Ignore config file, use CLI args only

--init-config

Generate example summarizer.yaml and exit

Summary Styles

Use with --prompt-type . Defined in summarizer/prompts.json .

Style Purpose

Questions and answers

Q&A extraction from content

Summarization

Standard summary with title

Distill Wisdom

Ideas, quotes, and references extraction

DNA Extractor

Core truth distilled to 200 words max

Fact Checker

Claim verification with TRUE/FALSE/MISLEADING labels

Tutorial

Step-by-step instructions from content

Research

Deep analysis with broader context

Reflections

Philosophical extensions beyond what is said

Mermaid Diagram

Visual concept map in Mermaid.js syntax

Essay Writing in Paul Graham Style

250-word essay in Paul Graham's style

Only grammar correction with highlights

Grammar cleanup with bold highlights

Examples

Summarize a YouTube video (simplest form)

python -m summarizer --source "https://youtube.com/watch?v=VIDEO_ID"

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/<filename> (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

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

GitHub Extract

Extract content from a GitHub url.

Registry SourceRecently Updated
6070Profile unavailable
Coding

SpeakNotes: YouTube, Audio & Document Summaries

Use when OpenClaw needs to call SpeakNotes API routes directly using an API key and generate transcripts/summaries from YouTube URLs, media files, or documen...

Registry SourceRecently Updated
1300Profile unavailable
Coding

HackerNews Extract

Extract a HackerNews post (article + comments) into single clean Markdown for quick reading or LLM input.

Registry SourceRecently Updated
2.4K3Profile unavailable
Coding

summarize

No summary provided by upstream source.

Repository SourceNeeds Review