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 the configured HTTP proxyFrom 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:

{
"source": "https://youtube.com/watch?v=VIDEO_ID",
"generated_at": "2026-06-01T20:00:00",
"prompt_type": "Distill Wisdom",
"model": "gemini-3.5-flash-lite",
"summary": "..."
}

HTML

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