# summarize
> Fast summaries from URLs, files, and media in the terminal

## Summary
Multi-source content summarizer that distills URLs, files, YouTube videos, podcasts, and media into concise Markdown summaries using configurable LLM providers.

## Capabilities
- Summarize web pages, PDFs, images, audio, and video files
- Extract and summarize YouTube video transcripts with optional slide screenshots
- Summarize podcasts from RSS feeds, Apple Podcasts, Spotify, and Amazon Music URLs
- Read from stdin for piped content summarization (up to 50MB text)
- Multi-provider LLM support (OpenAI, Anthropic, Google, xAI, OpenRouter) with auto-fallback
- Configurable output length (short, medium, long, xl, xxl or character count)
- Extract-only mode to pull content without summarization
- Streaming Markdown output with metrics
- JSON diagnostics output for machine consumption
- Local and cloud-based transcription (whisper.cpp, OpenAI Whisper, FAL AI)

## When to Use
- You need a quick summary of a web article, PDF, or video
- Processing YouTube videos or podcasts for research notes
- Extracting readable content from complex web pages
- Batch-summarizing multiple sources in a scripting pipeline
- Converting media files (audio/video) to text summaries

## When NOT to Use
- You need full verbatim transcription rather than a summary
- Working without internet access and no local LLM configured
- Processing highly sensitive content that should not be sent to cloud APIs

## Usage Patterns
### Summarize a web article
```
summarize "https://example.com/article"
```
Fetches the article, extracts content, and produces a Markdown summary

### Summarize a YouTube video
```
summarize "https://youtu.be/VIDEO_ID" --youtube auto
```
Extracts transcript (or transcribes audio), summarizes the video

### Summarize a local PDF
```
summarize "/path/to/document.pdf"
```
Reads the PDF and produces a concise summary

### Pipe content from stdin
```
cat notes.md | summarize - --length short
```
Reads from stdin and produces a short summary

### Extract content without summarizing
```
summarize "https://example.com" --extract
```
Prints extracted Markdown content without running it through an LLM

### Use a specific model
```
summarize "https://example.com" --model anthropic/claude-sonnet-4-5
```
Forces a specific LLM provider and model for summarization

## Input / Output
- **stdin**: Text content, up to 50MB
- **stdout**: Markdown summary or JSON diagnostics
- **stderr**: Progress and status messages

## Installation
- **npm**: `npm i -g @steipete/summarize`
- **homebrew**: `brew install steipete/tap/summarize`
- **npx**: `npx -y @steipete/summarize`

## Related Tools
- [jq](/tools/jq) (complementary): Parse JSON output from summarize --json

---
Source: https://littlescripts.sh/tools/summarize
