01
on-page-audit
Scores a page against the live top-10 for a keyword and tells you what to fix.
This is the one that replaced a $99/mo tool and a morning of work. It is also the easiest thing to sell, because the output is a number a client can watch move.
~/.claude/skills/on-page-audit/SKILL.md---
name: on-page-audit
description: Score a page against the live top-10 SERP for a target keyword and return a deterministic 0-100 optimisation score with a ranked gap list. Use when asked to "audit this page", "score this page for [keyword]", "what do I need to rank for [keyword]", or when a page is underperforming and nobody knows why.
---
# On-Page Audit
Answer one question: what is on the pages that outrank us, that is not on ours?
## Inputs
- Target URL
- Target keyword
- Market (country + language) — the SERP is localised, and auditing
against the wrong market is worse than not auditing at all
## Steps
1. Pull the top 10 organic results for the keyword in the target market.
Exclude the target URL if it already ranks.
2. Fetch and parse each competitor page: title, H1, H2s, word count, and
term frequency for the head term and its variants.
3. Parse the target page the same way, with the same parser. Different
parsers produce different numbers and destroy the comparison.
4. For each measured term compute the range across competitors
(min / median / max) — never a single target number. Ranges are honest.
Single numbers pretend to a precision that does not exist.
5. Score the target 0-100 in code against those ranges. Suggested weights:
coverage of terms all top-3 use > body length inside range >
heading placement > everything else.
6. Emit the gap list ranked by (weight x distance from median).
## Output
| Field | Value |
|------------|--------------------------------------------------------|
| Score | 0-100 |
| Band | Critical <40 / Weak 40-59 / Competitive 60-79 / Strong 80+ |
| Top gaps | 5 max, each with current value vs competitor range |
| Word count | target vs competitor median |
## Rules
- The score is deterministic code. Never adjust a score by judgement, and
never present an estimate as a score. The moment a score becomes a vibe
it stops being evidence you can put in front of a client.
- Store every run with its date. The second audit is worth more than the
first, because it is the one that proves movement.
- Recommend nothing you cannot point at in a competitor's HTML.
- Always report the date and the SERP the score was measured against.
SERPs move; a score without a date is a rumour.