Skip to content

v0.0.54: the AI checks say what the evidence says

Choose a tag to compare

@bsbodden bsbodden released this 03 Nov 02:15
· 25 commits to main since this release

v0.0.54: the AI checks say what the evidence says

The AI-readiness checks now follow what the crawler operators document and what the citation studies measure, and the audit reads two things a browser never shows: the metadata in the initial HTML, and the link graph before any script runs.

AI crawler access by bot class. OpenAI documents GPTBot as training-only and says a site opted out of OAI-SearchBot "will not be shown in ChatGPT search answers"; Anthropic documents the same split (ClaudeBot, Claude-SearchBot) plus Claude-User, which fetches one page because a user asked. The checks group bots that way and word each finding for its consequence, from robots.txt and from a live fetch as each bot:

Class Bots robots.txt disallowed Refused at the edge
search Googlebot, bingbot crawlability checks SEARCH_CRAWLER_BLOCKED_AT_EDGE error
AI search OAI-SearchBot, Claude-SearchBot, PerplexityBot AI_SEARCH_BOTS_DISALLOWED warning AI_SEARCH_CRAWLER_BLOCKED_AT_EDGE warning
user-triggered ChatGPT-User, Claude-User, Perplexity-User AI_USER_FETCH_DISALLOWED warning AI_USER_FETCH_BLOCKED_AT_EDGE warning
training GPTBot, ClaudeBot, CCBot, Google-Extended, Bytespider AI_TRAINING_BOTS_DISALLOWED notice AI_TRAINING_CRAWLER_BLOCKED_AT_EDGE notice

A challenge interstitial counts as a refusal even when it answers 200; the live fetch asks once per origin per run. Gone: AI_CRAWLER_BLOCKED_AT_EDGE, AI_BOT_GPTBOT_BLOCKED, AI_BOT_CLAUDEBOT_BLOCKED, AI_BOT_PERPLEXITY_BLOCKED, AI_BOT_GOOGLE_EXTENDED_BLOCKED.

Metadata placement. A fetch as Googlebot tells Next.js streaming metadata (METADATA_STREAMED_FOR_BOTS: the title, description and canonical reach Googlebot but arrive later, inside the body, for everyone else, including the AI search crawlers) from metadata rendered into the body for everyone (METADATA_OUTSIDE_HEAD). The fix names htmlLimitedBots.

The link graph without JavaScript. Each page's HTML links build a graph: linkGraph in the JSON report (homepage links, depth per page, unreachable pages, orphans, coverage) and depth on every page summary. NAV_NOT_IN_HTML (warning) when the homepage's HTML links to two pages or fewer on a site with ten or more; ORPHAN_PAGES and DEEP_PAGES only once every sitemap page was audited, so a five-page audit of a four-hundred-page site claims nothing it cannot see.

Content findings with their evidence. The comparison-table, direct-answer and uncited-statistics findings cite the studies behind them (tables +69 percent odds of citation; 23 versus 14 percent of pages opening with a direct answer; statistics with sources +29 percent, quotations +40 percent); the freshness findings cite Ahrefs and SE Ranking in place of an unsourced percentage. Gone: AI_NO_QA_FORMAT, AI_NO_DEFINITIONS, AI_QUESTIONS_NO_DIRECT_ANSWERS, AI_STOCK_IMAGE_HEAVY. Now notices, never a failed build: AI_LOW_STRUCTURE_SCORE, AI_LOW_CONCISENESS, AI_NO_REPUTABLE_CITATIONS, AI_NO_EXTERNAL_CITATIONS. Fixed: the table finding fired on any page containing "vs" as a substring. New: SITEMAP_LASTMOD_UNIFORM, when every URL carries the build time as its date.

llms.txt, as the evidence has it. A convention for coding agents and documentation sites, audited by Lighthouse, read by no search or answer engine. Missing stays a notice, framed for docs sites; invalid is a notice.

Structured data counts in the on-page score, at a third of the weight of the on-page essentials. Measured on six reference sites: 0 to 1 overall point.

The AI Readiness score, stated for what it is. It measures hygiene on the levers the citation evidence supports and does not predict citations; no published score does. The JSON report says so under notes.aiReadiness, the console under the score, the README in its own section.

Also fixed: a footer image is never reported as a lazy-loaded hero.

Codes that changed name show as new against a 0.0.53 baseline once; removed codes drop out of it silently.

Packages: @rankcli/cli 0.0.54, @rankcli/agent-runtime 0.0.42, @rankcli/mcp-server 0.0.27.

Install

npm install -g @rankcli/cli    # or: brew install integrallis/tap/rankcli

Standalone binaries for macOS, Linux and Windows and the Claude Desktop extension (.mcpb) are attached below.