Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user asks to "find content gaps", "竞品写了什么", or "还应该写什么"; builds a competitor-relative coverage map of missing topics, keyword gaps, and editorial-calendar opportunities. Not for raw keyword demand discovery — use keyword-research. 内容缺口/选题规划
.claude/skills/aiskillstore-content-gap-analysis/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 121% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 109% | 0% |
Identifies content opportunities by comparing your site against competitors and scoring the gaps worth closing first.
Find content gaps between my site [URL] and [competitor URLs]What content am I missing compared to my top 3 competitors?Expected output: a prioritized gap brief plus the standard handoff summary for memory/research/.
memory/hot-cache.md, memory/open-loops.md, and memory/research/.> Emit the standard shape from skill-contract.md §Handoff Summary Format.
Optional integrations: ~~SEO tool, ~~search console, ~~analytics, ~~AI monitor. Without tools, ask for site URL, content inventory, competitor URLs, and business goals. See CONNECTORS.md.
Trend-scout as a gap-discovery input (keyless): feed the multi-source trend scout — Google Trends RSS plus Hacker News and Reddit, via scripts/connectors/rss_monitor.py — to surface rising topics your competitors and you may both miss. Treat each hit as a candidate gap, then check it against your and competitor coverage in steps 5-7. Mark these signals Estimated. See CONNECTORS.md ~~trend database.
Keyless competitor-coverage inventory: python3 "${CLAUDE_PLUGIN_ROOT}/scripts/connectors/firecrawl.py" map <competitor-domain> --search "<topic>" --limit 1000 lists a competitor's URLs ordered by relevance to the topic — a fast Measured coverage inventory for steps 5-7 — and firecrawl.py scrape <url> reads any candidate page as rendered markdown. robots.txt is pre-flighted locally; a Disallow is refused per SECURITY.md §Scraping Boundaries. Firecrawl keyless free tier (~1,000 credits/mo). See scripts/connectors/README.md.
Stop and ask — gap analysis is competitor-relative and cannot run on demand alone:
CLAUDE.md or prior research → ask the user to name 1-3 competitors, OR offer to switch to keyword-research for demand-side discovery instead.Continue silently — do not stop for: which 3-5 named competitors to deep-dive (pick the closest); missing optional tool data (mark Estimated/N/A and proceed); ambiguous topic scope (analyze the full overlap and flag the broadest clusters).
When a user requests content gap analysis:
Label every metric Measured (tool/export), User-provided, or Estimated (model inference); never present an estimate as measured; if a required metric is unavailable, mark it N/A — do not invent it.
Quality bar: every gap names the competitor that covers it, its volume or traffic estimate, and why it is worth closing — never list a bare topic without that evidence.
> Reference: See Analysis Templates for the compact templates used in each step.
See references/example-report.md for a full SaaS marketing sample.
Compare our topic cluster coverage for [topic] vs top 5 competitorsWhat content have competitors published in the last 6 months that we haven't covered?Find gaps in our [commercial/informational] intent contentWrite path: memory/research/content-gap-analysis/YYYY-MM-DD-<topic>.md; promote durable gap priorities and competitor facts to memory/hot-cache.md. See Skill Contract §Save Results Template.
Primary: content-writer.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-07 | fail→pass | 16,202 | 5,719 | -65% | 1 | 1 | 0% | 2,481 | 2,363 | -5% | 0 | 0 | — |
case-05 | fail→fail | 40,071 | 41,712 | +4% | 1 | 1 | 0% | 6,192 | 7,645 | +23% | 0 | 0 | — |
case-06 | fail→fail | 16,909 | 13,528 | -20% | 1 | 1 | 0% | 2,610 | 3,535 | +35% | 0 | 0 | — |
case-01 | fail→fail | 26,099 | 18,764 | -28% | 1 | 1 | 0% | 4,375 | 4,643 | +6% | 0 | 0 | — |
case-02 | fail→pass | 28,915 | 27,559 | -5% | 1 | 1 | 0% | 4,880 | 5,913 | +21% | 0 | 0 | — |
case-03 | fail→pass | 21,864 | 28,818 | +32% | 1 | 1 | 0% | 3,788 | 5,622 | +48% | 0 | 0 | — |
case-04 | pass→pass | 15,227 | 14,206 | -7% | 1 | 1 | 0% | 2,368 | 3,926 | +66% | 0 | 0 | — |
case-08 | pass→pass | 13,889 | 7,716 | -44% | 1 | 1 | 0% | 2,190 | 2,633 | +20% | 0 | 0 | — |
case-09 | fail→pass | 17,943 | 29,712 | +66% | 1 | 1 | 0% | 2,918 | 6,437 | +121% | 0 | 0 | — |
case-10 | fail→pass | 18,558 | 27,900 | +50% | 1 | 1 | 0% | 2,917 | 6,109 | +109% | 0 | 0 | — |
case-11 | fail→fail | 21,407 | 24,384 | +14% | 1 | 1 | 0% | 3,145 | 5,224 | +66% | 0 | 0 | — |
case-12 | fail→pass | 20,312 | 30,587 | +51% | 1 | 1 | 0% | 3,133 | 6,510 | +108% | 0 | 0 | — |
case-13 | fail→pass | 21,314 | 24,109 | +13% | 1 | 1 | 0% | 3,408 | 5,292 | +55% | 0 | 0 | — |
case-14 | fail→pass | 18,441 | 28,837 | +56% | 1 | 1 | 0% | 2,793 | 6,195 | +122% | 0 | 0 | — |
case-15 | pass→pass | 19,518 | 29,204 | +50% | 1 | 1 | 0% | 3,017 | 6,109 | +102% | 0 | 0 | — |
case-16 | fail→pass | 19,735 | 23,101 | +17% | 1 | 1 | 0% | 3,077 | 5,306 | +72% | 0 | 0 | — |
case-17 | pass→pass | 26,505 | 31,723 | +20% | 1 | 1 | 0% | 3,817 | 6,615 | +73% | 0 | 0 | — |
case-18 | fail→pass | 16,318 | 16,139 | -1% | 1 | 1 | 0% | 2,486 | 4,097 | +65% | 0 | 0 | — |
case-19 | fail→pass | 20,012 | 19,120 | -4% | 1 | 1 | 0% | 3,291 | 4,470 | +36% | 0 | 0 | — |
case-20 | fail→pass | 22,233 | 23,959 | +8% | 1 | 1 | 0% | 3,521 | 5,465 | +55% | 0 | 0 | — |
case-21 | fail→pass | 19,554 | 30,020 | +54% | 1 | 1 | 0% | 2,949 | 6,219 | +111% | 0 | 0 | — |
case-22 | fail→pass | 18,882 | 22,381 | +19% | 1 | 1 | 0% | 2,844 | 4,950 | +74% | 0 | 0 | — |
case-23 | fail→pass | 11,312 | 16,318 | +44% | 1 | 1 | 0% | 1,593 | 4,006 | +151% | 0 | 0 | — |
case-24 | fail→pass | 14,657 | 19,299 | +32% | 1 | 1 | 0% | 2,322 | 4,789 | +106% | 0 | 0 | — |
case-25 | pass→pass | 21,531 | 29,516 | +37% | 1 | 1 | 0% | 3,259 | 5,981 | +84% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +64 percentage points is the difference between those two pass rates over the 25 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.