{"id":"75326f5a-b33d-48fd-b6db-88dd3b151e57","shortId":"qSvhPb","kind":"skill","title":"summarize","tagline":"Summarize any block of text using the `summarize` CLI (chained-in from steipete/summarize — npm package `@steipete/summarize`). Use whenever the user pastes a long piece of content and asks for a TL;DR, a summary, a digest, a gist, a condensed version, or key points — even if the","description":"# /summarize — text → TL;DR via steipete/summarize\n\nYou are summarizing arbitrary text using the `summarize` CLI from github.com/steipete/summarize (npm: `@steipete/summarize`). This skill is a **chain-in wrapper** — mktg does not fork or vendor the tool; it orchestrates it when the user has it installed.\n\n## On Activation\n\n1. **Preflight:** Run `summarize --version` via the Bash tool.\n   - If the command is not found, print the short install hint below and stop. Offer to walk the user through [rules/install.md](rules/install.md) if they want the long version.\n     ```\n     summarize CLI not installed. Quickest path:\n       npm i -g @steipete/summarize   (requires Node 22+)\n       brew install summarize         (macOS)\n     Then rerun. Full install guide: skills/summarize/rules/install.md\n     ```\n   - If it prints a version, continue.\n2. **Read `brand/voice-profile.md` if it exists.** At L1+ you should quietly align the TL;DR's *voice* to the brand (tone, energy, diction). At L0 (no brand memory), just produce a neutral summary — do not invent voice.\n3. **Resolve the input.** Accept any of:\n   - A **file path**: pass it directly to summarize (e.g. `summarize /tmp/article.md --length short --plain`)\n   - **Stdin / pasted text**: pipe through `-` (e.g. `cat /tmp/article.md | summarize - --length short --plain`)\n   - **Inline argument text**: write to a scratch file in `.summarize/` first, then pass the path — do not shell-interpolate large blobs of text\n4. **Short-circuit check.** If the input is clearly under ~500 words (or under ~3,000 characters), do **not** run summarize. Return the content as-is and tell the user it was already short enough. Running summarize on tiny inputs wastes latency and the upstream CLI itself returns short content as-is by default unless `--force-summary` is set.\n5. **Run summarize.** Prefer structured output for agent consumption:\n   ```bash\n   summarize <input> --length <preset> --plain --json\n   ```\n   - `--length short|medium|long|xl|xxl` — pick one based on the caller's ask (default: `medium`)\n   - `--plain` — raw output, no ANSI/OSC markdown rendering (agents want plain text)\n   - `--json` — machine-readable envelope with the summary, metrics, and prompt (only when the caller needs metadata; omit for simple TL;DRs)\n   - `--no-color` — belt-and-suspenders if you're capturing stdout\n   - `--timeout 2m` — keep the default unless you know the input is huge\n6. **Capture and return structured output.** The skill's contract with callers:\n   ```\n   {\n     \"summary\": \"<the condensed text>\",\n     \"input_chars\": <int>,\n     \"output_chars\": <int>,\n     \"compression_ratio\": <float>,\n     \"length_preset\": \"<short|medium|long|xl|xxl>\",\n     \"source\": \"<path or 'stdin'>\"\n   }\n   ```\n7. **Never dump huge outputs into context.** Write long outputs to `.summarize/<slug>.md` and return a path + head. Agents should treat the scratch dir like firecrawl's `.firecrawl/` — gitignored, isolated, cleaned on demand.\n\n## How summarize works\n\n`@steipete/summarize` is a Node-22+ CLI that takes a URL, file, or stdin and returns a condensed version rendered as streaming Markdown (or raw JSON when `--json` is set). Under the hood it routes text through an LLM backend — by default `auto` picks the best available provider (cloud key, local endpoint, or a chained coding CLI like Claude/Codex/Gemini/OpenCode). When only offline coding CLIs are available, it falls back to them automatically.\n\nFor Pillar 3 (this skill) mktg uses only the **text → summary** surface of the tool. The upstream CLI can also fetch URLs, transcribe YouTube videos, extract PDFs, and run OCR on video slides — but **those jobs belong to other pillars in mktg**:\n\n- URL fetching → `firecrawl` skill\n- YouTube / podcast / TikTok / audio transcription → `mktg-transcribe`\n- X/Twitter reading → `mktg-x`\n\nsummarize's role inside mktg is narrower: **take text that another pillar already extracted, return a shorter version**. Keeping the role small keeps the chain-in surface predictable and prevents overlap with mktg's first-class capabilities.\n\nUpstream repo: https://github.com/steipete/summarize\nNPM package: `@steipete/summarize`\nAuthor: Peter Steinberger (@steipete)\nLicense: see upstream (chain-in, not vendored)\n\n## Usage patterns\n\n### Pattern A — summarize a local article/markdown file\n\n```bash\nsummarize /path/to/article.md --length short --plain\n```\n\nUse when a source-digestion workflow has scraped a long blog post via firecrawl and the source extractor wants a TL;DR to attach to the grounding memo alongside the full extract.\n\n### Pattern B — summarize stdin (pasted text, piped output)\n\n```bash\ncat /tmp/transcript.txt | summarize - --length medium --plain\npbpaste | summarize - --length short --plain\n```\n\nUse for ad-hoc \"the user pasted a giant blob, condense it\" requests. Remember: stdin has a 50MB cap upstream, and whitespace-only input is rejected.\n\n### Pattern C — chain-in from mktg-transcribe\n\n```bash\nmktg transcribe \"https://youtu.be/<id>\" --json \\\n  | jq -r .data.transcript \\\n  | summarize - --length medium --plain \\\n  > .summarize/youtube-<id>-tldr.md\n```\n\nThis is the `mktg-transcribe --summarize` flow. Transcribe pipes the transcript text, summarize compresses it, the result is a one-page TL;DR attached to the grounding memo.\n\n### Pattern D — JSON envelope for agent consumption\n\n```bash\nsummarize /tmp/long-article.md --length short --plain --json \\\n  > .summarize/article-summary.json\n```\n\nWhen a source-digestion workflow needs the summary plus metrics (input char count, model used, latency) for telemetry or caching, prefer `--json`. Parse `.summary`, `.metrics`, and `.prompt` fields downstream.\n\n### Pattern E — preset selection cheat sheet\n\n| Caller intent | `--length` | Why |\n|---|---|---|\n| \"one-sentence gist\" | `short` | ~900 char target, fast |\n| \"executive summary\" | `medium` | ~1,800 char target, default |\n| \"detailed digest\" | `long` | ~4,200 char target |\n| \"thorough condensation\" | `xl` | ~9,000 char target |\n| \"near-full summary\" | `xxl` | ~17,000 char target |\n| \"I need exactly N chars\" | numeric (`--length 2500`) | character target, >= 50 |\n\n## Chain-in role in the mktg multimedia digestion system\n\nThis skill is Pillar 3 of the four-pillar digestion system (see `docs/plans/2026-04-11-002-feat-mktg-multimedia-digestion-plan.md`). Its job is **text compression**, not source ingestion.\n\n**Who calls summarize:**\n\n- **`mktg-transcribe`** — optionally pipes its transcript output through summarize when `--summarize` is passed. This is how video source digestion produces both a full transcript and a TL;DR in a single agent hop.\n- **Source extractors** — when a firecrawl-scraped article is long and the grounding memo would overflow, the source extractor summarizes the extract and attaches both.\n- **Any skill producing long-form text** — `seo-content`, `newsletter`, `direct-response-copy` outputs can be summarized for preview cards, hooks, or social atomization.\n\n**Who does NOT call summarize:**\n\n- Anything dealing with structured data (JSON/CSV/code) — summarize is tuned for prose, not data schemas.\n- Skills that need the full content preserved (brand memory, legal-critical docs, verbatim quotes).\n- Short-input skills where the LLM round-trip isn't worth the latency.\n\n**Default posture:** summarize is an *enhancement*, not a gate. If it's missing, the calling skill still ships the full content — just without a TL;DR. Progressive enhancement applies here the same way brand memory does.\n\n## Anti-Patterns\n\n1. **Running summarize on structured data.** JSON, CSV, code, SQL — don't. **Why:** the tool is tuned for prose. Structured data loses its schema semantics through an LLM condenser and the output is unreliable. If the user wants \"the gist of this JSON\", explain what the data represents in natural language yourself; don't route it through summarize.\n\n2. **Summarizing already-short text.** If input is under ~500 words (~3,000 chars), skip the call entirely. **Why:** adds latency and cost with no value. Upstream summarize itself returns short content as-is by default. Be honest with the user: \"this is already a short read, no TL;DR needed.\"\n\n3. **Mandating summarization for every long text.** Never default-summarize a skill's output. Offer it as an option. **Why:** many skills want the full content — brand extraction, legal copy, launch memos. Silently truncating them via summarize corrupts the downstream pipeline. Let the caller explicitly ask for a TL;DR.\n\n4. **Forgetting attribution.** summarize is a third-party tool maintained by @steipete. **Why:** mktg ships as a curation layer. When we chain in external tools we credit them so maintainers get recognition and users can upstream issues correctly. Every reference to summarize in generated content must link back to https://github.com/steipete/summarize.\n\n5. **Dumping huge `--json` outputs directly into agent context.** Write to `.summarize/<slug>.json` and return head/tail slices. **Why:** a single summarize `--json` call can easily exceed 10KB of metrics + prompt + summary. Pouring that into an agent's context burns tokens and masks the actual TL;DR. Treat it like firecrawl output: file-based isolation, incremental reads.\n\n6. **Using summarize as a URL fetcher even though it technically can.** Upstream summarize accepts URLs, YouTube, podcasts, and PDFs directly. **Why:** mktg reserves ingestion for its own pillars (firecrawl, mktg-transcribe, mktg-x) so the digestion matrix has exactly one owner per source type. Letting summarize also fetch URLs creates two sources of truth for \"who scraped this blog\" and breaks source-type routing. Scope this skill to text-in → text-out.\n\n7. **Skipping the install preflight.** Always run `summarize --version` first. **Why:** the tool is an *optional* chain-in. Silent failures (\"the summary never came back\") are worse than a clear \"not installed, here's how to install\" message. `mktg doctor` will also flag it, but the skill itself should fail fast.\n\n## References\n\n- [rules/install.md](rules/install.md) — how to install `@steipete/summarize`, verify the binary, and handle install failures on macOS/Linux/WSL.\n- [rules/usage.md](rules/usage.md) — idiomatic usage patterns, flag combinations, output shapes, and when to prefer summarize over direct LLM summarization.\n\n## Attribution\n\n**Source:** https://github.com/steipete/summarize\n**NPM package:** `@steipete/summarize`\n**Homepage:** https://summarize.sh\n**Author:** Peter Steinberger ([@steipete](https://github.com/steipete))\n**Type:** CLI tool (Node 22+)\n**License:** see upstream (`repos/steipete/summarize` — \"Other\" per GitHub; check upstream LICENSE file)\n**Relationship to mktg:** chained-in (upstream-only — mktg does not fork or vendor the code; users install `@steipete/summarize` separately and mktg orchestrates it)\n**Date wrapped:** 2026-04-11\n**Wrapped by:** mktg source-digestion workflows, Pillar 3 of the multimedia digestion plan\n**Plan reference:** `docs/plans/2026-04-11-002-feat-mktg-multimedia-digestion-plan.md`","tags":["summarize","marketing","cli","moizibnyousaf","agent-skills","ai-agents","ai-marketing","brand-memory","brand-voice","claude-code","claude-code-skills","cmo"],"capabilities":["skill","source-moizibnyousaf","skill-summarize","topic-agent-skills","topic-ai-agents","topic-ai-marketing","topic-brand-memory","topic-brand-voice","topic-claude-code","topic-claude-code-skills","topic-cli","topic-cmo","topic-marketing-automation","topic-marketing-cli","topic-seo"],"categories":["marketing-cli"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/MoizIbnYousaf/marketing-cli/summarize","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add MoizIbnYousaf/marketing-cli","source_repo":"https://github.com/MoizIbnYousaf/marketing-cli","install_from":"skills.sh"}},"qualityScore":"0.459","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 18 github stars · SKILL.md body (11,038 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-05-18T19:05:52.813Z","embedding":null,"createdAt":"2026-05-04T19:06:16.631Z","updatedAt":"2026-05-18T19:05:52.813Z","lastSeenAt":"2026-05-18T19:05:52.813Z","tsv":"'-04':1620 '-11':1621 '-22':475 '/path/to/article.md':671 '/steipete))':1575 '/steipete/summarize':68,644,1563 '/steipete/summarize.':1337 '/summarize':50 '/tmp/article.md':218,229 '/tmp/long-article.md':818 '/tmp/transcript.txt':718 '000':274,892,901,1194 '1':98,876,1123 '10kb':1364 '17':900 '2':164,1181 '200':885 '2026':1619 '22':147,1580 '2500':911 '2m':397 '3':201,273,544,929,1193,1234,1630 '4':258,884,1285 '5':321,1338 '50':914 '500':269,1191 '50mb':746 '6':408,1395 '7':435,1473 '800':877 '9':891 '900':869 'accept':205,1409 'activ':97 'actual':1381 'ad':731 'ad-hoc':730 'add':1201 'agent':328,358,453,814,982,1345,1373 'align':175 'alongsid':704 'alreadi':292,613,1184,1226 'already-short':1183 'also':561,1444,1515 'alway':1478 'anoth':611 'ansi/osc':355 'anti':1121 'anti-pattern':1120 'anyth':1040 'appli':1112 'arbitrari':59 'argument':235 'articl':991 'article/markdown':667 'as-i':283,310,1214 'ask':30,348,1280 'atom':1034 'attach':699,804,1007 'attribut':1287,1559 'audio':591 'author':648,1569 'auto':512 'automat':541 'avail':516,535 'b':709 'back':538,1333,1498 'backend':509 'base':343,1391 'bash':105,330,669,716,765,816 'belong':578 'belt':388 'belt-and-suspend':387 'best':515 'binari':1534 'blob':255,738 'block':4 'blog':686,1456 'brand':183,190,1061,1117,1261 'brand/voice-profile.md':166 'break':1458 'brew':148 'burn':1376 'c':757 'cach':844 'call':948,1038,1098,1198,1360 'caller':346,376,419,860,1278 'came':1497 'cap':747 'capabl':639 'captur':394,409 'card':1030 'cat':228,717 'chain':12,76,524,626,656,759,916,1307,1490,1596 'chain-in':75,625,655,758,915,1489 'chained-in':11,1595 'char':422,424,836,870,878,886,893,902,908,1195 'charact':275,912 'cheat':858 'check':262,1588 'circuit':261 'class':638 'claude/codex/gemini/opencode':528 'clean':465 'clear':267,1503 'cli':10,64,136,305,476,526,559,1577 'clis':533 'cloud':518 'code':525,532,1131,1608 'color':386 'combin':1547 'command':109 'compress':425,793,943 'condens':42,487,739,889,1151 'consumpt':329,815 'content':28,282,309,1018,1059,1104,1213,1260,1330 'context':441,1346,1375 'continu':163 'contract':417 'copi':1023,1264 'correct':1323 'corrupt':1272 'cost':1204 'count':837 'creat':1447 'credit':1312 'critic':1065 'csv':1130 'curat':1303 'd':810 'data':1044,1052,1128,1143,1169 'data.transcript':772 'date':1617 'deal':1041 'default':314,349,400,511,880,1084,1218,1243 'default-summar':1242 'demand':467 'detail':881 'diction':186 'digest':38,680,828,882,923,935,969,1433,1627,1634 'dir':458 'direct':213,1021,1343,1415,1556 'direct-response-copi':1020 'doc':1066 'docs/plans/2026-04-11-002-feat-mktg-multimedia-digestion-plan.md':938,1638 'doctor':1513 'downstream':853,1274 'dr':34,53,178,697,803,978,1109,1232,1284,1383 'drs':383 'dump':437,1339 'e':855 'e.g':216,227 'easili':1362 'endpoint':521 'energi':185 'enhanc':1089,1111 'enough':294 'entir':1199 'envelop':366,812 'even':47,1402 'everi':1238,1324 'exact':906,1436 'exceed':1363 'execut':873 'exist':169 'explain':1166 'explicit':1279 'extern':1309 'extract':567,614,707,1005,1262 'extractor':693,985,1002 'fail':1523 'failur':1493,1538 'fall':537 'fast':872,1524 'fetch':562,585,1445 'fetcher':1401 'field':852 'file':209,241,481,668,1390,1591 'file-bas':1389 'firecrawl':460,462,586,689,989,1387,1424 'firecrawl-scrap':988 'first':244,637,1482 'first-class':636 'flag':1516,1546 'flow':786 'forc':317 'force-summari':316 'forget':1286 'fork':82,1604 'form':1014 'found':112 'four':933 'four-pillar':932 'full':154,706,897,973,1058,1103,1259 'g':143 'gate':1092 'generat':1329 'get':1316 'giant':737 'gist':40,867,1162 'github':1587 'github.com':67,643,1336,1562,1574 'github.com/steipete))':1573 'github.com/steipete/summarize':66,642,1561 'github.com/steipete/summarize.':1335 'gitignor':463 'ground':702,807,996 'guid':156 'handl':1536 'head':452 'head/tail':1353 'hint':117 'hoc':732 'homepag':1567 'honest':1220 'hood':502 'hook':1031 'hop':983 'huge':407,438,1340 'idiomat':1543 'increment':1393 'ingest':946,1419 'inlin':234 'input':204,265,299,405,421,753,835,1071,1188 'insid':604 'instal':95,116,138,149,155,1476,1505,1510,1530,1537,1610 'intent':861 'interpol':253 'invent':199 'isn':1079 'isol':464,1392 'issu':1322 'job':577,940 'jq':770 'json':334,362,495,497,769,811,822,846,1129,1165,1341,1350,1359 'json/csv/code':1045 'keep':398,619,623 'key':45,519 'know':403 'l0':188 'l1':171 'languag':1173 'larg':254 'latenc':301,840,1083,1202 'launch':1265 'layer':1304 'legal':1064,1263 'legal-crit':1063 'length':219,231,332,335,427,672,720,725,774,819,862,910 'let':1276,1442 'licens':652,1581,1590 'like':459,527,1386 'link':1332 'llm':508,1075,1150,1557 'local':520,666 'long':25,133,338,431,443,685,883,993,1013,1239 'long-form':1012 'lose':1144 'machin':364 'machine-read':363 'maco':151 'macos/linux/wsl':1540 'maintain':1295,1315 'mandat':1235 'mani':1255 'markdown':356,492 'mask':1379 'matrix':1434 'md':447 'medium':337,350,430,721,775,875 'memo':703,808,997,1266 'memori':191,1062,1118 'messag':1511 'metadata':378 'metric':370,834,849,1366 'miss':1096 'mktg':79,547,583,594,599,605,634,763,766,783,921,951,1299,1417,1426,1429,1512,1594,1601,1614,1624 'mktg-transcrib':593,762,782,950,1425 'mktg-x':598,1428 'model':838 'multimedia':922,1633 'must':1331 'n':907 'narrow':607 'natur':1172 'near':896 'near-ful':895 'need':377,830,905,1056,1233 'neutral':195 'never':436,1241,1496 'newslett':1019 'no-color':384 'node':146,474,1579 'npm':16,69,141,645,1564 'numer':909 'ocr':571 'offer':121,1249 'offlin':531 'omit':379 'one':342,800,865,1437 'one-pag':799 'one-sent':864 'option':953,1253,1488 'orchestr':88,1615 'output':326,353,413,423,439,444,715,957,1024,1154,1248,1342,1388,1548 'overflow':999 'overlap':632 'owner':1438 'packag':17,646,1565 'page':801 'pars':847 'parti':1293 'pass':211,246,963 'past':23,223,712,735 'path':140,210,248,451 'pattern':661,662,708,756,809,854,1122,1545 'pbpast':723 'pdfs':568,1414 'per':1439,1586 'peter':649,1570 'pick':341,513 'piec':26 'pillar':543,581,612,928,934,1423,1629 'pipe':225,714,788,954 'pipelin':1275 'plain':221,233,333,351,360,674,722,727,776,821 'plan':1635,1636 'plus':833 'podcast':589,1412 'point':46 'post':687 'postur':1085 'pour':1369 'predict':629 'prefer':324,845,1553 'preflight':99,1477 'preserv':1060 'preset':428,856 'prevent':631 'preview':1029 'print':113,160 'produc':193,970,1011 'progress':1110 'prompt':372,851,1367 'prose':1050,1141 'provid':517 'quickest':139 'quiet':174 'quot':1068 'r':771 'ratio':426 'raw':352,494 're':393 'read':165,597,1229,1394 'readabl':365 'recognit':1317 'refer':1325,1525,1637 'reject':755 'relationship':1592 'rememb':742 'render':357,489 'repo':641 'repos/steipete/summarize':1584 'repres':1170 'request':741 'requir':145 'rerun':153 'reserv':1418 'resolv':202 'respons':1022 'result':796 'return':280,307,411,449,485,615,1211,1352 'role':603,621,918 'round':1077 'round-trip':1076 'rout':504,1177,1462 'rules/install.md':127,128,1526,1527 'rules/usage.md':1541,1542 'run':100,278,295,322,570,1124,1479 'schema':1053,1146 'scope':1463 'scrape':683,990,1454 'scratch':240,457 'see':653,937,1582 'select':857 'semant':1147 'sentenc':866 'seo':1017 'seo-cont':1016 'separ':1612 'set':320,499 'shape':1549 'sheet':859 'shell':252 'shell-interpol':251 'ship':1101,1300 'short':115,220,232,260,293,308,336,429,673,726,820,868,1070,1185,1212,1228 'short-circuit':259 'short-input':1069 'shorter':617 'silent':1267,1492 'simpl':381 'singl':981,1357 'skill':72,415,546,587,926,1010,1054,1072,1099,1246,1256,1465,1520 'skill-summarize' 'skills/summarize/rules/install.md':157 'skip':1196,1474 'slice':1354 'slide':574 'small':622 'social':1033 'sourc':434,679,692,827,945,968,984,1001,1440,1449,1460,1560,1626 'source-digest':678,826,1625 'source-moizibnyousaf' 'source-typ':1459 'sql':1132 'stdin':222,483,711,743 'stdout':395 'steinberg':650,1571 'steipet':651,1297,1572 'steipete/summarize':15,18,55,70,144,471,647,1531,1566,1611 'still':1100 'stop':120 'stream':491 'structur':325,412,1043,1127,1142 'summar':1,2,9,58,63,101,135,150,215,217,230,243,279,296,323,331,446,469,601,664,670,710,719,724,773,785,792,817,949,959,961,1003,1027,1039,1046,1086,1125,1180,1182,1209,1236,1244,1271,1288,1327,1349,1358,1397,1408,1443,1480,1554,1558 'summari':36,196,318,369,420,552,832,848,874,898,1368,1495 'summarize.sh':1568 'summarize/article-summary.json':823 'summarize/youtube-':777 'surfac':553,628 'suspend':390 'system':924,936 'take':478,608 'target':871,879,887,894,903,913 'technic':1405 'telemetri':842 'tell':287 'text':6,51,60,224,236,257,361,505,551,609,713,791,942,1015,1186,1240,1468,1471 'text-in':1467 'text-out':1470 'third':1292 'third-parti':1291 'thorough':888 'though':1403 'tiktok':590 'timeout':396 'tini':298 'tl':33,52,177,382,696,802,977,1108,1231,1283,1382 'tldr.md':778 'token':1377 'tone':184 'tool':86,106,556,1137,1294,1310,1485,1578 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-marketing' 'topic-brand-memory' 'topic-brand-voice' 'topic-claude-code' 'topic-claude-code-skills' 'topic-cli' 'topic-cmo' 'topic-marketing-automation' 'topic-marketing-cli' 'topic-seo' 'transcrib':564,595,764,767,784,787,952,1427 'transcript':592,790,956,974 'treat':455,1384 'trip':1078 'truncat':1268 'truth':1451 'tune':1048,1139 'two':1448 'type':1441,1461,1576 'unless':315,401 'unreli':1156 'upstream':304,558,640,654,748,1208,1321,1407,1583,1589,1599 'upstream-on':1598 'url':480,563,584,1400,1410,1446 'usag':660,1544 'use':7,19,61,548,675,728,839,1396 'user':22,92,125,289,734,1159,1223,1319,1609 'valu':1207 'vendor':84,659,1606 'verbatim':1067 'verifi':1532 'version':43,102,134,162,488,618,1481 'via':54,103,688,1270 'video':566,573,967 'voic':180,200 'walk':123 'want':131,359,694,1160,1257 'wast':300 'way':1116 'whenev':20 'whitespac':751 'whitespace-on':750 'without':1106 'word':270,1192 'work':470 'workflow':681,829,1628 'wors':1500 'worth':1081 'would':998 'wrap':1618,1622 'wrapper':78 'write':237,442,1347 'x':600,1430 'x/twitter':596 'xl':339,432,890 'xxl':340,433,899 'youtu.be':768 'youtub':565,588,1411","prices":[{"id":"d0c5f067-234f-4ca2-a697-996960bc8be3","listingId":"75326f5a-b33d-48fd-b6db-88dd3b151e57","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"MoizIbnYousaf","category":"marketing-cli","install_from":"skills.sh"},"createdAt":"2026-05-04T19:06:16.631Z"}],"sources":[{"listingId":"75326f5a-b33d-48fd-b6db-88dd3b151e57","source":"github","sourceId":"MoizIbnYousaf/marketing-cli/summarize","sourceUrl":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/summarize","isPrimary":false,"firstSeenAt":"2026-05-04T19:06:16.631Z","lastSeenAt":"2026-05-18T19:05:52.813Z"}],"details":{"listingId":"75326f5a-b33d-48fd-b6db-88dd3b151e57","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"MoizIbnYousaf","slug":"summarize","github":{"repo":"MoizIbnYousaf/marketing-cli","stars":18,"topics":["agent-skills","ai-agents","ai-marketing","brand-memory","brand-voice","claude-code","claude-code-skills","cli","cmo","marketing-automation","marketing-cli","seo","skills-sh","typescript"],"license":"mit","html_url":"https://github.com/MoizIbnYousaf/marketing-cli","pushed_at":"2026-05-13T21:06:05Z","description":"Agent-native marketing cli: 51 skills, 5 research agents, brand memory that compounds, plus a local Studio dashboard (beta). single agent-native cli, then /cmo in ur coding agent..","skill_md_sha":"ab20205312485606ff8ac875bbcaf2cc738425c1","skill_md_path":"skills/summarize/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/MoizIbnYousaf/marketing-cli/tree/main/skills/summarize"},"layout":"multi","source":"github","category":"marketing-cli","frontmatter":{"name":"summarize","description":"Summarize any block of text using the `summarize` CLI (chained-in from steipete/summarize — npm package `@steipete/summarize`). Use whenever the user pastes a long piece of content and asks for a TL;DR, a summary, a digest, a gist, a condensed version, or key points — even if they don't explicitly say \"use summarize\". Also chains into `mktg-transcribe --summarize` for audio/video TL;DRs and source-digestion workflows to condense long articles. Requires the `summarize` CLI to be installed (`mktg doctor` will tell you if it's missing). Do NOT trigger for structured data (JSON/CSV/code), for text already shorter than ~500 words, or when the user wants the full content preserved."},"skills_sh_url":"https://skills.sh/MoizIbnYousaf/marketing-cli/summarize"},"updatedAt":"2026-05-18T19:05:52.813Z"}}