seo-ai-crawlers
Audit AI crawler access and citability for a page — confirm retrieval/citation bots (OAI-SearchBot, Claude-SearchBot, PerplexityBot) are allowed and the Googlebot vs Google-Extended split is correct, classify training vs search/retrieval vs user-fetch user-agents, check the page is server-rendered enough for non-JS AI crawlers, validate llms.txt / llms-full.txt (also covers M21), and generate a choice-gated robots.txt preset. Module M14. Feeds the AI Visibility score.
适合你,如果你需要确保AI爬虫正确访问你的网站并优化可见性。
用别的 agent?下载 .zip 解压,把文件夹放进它的技能目录
~/.claude/skills/(项目级 .claude/skills/)~/.codex/skills/npx oh-my-skill add hainrixz/claude-seo-ai/seo-ai-crawlerscurl -fsSL https://oh-my-skill.com/install.sh | bash -s -- hainrixz/claude-seo-ai/seo-ai-crawlersnpx oh-my-skill verify hainrixz/claude-seo-ai/seo-ai-crawlers怎么用
技能原文 SKILL.md
seo-ai-crawlers (M14)
Controls whether AI search engines can crawl and cite the page, and whether they can read it without JS. The training-vs-search-vs-fetch distinction is everything. Reference: references/ai-crawlers.md.
Audits
Working from the PageSnapshot (rendered_dom if present, else raw_html) plus the site robots.txt:
- Citation access: are retrieval/citation bots —
OAI-SearchBot,Claude-SearchBot,PerplexityBot,Bingbot— actually allowed (not caught by a broadDisallow: /or a wildcard block)? ConfirmGooglebotis not blocked and theGooglebot(search) vsGoogle-Extended(Gemini training control) split is correct. - User-agent classification: bucket every AI agent in
robots.txtinto training (GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, CCBot), search/retrieval (OAI-SearchBot, Claude-SearchBot, PerplexityBot), and user-triggered fetch (ChatGPT-User, Claude-User, Perplexity-User). Match user-agents case-insensitively; treat the table inreferences/ai-crawlers.mdas a starting set, not exhaustive. - Renderability for non-JS crawlers: pull the M4 (seo-crawl-render) render result — most AI crawlers do not execute JS. If primary content only appears in
rendered_domand is absent fromraw_html, flag it as invisible to AI retrieval. - llms.txt / llms-full.txt (also covers M21): presence at the site root, valid Markdown structure (H1 title, summary blockquote, sectioned link lists), and that linked URLs resolve. Follow
references/ai-crawlers.md.
Fixes
- AUTO (
fixable: auto): a citation-friendlyrobots.txtpreset, choice-gated — the user picksallow-citations(default: allow search/retrieval, opt out of training),allow-all, orblock-all. Deterministic, additive, verifiable; emitted as a diff forfix. - AUTO (
fixable: auto), disclosure-gated and scored 0:llms.txt/llms-full.txt, generated from the site's own structure only on explicit request (fix --category llms), shown as a diff before writing. Additive and deterministic, but never sold as proven ranking value — the disclosure that it is low/uncertain impact is shown every time. - ADVISORY (
fixable: advisory): edge/WAF block for bots that ignorerobots.txt(e.g. Bytespider) — the tool never writes infra config.
Never fabricate sitemap URLs, contact emails, or link targets — ask the user or leave a clearly-marked TODO placeholder.
Verification
node ${CLAUDE_SKILL_DIR}/../../scripts/parse-robots-sitemap.mjs --url <u>(robots_parse) — parsesrobots.txt, resolves the effective directive for each AI user-agent, and confirms it.dom_assertagainst the M4 render result for the renderability check (content present inraw_html).- When the required data tier is unavailable (e.g.
robots.txtunfetchable, no M4 render result), status isneeds_api— never a falsepass.
Findings
Findings conform to schema/finding.schema.json. evidence.observed quotes the page/robots line; verification.reproduce is the runnable command above; expected_impact is banded + confidence-tagged (no naked %). Examples:
M14.citation_bots.blocked—Disallow: /reachesOAI-SearchBot/Claude-SearchBot/PerplexityBot(statusfail, severity 4,fixable: auto, axisai, confidenceestablished).M14.render.content_js_only— primary content inrendered_dombut absent fromraw_html, invisible to non-JS AI crawlers (statuswarn, severity 4,fixable: advisory, axisai, confidencedirectional).M14.llmstxt.missing— no/llms.txtat site root (statuswarn, severity 1,fixable: auto, axisai, confidencespeculative, scored 0).
Honesty
- Blocking a training bot does NOT block the matching search bot — they are separate user-agents (
GPTBot≠OAI-SearchBot,ClaudeBot≠Claude-SearchBot). Many "block AI" guides get this wrong. Bytespiderand some agents frequently ignorerobots.txt; a robots rule is best-effort. Real enforcement needs an edge rule / WAF (advisory).robots.txtcontrols crawling, not indexing — to keep a page out, use anoindexmeta tag and don't alsoDisallowit.llms.txthas only partial vendor support (Anthropic and Perplexity honor it in retrieval; Google does not use it for AI Overviews/AI Mode; OpenAI uncommitted) and is also useful as IDE/coding-agent context. Still low/uncertain — scored 0, never presented as proven ranking value.