Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Audit existing content across a site to decide what to keep, update, merge, redirect, or delete. Use this skill whenever the user wants to audit existing content, fix content decay, resolve keyword cannibalization, prune underperforming pages, prioritize content updates, or apply a keep/update/merge/redirect/delete framework to a content library. Triggers on content audit, content decay, content refresh, cannibalization, keyword cannibalization, prune content, delete pages, redirect old pages, c
.claude/skills/rampstackco-seo-content-audit/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -8% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 6% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 73% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 44% | 0% |
Inventory existing content, score it, and decide for each piece: keep, update, merge, redirect, or delete. Stack-agnostic. Works on blogs, marketing sites, knowledge bases, and product content.
seo-onpage)seo-keyword)seo-competitor)seo-technical)For every content piece, the audit produces one of five decisions.
The page performs well, has clear intent, and needs no changes.
Signals:
The page has potential but is underperforming due to fixable issues.
Signals:
Two or more pages target overlapping queries and should consolidate.
Signals:
The page has no future but has assets (links, equity) worth preserving.
Signals:
The page has no future and no assets worth preserving.
Signals:
Note: In most cases, return 410 (gone) for intentionally deleted content. 410 is processed faster than 404 and signals the deletion was deliberate.
Pull these for every URL before deciding:
| Metric | Source | Threshold for "low" | |---|---|---| | Sessions (last 90 days) | Analytics | <10/month | | Organic traffic (last 90 days) | Search console or analytics | <5/month | | Average position for top query | Search console | >30 | | Impressions (last 90 days) | Search console | <100/month | | Click-through rate | Search console | <1% (when impressions exist) | | Referring domains | Backlink tool | 0 | | Engagement (avg time on page) | Analytics | <30 seconds | | Last meaningful update | Manual / git | >24 months | | Word count | Crawler | <300 (for articles) | | Internal links in | Crawler | 0 |
A page can survive low scores on a few metrics. A page that fails on most is a delete or redirect candidate.
A simplified decision tree:
Has traffic? ─── Yes ──── Recent decay? ─── Yes ── UPDATE
│ │
│ └── No ─── KEEP
│
└── No ──── Has backlinks? ─── Yes ── Has relevant target? ─── Yes ── REDIRECT
│ │
│ └── No ─── UPDATE (rebuild)
│
└── No ──── Cannibalizing another page? ─── Yes ── MERGE
│
└── No ─── DELETE (410)For overlapping pages, "merge" usually wins over "delete" because it preserves both link equity and any topical authority.
Default output: a spreadsheet with one row per URL, plus a summary markdown report.
Spreadsheet columns:
Summary report:
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/audit-template.md - Spreadsheet column definitions and report template.references/cannibalization-resolution.md - Detailed methodology for resolving cannibalization clusters.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 35,807 | 28,666 | -20% | 1 | 1 | 0% | 6,254 | 7,113 | +14% | 0 | 0 | — |
case-02 | fail→pass | 34,119 | 20,615 | -40% | 1 | 1 | 0% | 5,958 | 5,479 | -8% | 0 | 0 | — |
case-03 | fail→pass | 30,881 | 23,361 | -24% | 1 | 1 | 0% | 5,505 | 5,814 | +6% | 0 | 0 | — |
case-04 | pass→pass | 11,016 | 7,002 | -36% | 1 | 1 | 0% | 1,889 | 2,957 | +57% | 0 | 0 | — |
case-05 | pass→pass | 9,757 | 5,720 | -41% | 1 | 1 | 0% | 1,611 | 2,768 | +72% | 0 | 0 | — |
case-06 | fail→pass | 8,974 | 3,832 | -57% | 1 | 1 | 0% | 1,413 | 2,439 | +73% | 0 | 0 | — |
case-07 | pass→pass | 8,753 | 4,031 | -54% | 1 | 1 | 0% | 1,378 | 2,555 | +85% | 0 | 0 | — |
case-08 | pass→pass | 9,368 | 7,613 | -19% | 1 | 1 | 0% | 1,546 | 3,084 | +99% | 0 | 0 | — |
case-09 | fail→pass | 9,905 | 6,801 | -31% | 1 | 1 | 0% | 1,682 | 3,142 | +87% | 0 | 0 | — |
case-10 | pass→pass | 8,117 | 3,804 | -53% | 1 | 1 | 0% | 1,384 | 2,400 | +73% | 0 | 0 | — |
case-11 | pass→pass | 12,689 | 8,406 | -34% | 1 | 1 | 0% | 2,092 | 3,287 | +57% | 0 | 0 | — |
case-12 | pass→pass | 14,863 | 2,580 | -83% | 1 | 1 | 0% | 2,516 | 2,188 | -13% | 0 | 0 | — |
case-13 | pass→pass | 4,914 | 1,581 | -68% | 1 | 1 | 0% | 730 | 2,026 | +178% | 0 | 0 | — |
case-14 | pass→pass | 11,769 | 1,103 | -91% | 1 | 1 | 0% | 1,895 | 1,964 | +4% | 0 | 0 | — |
case-15 | fail→pass | 8,514 | 1,239 | -85% | 1 | 1 | 0% | 1,352 | 1,947 | +44% | 0 | 0 | — |
case-20 | fail→fail | 19,847 | 25,833 | +30% | 1 | 1 | 0% | 3,285 | 6,308 | +92% | 0 | 0 | — |
case-16 | pass→pass | 9,037 | 4,128 | -54% | 1 | 1 | 0% | 1,480 | 1,943 | +31% | 0 | 0 | — |
case-17 | pass→pass | 12,372 | 6,852 | -45% | 1 | 1 | 0% | 2,094 | 2,885 | +38% | 0 | 0 | — |
case-18 | fail→fail | 12,564 | 8,426 | -33% | 1 | 1 | 0% | 2,206 | 3,163 | +43% | 0 | 0 | — |
case-19 | fail→fail | 7,349 | 11,508 | +57% | 1 | 1 | 0% | 1,414 | 3,895 | +175% | 0 | 0 | — |
case-21 | fail→fail | 9,300 | 8,873 | -5% | 1 | 1 | 0% | 1,490 | 3,342 | +124% | 0 | 0 | — |
case-22 | fail→pass | 14,944 | 14,474 | -3% | 1 | 1 | 0% | 2,427 | 4,247 | +75% | 0 | 0 | — |
case-23 | pass→pass | 10,508 | 8,055 | -23% | 1 | 1 | 0% | 1,867 | 3,188 | +71% | 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. 23 cases were attempted. The headline lift of +26 percentage points is the difference between those two pass rates over the 23 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.