Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Find keywords competitors rank for that the target property does not, and prioritize them by opportunity. Uses Ahrefs MCP for keyword and competitor data. Use this skill when planning content investment, identifying quick wins, building a content calendar against a competitor set, or scoping a market entry. Triggers on keyword gap, content gap, competitor keywords, opportunity keywords, what should we target, where are competitors winning, keyword opportunity. Also triggers when planning content
.claude/skills/rampstackco-seo-keyword-gap-audit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 95% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 107% | 0% |
Find keyword opportunities by comparing the target property's organic footprint against a competitor set, using Ahrefs MCP data. Stack-agnostic. Produces a prioritized list of keywords to target with new or improved content.
seo-keyword)seo-onpage)seo-content-audit)content-strategy)A keyword can fall into one of four cells based on whether the target ranks and whether competitors rank.
| | Target ranks | Target does not rank | | --- | --- | --- | | Competitors rank | Shared territory (defend and grow) | Pure gap (the opportunity) | | Competitors do not rank | Unique territory (asset to protect) | Untouched (validate before investing) |
The audit focuses primarily on the "pure gap" cell. The other cells get secondary treatment.
Keywords where one or more competitors rank in the top 10 and the target does not rank at all or ranks past page 3. These are the primary opportunities.
Keywords where both target and competitors rank. Useful for defending position and finding pages to push from page 2 to page 1.
Keywords where the target ranks and no competitor does. These are differentiators. Audit to confirm they are actually valuable (not just irrelevant terms).
Keywords no one in the set ranks for. Could be opportunity or could be irrelevant. Validate intent before investing.
Not every gap keyword is worth pursuing. Score each candidate.
| Dimension | What it measures | Weight | | --- | --- | --- | | Search volume | Estimated monthly searches in target market | 20% | | Business relevance | How close to a money topic for the target | 30% | | Difficulty | How hard to rank (Ahrefs KD or proxy) | 15% | | Intent match | Whether target can satisfy the dominant intent | 20% | | Position potential | Realistic top 3 reach within 6 months | 15% |
Weights adjust based on goal. For quick wins, weight position potential and difficulty higher. For strategic territory, weight business relevance and volume higher.
score = (volume_normalized * 0.2)
+ (relevance_score * 0.3)
+ (difficulty_inverted * 0.15)
+ (intent_match * 0.2)
+ (position_potential * 0.15)Where each input is normalized to 0-100. The result is a 0-100 score.
| Score | Action | | --- | --- | | 80-100 | Top priority. Plan content this quarter. | | 60-79 | Strong priority. Plan within 6 months. | | 40-59 | Watch list. Revisit if competitive landscape shifts. | | Below 40 | Park or drop. |
references/opportunity-scoring-rubric.md.content-strategy and seo-onpage.A keyword gap audit document with:
Length: 6-15 pages plus an attached opportunity spreadsheet.
This skill's output depends on data, measurements, or tool results it cannot generate on its own. When a required input, tool, or data source is unavailable or unverifiable, the sanctioned output is the deliverable with the gap stated: what was needed, what was actually obtained or verified, and which parts of the output are affected. Fabricating, estimating, or interpolating a required number to complete the deliverable is never sanctioned. A stated gap is a complete answer.
references/opportunity-scoring-rubric.md - Scoring rubric with normalization rules, formula, and worked examples.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 33,729 | 30,602 | -9% | 1 | 1 | 0% | 6,294 | 7,414 | +18% | 0 | 0 | — |
case-02 | fail→pass | 30,586 | 33,756 | +10% | 1 | 1 | 0% | 5,032 | 7,991 | +59% | 0 | 0 | — |
case-03 | fail→pass | 33,468 | 33,125 | -1% | 1 | 1 | 0% | 6,281 | 7,598 | +21% | 0 | 0 | — |
case-04 | pass→pass | 16,559 | 17,586 | +6% | 1 | 1 | 0% | 2,977 | 4,675 | +57% | 0 | 0 | — |
case-05 | pass→pass | 15,928 | 12,846 | -19% | 1 | 1 | 0% | 2,704 | 3,927 | +45% | 0 | 0 | — |
case-23 | pass→pass | 10,023 | 3,129 | -69% | 1 | 1 | 0% | 1,578 | 2,193 | +39% | 0 | 0 | — |
case-06 | pass→pass | 19,414 | 11,312 | -42% | 1 | 1 | 0% | 3,347 | 3,565 | +7% | 0 | 0 | — |
case-07 | pass→pass | 16,449 | 12,157 | -26% | 1 | 1 | 0% | 2,617 | 3,657 | +40% | 0 | 0 | — |
case-08 | fail→pass | 7,550 | 5,669 | -25% | 1 | 1 | 0% | 1,253 | 2,444 | +95% | 0 | 0 | — |
case-09 | pass→pass | 7,061 | 2,981 | -58% | 1 | 1 | 0% | 1,218 | 2,203 | +81% | 0 | 0 | — |
case-10 | fail→pass | 5,478 | 2,522 | -54% | 1 | 1 | 0% | 1,015 | 2,102 | +107% | 0 | 0 | — |
case-11 | fail→pass | 6,771 | 4,049 | -40% | 1 | 1 | 0% | 1,186 | 2,351 | +98% | 0 | 0 | — |
case-12 | fail→pass | 6,639 | 3,057 | -54% | 1 | 1 | 0% | 1,133 | 2,312 | +104% | 0 | 0 | — |
case-13 | fail→pass | 15,948 | 2,035 | -87% | 1 | 1 | 0% | 2,625 | 2,036 | -22% | 0 | 0 | — |
case-14 | fail→pass | 12,387 | 1,923 | -84% | 1 | 1 | 0% | 2,049 | 2,022 | -1% | 0 | 0 | — |
case-15 | fail→pass | 11,450 | 2,749 | -76% | 1 | 1 | 0% | 1,898 | 2,207 | +16% | 0 | 0 | — |
case-16 | fail→pass | 7,811 | 1,935 | -75% | 1 | 1 | 0% | 1,276 | 2,032 | +59% | 0 | 0 | — |
case-17 | pass→pass | 5,673 | 2,528 | -55% | 1 | 1 | 0% | 1,012 | 2,101 | +108% | 0 | 0 | — |
case-18 | fail→pass | 7,023 | 3,254 | -54% | 1 | 1 | 0% | 1,311 | 2,029 | +55% | 0 | 0 | — |
case-19 | fail→pass | 8,428 | 2,522 | -70% | 1 | 1 | 0% | 1,265 | 2,117 | +67% | 0 | 0 | — |
case-20 | pass→pass | 5,679 | 2,861 | -50% | 1 | 1 | 0% | 981 | 2,080 | +112% | 0 | 0 | — |
case-21 | pass→pass | 13,328 | 7,389 | -45% | 1 | 1 | 0% | 2,212 | 2,982 | +35% | 0 | 0 | — |
case-22 | fail→fail | 15,432 | 13,955 | -10% | 1 | 1 | 0% | 2,497 | 4,250 | +70% | 0 | 0 | — |
case-24 | pass→pass | 11,923 | 9,655 | -19% | 1 | 1 | 0% | 1,921 | 3,223 | +68% | 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. 24 cases were attempted. The headline lift of +54 percentage points is the difference between those two pass rates over the 24 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.