Skip to content
Marketing
Skill

/seo-page

Analyze one supplied URL across on-page, content, technical metadata, schema, images, and performance. Use only for a single-page review.

From plugin
claude-seo
28k33 skills20 agents1 hook

Claude Code

$ npx -y skills add AgriciDaniel/claude-seo --skill seo-page --agent claude-code

SKILL.md

seo-page.SKILL.md
name: seo-page
description: >
  Analyze one supplied URL across on-page, content, technical metadata, schema,
  images, and performance. Use only for a single-page review.
user-invocable: true
argument-hint: "[url]"
license: MIT
metadata:
  author: AgriciDaniel
  version: "2.6.0"
  category: seo

Single Page Analysis

Step 1: Run the Deterministic Checks

Run this first. It does the mechanical on-page checks in code, so they are repeatable and you do not recount them from the HTML by hand:

`"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run page_checks.py --url <url>`

For saved HTML (no network request; `--headers-json` is optional):

`"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run page_checks.py --file page.html --base-url <url> --headers-json headers.json`

For a JavaScript-rendered page, save the rendered HTML first with `"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run fetch_page.py <url> --render auto --output page.html`, then use `--file`.

The JSON holds `facts` (lengths and counts), `findings` (each with a stable `id`, a `severity`, a `message` and the `evidence` that triggered it), `not_checked`, `thresholds`, and a `summary` count per severity. An `X-Robots-Tag` rule addressed to a crawler other than Googlebot is not a finding; it is listed in `facts.x_robots_other_agents`, so mention it when the user cares about that crawler. It covers 47 checks:

| Area | Finding ids | |------|-------------| | Title, description | `missing-title`, `title-too-long`, `title-too-short`, `missing-meta-description`, `meta-description-too-long`, `duplicate-meta-tags` | | Headings | `missing-h1`, `multiple-h1`, `heading-level-skip` (main content only) | | Canonical, robots | `missing-canonical`, `canonical-points-elsewhere`, `og-url-differs-from-canonical`, `noindex`, `noindex-header`, `nofollow`, `meta-refresh-redirect`, `hreflang-missing-self` | | Document basics | `missing-doctype`, `missing-charset`, `charset-mismatch`, `missing-lang`, `missing-viewport`, `uses-frames`, `deprecated-html-tags`, `placeholder-text` | | Images | `images-missing-alt`, `images-missing-dimensions`, `first-image-lazy-loaded` | | Links | `links-without-text`, `generic-anchor-text`, `links-to-http`, `mixed-content` | | URL | `url-too-long`, `url-has-parameters`, `url-uppercase`, `url-underscores`, `url-non-ascii`, `url-double-slash` | | Size | `html-over-2mb`, `deep-dom`, `wide-dom-node` | | Social, schema | `missing-open-graph`, `missing-og-image`, `invalid-jsonld` | | Content | `title-not-reflected-in-content`, `description-not-reflected-in-content`, `thin-content` |

How to use the result:

  • Take every length, count and id from the JSON. Do not recount by hand and do

not re-derive a check the script ran. An id that appears in neither `findings` nor `not_checked` passed.

  • Your work is judgment: decide whether each finding matters for this page and

explain why in plain language, quoting the evidence. A `noindex` on a thank-you page is intended, `thin-content` on a contact page is fine, and `multiple-h1` rarely matters on its own.

  • `severity` is the script's default (Critical, High, Medium, Low, as in

Issues Found below). Raise or lower it when the page context justifies it, and say why.

  • The length thresholds (`thresholds`, from quality-gates.md) are

display-truncation heuristics. Google publishes no title or description length limit: say "may be truncated in results", never "too long for Google".

  • `not_checked` lists checks that could not run (no response headers with

`--file`; word counts on Chinese, Japanese or Thai text). Report them as not checked, never as passed.

  • `word_count` is checked against one type-blind floor. Compare it with the

page type minimum in quality-gates.md yourself.

  • If the script prints `{"error": ...}` and exits non-zero, follow Error

Handling below.

The sections below list everything a page review covers. Where the script has a finding id for an item, use its result; the rest still needs your own analysis.

