---
name: claude-seo-page
description: 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).
license: MIT
metadata:
  author: TechTide AI (Alex Cinovoj)
  provenance: rewritten from patterns in AgriciDaniel/claude-seo (MIT)
  category: SEO & AEO
---

# 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.
