Seo crawlability
Audit and generate robots.txt and general crawl access for a page — verify robots.txt reachability and syntax, detect Disallow rules that block CSS/JS or important content, sanity-check crawl-delay, confirm a Sitemap directive, and assert overall crawl access for Googlebot/Bingbot. Module M1. Feeds the Search SEO score.From its SKILL.md
npx -y skills add Hainrixz/claude-seo-ai --skill seo-crawlabilityAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- runs commandsInstructs the agent to run 1 command, including `node ${CLAUDE_SKILL_DIR}/../../scripts/parse-robots-sitemap.mjs --url <u>`.
- fetches URLsInstructs the agent to fetch 1 URL, including /robots.txt.
SKILL.md
4.3 KB, ~1.0k tokens by cl100k_base, as published. Nobody here has run it
seo-crawlability (M1)
Crawl access is the precondition for every other search signal: if Googlebot/Bingbot can't fetch the page and its assets, nothing else ranks. This module covers general-purpose crawl access only. AI-specific bot directives (GPTBot, Claude-SearchBot, etc.) and llms.txt live in seo-ai-crawlers (M14/M21); see references/ai-crawlers.md for that boundary.
Audits
Working from the PageSnapshot (rendered_dom if present, else raw_html) plus a fetch of /robots.txt:
- Reachability:
/robots.txtreturns 200 (a 404 means "allow all" but is worth flagging; a 5xx can suspend crawling). - Syntax: each line is a valid directive (
User-agent,Disallow,Allow,Sitemap,Crawl-delay); flag unknown tokens, missingUser-agentgroup headers, and BOM/encoding issues. - Asset blocking: any
Disallowthat blocks CSS/JS, fonts, or/wp-includes/-style paths — this breaks rendering and is a leading cause of "page looks broken to Google" (cross-check with M-render). - Content blocking:
Disallowrules that hide important indexable paths fromGooglebot/Bingbot. - Crawl-delay sanity: a large
Crawl-delay(or one applied to the global group) can starve crawl budget; note that Googlebot ignoresCrawl-delaybut Bingbot honors it. - Sitemap directive: presence of at least one absolute
Sitemap:URL. - Overall access: resolve the effective ruleset for
GooglebotandBingbotagainst the audited URL — does it end up allowed?
Fixes
Generated edits are a diff for fix, mapped to the schema fixable field:
- AUTO: remove an accidental
Disallowof CSS/JS or a key content path (additive un-block, verifiable); add a missing absoluteSitemap:line; repair malformed syntax (e.g.Dissallowtypo, missing colon, group with noUser-agentheader). - PROPOSED: tightening
Crawl-delayor restructuringUser-agentgroups — drafted, requires per-item accept because intent may be deliberate. - ADVISORY: changing what is intentionally disallowed (private/staging paths) — never written by the tool.
Never fabricate a sitemap URL or path: if the canonical sitemap location is unknown, emit a clearly-marked
TODOplaceholder for the user to fill, or ask.
Verification
node ${CLAUDE_SKILL_DIR}/../../scripts/parse-robots-sitemap.mjs --url <u>— fetches and parses/robots.txt, resolves the effective allow/deny for the named agent + URL, and checks for theSitemap:directive (methodrobots_parse).- When
/robots.txtcannot be fetched (network/auth/edge block) the status isneeds_api, never a falsepass.
Findings
Emit findings per schema/finding.schema.json. Examples:
M1.robots.blocks_css_js— aDisallowmatches CSS/JS the rendered page loads (severity 5, fail,fixable: auto, axissearch, confidenceestablished).M1.robots.blocks_googlebot— effective ruleset disallows the audited URL forGooglebot(severity 5, fail,fixable: proposed, axissearch, confidenceestablished).M1.sitemap.missing_directive— noSitemap:line in robots.txt (severity 5, warn,fixable: auto, axissearch, confidencedirectional). Each finding:evidence.observedquotes the offending robots.txt line (or the resolved verdict) verbatim;verification.reproduceis the runnable command above;expected_impactis banded + confidence-tagged (no naked %).
Honesty
robots.txtcontrols crawling, not indexing: aDisallow-ed page can still be indexed (URL-only) from external links. To keep a page out of the index use anoindexmeta tag and do not alsoDisallowit, or the crawler can't see thenoindex.- A missing or 404
robots.txtis not a defect — it means "crawl everything." Don't report it as a fail; flag only as informational. Crawl-delayis ignored by Googlebot; recommending it as a Google ranking/crawl lever is a myth — scope advice to Bingbot and other honoring agents.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.
Gives 0 of the 12 instructions most quality gates skills give in ~1.0k tokens
Counted across 1,524 of the 2,830 authors here whose files we hold, read 2026-09-06
- Read full output and check exit codein 45 of 1524, across 40 files
- Verify output confirms the claimin 44 of 1524, across 39 files
- Identify the command that proves the claimin 43 of 1524, across 39 files
- Execute the full verification commandin 36 of 1524, across 30 files
- Produce a verification reportin 34 of 1524, across 18 files
- Review git diff changesin 30 of 1524, across 16 files
- Fix build failures immediatelyin 29 of 1524, across 9 files
- Group findings by severityin 28 of 1524
- State claim only with evidencein 27 of 1524, across 22 files
- Verify regression tests with red-green cyclein 26 of 1524, across 22 files
- Run the full test suitein 26 of 1524, across 25 files
- Run test suite with coveragein 25 of 1524, across 10 files
Said here and by no other author read
- Use TODO placeholders for unconfirmed URLs
- Emit findings per schema finding format
- Fetch and parse robots.txt for the target URL
- Verify robots.txt syntax and reachability
- Check for Disallow rules blocking CSS or JS
- Identify Disallow rules blocking important content
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.