Skip to main content
AC
SEO & AEO5.0 KBMIT licensed

claude-seo-page

Rewritten from patterns in AgriciDaniel/claude-seo (MIT)

Deep SEO analysis of a single page, covering on-page elements, content quality, technical meta tags, schema, images, and CWV risk flags, with a scored report. Use when the user says "analyze this page", "check page SEO", "page analysis", or provides one URL for review. Not for site-wide crawls or indexability audits (use claude-seo-technical), regression tracking against a baseline (use claude-seo-drift), or AI-surface scoring (use claude-seo-geo).

  • claude
  • seo
  • page

SKILL.md

Single Page Analysis

One URL, every on-page factor, scored and prioritized. Analyze what the HTML actually contains, flag what you cannot measure from HTML alone, and never pad the report with unverifiable claims.

Checks by area

On-page

  • Title: 50-60 chars, primary keyword present, unique.
  • Meta description: 130-160 chars, compelling, keyword present.
  • H1: exactly one, matches intent, carries the keyword.
  • H2-H6: logical hierarchy, no skipped levels, descriptive.
  • URL: short, hyphenated, no parameters.
  • Internal links: sufficient count, relevant anchors. External links: authoritative targets, sane count.

Content quality

  • Word count vs page-type expectation, readability (Flesch score and grade level), keyword density in the 1-3% natural range with semantic variations, E-E-A-T signals (author bio, credentials, first-hand markers), publication and updated dates.

Technical meta

  • Canonical present and self-referencing or correctly pointed.
  • Meta robots index/follow unless intentionally blocked.
  • Open Graph: og:title, og:description, og:image, og:url. Twitter Card set.
  • Hreflang correct if multi-language.

Schema

  • Detect all types, JSON-LD preferred. Validate required properties. List missing opportunities.
  • Never recommend HowTo (deprecated) or FAQ markup for rich results (retired). Keep existing FAQPage as an AI-citation signal, use QAPage only for genuine Q&A pages.

Images

  • Alt text present and descriptive. Flag files over 200KB (warning) and 500KB (critical). Recommend WebP/AVIF. Width/height attributes set (CLS). Lazy loading: identify the method (native, JS plugin, none). Do not flag "not lazy-loaded" when a JS lazy-loader (lazysizes, Perfmatters-style data-src placeholders) is detected, those intentionally strip the native attribute.

CWV risk flags (HTML-only, label as potential)

  • LCP: huge hero images, render-blocking resources. INP: heavy JS, missing async/defer. CLS: missing image dimensions, injected content. For real field data, route to claude-seo-google.

Workflow

  1. Fetch the URL. On 4xx/5xx or auth walls, report it and ask for rendered HTML or a public URL. Do not guess content.
  2. If the body is near-empty, the page is client-rendered: analyze what exists, flag the results as incomplete, request a rendered snapshot.
  3. Run every check above.
  4. If DataForSEO MCP tools are available, add live context: serp_organic_live_advanced for current positions, backlinks_summary for link profile (route via claude-seo-dataforseo).
  5. Output the score card:
Overall Score: XX/100
On-Page SEO:     XX/100
Content Quality: XX/100
Technical:       XX/100
Schema:          XX/100
Images:          XX/100

Then issues ordered Critical > High > Medium > Low, each with a specific fix and expected impact, plus ready-to-paste JSON-LD for schema opportunities.

Verification

Run curl -s <url> | grep -c "<h1". Expect exactly 1. If 0, either the page is client-rendered (flag it, request rendered HTML) or the H1 is genuinely missing (Critical finding). If 2+, multiple H1s is a High finding. This one command validates both your fetch and the most common on-page defect.

Good vs bad

Good: "Title is 71 chars, truncates in SERPs. Rewrite to 58: '<primary keyword> | <brand>'. Meta description missing, here is a 142-char draft." Bad: "Title could be more optimized and content should be higher quality." No measurements, no rewrites, nothing actionable.

Footguns

  • Scoring a client-rendered shell. An empty-body page scores terribly on every dimension, but the real page might be fine. Detect thin HTML first and label the whole report incomplete.
  • CWV verdicts from HTML. You cannot measure LCP/INP/CLS from markup. Flag risks as "potential" and point at claude-seo-google for field data.
  • Recommending retired rich-result markup. FAQ and HowTo rich results are gone. Recommending them wastes client dev time.
  • False lazy-loading flags. JS lazy-loaders strip loading="lazy" on purpose. Check for data-src patterns before flagging.

Completion checklist

  • [ ] Page fetched successfully or failure reported honestly
  • [ ] All six check areas covered
  • [ ] Every issue has a measurement and a concrete fix
  • [ ] CWV items labeled as potential, not measured
  • [ ] Schema suggestions are valid ready-to-paste JSON-LD
  • [ ] Score card totals consistent with the issue list

Any box unchecked: not done. Fix or say so.

More in SEO & AEO

All skills