How to read the RankReady diagnostics report
Read each RankReady signal correctly: which status codes mean a real problem, which are expected, and what a crawler hit does not prove.
Last updated August 25, 2026
This page teaches you to read RankReady’s output the way someone diagnosing a problem would. You will finish with a repeatable check you can run on any site, and a clear sense of which results are genuine faults and which are the plugin working as designed.
Start with the admin tabs
The RankReady menu in wp-admin has five tabs, and each answers a different question:
- Dashboard (
tab=dashboard): what is switched on. - AI Visibility (
tab=crawlers): the endpoints and crawler rules. Note the slug iscrawlers. Subtabs arebrand,robots,llms,markdown,webmcpandokf. - AI Content (
tab=content): summaries and FAQs, subtabssummaryandfaq. - Insights (
tab=insights): recorded crawler and referral activity. - Settings (
tab=settings): providers, keys and global options.

Then verify the endpoints yourself
A toggle tells you what was requested. A status code tells you what the internet gets. Run these and write down each result:
curl -I https://example.com/llms.txt
curl -I https://example.com/llms-full.txt
curl -I https://example.com/index.md
curl -I https://example.com/your-post.md
curl -I https://example.com/okf/
curl -I https://example.com/.well-known/mcp.json
curl https://example.com/robots.txt
How to read each result
| Result | What it means | What to do |
|---|---|---|
| 200 | Working. | Read the body and confirm the content is yours. |
| 404 on a feature you left off | Correct behaviour. | Nothing. Enable the feature if you want the endpoint. |
| 404 on a feature you enabled | The request never reached RankReady’s handler. | Re-save Settings > Permalinks, purge caches, confirm you are on 1.3.0. |
| 403 on /.well-known/mcp.json | The server refused before PHP ran. | Server config change on nginx. No plugin setting will fix it. |
| 406 on a canonical URL | You asked for a content type that is not offered. | Nothing. This is the correct response. |
| 304 on /llms.txt or /okf/ | ETag revalidation working. | Nothing. This is a healthy result, not an error. |
The 403 case deserves emphasis because it is the most misread signal in the whole set. /.well-known/ is a dotfile path, and nginx denies dotfile paths by default. The request stops at the web server, so RankReady is never consulted. The fix is a server block:
location ^~ /.well-known/ {
allow all;
default_type text/plain;
try_files $uri $uri/ /index.php?$args;
}
Reading robots.txt
Load /robots.txt and find the managed section between # BEGIN RankReady and # END RankReady. Everything RankReady controls is inside those markers. Anything outside them came from WordPress or another plugin, and RankReady is not responsible for it.
Inside, you should find the rules for the 29 named AI crawlers, which include GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended, GoogleOther, Applebot-Extended, Meta-ExternalAgent, MistralAI-User, Bytespider, Amazonbot, CCBot and DuckAssistBot. You will also see Content Signals directives: ai-train, search and ai-input.
One block surprises people. Googlebot and Facebook’s link crawler get their own mirrored group that repeats your existing User-agent: * rules. They are named so scanners can see them explicitly. Their permissions are unchanged by that group.
Reading content negotiation
Distinct .md URLs always serve Markdown regardless of the Accept header. That is deliberate, for cache safety, so do not read it as the Accept header being ignored. Negotiation happens on the canonical URL instead:
curl -H "Accept: text/markdown" https://example.com/your-post/
curl -H "Accept: text/html" https://example.com/your-post/
Markdown then HTML is a pass. If both return HTML and a cache sits in front of the site, suspect the cache before the plugin.
Reading a missing Article schema
Empty schema is usually one of two verified situations rather than a fault. First, Article schema is built from the post’s generated AI summary and returns nothing when no summary exists, so a post with schema on and no summary emits no Article JSON-LD. Second, when Yoast, Rank Math, AIOSEO or SEOPress is active, RankReady merges into that plugin’s graph instead of printing a second block, and the Article count stays at exactly one.

Reading Insights honestly
This is the most important line on the page. A crawler hit proves your page was fetched. It does not prove your page was quoted. Insights is a record of requests to your server, which is a real and useful signal about crawlability, and it is not evidence of citation, ranking or traffic.
Insights will also be empty on a new install, because it can only report activity that has already happened. Give it days of normal traffic before drawing conclusions from it.
A note on what is not here
If you are looking for a check on auto-generation, bulk regeneration, HowTo or ItemList schema, custom post type support, an AI mention tracker, per-language llms.txt or multi-site management, those are listed as coming soon rather than shipping. Do not treat their absence as a fault.