CLI Reference

All flags override the corresponding settings in summarizer.yaml. Use --verbose to see detailed status output during config loading, downloads, transcription, and summarization.

Examples

$# Uses default provider from YAML
$python -m summarizer --source "https://youtube.com/watch?v=VIDEO_ID"
$
$# Console entry point (after pipx or pip install)
$summarizer --source "URL"
$
$# Specific provider
$python -m summarizer --source "URL" --provider groq
$
$# Extract key insights
$python -m summarizer --source "URL" --provider gemini --prompt-type "Distill Wisdom"
$
$# Generate a Mermaid diagram
$python -m summarizer --source "URL" --provider openrouter --prompt-type "Mermaid Diagram"
$
$# Batch process
$python -m summarizer --source "URL1" "URL2" "URL3"
$
$# Local file
$python -m summarizer --type "Local File" --source "./lecture.mp4"
$
$# Text file (skip audio entirely)
$python -m summarizer --type "TXT" --source "./transcript.txt"
$
$# No config (all explicit)
$python -m summarizer \
> --source "URL" \
> --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

Flag Reference

FlagDescriptionDefault
--sourceVideo URLs, file paths, or text files (multiple allowed)Required
--providerProvider name from YAMLdefault_provider
--base-urlAPI endpoint (overrides provider)From YAML
--modelModel identifier (overrides provider)From YAML
--api-keyAPI key (overrides .env)-
--typeYouTube Video, Video URL, Local File, Google Drive Video Link, Dropbox Video Link, TXTYouTube Video
--prompt-typeSummary styleFrom YAML defaults
--chunk-sizeInput text chunk size in characters (min 1000)120000 (from summarizer.yaml; code fallback 10000)
--force-downloadSkip captions and download audio insteadFalse
--transcriptionCloud Whisper (Groq Whisper API) or Local Whisper (local Whisper)Cloud Whisper
--whisper-modeltiny, base, small, medium, largetiny
--speedPlayback speed for audio preprocessing or visual-mode video. Reduces Groq cost (priced by duration) but may reduce accuracy. Values other than 1.0 skip YouTube captions. Any positive value.1.0
--languageauto or explicit code for captions/transcriptionauto
--output-languageSummary language; auto, none, or nameauto
--output-formatmarkdown, json, or htmlmarkdown
--parallel-callsConcurrent API requests10 (from summarizer.yaml; code fallback 30)
--max-tokensMax output tokens per chunk4096
--cobalt-urlCobalt base URL for fallback downloadshttp://localhost:9000
--output-dirOutput directorysummaries
--no-savePrint to stdout only, no file outputFalse
--verbose, -vDetailed outputFalse
--visualSend video directly to a video-capable modelFalse
--use-proxyRoute supported requests through Webshare proxiesFrom YAML
--configPath to config fileauto-detect
--no-configIgnore config file, use CLI args only-
--init-configGenerate example summarizer.yaml and exit-

HTTP API Server

Start a local FastAPI server that exposes the same functionality over HTTP:

$python -m summarizer serve

Customize host and port:

$python -m summarizer serve --host 0.0.0.0 --port 8080

Interactive docs are available at http://localhost:8000/docs. See the HTTP API guide for endpoint reference and example requests.

Tip: Use --verbose to see detailed status output during config loading, downloads, transcription with Whisper, and summarization.

Tip: On Windows, do NOT use --no-save — Unicode output crashes stdout. Always let the tool save to file, then read it.

Tip: --chunk-size has a hard minimum of 1000 characters. Values below 1000 are clamped automatically.

Output Formats

Markdown (default)

Clean Markdown with optional bold titles. Saved as .md.

JSON

$python -m summarizer --source "URL" --output-format json

Includes metadata:

1{
2 "source": "https://youtube.com/watch?v=VIDEO_ID",
3 "generated_at": "2026-06-01T20:00:00",
4 "prompt_type": "Distill Wisdom",
5 "model": "gemini-3.1-flash-lite",
6 "summary": "..."
7}

HTML

$python -m summarizer --source "URL" --output-format html