Configuration

CLI flags override everything in summarizer.yaml. Use --no-config to ignore the config file entirely.

Providers (summarizer.yaml)

Define your LLM providers and defaults. See summarizer.example.yaml for a complete starter file.

default_provider: groq
providers:
groq:
base_url: https://api.groq.com/openai/v1
model: openai/gpt-oss-120b
gemini:
base_url: https://generativelanguage.googleapis.com/v1beta/openai
model: gemini-3.5-flash-lite
deepseek:
base_url: https://api.deepseek.com/v1
model: deepseek-v4-flash
openrouter:
base_url: https://openrouter.ai/api/v1
model: google/gemini-3.1-flash-lite
openrouter-video:
base_url: https://openrouter.ai/api/v1
model: minimax/minimax-m3
openrouter-youtube:
base_url: https://openrouter.ai/api/v1
model: google/gemini-3.1-flash-lite
visual-input-mode: url
openai:
base_url: https://api.openai.com/v1
model: gpt-5.5
nvidia:
base_url: https://integrate.api.nvidia.com/v1
model: nvidia/nemotron-3-nano-omni-30b-a3b-reasoning
perplexity:
base_url: https://openrouter.ai/api/v1
model: perplexity/sonar
chunk-size: 128000
litellm-anthropic:
base_url: litellm
model: anthropic/claude-sonnet-4-6
defaults:
prompt-type: Questions and answers
chunk-size: 120000
parallel-calls: 10
max-tokens: 4096
output-language: auto
speed: 1.0
use-proxy: false
output-dir: summaries
keep-history: false
cache-transcript: true
cache-transcript-persist: false
visual: false
visual-compression: off
visual-chunk-seconds: auto
visual-chunk-overlap-seconds: 0
  • output-language: auto, none, or a human-readable name like Italian, Spanish, German, Japanese.
  • speed: Playback speed for audio preprocessing before Whisper and for visual-mode video in base64 mode. Faster transcription is cheaper on Groq (priced by audio duration) but may reduce accuracy. The API accepts values up to 10.0; the CLI accepts any positive value.
  • cache-transcript: false disables the transcript cache entirely.
  • cache-transcript-persist: true stores transcripts on disk under {output-dir}/.cache/transcripts/ (survives restarts).
  • keep-history: true persists GUI summaries to disk for the Streamlit sidebar.
  • visual-input-mode: url on a provider sends YouTube URLs directly to the model without downloading (see Visual Mode).
  • Docker: use summarizer.docker.yaml or set SUMMARIZER_KEEP_HISTORY / SUMMARIZER_CACHE_PERSIST when a YAML key is omitted.

The legacy audio-speed / audio_speed keys are no longer supported. Use speed instead.

API Keys (.env)

# Required for Cloud Whisper transcription
groq = gsk_YOUR_KEY
# LLM providers (choose one or more)
openai = sk-proj-YOUR_KEY
generativelanguage = YOUR_GOOGLE_KEY
deepseek = YOUR_DEEPSEEK_KEY
openrouter = YOUR_OPENROUTER_KEY
perplexity = YOUR_PERPLEXITY_KEY
hyperbolic = YOUR_HYPERBOLIC_KEY
NVIDIA_API_KEY = YOUR_NVIDIA_KEY
# Optional: HTTP proxy
PROXY_URL = http://username:password@proxy.example.com:8080
NO_PROXY = localhost,127.0.0.1,::1,.local
# Optional: yt-dlp per-platform cookie files
YOUTUBE_COOKIES_FILE = C:\path\to\youtube-cookies.txt
INSTAGRAM_COOKIES_FILE = C:\path\to\instagram-cookies.txt
TIKTOK_COOKIES_FILE = C:\path\to\tiktok-cookies.txt
TWITTER_COOKIES_FILE = C:\path\to\twitter-cookies.txt
REDDIT_COOKIES_FILE = C:\path\to\reddit-cookies.txt
FACEBOOK_COOKIES_FILE = C:\path\to\facebook-cookies.txt
# Generic fallback cookie file (used when no per-platform file is set)
YTDLP_COOKIES_FILE = C:\path\to\cookies.txt
# Optional: Instagram username/password login when cookies are not used
INSTAGRAM_USER = YOUR_INSTAGRAM_USERNAME
INSTAGRAM_PASS = YOUR_INSTAGRAM_PASSWORD

API Key Lookup

The app resolves API keys in this order:

  1. Explicit --api-key flag
  2. Provider api_key field in summarizer.yaml
  3. .env file matched by URL keyword (e.g., generativelanguage for Google AI Studio)
  4. .env file matched by conventional env var name (e.g., NVIDIA_API_KEY, GOOGLE_API_KEY, OPENAI_API_KEY)

If a key is missing, the error message lists all acceptable .env keys for that provider.