Back to the blog
· SEOWrench

GEO page by page: the report that shows what each AI reads from your site

A GEO score answers whether there's a problem. It doesn't answer the three questions that make someone open the editor: which page, which engine and why.

That's what we built the GEO Breakdown for — a report that changes the unit of the conversation. The summary card says "Perplexity: partial." The report says these four pages disappear for Perplexity, and here's the reason.

SUMMARY Perplexity · partial You know something is wrong. Not where, and not what to do. BREAKDOWN /products · /pricing /blog/guide · /about Gone for Perplexity: the text only exists after JavaScript runs.
The change is one of unit. "Partial" moves nobody; four URLs with the reason do.

Why the score is what it is: the breakdown with real weights

The top of the report opens the formula. It isn't a decorative progress bar — it's the score calculation, with the weight each engine actually carries.

A GEO problem doesn't hurt every engine equally. ChatGPT holds the largest share of AI search, so a page it can't read costs far more than one Claude can't read. Each engine's reading enters weighted, and three citability penalties come off afterwards.

WEIGHTED READING PER ENGINE — UP TO 100 POINTS ChatGPT · 45 Gemini · 20 Perplex. · 18 Cop. 10 7 EACH ENGINE ENTERS WITH HOW MUCH IT CAN READ reads it all · factor 1 reads part · factor 0.5 blocked · factor 0 CITABILITY PENALTIES (SUBTRACTED FROM THE TOTAL) −8 schema no structured data −6 content pages too thin to quote −4 freshness no author, no date
The weights sum to 1.0. Reading turns into up to 100 points; the penalties come off after.

Real gain, not a summed estimate

Here's the part almost every tool gets wrong, and that we chose to get right even when the number comes out less sellable.

If you add up the "potential gain" of each fix in isolation, you land on a number that does not exist. The classic case: an engine is blocked in robots.txt and is blind to JavaScript. Unblocking robots.txt alone returns zero points — JavaScript still hides your content from it. The loss was attributed to access; the gain doesn't come from there.

today robots.txt blocks the bot content needs JS 0 points from this engine unblocking robots.txt only bot allowed ✓ content needs JS 0 it arrives and reads nothing both together bot allowed ✓ HTML served ready ✓ +45 the engine's full weight
Example with ChatGPT (weight 45). The report runs the formula again without each problem — including when the honest gain is zero.

The report's "Largest possible gain" isn't a sum: it's geoReadinessScore recomputed in the browser with the fixes applied. Sometimes the honest result is showing that one fix alone changes nothing — and that's exactly what stops you from spending a sprint on the wrong file.

The matrix: page × engine, with the reason in every cell

The heart of the report. Each row is a page, each column an engine (or a group of engines sharing the same verdict), and each cell says what happens there — not just green or red, but why.

PAGE CHATGPT · CLAUDE · PERPLEXITY GEMINI · COPILOT / reads the content reads the content /products empty without JavaScript reads the content /pricing empty without JavaScript reads the content /dashboard blocked in robots.txt blocked in robots.txt Engines with the same verdict on every page share a column: on a site with no blocked bot, two columns are left instead of five.
Per page the fact is binary and verifiable: the content is in the HTML or it isn't.

Two design decisions worth explaining:

  • Causes have an order. A bot blocked in robots.txt beats a JavaScript dependency. The block is a site-wide decision — reporting it as a page problem would send you to fix the wrong file.
  • The matrix shrinks itself. Engines that say the same thing on every page collapse into one column. A report with five identical columns doesn't inform you; it informs you that nobody thought about it.

The six factors, with the measured sentence and the fix

Below the matrix, each factor opens with what was actually measured on that site — not the check's generic text — plus what to do, who does it (dev or content) and the effort.

1 Access Does robots.txt allow the AI search bots in? 2 Rendering Is the content in the served HTML, without needing JS? 3 Schema Is the entity declared in structured data? 4 Content Is there enough text for the AI to have something to cite? 5 Freshness Do the pages carry a visible author and date? 6 llms.txt Optional — no major engine honours it today.
Five factors score. The sixth is there because people ask about it — and it ships labelled optional, not pending.

llms.txt deserves the aside: it's in the report because everyone asks, and it comes out labelled optional. No major engine honours it today. Flagging as a problem something that costs you nothing would be padding the to-do list to look busy.

