buildoak/fieldwork-skills/summarize
Claude Code and agent skill by buildoak/fieldwork-skills
- community
Checking that the SKILL.md file is still in the repository.
Content extraction skill for AI coding agents. YouTube transcripts, podcasts, PDFs, images (OCR), audio/video via the summarize CLI.
Install
npx vskill@latest install buildoak/fieldwork-skills/summarizeSKILL.md
Summarize
Extract clean text and media transcripts from URLs, files, and streams so your AI workflow can reason over reliable source content without hand-coding brittle scraper logic.
Use this skill when you need deterministic extraction for YouTube, podcast feeds, PDFs, scanned images, or local media files.
Terminology used in this file:
- DOM: Document Object Model, the page element structure used by browser-based extractors.
- OCR: Optical character recognition (extracting text from images/scans).
- ANSI codes: Terminal color/control sequences;
--plainremoves them for machine parsing.
Setup
- Claude Code: copy this skill folder into
.claude/skills/summarize/ - Codex CLI: append this SKILL.md content to your project's root
AGENTS.md
For the full installation walkthrough (prerequisites, optional dependencies, verification, troubleshooting), see references/installation-guide.md.
Staying Updated
This skill ships with an UPDATES.md changelog and UPDATE-GUIDE.md for your AI agent.
After installing, tell your agent: "Check UPDATES.md in the summarize skill for any new features or changes."
When updating, tell your agent: "Read UPDATE-GUIDE.md and apply the latest changes from UPDATES.md."
Follow UPDATE-GUIDE.md so customized local files are diffed before any overwrite.
Quick Start
Run one extraction flow end-to-end:
Use --extract --plain as the default pattern for deterministic, non-ANSI output.
Decision Tree: summarize vs Other Tools
Rule of thumb: summarize is the default for media extraction (YouTube, podcasts, audio, video, images). For web pages, prefer WebFetch/Jina/Crawl4AI depending on DOM complexity (how hard the page structure is to parse). Use summarize for web only when other tools fail.
Extraction Mode (Primary)
--extract prints raw extracted content and exits. No LLM involved. Use this first. You can handle any downstream synthesis in your own workflow.
Always use `--plain` when extracting for agent consumption. It suppresses ANSI/OSC rendering.
Extraction defaults:
- URLs default to
--format mdin extract mode - Files default to
--format text - PDF requires uvx/markitdown (
--preprocess auto, which is default)
LLM Summarization Mode (Secondary)
Use this mode only when you explicitly want summarize to perform synthesis itself.
API keys for LLM mode (set in ~/.summarize/config.json or env vars):
ANTHROPIC_API_KEY-- for anthropic/ modelsOPENAI_API_KEY-- for openai/ modelsGEMINI_API_KEY-- for google/ modelsXAI_API_KEY-- for xai/ models
Dependency Matrix
| Feature | Required Deps | |
|---|---|---|
| Web page extraction | None | |
| YouTube transcript (captions) | None (web mode) | |
| YouTube transcript (no captions) | yt-dlp + whisper or API key | |
| YouTube slides | yt-dlp + ffmpeg | |
| Podcast transcription | yt-dlp + whisper or API key | |
| PDF extraction | uvx/markitdown | |
| Image OCR | tesseract | |
| Audio/video transcription | whisper-cli (local) or OPENAI_API_KEY | |
| Anti-bot sites (Firecrawl) | FIRECRAWL_API_KEY | |
| Slide OCR | tesseract |
What is not installed (by design):
whisper-cli/ whisper.cpp -- heavy binary, install when audio transcription is needed- Firecrawl API key -- paid service, configure when anti-bot extraction is needed
- LLM API keys in summarize config -- only add if you use LLM Summarization Mode
Key Flags Quick Reference
| Flag | Purpose | Example | |||
|---|---|---|---|---|---|
--extract | Raw content extraction, no LLM | summarize --extract URL | |||
--plain | No ANSI rendering (agent-safe output) | Always use for agents | |||
| `--format md\ | text` | Output format (md default for URLs in extract) | --format md | ||
| `--youtube auto\ | web\ | yt-dlp` | YouTube transcript source | --youtube web (captions only) | |
--slides | Extract video slides with ffmpeg | --slides --slides-ocr | |||
--timestamps | Include timestamps in transcripts | --timestamps | |||
| `--firecrawl off\ | auto\ | always` | Firecrawl for anti-bot sites | --firecrawl always | |
| `--preprocess off\ | auto\ | always` | Preprocessing (markitdown for PDFs) | Default auto | |
--markdown-mode | HTML-to-MD conversion mode | --markdown-mode readability | |||
--timeout | Fetch/LLM timeout | --timeout 2m | |||
--verbose | Debug output to stderr | Troubleshooting | |||
--json | Structured JSON output with metrics | --json | |||
--length | Summary length (LLM mode only) | --length xl | |||
--model | LLM model (LLM mode only) | --model anthropic/claude-sonnet-4-5 | |||
--max-extract-characters | Limit extract output length | --max-extract-characters 50000 | |||
| `--language\ | --lang` | Output language | --lang en | ||
--video-mode | Video handling mode | --video-mode transcript | |||
--transcriber | Audio backend | --transcriber whisper |
Verified Services (YouTube/Podcasts)
YouTube: All public videos with captions. Falls back to yt-dlp audio download + transcription for videos without captions.
Podcasts (verified):
- Apple Podcasts
- Spotify (best-effort; may fail for exclusives)
- Amazon Music / Audible podcast pages
- Podbean
- Podchaser
- RSS feeds (Podcasting 2.0 transcripts when available)
- Embedded YouTube podcast pages
Common Patterns
1. YouTube Transcript for Analysis
2. Podcast Episode Transcript
3. PDF Content Extraction
4. Image OCR
5. Anti-Bot Website (Firecrawl Fallback)
6. Batch Extraction (Shell Loop)
Error Handling
| Symptom | Cause | Fix | |
|---|---|---|---|
Missing uvx/markitdown | PDF preprocessing not available | brew install uv | |
does not support extracting binary files | Preprocessing disabled for PDF | Use --preprocess auto (default) with uvx installed | |
| YouTube returns empty transcript | No captions available, no yt-dlp/whisper | Install yt-dlp; for whisper fallback, install whisper-cli or set OPENAI_API_KEY | |
FIRECRAWL_API_KEY not set | Anti-bot mode requires Firecrawl | Set key in env or ~/.summarize/config.json | |
| Timeout on large content | Default 2m timeout too short | Use --timeout 5m | |
| Audio transcription fails | No whisper backend available | Install whisper-cli locally or set OPENAI_API_KEY/FAL_KEY | |
| Podcast extraction fails | Audio download failed | Check yt-dlp is installed and updated: brew upgrade yt-dlp | |
| Garbled web extraction | JS-rendered content | summarize has no JS engine; use Crawl4AI instead |
Configuration
Config file: ~/.summarize/config.json
Configure only what your workflow needs. If you use LLM Summarization Mode, add the required API keys.
Anti-Patterns
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/summarize/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/buildoak/fieldwork-skills/summarize)