{"id":"3280fb87-9c87-4282-b3ea-92e9d7c0db09","shortId":"rsxVKG","kind":"skill","title":"seo-content-gap-audit","tagline":"Audit content gaps and decay using Ahrefs MCP data: missing topics, thin coverage, outdated content, and decaying pages. Use this skill when planning a content roadmap, refreshing a stale catalog, building topical authority, or identifying which existing pages need update versus ","description":"# SEO Content Gap Audit\n\nFind content gaps and decay using Ahrefs MCP data. Stack-agnostic. Produces a roadmap of create, update, merge, and prune actions across the existing content catalog and identified topic gaps.\n\n---\n\n## When to use\n\n- Planning the next quarter or half of content investment\n- Refreshing a stale or underperforming content catalog\n- Building topical authority in a target space\n- Identifying decaying pages before they tank traffic\n- Audit prep before a major site redesign or migration\n- Diagnosing why content investment is not driving organic growth\n\n## When NOT to use\n\n- Pure keyword research (use `seo-keyword`)\n- Competitor keyword gap (use `seo-keyword-gap-audit`)\n- Single-page optimization (use `seo-onpage`)\n- Pure prune-and-redirect decisions (use `seo-content-audit`)\n- New site planning with no existing content (use `content-strategy`)\n\n---\n\n## Required inputs\n\n- Target property and content scope\n- Competitor set (3-5 properties with comparable content depth)\n- Target topics or pillars (if defined)\n- Existing content inventory with URLs, primary topics, publish dates\n- Performance data (organic clicks per page, ranked keywords per page)\n- Confirmation Ahrefs MCP is connected\n\n---\n\n## The framework: 4 categories of content opportunity\n\nEvery content opportunity falls into one of four categories. Different categories need different actions.\n\nContent gap analysis is sharper with multiple data sources. Ahrefs surfaces keyword and topic gaps (the primary backend below). Similarweb surfaces traffic-driving page-level gaps (which of a competitor's pages earn meaningful traffic, not just rankings). Semrush surfaces SERP-feature gaps (where competitors win answer boxes, knowledge panels, People Also Ask placements). The three platforms often disagree on individual data points; that disagreement is itself a useful signal.\n\n### Category 1: Missing topics\n\nTopics with traffic potential where the property has no relevant page at all. Competitors often rank in the top 10. The fix: create new content.\n\nPulled from:\n\n- Ahrefs Content Explorer (top performing content in target topics)\n- Competitor top pages (Ahrefs Site Explorer)\n- Keyword gap audit output (clustered into topics)\n\n### Category 2: Thin coverage\n\nTopics where the property has a page but it is too shallow, narrow, or single-keyword to compete with topical hubs. Competitor pages cover the topic across multiple subtopics. The fix: deepen the existing page or expand into a topic cluster.\n\nPulled from:\n\n- Pages ranking on page 2-3 for target keywords\n- Pages with low organic click share relative to ranked keyword volume\n- Pages where competitors have longer or broader equivalents\n\n### Category 3: Outdated content\n\nPages that ranked well historically but have lost ground due to staleness. Information is dated, examples are old, the SERP intent has shifted. The fix: refresh with current information and re-promote.\n\nPulled from:\n\n- Pages with declining organic clicks over the last 6-12 months\n- Pages with publish dates over 18 months old\n- Pages with ranked keywords slipping in position\n\n### Category 4: Decaying content\n\nPages that have lost traffic for reasons not obviously about staleness: SERP feature changes, competitor publishing, intent shifts, internal linking dilution. The fix: diagnose why, then refresh, merge, or redirect.\n\nPulled from:\n\n- Pages with sharp recent traffic drops\n- Pages where SERP composition has shifted (more video, more featured snippets, AI overviews)\n- Pages that compete with newer pages on the same site (cannibalization)\n\n---\n\n## Workflow\n\n1. **Charter the audit.** Scope (whole site or section), goal, time window for performance data.\n2. **Pull the inventory.** Every URL, with publish date, primary topic, organic clicks, ranked keywords.\n3. **Pull competitor coverage.** Top pages and content clusters from each competitor.\n4. **Classify each existing page.** Healthy / thin / outdated / decaying / off-topic.\n5. **Identify missing topics.** Cross-reference competitor top pages and keyword gap output.\n6. **Score each opportunity.** See [`references/content-decision-matrix.md`](references/content-decision-matrix.md).\n7. **Cluster.** Group related missing topics into pillar concepts.\n8. **Decide actions.** Create / update / merge / redirect / prune for each opportunity.\n9. **Sequence the roadmap.** Quarter by quarter, with effort estimates and traffic forecasts.\n10. **Hand off.** Output feeds `content-strategy`, `content-and-copy`, and `seo-onpage`.\n\n---\n\n## The action decision matrix\n\nFor each piece of existing content or proposed new content, decide one action.\n\n| Signal | Action |\n| --- | --- |\n| Strong page, healthy traffic, current information | Keep. Defend with internal linking and refresh on schedule. |\n| Page exists, ranking on page 2-3, content is thin vs SERP | Update. Deepen, restructure, broaden. |\n| Page exists, traffic declining, content is dated | Refresh. Update facts, examples, year references, screenshots. |\n| Page exists, low or zero traffic, low ranking, no improvement path | Prune or merge. Redirect to a stronger relative if one exists. |\n| Multiple pages on overlapping topics | Merge into one canonical page. Redirect the others. |\n| Topic missing entirely, competitor coverage strong | Create new page or pillar. |\n| Topic missing, but competitors do not rank well either | Validate intent before investing. Could be an opportunity or could be a dead end. |\n| Page is off-topic for the property | Redirect to most relevant page or remove from sitemap. |\n\n---\n\n## Failure patterns\n\n- **All-create, no-update bias.** Teams default to creating new content. Updates and merges often outperform new pieces by a wide margin and at lower cost.\n- **Treating publish date as currency.** A 5-year-old page can outrank a 1-month-old page if it is better. Stop deleting old content reflexively.\n- **Cannibalization blind spots.** Two pages on overlapping topics dilute each other. Audit for it explicitly.\n- **No effort estimates.** A roadmap without effort sizes cannot be sequenced realistically.\n- **No traffic forecast.** A roadmap without forecasted impact loses funding fights. Forecast even with wide confidence bands.\n- **Refreshing without re-promotion.** A refreshed page needs a re-crawl signal: update sitemap, internal links, distribution.\n- **Ignoring intent shift.** Some keywords have shifted from informational to transactional or to AI-answer-dominated. Recognize when the SERP is no longer addressable by the existing format.\n- **Confusing decay with seasonality.** A 30% click drop in summer for a back-to-school topic is not decay. Compare year-over-year, not month-over-month.\n- **Auditing in isolation from the keyword gap.** The two audits feed each other. Run them adjacent.\n\n---\n\n## Output format\n\nA content gap audit document with:\n\n1. **Executive summary.** Top 3 themes, content health verdict, recommended quarterly investment split.\n2. **Content inventory snapshot.** Counts by health classification.\n3. **Missing topics.** Prioritized list with cluster mapping and traffic forecast.\n4. **Thin coverage.** Pages to deepen, with recommendation for each.\n5. **Outdated content.** Pages to refresh, with refresh scope.\n6. **Decaying content.** Pages to diagnose and act on, with hypothesis for each.\n7. **Cannibalization findings.** Page pairs to merge.\n8. **Action roadmap.** Quarter by quarter, with effort and forecast.\n9. **Methodology.** Data sources, classification criteria, caveats.\n\nLength: 8-15 pages plus an attached inventory spreadsheet.\n\n---\n\n## Reference files\n\n- [`references/content-decision-matrix.md`](references/content-decision-matrix.md) - Detailed decision tree for classifying pages and choosing the create/update/merge/prune action, with worked examples.","tags":["seo","content","gap","audit","claude","skills","rampstackco","agent-skills","anthropic","awesome-claude-code","awesome-claude-prompts","awesome-claude-skills"],"capabilities":["skill","source-rampstackco","skill-seo-content-gap-audit","topic-agent-skills","topic-anthropic","topic-awesome-claude-code","topic-awesome-claude-prompts","topic-awesome-claude-skills","topic-claude","topic-claude-code","topic-claude-skills","topic-good-first-issue","topic-mcp","topic-product-management","topic-seo"],"categories":["claude-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/rampstackco/claude-skills/seo-content-gap-audit","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add rampstackco/claude-skills","source_repo":"https://github.com/rampstackco/claude-skills","install_from":"skills.sh"}},"qualityScore":"0.540","qualityRationale":"deterministic score 0.54 from registry signals: · indexed on github topic:agent-skills · 181 github stars · SKILL.md body (7,805 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-18T18:55:20.427Z","embedding":null,"createdAt":"2026-04-30T01:01:30.267Z","updatedAt":"2026-05-18T18:55:20.427Z","lastSeenAt":"2026-05-18T18:55:20.427Z","tsv":"'-12':500 '-15':1152 '-3':429,748 '-5':193 '1':324,584,902,1062 '10':346,692 '18':507 '2':377,428,599,747,1075 '3':192,453,614,1066,1083 '30':1013 '4':231,518,626,1094 '5':638,894,1104 '6':499,652,1113 '7':659,1126 '8':668,1133,1151 '9':679,1143 'across':73,407 'act':1120 'action':72,249,670,709,724,726,1134,1173 'address':1003 'adjac':1053 'agnost':62 'ahref':12,57,225,259,354,366 'ai':570,993 'ai-answer-domin':992 'all-creat':860 'also':304 'analysi':252 'answer':299,994 'ask':305 'attach':1156 'audit':5,6,50,115,152,171,371,587,927,1038,1047,1059 'author':38,103 'back':1021 'back-to-school':1020 'backend':267 'band':959 'better':910 'bias':866 'blind':917 'box':300 'broaden':757 'broader':450 'build':36,101 'cannib':582,916,1127 'cannot':939 'canon':802 'catalog':35,77,100 'categori':232,244,246,323,376,452,517 'caveat':1149 'chang':534 'charter':585 'choos':1170 'classif':1082,1147 'classifi':627,1167 'click':217,437,495,611,1014 'cluster':373,421,622,660,1089 'compar':196,1028 'compet':398,574 'competitor':144,190,281,297,340,363,402,446,535,616,625,645,810,821 'composit':562 'concept':667 'confid':958 'confirm':224 'confus':1008 'connect':228 'content':3,7,20,30,48,52,76,92,99,126,170,178,181,188,197,206,234,237,250,351,355,359,455,520,621,698,701,717,721,749,762,872,914,1057,1068,1076,1106,1115 'content-and-copi':700 'content-strategi':180,697 'copi':703 'cost':887 'could':831,836 'count':1079 'cover':404 'coverag':18,379,617,811,1096 'crawl':972 'creat':67,349,671,813,862,870 'create/update/merge/prune':1172 'criteria':1148 'cross':643 'cross-refer':642 'currenc':892 'current':483,731 'data':14,59,215,257,314,598,1145 'date':213,470,505,607,764,890 'dead':839 'decay':10,22,55,109,519,634,1009,1027,1114 'decid':669,722 'decis':166,710,1164 'declin':493,761 'deepen':412,755,1099 'default':868 'defend':734 'defin':204 'delet':912 'depth':198 'detail':1163 'diagnos':124,544,1118 'differ':245,248 'dilut':541,924 'disagr':317 'disagre':311 'distribut':978 'document':1060 'domin':995 'drive':130,273 'drop':558,1015 'due':465 'earn':284 'effort':687,932,937,1140 'either':826 'end':840 'entir':809 'equival':451 'estim':688,933 'even':955 'everi':236,603 'exampl':471,768,1176 'execut':1063 'exist':42,75,177,205,414,629,716,743,759,773,793,1006 'expand':417 'explicit':930 'explor':356,368 'fact':767 'failur':858 'fall':239 'featur':294,533,568 'feed':696,1048 'fight':953 'file':1160 'find':51,1128 'fix':348,411,480,543 'forecast':691,945,949,954,1093,1142 'format':1007,1055 'four':243 'framework':230 'fund':952 'gap':4,8,49,53,81,146,151,251,264,277,295,370,650,1044,1058 'goal':593 'ground':464 'group':661 'growth':132 'half':90 'hand':693 'health':1069,1081 'healthi':631,729 'histor':460 'hub':401 'hypothesi':1123 'identifi':40,79,108,639 'ignor':979 'impact':950 'improv':781 'individu':313 'inform':468,484,732,987 'input':184 'intent':476,537,828,980 'intern':539,736,976 'inventori':207,602,1077,1157 'invest':93,127,830,1073 'isol':1040 'keep':733 'keyword':138,143,145,150,221,261,369,396,432,442,513,613,649,983,1043 'knowledg':301 'last':498 'length':1150 'level':276 'link':540,737,977 'list':1087 'longer':448,1002 'lose':951 'lost':463,524 'low':435,774,778 'lower':886 'major':119 'map':1090 'margin':883 'matrix':711 'mcp':13,58,226 'meaning':285 'merg':69,548,673,785,799,875,1132 'methodolog':1144 'migrat':123 'miss':15,325,640,663,808,819,1084 'month':501,508,904,1035,1037 'month-old':903 'month-over-month':1034 'multipl':256,408,794 'narrow':392 'need':44,247,968 'new':172,350,720,814,871,878 'newer':576 'next':87 'no-upd':863 'obvious':529 'off-top':635,843 'often':310,341,876 'old':473,509,897,905,913 'one':241,723,792,801 'onpag':160,707 'opportun':235,238,655,678,834 'optim':156 'organ':131,216,436,494,610 'other':806 'outdat':19,454,633,1105 'outperform':877 'output':372,651,695,1054 'outrank':900 'overlap':797,922 'overview':571 'page':23,43,110,155,219,223,275,283,337,365,386,403,415,424,427,433,444,456,491,502,510,521,553,559,572,577,619,630,647,728,742,746,758,772,795,803,815,841,853,898,906,920,967,1097,1107,1116,1129,1153,1168 'page-level':274 'pair':1130 'panel':302 'path':782 'pattern':859 'peopl':303 'per':218,222 'perform':214,358,597 'piec':714,879 'pillar':202,666,817 'placement':306 'plan':28,85,174 'platform':309 'plus':1154 'point':315 'posit':516 'potenti':330 'prep':116 'primari':210,266,608 'priorit':1086 'produc':63 'promot':488,964 'properti':186,194,333,383,848 'propos':719 'prune':71,163,675,783 'prune-and-redirect':162 'publish':212,504,536,606,889 'pull':352,422,489,551,600,615 'pure':137,161 'quarter':88,683,685,1072,1136,1138 'rank':220,289,342,425,441,458,512,612,744,779,824 're':487,963,971 're-crawl':970 're-promot':486,962 'realist':942 'reason':527 'recent':556 'recogn':996 'recommend':1071,1101 'redesign':121 'redirect':165,550,674,786,804,849 'refer':644,770,1159 'references/content-decision-matrix.md':657,658,1161,1162 'reflex':915 'refresh':32,94,481,547,739,765,960,966,1109,1111 'relat':439,662,790 'relev':336,852 'remov':855 'requir':183 'research':139 'restructur':756 'roadmap':31,65,682,935,947,1135 'run':1051 'schedul':741 'school':1023 'scope':189,588,1112 'score':653 'screenshot':771 'season':1011 'section':592 'see':656 'semrush':290 'seo':2,47,142,149,159,169,706 'seo-content-audit':168 'seo-content-gap-audit':1 'seo-keyword':141 'seo-keyword-gap-audit':148 'seo-onpag':158,705 'sequenc':680,941 'serp':293,475,532,561,753,999 'serp-featur':292 'set':191 'shallow':391 'share':438 'sharp':555 'sharper':254 'shift':478,538,564,981,985 'signal':322,725,973 'similarweb':269 'singl':154,395 'single-keyword':394 'single-pag':153 'site':120,173,367,581,590 'sitemap':857,975 'size':938 'skill':26 'skill-seo-content-gap-audit' 'slip':514 'snapshot':1078 'snippet':569 'sourc':258,1146 'source-rampstackco' 'space':107 'split':1074 'spot':918 'spreadsheet':1158 'stack':61 'stack-agnost':60 'stale':34,96,467,531 'stop':911 'strategi':182,699 'strong':727,812 'stronger':789 'subtop':409 'summari':1064 'summer':1017 'surfac':260,270,291 'tank':113 'target':106,185,199,361,431 'team':867 'theme':1067 'thin':17,378,632,751,1095 'three':308 'time':594 'top':345,357,364,618,646,1065 'topic':16,37,80,102,200,211,263,326,327,362,375,380,400,406,420,609,637,641,664,798,807,818,845,923,1024,1085 'topic-agent-skills' 'topic-anthropic' 'topic-awesome-claude-code' 'topic-awesome-claude-prompts' 'topic-awesome-claude-skills' 'topic-claude' 'topic-claude-code' 'topic-claude-skills' 'topic-good-first-issue' 'topic-mcp' 'topic-product-management' 'topic-seo' 'traffic':114,272,286,329,525,557,690,730,760,777,944,1092 'traffic-driv':271 'transact':989 'treat':888 'tree':1165 'two':919,1046 'underperform':98 'updat':45,68,672,754,766,865,873,974 'url':209,604 'use':11,24,56,84,136,140,147,157,167,179,321 'valid':827 'verdict':1070 'versus':46 'video':566 'volum':443 'vs':752 'well':459,825 'whole':589 'wide':882,957 'win':298 'window':595 'without':936,948,961 'work':1175 'workflow':583 'year':769,896,1030,1032 'year-old':895 'year-over-year':1029 'zero':776","prices":[{"id":"4f9af350-7be8-4ca9-b4d9-13def444f9e9","listingId":"3280fb87-9c87-4282-b3ea-92e9d7c0db09","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"rampstackco","category":"claude-skills","install_from":"skills.sh"},"createdAt":"2026-04-30T01:01:30.267Z"}],"sources":[{"listingId":"3280fb87-9c87-4282-b3ea-92e9d7c0db09","source":"github","sourceId":"rampstackco/claude-skills/seo-content-gap-audit","sourceUrl":"https://github.com/rampstackco/claude-skills/tree/main/skills/seo-content-gap-audit","isPrimary":false,"firstSeenAt":"2026-04-30T01:01:30.267Z","lastSeenAt":"2026-05-18T18:55:20.427Z"}],"details":{"listingId":"3280fb87-9c87-4282-b3ea-92e9d7c0db09","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"rampstackco","slug":"seo-content-gap-audit","github":{"repo":"rampstackco/claude-skills","stars":181,"topics":["agent-skills","anthropic","awesome-claude-code","awesome-claude-prompts","awesome-claude-skills","claude","claude-code","claude-skills","good-first-issue","mcp","product-management","seo","show-hn","showcase","showdev","web-design","web-development"],"license":"mit","html_url":"https://github.com/rampstackco/claude-skills","pushed_at":"2026-05-10T22:40:22Z","description":"Stack-agnostic Claude Skills covering the full website lifecycle: brand, design, content, SEO, dev, ops, growth, and research. Build, ship, audit, optimize.","skill_md_sha":"f7fcf21fe778db851600c38dff04d88d33557061","skill_md_path":"skills/seo-content-gap-audit/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/rampstackco/claude-skills/tree/main/skills/seo-content-gap-audit"},"layout":"multi","source":"github","category":"claude-skills","frontmatter":{"name":"seo-content-gap-audit","description":"Audit content gaps and decay using Ahrefs MCP data: missing topics, thin coverage, outdated content, and decaying pages. Use this skill when planning a content roadmap, refreshing a stale catalog, building topical authority, or identifying which existing pages need update versus replacement. Triggers on content gap, content audit, content refresh, content roadmap, decaying content, content decay, topical authority, what topics should we cover, where is competitor content stronger. Also triggers when organic traffic is flat despite consistent publishing."},"skills_sh_url":"https://skills.sh/rampstackco/claude-skills/seo-content-gap-audit"},"updatedAt":"2026-05-18T18:55:20.427Z"}}