A cross-platform CLI tool and browser extension that extracts and summarizes content from any URL (websites, YouTube, podcasts) or local files (PDF, audio/video, images), supporting multiple LLM providers and local models.
Overview#
Summarize is a multi-source content summarization tool developed by steipete, positioned as "Point at any URL/YouTube/Podcast or file. Get the gist." It provides unified handling of websites, YouTube videos, podcasts (Apple Podcasts/Spotify/RSS), local files (PDF/images/audio/video/text), and standard input pipes.
Core Capabilities#
Input Sources#
- URLs: Websites, YouTube, Podcast RSS, Apple Podcasts, Spotify, etc.
- Local Files: PDF, images, audio, video, text files
- Standard Input: Via pipe or
-argument (50MB limit) - Podcasts: Apple Podcasts, Spotify, Amazon Music/Audible, Podbean, Podchaser, RSS feeds
Content Processing#
- Web Extraction: HTML → clean text → summary; with Readability, markitdown, Firecrawl fallback
- YouTube Transcription: Prioritizes web caption endpoints, falls back to Apify or yt-dlp + Whisper
- Podcast Transcription: Prioritizes Podcasting 2.0 RSS transcripts, falls back to Whisper
- Slide Extraction: Video scene detection + screenshots + optional OCR + timestamp cards
- Media Transcription: Local audio/video via Whisper or NVIDIA Parakeet/Canary ONNX models
Output Modes#
- Markdown / Text format
- JSON diagnostic output (
--json) - Extract-only mode (
--extract) - Streaming output (with ANSI/OSC Markdown rendering)
- Metrics and cost estimation (
--metrics)
Length Presets#
| Preset | Target Chars | Range |
|---|---|---|
| short | ~900 | 600-1,200 |
| medium | ~1,800 | 1,200-2,500 |
| long | ~4,200 | 2,500-6,000 |
| xl | ~9,000 | 6,000-14,000 |
| xxl | ~17,000 | 14,000-22,000 |
Model Support#
- Auto model selection with fallback (
--model auto) - Local models: OpenAI-compatible endpoints
- Paid providers: OpenAI, Anthropic, Google, xAI, Z.AI, NVIDIA
- Free model presets: OpenRouter
:freemodels (--model free) - CLI coding assistants: Codex, Claude, Gemini, Agent CLI backends
Platform Support#
- CLI: Cross-platform terminal tool (npm / npx / Homebrew)
- Chrome Extension: Side Panel UI
- Firefox Extension: Sidebar UI
Installation#
# npm (cross-platform)
npm i -g @steipete/summarize
# npx (no install required)
npx -y @steipete/summarize "https://example.com"
# Homebrew (macOS arm64)
brew install steipete/tap/summarize
# Minimal dependency library mode
npm i @steipete/summarize-core
Usage Examples#
# Web page summary
summarize "https://example.com/article" --length long
# YouTube video summary (with transcription)
summarize "https://youtu.be/dQw4w9WgXcQ" --youtube auto
# PDF document summary
summarize "/path/to/file.pdf" --model google/gemini-3-flash-preview
# Podcast RSS summary
summarize "https://feeds.npr.org/500005/podcast.xml"
# Slide extraction
summarize "https://www.youtube.com/watch?v=..." --slides --slides-ocr
# Use free models
summarize "https://example.com" --model free
Configuration#
Config file location: ~/.summarize/config.json
{
"model": { "id": "openai/gpt-5-mini" },
"env": { "OPENAI_API_KEY": "sk-..." },
"ui": { "theme": "ember" }
}
Architecture#
- Language: TypeScript (96.4%)
- Package Manager: pnpm (monorepo)
- Build: Vitest configuration
- Model Interface: OpenAI-compatible API / AI SDK
- Core Library: @steipete/summarize-core
Requirements#
- Node.js 22+
- Optional: yt-dlp, ffmpeg, tesseract, whisper.cpp, uvx/markitdown