Seo indexability
Audit a page's indexability and site health — canonical presence/validity (self vs cross-domain vs chain, canonical to redirect/404, the lethal canonical+noindex pair), robots meta and X-Robots-Tag noindex/nofollow, duplicate clusters, pagination signals, plus redirect chains/loops, 4xx/5xx and soft-404 internal links, mixed content, HTTP-to-HTTPS enforcement, orphan pages and click-depth — and generate self-referential canonical / noindex-removal fixes. Module M2 (covers M3 site health). Feeds the Search SEO score.From its SKILL.md
npx -y skills add Hainrixz/claude-seo-ai --skill seo-indexabilityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
4.5 KB, 970 tokens by cl100k_base, as published. Nobody here has run it
seo-indexability (M2)
If a page can't be crawled, indexed, or canonicalized correctly, every other signal is wasted — this is the floor under the Search score. Schema-side context: references/schema-tier1.md.
Audits
Working from the PageSnapshot (rendered_dom if present, else raw_html) plus response headers:
- Canonical: exactly one
<link rel="canonical">; absolute HTTPS URL; classify self-referential vs cross-domain vs chained (canonical points to a URL that itself canonicalizes elsewhere). Flag canonical that resolves to a redirect or 4xx. - Canonical + noindex: the lethal combination on the same URL (a noindex page used as a canonical target, or a canonicalized page also carrying noindex) — contradictory signals that drop the page.
- Robots directives:
<meta name="robots">and theX-Robots-Tagheader fornoindex/nofollow/none; reconcile header vs meta (header wins). - Duplicate clusters: near-identical title/H1/body across URLs with no consolidating canonical.
- Pagination: paginated series signals (self-canonical per page; do not canonicalize page 2+ to page 1 — that delists deep items).
- Site health (covers M3): redirect chains/loops (>1 hop = warn, >3 hops or loop = fail), internal links returning 4xx/5xx, soft-404 (200 status on an empty/"not found" page), mixed content (HTTP subresources on HTTPS), HTTP-to-HTTPS enforcement, orphan pages (no internal inlinks), and click-depth from the homepage.
Fixes
- AUTO (
fixable: auto): inject a single self-referential absolute-HTTPS<link rel="canonical">when absent; remove an accidentalnoindexon a page the user has confirmed should be indexed. Both are deterministic, additive/removal-only diffs forfix. - ADVISORY (
fixable: advisory): redirect chains/loops, status codes, HTTP-to-HTTPS, and mixed-content origin fixes live in server/CDN config — the tool never writes these; it reports the exact change. - PROPOSED (
fixable: proposed): duplicate-cluster consolidation (which URL is canonical is an editorial call) — draft a per-cluster canonical plan for the user to accept. - Never fabricate which URL "should" win or whether a page is intentionally noindexed — ask the user or leave a clearly-marked TODO placeholder.
Verification
dom_assert: parse the rendered DOM for canonical/robots presence and value.header_check: fetch headers to readX-Robots-Tagand follow the redirect chain (status +Locationper hop).- When the required data tier is unavailable (no live fetch / no crawl graph for orphan & depth), status is
needs_api— never a falsepass.
Findings
Findings conform to schema/finding.schema.json. Each carries evidence.observed quoting the page/header and a runnable verification.reproduce. Examples:
M2.canonical.noindex_conflict— page is both canonical target andnoindex(statusfail, severity 4,fixable: proposed, axissearch, confidenceestablished).M2.canonical.missing— no<link rel="canonical">on an indexable page (statuswarn→failif duplicates exist, severity 4,fixable: auto, axissearch, confidenceestablished).M2.redirect.chain— internal link traverses >1 hop before 200 (statuswarn, severity 4,fixable: advisory, axissearch, confidenceestablished).M2.robots.unintended_noindex—X-Robots-Tag: noindexon a page the user wants indexed (statusfail, severity 4,fixable: auto, axissearch, confidenceestablished).
Honesty
- A canonical is a hint, not a directive — Google may pick a different canonical; report it as strong consolidation, not a guarantee.
rel=next/previs no longer used by Google for pagination; don't recommend adding it as a ranking tactic — keep self-canonical per page instead.- Click-depth and orphan status correlate with crawl priority but are not a documented ranking factor — flag as
directional, never as an established score cap.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most marketing audience skills give in 970 tokens
Counted across 690 of the 894 authors here whose files we hold, read 2026-08-07
- Apply Poppins font to headingsin 41 of 690, across 6 files
- Apply Lora font to body textin 41 of 690, across 6 files
- Use Arial fallback for headingsin 39 of 690, across 4 files
- Use Georgia fallback for body textin 39 of 690, across 4 files
- Maintain text hierarchy and formattingin 39 of 690, across 4 files
- Use accent colors for non-text shapesin 38 of 690, across 3 files
- Use RGB values for precise color matchingin 38 of 690, across 3 files
- Use brand colors for primary text and backgroundsin 36 of 690, across 1 file
- Read product marketing context file before asking questions, starting, or auditingin 35 of 690, across 23 files
- Use active voice instead of passive voicein 26 of 690, across 10 files
- Implement or generate appropriate JSON-LD structured datain 24 of 690, across 17 files
- Prioritize clarity over clevernessin 22 of 690, across 8 files
Said here and by no other author read
- use rendered DOM if present else raw HTML
- flag canonical and noindex combinations as conflicts
- classify canonicals as self-referential cross-domain or chained
- fail redirect loops or chains over three hops
- inject a self-referential canonical when missing
- remove accidental noindex when user confirms indexation
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.