{"id":"0b355fff-e399-48b3-a65c-a7b404a0dd92","shortId":"CJbBh4","kind":"skill","title":"summarize","tagline":"Content extraction skill for AI coding agents. YouTube transcripts, podcasts, PDFs, images (OCR), audio/video via the summarize CLI.","description":"# Summarize\n\nExtract 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.\n\nUse this skill when you need deterministic extraction for YouTube, podcast feeds, PDFs, scanned images, or local media files.\n\nTerminology used in this file:\n- **DOM:** Document Object Model, the page element structure used by browser-based extractors.\n- **OCR:** Optical character recognition (extracting text from images/scans).\n- **ANSI codes:** Terminal color/control sequences; `--plain` removes them for machine parsing.\n\n## Setup\n\n```bash\nbrew tap steipete/tap\nbrew install summarize\n```\n\n- **Claude Code:** copy this skill folder into `.claude/skills/summarize/`\n- **Codex CLI:** append this SKILL.md content to your project's root `AGENTS.md`\n\nFor the full installation walkthrough (prerequisites, optional dependencies, verification, troubleshooting), see [references/installation-guide.md](references/installation-guide.md).\n\n## Staying Updated\n\nThis skill ships with an `UPDATES.md` changelog and `UPDATE-GUIDE.md` for your AI agent.\n\nAfter installing, tell your agent: \"Check `UPDATES.md` in the summarize skill for any new features or changes.\"\n\nWhen updating, tell your agent: \"Read `UPDATE-GUIDE.md` and apply the latest changes from `UPDATES.md`.\"\n\nFollow `UPDATE-GUIDE.md` so customized local files are diffed before any overwrite.\n\n---\n\n## Quick Start\n\nRun one extraction flow end-to-end:\n\n```bash\nsummarize --version\nsummarize --extract \"https://www.youtube.com/watch?v=VIDEO_ID\" --plain\nsummarize --extract \"/path/to/document.pdf\" --plain\n```\n\nUse `--extract --plain` as the default pattern for deterministic, non-ANSI output.\n\n## Decision Tree: summarize vs Other Tools\n\n```text\nNeed content from the web?\n  |\n  +-- Static web page (article, docs, blog)?\n  |     --> WebFetch (built-in, zero deps, faster)\n  |     --> Jina r.jina.ai (zero install alternative)\n  |     --> summarize ONLY if above tools fail or return garbage\n  |\n  +-- JS-heavy SPA / dynamic content?\n  |     --> Crawl4AI crwl (full browser rendering)\n  |     --> summarize will NOT help here (no JS rendering)\n  |\n  +-- Anti-bot / paywalled / Cloudflare-protected?\n  |     --> summarize --firecrawl always (requires FIRECRAWL_API_KEY)\n  |     --> browser-based workflow as fallback\n  |\n  +-- YouTube video?\n  |     --> summarize --extract (ONLY option for transcript)\n  |     --> Add --youtube web for captions-only (faster)\n  |     --> Add --slides for visual slide extraction\n  |\n  +-- Podcast / RSS feed?\n  |     --> summarize --extract (ONLY option)\n  |     --> Supports Apple Podcasts, Spotify, RSS feeds, Podbean, etc.\n  |\n  +-- PDF (URL or local file)?\n  |     --> summarize --extract (ONLY CLI option)\n  |     --> Requires: uvx/markitdown (brew install uv)\n  |\n  +-- Image (OCR)?\n  |     --> summarize --extract (ONLY CLI option)\n  |     --> Requires: tesseract\n  |\n  +-- Audio / video file?\n        --> summarize --extract (ONLY CLI option)\n        --> Requires: whisper-cli (local) or OPENAI_API_KEY (cloud)\n```\n\n**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.\n\n## Extraction Mode (Primary)\n\n`--extract` prints raw extracted content and exits. No LLM involved.\nUse this first. You can handle any downstream synthesis in your own workflow.\n\n```bash\n# Web page extraction (plain text, default)\nsummarize --extract \"https://example.com\" --plain\n\n# Web page extraction (markdown format)\nsummarize --extract \"https://example.com\" --format md --plain\n\n# YouTube transcript\nsummarize --extract \"https://www.youtube.com/watch?v=VIDEO_ID\" --plain\n\n# YouTube transcript with timestamps\nsummarize --extract \"https://www.youtube.com/watch?v=VIDEO_ID\" --timestamps --plain\n\n# YouTube transcript formatted as markdown (requires LLM -- uses API key)\nsummarize --extract \"https://www.youtube.com/watch?v=VIDEO_ID\" --format md --markdown-mode llm --plain\n\n# YouTube slides + transcript\nsummarize --extract \"https://www.youtube.com/watch?v=VIDEO_ID\" --slides --plain\n\n# Podcast (RSS feed)\nsummarize --extract \"https://feeds.example.com/podcast.xml\" --plain\n\n# Apple Podcasts episode\nsummarize --extract \"https://podcasts.apple.com/us/podcast/EPISODE_ID\" --plain\n\n# PDF from URL\nsummarize --extract \"https://example.com/document.pdf\" --plain\n\n# PDF from local file\nsummarize --extract \"/path/to/document.pdf\" --plain\n\n# Image OCR\nsummarize --extract \"/path/to/image.png\" --plain\n\n# Audio transcription\nsummarize --extract \"/path/to/audio.mp3\" --plain\n\n# Video transcription\nsummarize --extract \"/path/to/video.mp4\" --plain\n\n# Stdin (pipe content)\npbpaste | summarize --extract - --plain\ncat document.pdf | summarize --extract - --plain\n```\n\n**Always use `--plain`** when extracting for agent consumption. It suppresses ANSI/OSC rendering.\n\n**Extraction defaults:**\n- URLs default to `--format md` in extract mode\n- Files default to `--format text`\n- PDF requires uvx/markitdown (`--preprocess auto`, which is default)\n\n## LLM Summarization Mode (Secondary)\n\nUse this mode only when you explicitly want summarize to perform synthesis itself.\n\n```bash\n# Summarize a URL (requires API key for the chosen model)\nsummarize \"https://example.com\" --model anthropic/claude-sonnet-4-5 --length long\n\n# Summarize with a custom prompt\nsummarize \"https://example.com\" --prompt \"Extract key technical decisions and their rationale\"\n\n# Summarize YouTube video\nsummarize \"https://www.youtube.com/watch?v=VIDEO_ID\" --length xl\n\n# JSON output with metrics\nsummarize \"https://example.com\" --json --model openai/gpt-5-mini\n```\n\n**API keys for LLM mode** (set in `~/.summarize/config.json` or env vars):\n- `ANTHROPIC_API_KEY` -- for anthropic/ models\n- `OPENAI_API_KEY` -- for openai/ models\n- `GEMINI_API_KEY` -- for google/ models\n- `XAI_API_KEY` -- for xai/ models\n\n## Dependency Matrix\n\n| Feature | Required Deps |\n|---------|--------------|\n| Web page extraction | None |\n| YouTube transcript (captions) | None (web mode) |\n| YouTube transcript (no captions) | yt-dlp + whisper or API key |\n| YouTube slides | yt-dlp + ffmpeg |\n| Podcast transcription | yt-dlp + whisper or API key |\n| PDF extraction | uvx/markitdown |\n| Image OCR | tesseract |\n| Audio/video transcription | whisper-cli (local) or OPENAI_API_KEY |\n| Anti-bot sites (Firecrawl) | FIRECRAWL_API_KEY |\n| Slide OCR | tesseract |\n\n**What is not installed (by design):**\n- `whisper-cli` / whisper.cpp -- heavy binary, install when audio transcription is needed\n- Firecrawl API key -- paid service, configure when anti-bot extraction is needed\n- LLM API keys in summarize config -- only add if you use LLM Summarization Mode\n\n## Key Flags Quick Reference\n\n| Flag | Purpose | Example |\n|------|---------|---------|\n| `--extract` | Raw content extraction, no LLM | `summarize --extract URL` |\n| `--plain` | No ANSI rendering (agent-safe output) | Always use for agents |\n| `--format md\\|text` | Output format (md default for URLs in extract) | `--format md` |\n| `--youtube auto\\|web\\|yt-dlp` | YouTube transcript source | `--youtube web` (captions only) |\n| `--slides` | Extract video slides with ffmpeg | `--slides --slides-ocr` |\n| `--timestamps` | Include timestamps in transcripts | `--timestamps` |\n| `--firecrawl off\\|auto\\|always` | Firecrawl for anti-bot sites | `--firecrawl always` |\n| `--preprocess off\\|auto\\|always` | Preprocessing (markitdown for PDFs) | Default `auto` |\n| `--markdown-mode` | HTML-to-MD conversion mode | `--markdown-mode readability` |\n| `--timeout` | Fetch/LLM timeout | `--timeout 2m` |\n| `--verbose` | Debug output to stderr | Troubleshooting |\n| `--json` | Structured JSON output with metrics | `--json` |\n| `--length` | Summary length (LLM mode only) | `--length xl` |\n| `--model` | LLM model (LLM mode only) | `--model anthropic/claude-sonnet-4-5` |\n| `--max-extract-characters` | Limit extract output length | `--max-extract-characters 50000` |\n| `--language\\|--lang` | Output language | `--lang en` |\n| `--video-mode` | Video handling mode | `--video-mode transcript` |\n| `--transcriber` | Audio backend | `--transcriber whisper` |\n\n## Verified Services (YouTube/Podcasts)\n\n**YouTube:** All public videos with captions. Falls back to yt-dlp audio download + transcription for videos without captions.\n\n**Podcasts (verified):**\n- Apple Podcasts\n- Spotify (best-effort; may fail for exclusives)\n- Amazon Music / Audible podcast pages\n- Podbean\n- Podchaser\n- RSS feeds (Podcasting 2.0 transcripts when available)\n- Embedded YouTube podcast pages\n\n## Common Patterns\n\n### 1. YouTube Transcript for Analysis\n\n```bash\n# Quick: captions only (fastest, no deps beyond summarize)\nsummarize --extract \"https://www.youtube.com/watch?v=VIDEO_ID\" --youtube web --plain\n\n# Full: with timestamps\nsummarize --extract \"https://www.youtube.com/watch?v=VIDEO_ID\" --timestamps --plain\n\n# Formatted as clean markdown (requires LLM API key)\nsummarize --extract \"https://www.youtube.com/watch?v=VIDEO_ID\" --format md --markdown-mode llm --plain\n```\n\n### 2. Podcast Episode Transcript\n\n```bash\n# From RSS feed (transcribes latest episode)\nsummarize --extract \"https://feeds.example.com/podcast.xml\" --plain\n\n# From Apple Podcasts link\nsummarize --extract \"https://podcasts.apple.com/us/podcast/SHOW/EPISODE\" --plain\n```\n\n### 3. PDF Content Extraction\n\n```bash\n# From URL\nsummarize --extract \"https://example.com/report.pdf\" --plain\n\n# From local file\nsummarize --extract \"/path/to/file.pdf\" --plain\n\n# Limit output length\nsummarize --extract \"/path/to/huge.pdf\" --max-extract-characters 50000 --plain\n```\n\n### 4. Image OCR\n\n```bash\nsummarize --extract \"/path/to/screenshot.png\" --plain\nsummarize --extract \"/path/to/scanned-doc.jpg\" --plain\n```\n\n### 5. Anti-Bot Website (Firecrawl Fallback)\n\n```bash\n# Requires FIRECRAWL_API_KEY in env or config\nsummarize --extract \"https://paywalled-site.com/article\" --firecrawl always --plain\n```\n\n### 6. Batch Extraction (Shell Loop)\n\n```bash\n# Extract multiple YouTube videos\nfor url in \"URL1\" \"URL2\" \"URL3\"; do\n  echo \"=== $url ===\"\n  summarize --extract \"$url\" --plain\ndone\n```\n\n## Error Handling\n\n| Symptom | Cause | Fix |\n|---------|-------|-----|\n| `Missing uvx/markitdown` | PDF preprocessing not available | `brew install uv` |\n| `does not support extracting binary files` | Preprocessing disabled for PDF | Use `--preprocess auto` (default) with uvx installed |\n| 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 |\n| `FIRECRAWL_API_KEY not set` | Anti-bot mode requires Firecrawl | Set key in env or `~/.summarize/config.json` |\n| Timeout on large content | Default 2m timeout too short | Use `--timeout 5m` |\n| Audio transcription fails | No whisper backend available | Install whisper-cli locally or set OPENAI_API_KEY/FAL_KEY |\n| Podcast extraction fails | Audio download failed | Check yt-dlp is installed and updated: `brew upgrade yt-dlp` |\n| Garbled web extraction | JS-rendered content | summarize has no JS engine; use Crawl4AI instead |\n\n## Configuration\n\nConfig file: `~/.summarize/config.json`\n\n```json\n{\n  \"model\": \"auto\",\n  \"env\": {\n    \"FIRECRAWL_API_KEY\": \"fc-...\"\n  },\n  \"ui\": {\n    \"theme\": \"mono\"\n  }\n}\n```\n\nConfigure only what your workflow needs. If you use LLM Summarization Mode, add the required API keys.\n\n## Anti-Patterns\n\n| Do NOT | Do Instead |\n|--------|------------|\n| Use summarize for static web pages | WebFetch or Jina (faster, zero deps) |\n| Use summarize for JS-heavy SPAs | Crawl4AI crwl (has browser rendering) |\n| Use summarize's LLM mode as default | Use `--extract` and run synthesis in your own workflow unless explicitly required |\n| Skip `--plain` for any non-interactive run | Always use `--plain` to avoid ANSI escape codes |\n| Install whisper.cpp preemptively | Install only when audio transcription use case arises |\n| Forget `--timeout` for large media | Podcasts/videos can take minutes; set `--timeout 5m` |\n| Use summarize when WebFetch works | summarize is heavier; reserve for media and fallback |\n| Use summarize for local repo/codebase search | Use your local knowledge search tools |\n\n## Bundled Resources Index\n\n| Path | What | When to Load |\n|------|------|-------------|\n| `./UPDATES.md` | Structured changelog for AI agents | When checking for new features or updates |\n| `./UPDATE-GUIDE.md` | Instructions for AI agents performing updates | When updating this skill |\n| `./references/installation-guide.md` | Detailed install walkthrough for Claude Code and Codex CLI | First-time setup or environment repair |\n| `./references/commands.md` | Full CLI flag reference with all options | When you need exact flag syntax or env var names |","tags":["summarize","fieldwork","skills","buildoak","agent-skills","ai-agents","ai-tools","automation","browser-automation","claude-code","claude-skills","codex"],"capabilities":["skill","source-buildoak","skill-summarize","topic-agent-skills","topic-ai-agents","topic-ai-tools","topic-automation","topic-browser-automation","topic-claude-code","topic-claude-skills","topic-codex"],"categories":["fieldwork-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/buildoak/fieldwork-skills/summarize","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add buildoak/fieldwork-skills","source_repo":"https://github.com/buildoak/fieldwork-skills","install_from":"skills.sh"}},"qualityScore":"0.457","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 15 github stars · SKILL.md body (12,908 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T19:06:33.294Z","embedding":null,"createdAt":"2026-04-18T23:07:16.304Z","updatedAt":"2026-04-22T19:06:33.294Z","lastSeenAt":"2026-04-22T19:06:33.294Z","tsv":"'/.summarize/config.json':711,1325,1392 '/article':1222 '/document.pdf':562 '/path/to/audio.mp3':582 '/path/to/document.pdf':225,570 '/path/to/file.pdf':1176 '/path/to/huge.pdf':1183 '/path/to/image.png':576 '/path/to/scanned-doc.jpg':1200 '/path/to/screenshot.png':1196 '/path/to/video.mp4':588 '/podcast.xml':544,1146 '/references/commands.md':1584 '/references/installation-guide.md':1567 '/report.pdf':1169 '/update-guide.md':1556 '/updates.md':1543 '/us/podcast/episode_id':553 '/us/podcast/show/episode':1156 '/watch?v=video_id':221,492,502,519,534,692,1097,1108,1123 '/whisper':1292 '1':1079 '2':1131 '2.0':1069 '2m':961,1331 '3':1158 '4':1190 '5':1202 '50000':1003,1188 '5m':1337,1509 '6':1226 'add':326,334,845,1416 'agent':8,161,166,183,608,873,879,1548,1560 'agent-saf':872 'agents.md':133 'ai':6,34,160,1547,1559 'altern':269 'alway':307,602,876,925,933,937,1224,1479 'amazon':1059 'analysi':1083 'ansi':95,238,870,1484 'ansi/osc':612 'anthrop':715,719 'anthropic/claude-sonnet-4-5':668,990 'anti':299,797,833,929,1204,1315,1422 'anti-bot':298,796,832,928,1203,1314 'anti-pattern':1421 'api':310,394,513,659,704,716,722,728,734,763,778,794,802,826,839,1117,1212,1307,1310,1353,1398,1419 'append':124 'appl':348,546,1049,1149 'appli':187 'aris':1497 'articl':255 'audibl':1061 'audio':379,409,578,821,1021,1040,1338,1358,1493 'audio/video':15,786 'auto':633,894,924,936,943,1276,1395 'avail':1072,1260,1287,1344 'avoid':1483 'back':1035 'backend':1022,1343 'base':85,314 'bash':107,214,464,654,1084,1135,1162,1193,1209,1231 'batch':1227 'best':1053 'best-effort':1052 'beyond':1091 'binari':818,1268 'blog':257 'bot':300,798,834,930,1205,1316 'brew':108,111,367,1261,1369 'brittl':46 'browser':84,288,313,1450 'browser-bas':83,312 'built':260 'built-in':259 'bundl':1535 'caption':331,750,757,904,1033,1046,1086,1286 'captions-on':330 'case':1496 'cat':597 'caus':1253 'chang':178,190 'changelog':155,1545 'charact':89,994,1002,1187 'check':167,1361,1550 'chosen':663 'claud':114,1572 'claude/skills/summarize':121 'clean':22,1113 'cli':19,123,363,375,385,390,790,815,1303,1348,1576,1586 'cloud':396 'cloudflar':303 'cloudflare-protect':302 'code':7,45,96,115,1486,1573 'codex':122,1575 'color/control':98 'common':1077 'complex':420 'config':843,1217,1390 'configur':830,1389,1404 'consumpt':609 'content':2,41,127,248,284,445,592,861,1160,1329,1380 'convers':951 'copi':116 'crawl4ai':285,1387,1447 'crwl':286,1448 'custom':196,674 'debug':963 'decis':240,682 'default':232,403,470,615,617,625,636,886,942,1277,1330,1458 'dep':263,743,1090,1439 'depend':141,417,739 'design':812 'detail':1568 'determinist':55,235 'dif':200 'disabl':1271 'dlp':760,769,775,898,1039,1291,1296,1364,1373 'doc':256 'document':74 'document.pdf':598 'dom':73,419 'done':1249 'download':1041,1359 'downstream':458 'dynam':283 'echo':1243 'effort':1054 'element':79 'embed':1073 'empti':1283 'en':1009 'end':211,213 'end-to-end':210 'engin':1385 'env':713,1215,1323,1396,1599 'environ':1582 'episod':548,1133,1141 'error':1250 'escap':1485 'etc':354 'exact':1595 'exampl':858 'example.com':473,482,561,666,677,700,1168 'example.com/document.pdf':560 'example.com/report.pdf':1167 'exclus':1058 'exit':447 'explicit':647,1469 'extract':3,21,56,91,208,218,224,228,321,339,344,361,373,383,406,438,441,444,467,472,477,481,489,499,516,531,541,550,559,569,575,581,587,595,600,606,614,622,679,746,781,835,859,862,866,890,907,993,996,1001,1094,1105,1120,1143,1153,1161,1166,1175,1182,1186,1195,1199,1219,1228,1232,1246,1267,1356,1376,1460 'extractor':86 'fail':275,437,1056,1340,1357,1360 'fall':1034 'fallback':317,1208,1299,1522 'faster':264,333,1437 'fastest':1088 'fc':1400 'featur':176,741,1553 'feed':60,342,352,539,1067,1138 'feeds.example.com':543,1145 'feeds.example.com/podcast.xml':542,1144 'fetch/llm':958 'ffmpeg':770,911 'file':29,67,72,198,359,381,567,624,1173,1269,1391 'firecrawl':306,309,800,801,825,922,926,932,1207,1211,1223,1309,1319,1397 'first':453,1578 'first-tim':1577 'fix':1254 'flag':853,856,1587,1596 'flow':209 'folder':119 'follow':193 'forget':1498 'format':479,483,507,520,619,627,880,884,891,1111,1124 'full':136,287,1101,1585 'garbag':278 'garbl':1374 'gemini':727 'googl':731 'hand':44 'hand-cod':43 'handl':456,1014,1251 'hard':422 'heavi':281,817,1445 'heavier':1517 'help':293 'html':948 'html-to-md':947 'imag':13,63,370,411,572,783,1191 'images/scans':94 'includ':917 'index':1537 'instal':112,137,163,268,368,810,819,1262,1280,1293,1300,1345,1366,1487,1490,1569 'instead':1388,1427 'instruct':1557 'interact':1477 'involv':450 'jina':265,1436 'js':280,296,1378,1384,1444 'js-heavi':279,1443 'js-render':1377 'json':695,701,968,970,974,1393 'key':311,395,514,660,680,705,717,723,729,735,764,779,795,803,827,840,852,1118,1213,1308,1311,1321,1399,1420 'key/fal_key':1354 'knowledg':1532 'lang':1005,1008 'languag':1004,1007 'larg':1328,1501 'latest':189,1140 'length':669,693,975,977,981,998,1180 'limit':995,1178 'link':1151 'llm':449,511,525,637,707,838,849,864,978,984,986,1116,1129,1413,1455 'load':1542 'local':65,197,358,391,566,791,1172,1349,1526,1531 'logic':48 'long':670 'loop':1230 'machin':104 'markdown':478,509,523,945,954,1114,1127 'markdown-mod':522,944,953,1126 'markitdown':939 'matrix':740 'max':992,1000,1185 'max-extract-charact':991,999,1184 'may':1055 'md':484,521,620,881,885,892,950,1125 'media':25,66,405,1502,1520 'metric':698,973 'minut':1506 'miss':1255 'mode':439,524,623,639,643,708,753,851,946,952,955,979,987,1012,1015,1018,1128,1317,1415,1456 'model':76,664,667,702,720,726,732,738,983,985,989,1394 'mono':1403 'multipl':1233 'music':1060 'name':1601 'need':54,247,824,837,1409,1594 'new':175,1552 'non':237,1476 'non-ansi':236 'non-interact':1475 'none':747,751 'object':75 'ocr':14,87,371,573,784,805,915,1192 'one':207 'openai':393,721,725,793,1306,1352 'openai/gpt-5-mini':703 'optic':88 'option':140,323,346,364,376,386,1591 'output':239,696,875,883,964,971,997,1006,1179 'overwrit':203 'page':78,254,414,424,466,476,745,1063,1076,1433 'paid':828 'pars':105,428 'path':1538 'pattern':233,1078,1423 'paywal':301 'paywalled-site.com':1221 'paywalled-site.com/article':1220 'pbpast':593 'pdf':355,555,564,629,780,1159,1257,1273 'pdfs':12,61,941 'perform':651,1561 'pipe':591 'plain':100,222,226,229,468,474,485,493,504,526,536,545,554,563,571,577,583,589,596,601,604,868,1100,1110,1130,1147,1157,1170,1177,1189,1197,1201,1225,1248,1472,1481 'podbean':353,1064 'podcast':11,59,340,349,408,537,547,771,1047,1050,1062,1068,1075,1132,1150,1355 'podcasts.apple.com':552,1155 'podcasts.apple.com/us/podcast/episode_id':551 'podcasts.apple.com/us/podcast/show/episode':1154 'podcasts/videos':1503 'podchas':1065 'preemptiv':1489 'prefer':415 'preprocess':632,934,938,1258,1270,1275 'prerequisit':139 'primari':440 'print':442 'project':130 'prompt':675,678 'protect':304 'public':1030 'purpos':857 'quick':204,854,1085 'r.jina.ai':266 'rational':685 'raw':443,860 'read':184 'readabl':956 'reason':37 'recognit':90 'refer':855,1588 'references/installation-guide.md':145,146 'reliabl':39 'remov':101 'render':289,297,613,871,1379,1451 'repair':1583 'repo/codebase':1527 'requir':308,365,377,387,510,630,658,742,1115,1210,1318,1418,1470 'reserv':1518 'resourc':1536 'return':277,1282 'root':132 'rss':341,351,538,1066,1137 'rule':397 'run':206,1462,1478 'safe':874 'scan':62 'scraper':47 'search':1528,1533 'secondari':640 'see':144 'sequenc':99 'servic':829,1026 'set':709,1305,1313,1320,1351,1507 'setup':106,1580 'shell':1229 'ship':151 'short':1334 'site':799,931 'skill':4,51,118,150,172,1566 'skill-summarize' 'skill.md':126 'skip':1471 'slide':335,338,528,535,766,804,906,909,912,914 'slides-ocr':913 'sourc':40,901 'source-buildoak' 'spa':282 'spas':1446 'spotifi':350,1051 'start':205 'static':252,1431 'stay':147 'stderr':966 'stdin':590 'steipete/tap':110 'stream':31 'structur':80,425,969,1544 'summar':1,18,20,113,171,215,217,223,242,270,290,305,320,343,360,372,382,400,430,471,480,488,498,515,530,540,549,558,568,574,580,586,594,599,638,649,655,665,671,676,686,689,699,842,850,865,1092,1093,1104,1119,1142,1152,1165,1174,1181,1194,1198,1218,1245,1381,1414,1429,1441,1453,1511,1515,1524 'summari':976 'support':347,1266 'suppress':611 'symptom':1252 'syntax':1597 'synthesi':459,652,1463 'take':1505 'tap':109 'technic':681 'tell':164,181 'termin':97 'terminolog':68 'tesseract':378,785,806 'text':23,92,246,469,628,882 'theme':1402 'thumb':399 'time':1579 'timeout':957,959,960,1326,1332,1336,1499,1508 'timestamp':497,503,916,918,921,1103,1109 'tool':245,274,436,1534 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-tools' 'topic-automation' 'topic-browser-automation' 'topic-claude-code' 'topic-claude-skills' 'topic-codex' 'transcrib':1020,1023,1139 'transcript':10,26,325,487,495,506,529,579,585,749,755,772,787,822,900,920,1019,1042,1070,1081,1134,1284,1339,1494 'tree':241 'troubleshoot':143,967 'ui':1401 'unless':1468 'updat':148,180,1368,1555,1562,1564 'update-guide.md':157,185,194 'updates.md':154,168,192 'upgrad':1370 'url':28,356,557,616,657,867,888,1164,1237,1244,1247 'url1':1239 'url2':1240 'url3':1241 'use':49,69,81,227,429,451,512,603,641,848,877,1274,1335,1386,1412,1428,1440,1452,1459,1480,1495,1510,1523,1529 'uv':369,1263 'uvx':1279 'uvx/markitdown':366,631,782,1256 'var':714,1600 'verbos':962 'verif':142 'verifi':1025,1048 'version':216 'via':16 'video':319,380,410,584,688,908,1011,1013,1017,1031,1044,1235 'video-mod':1010,1016 'visual':337 'vs':243 'walkthrough':138,1570 'want':648 'web':251,253,328,413,432,465,475,744,752,895,903,1099,1375,1432 'webfetch':258,1434,1513 'webfetch/jina/crawl4ai':416 'websit':1206 'whisper':389,761,776,789,814,1024,1298,1302,1342,1347 'whisper-c':388,788,813,1301,1346 'whisper.cpp':816,1488 'without':42,1045 'work':1514 'workflow':35,315,463,1408,1467 'www.youtube.com':220,491,501,518,533,691,1096,1107,1122 'www.youtube.com/watch?v=video_id':219,490,500,517,532,690,1095,1106,1121 'xai':733,737 'xl':694,982 'youtub':9,58,318,327,407,486,494,505,527,687,748,754,765,893,899,902,1028,1074,1080,1098,1234,1281 'youtube/podcasts':1027 'yt':759,768,774,897,1038,1290,1295,1363,1372 'yt-dlp':758,767,773,896,1037,1289,1294,1362,1371 'zero':262,267,1438","prices":[{"id":"34aa714f-3a24-4b95-b98b-c155e2131379","listingId":"0b355fff-e399-48b3-a65c-a7b404a0dd92","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"buildoak","category":"fieldwork-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T23:07:16.304Z"}],"sources":[{"listingId":"0b355fff-e399-48b3-a65c-a7b404a0dd92","source":"github","sourceId":"buildoak/fieldwork-skills/summarize","sourceUrl":"https://github.com/buildoak/fieldwork-skills/tree/main/skills/summarize","isPrimary":false,"firstSeenAt":"2026-04-18T23:07:16.304Z","lastSeenAt":"2026-04-22T19:06:33.294Z"}],"details":{"listingId":"0b355fff-e399-48b3-a65c-a7b404a0dd92","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"buildoak","slug":"summarize","github":{"repo":"buildoak/fieldwork-skills","stars":15,"topics":["agent-skills","ai-agents","ai-tools","automation","browser-automation","claude-code","claude-skills","codex"],"license":"apache-2.0","html_url":"https://github.com/buildoak/fieldwork-skills","pushed_at":"2026-03-18T08:36:25Z","description":"Battle-tested skills for AI agents that do real work","skill_md_sha":"b55a7a7bca03e747a02aa8488da9a2b5b4e1c301","skill_md_path":"skills/summarize/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/buildoak/fieldwork-skills/tree/main/skills/summarize"},"layout":"multi","source":"github","category":"fieldwork-skills","frontmatter":{"name":"summarize","description":"Content extraction skill for AI coding agents. YouTube transcripts, podcasts, PDFs, images (OCR), audio/video via the summarize CLI."},"skills_sh_url":"https://skills.sh/buildoak/fieldwork-skills/summarize"},"updatedAt":"2026-04-22T19:06:33.294Z"}}