1---2name: seo-page3description: Use when analyzing a single URL or local file via /seo page — meta, schema, headers, GEO readiness.4---56<objective>7Runs a single-page SEO analysis: fetches the page (URL or local file), extracts meta/OG/Twitter/canonical (`scripts/parse-meta.ts`), validates JSON-LD (`scripts/validate-schema.ts`), analyzes H1-H6 hierarchy, and scores LLM-readiness (`scripts/geo-score.ts`). Checklist covers title length/keyword, meta description length, single-H1 rule, heading hierarchy, canonical correctness, Open Graph/Twitter Card completeness, schema presence, and image alt/lazy/format compliance. For a full-site audit spanning multiple pages, use seo-audit instead.8</objective>910# Single-Page SEO Analysis1112## Workflow13141. Fetch page (URL via WebFetch, or read local file)152. Run `scripts/parse-meta.ts <input>` → extract title, description, OG, Twitter, canonical163. Run `scripts/validate-schema.ts <input>` → JSON-LD validation174. Analyze H1-H6 hierarchy185. Run `scripts/geo-score.ts <input>` → LLM-readiness score196. Output structured report2021## Checks2223| Element | Rule |24|---------|------|25| `<title>` | 50-60 chars, primary keyword, brand |26| `<meta description>` | 120-155 chars, hook + benefit + CTA |27| `<h1>` | Exactly one, contains primary keyword |28| `<h2>-<h6>` | Hierarchical, no skip |29| Canonical | Self-referencing or pointing to authoritative URL |30| Open Graph | og:title, og:description, og:image (1200x630), og:url |31| Twitter Cards | summary_large_image with og:image |32| Schema | At least one JSON-LD block, validates against schema.org |33| Images | All have alt, lazy-loaded, WebP/AVIF |3435## References3637- `skills/seo/02-onpage-seo/` (meta-tags, open-graph, twitter-cards, headers, alt-text)38- `skills/seo/09-checklists/pre-publication.md`