Your robots.txt as served — and the distinction almost everyone gets wrong

The report shows your actual robots.txt, the file as it was served, not just the verdict. "There's a Disallow" is a claim you can't check; the exact line is.

And it separates two things usually treated as one:

SEARCH BOTS — THEY MOVE THE SCORE OAI-SearchBot · ChatGPT-User PerplexityBot · Perplexity-User Claude-User They feed the live answer. Block them = you vanish from citations. TRAINING BOTS — THEY DON'T GPTBot · ClaudeBot · CCBot Google-Extended · Bytespider Amazonbot · Applebot-Extended They feed model training. Blocking them is a legitimate choice.
We show the whole training list: "none blocked" has to be verifiable, not merely the absence of a warning.

The most common mistake we see: blocking Google-Extended believing it removes the site from AI Overviews. It doesn't — that controls Gemini training. AI Overviews use regular Googlebot.

And what the AI actually answers

Technical readiness answers whether the AI can read you. The next question is what it says. That's what the real voices are for: we ask ChatGPT, Gemini and Claude — using each one's search capability — and show the answer as it came, along with the literal question we sent, the date, and the sources the model consulted.

ChatGPT Gemini Claude

💬 "what is seowrench.com?"

asking ChatGPT with web search…

ChatGPT: SEOWrench is a technical SEO and AI-readiness (GEO) audit tool: it finds and prioritises site issues and shows what ChatGPT, Gemini and Claude can read from your pages.

Sources: seowrench.com · real and dated

Animated demo of the flow. The question we sent is on screen — without it, "we don't fabricate anything" is just our word.

Showing the question is the detail that holds the rest up. An answer without its question is a quote without context, and you'd have no way to tell whether the result was coaxed.

All of it exports to PDF, CSV, Markdown and JSON

The whole report prints on letter paper, with a cover and the brand masthead. And the data leaves in three formats, because each goes somewhere different: CSV for the client's spreadsheet, Markdown to paste into the ticket, JSON for whoever wants to automate.

What else comes with Agency

The GEO Breakdown is one piece. The plan around it was designed for people who deliver reports to clients, not for people auditing their own site.

White-label report Your logo, your colour, your name — with no mention of SEOWrench. Monitoring + alerts Runs itself weekly or monthly and emails you when the score drops. Portfolio scale 500 pages per audit, 100k per month, across up to 100 domains. 500 AI credits a month Tailored recommendations per issue and the consolidated page analysis. History and comparison Full history per domain and the diff between two audits. The rule-based SEO engine 21+ checks per page — the same ones as Free, at portfolio volume.
The audit engine is identical across all three plans. What changes is volume, delivery and depth.

That last panel is worth underlining, because it's a product decision and not an oversight: the 21+ technical SEO checks are the same on Free, Pro and Agency. Metadata, headings, indexing, content, performance, schema, social, accessibility and links — the engine isn't crippled by tier. We don't think it's honest to hide a problem from someone who doesn't pay; what the plans change is how many pages go in, what you can hand to a client, and how much of the AI diagnosis you get to see.

The yardstick hasn't changed

None of this promises citation. The strongest correlation with AI visibility isn't technical — it's brand mentions across the web, answer-first writing, and being a source worth trusting.

Technical readiness makes you eligible to be read. Whether you get chosen depends on content and authority. A tool promising guaranteed citation is selling hype.

What the GEO Breakdown does is remove the doubt from the part you can measure: which page, which engine, why, and how much comes back if you fix it. With the number recomputed — including when it's zero.

See it on your site

Run a free audit and start from the GEO score. If you deliver reports to clients, the Agency plan opens the page-by-page breakdown, the real AI voices and the report carrying your own brand.

Sources

  • Vercel — The rise of the AI crawler (~500M GPTBot fetches, zero JS execution): vercel.com/blog/the-rise-of-the-ai-crawler
  • OpenAI — bot documentation (GPTBot vs OAI-SearchBot vs ChatGPT-User): developers.openai.com/api/docs/bots
  • Cloudflare — From Googlebot to GPTBot: who's crawling your site in 2025: blog.cloudflare.com
  • Ahrefs — schema & AI citations study; What is llms.txt: ahrefs.com/blog
  • Google — structured data guidance for AI Overviews / AI Mode