From marketing-skills
Run an on-page SEO audit on any public webpage using only native Claude Code tools — no CLI, no npm install, no browser automation. Use when the user asks to audit a page, check their SEO, review meta tags, check schema, diagnose why a page isn't ranking, or run a pre-launch SEO check. Triggers on "SEO audit", "site audit", "check my SEO", "audit this page", "is my page SEO-friendly", "review meta tags", "check schema", "check title tags", "audit my landing page", "why isn't this ranking". Outputs a graded report (A-F) with prioritized P0-P3 fixes and exact copy-paste code where relevant.
How this skill is triggered — by the user, by Claude, or both
Slash command
/marketing-skills:auditoria-seoThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Most SEO tools promise 148 rules and deliver a PDF nobody reads. For a non-technical marketer, the ranking wins live in about 20 of those rules: title, meta, H1, canonical, social cards, schema, alt text, internal links. This skill checks exactly those, on any URL, with nothing to install.
Most SEO tools promise 148 rules and deliver a PDF nobody reads. For a non-technical marketer, the ranking wins live in about 20 of those rules: title, meta, H1, canonical, social cards, schema, alt text, internal links. This skill checks exactly those, on any URL, with nothing to install.
Pull a public webpage's HTML, parse the on-page SEO signals, grade the result A-F, and hand back a priority-ordered fix list with exact code snippets. Every audit ends with a clear "what I did NOT check" disclosure so the user knows where the audit's edges are.
Output format: A single markdown report per URL (or one summary + per-URL reports for multi-page runs). Graded, prioritized P0-P3, with copy-paste fixes.
STOP. Do not start fetching or parsing until every field below is confirmed with the user. Ask for any missing field first. Do not guess the URL, do not assume single vs multi-page.
Once confirmed, before running WebFetch, state the audit's scope caveat in one line so they don't walk away with wrong expectations:
"This covers on-page SEO only — no Core Web Vitals, page speed, or security headers. If you need those, run Google PageSpeed Insights on the same URL."
For each URL:
WebFetch the page itself.WebFetch https://{domain}/robots.txtWebFetch https://{domain}/sitemap.xml (or whatever the robots.txt Sitemap: directive points to)Sanity check before parsing: Confirm the HTML contains real content. If the <body> is empty or contains only <script> tags (common on React/Vue SPAs without SSR), stop and tell the user:
"This page looks JavaScript-rendered — the raw HTML I can fetch doesn't contain the visible content. A proper audit needs a real browser. Try using Screaming Frog or ask your dev to add server-side rendering."
Anti-pattern: don't silently continue on a JS shell. The audit will be wrong and you'll have no idea.
For each URL, extract the items listed in references/category-checks.md.
Keep a running tally per URL:
URL: [the URL]
- Title: [PASS/FAIL + details]
- Meta description: [PASS/FAIL + details]
- H1: [...]
- [etc. through every category]
Anti-pattern: don't skip the tally and go straight to the report. Without the raw findings written out, grading and prioritization become guesses.
Use this matrix:
| Priority | Triggers |
|---|---|
| P0 — Fix now | Blocks indexing: noindex on a page meant to rank, Disallow: / in robots.txt, canonical pointing to a different URL, sitemap.xml returns 404. Missing <title>. Missing <h1>. |
| P1 — Fix this week | Missing meta description. Missing og:image. No schema on a page that needs it (product, article, FAQ). Duplicate or off-topic H1. Broken canonical. Title missing the target keyword when one was given. |
| P2 — Easy wins | Title too short (<30) or too long (>65). Meta description > 170. Multiple H1s. Missing alt text on content images. Missing hreflang on multi-region site. twitter:card set to summary instead of summary_large_image. |
| P3 — Nice to have | Generic anchor text. Minor heading hierarchy polish. Open Graph description tweaks. Thin word count on a non-content page. |
Anti-pattern: don't invent new priority levels or reorder items inside a level without reason. The matrix above is the source of truth.
Rough scoring (gut-feel weight, not a formula):
| Grade | Score | Meaning |
|---|---|---|
| A | 90-100 | Ship it |
| B | 80-89 | A handful of fixes |
| C | 70-79 | Meaningful gaps |
| D | 60-69 | Serious problems |
| F | <60 | The on-page needs a rebuild |
P0 issues drag hard (each one -15 to -25). P1 each -5 to -10. P2 each -1 to -3. P3 barely moves the number.
Deliver in this exact shape. Do not reorder sections.
# SEO Audit — [URL]
**Grade: [A-F] ([score]/100)**
**One-line summary: [the single biggest issue in plain English]**
## P0 — Fix now
- **[Issue name]**
- Why it matters: [plain English — avoid jargon]
- Exact fix: [copy-paste code or specific instruction]
## P1 — Fix this week
[same format, one entry per issue]
## P2 — Easy wins
[same format]
## P3 — Nice to have
[same format]
## What this audit did NOT check
- Core Web Vitals / page speed — run Google PageSpeed Insights at pagespeed.web.dev
- HTTP security headers (CSP, HSTS, X-Frame-Options) — ask your dev
- [Add JS-render warning if applicable]
- [Add anything else flagged as out-of-scope]
## Next steps
1. [Specific first action]
2. Re-run this audit after changes to confirm the grade moved.
For multi-page runs, add a "Shared issues across pages" section at the top listing problems appearing on more than one URL. Those are template-level fixes — one change solves many pages.
See references/worked-example.md for a complete run — context gathering, fetching, category tallies, and the final graded report on a realistic SaaS pricing page.
Feeds into this skill:
This skill feeds into:
A good audit:
noindex tag on a page meant to rank must never end up below any P2 cosmetic issue.If the report reads like a generic checklist that could apply to any website — it failed. If the user could act on it without any further questions — it passed.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub hdoria/marketing-skills --plugin marketing-skills