What to Analyze

On-Page SEO

  • Title tag: 30-60 characters (see quality-gates.md), includes primary keyword, unique
  • Meta description: 120-160 characters (see quality-gates.md), compelling, includes keyword
  • Meta description is not a restatement of the title: run

`"${CLAUDE_PLUGIN_ROOT}/scripts/claude-seo" run metadata_template.py --title "<title>" --description "<desc>" --json` (heuristic, deterministic string comparison). A description that opens by repeating its own title and closes on a stock CTA ("Try it free now.", "Start free!") is templated metadata, the shape bulk generation jobs produce site-wide, and duplicated or templated metadata is a documented content-quality problem regardless of how original the body copy is

  • H1: exactly one, matches page intent, includes keyword
  • H2-H6: logical hierarchy (no skipped levels), descriptive
  • URL: short, descriptive, hyphenated, no parameters
  • Internal links: sufficient, relevant anchor text, no orphan pages
  • External links: to authoritative sources, reasonable count

Content Quality

  • Word count vs page type minimums (see quality-gates.md)
  • Readability: Flesch Reading Ease score, grade level
  • Keyword use: natural use of the topic, entities, and variations; no target density (Google publishes none); flag unnatural repetition as keyword stuffing
  • E-E-A-T signals: author bio, credentials, first-hand experience markers
  • Content freshness: publication date, last updated date

Technical Elements

  • Canonical tag: present, self-referencing or correct
  • Meta robots: index/follow unless intentionally blocked
  • Open Graph: og:title, og:description, og:image, og:url
  • Twitter Card: twitter:card, twitter:title, twitter:description
  • Hreflang: if multi-language, correct implementation

Schema Markup

  • Detect all types (JSON-LD preferred)
  • Validate required properties
  • Identify missing opportunities
  • Never recommend HowTo (deprecated) or FAQ for rich results (retired May
Read more
@agricidaniel
Ships withclaude-seo

Universal SEO skill for Claude Code. 26 sub-skills + 19 sub-agents covering technical SEO, E-E-A-T, schema, GEO/AEO, agent readiness (Lighthouse Agentic Browsing, WebMCP, llms.txt), backlinks, local SEO, e-commerce, international SEO, Google APIs, and PDF/Excel reporting. 9 optional extensions for live SEO data.

28k33 skills20 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
27.8k
Star history of AgriciDaniel/claude-seo on GitHub, a chart by star-history.com

Other skills on claude-seo.

seo-ahrefs

seo-ahrefs

Ahrefs API analyst (extension). Reads referring domains, backlinks, organic keywords, and content explorer data via the tested…

seo-image-gen

seo-image-gen

AI image generation for SEO assets: OG/social preview images, blog hero images, schema images, product photography, infographics.…

seo-bing

seo-bing

Bing Webmaster Tools + IndexNow extension. Microsoft Copilot citations are fed by the Bing index; this skill makes Bing…

seo-dataforseo

seo-dataforseo

Live SEO data via DataForSEO MCP server: SERP analysis, keyword research (volume, difficulty, intent, trends), backlink profiles,…

seo-firecrawl

seo-firecrawl

Full-site crawling, scraping, and site mapping via Firecrawl MCP. Use when user says "crawl site", "map site", "full crawl",…

seo-matomo

seo-matomo

Matomo Reporting API extension. Self-hosted or Matomo Cloud analytics as a GA4 alternative or complement. Organic traffic,…

More skills from other plugins.

brag

brag

Turn the current project website into a short, polished, shareable launch video using Hyperframes. Use when someone says "/brag",…

brag2w21k
@latent-spaces@latent-spacesInstall Skill
geo-audit

geo-audit

Full website GEO+SEO audit with parallel subagent delegation. Orchestrates a comprehensive Generative Engine Optimization audit…

scroll-world

scroll-world

Build an immersive scroll-scrubbed "fly through the world" landing page for any industry or brand using Higgsfield. As the…

@oso95@oso95Install Skill

Questions about seo-page.

Which coding agents can use seo-page?
seo-page installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.