A Live GEO Auditor and an AI Article Pipeline That Ships Nothing Below an A

This is an adapted English version. Original (Russian): automata.sale/blog/ai-automation/geo-auditor-i-konveer-statek-zcode/

A Live GEO Auditor and an AI Article Pipeline That Ships Nothing Below an A

We launched a live website audit on the automata.sale homepage — and on the same day our own tool graded our site a B. This is the story of how the checker caught its own makers, how we fixed two bugs in its logic, and how we rebuilt the entire article publishing pipeline so that a page now physically cannot ship in a shape that search engines and AI crawlers would fumble.

Classic SEO answers the question “which position in the results.” But a growing share of readers arrives through a different channel: ChatGPT, Perplexity, and Google AI Overviews answer the user’s question and cite the original source. This discipline is called GEO — Generative Engine Optimization.

The bad news: the rules are different here. Generative engines don’t rank by keywords and backlinks alone — they respond to machine readability: Schema.org structured data, an llms.txt file, AI crawler access in robots.txt, server response speed. A site can rank first in traditional results and still be completely invisible to AI search.

The good news: it’s measurable. We built an analyzer that shows in 30 seconds what your site looks like through the eyes of an AI.

What the live analyzer shows

On the automata.sale homepage there is a form: enter any site address and the report builds right on the page — no redirects, no sign-up:

  • GEO index 0–100 with a letter grade from A to F — overall AI-search readiness;
  • Load speed — Google PageSpeed mobile score and server response time (TTFB);
  • SEO meta — title and description length, H1, canonical, Open Graph, image alt attributes;
  • Schema.org structured data — which types were found and what’s missing;
  • AI access — whether llms.txt exists and whether robots.txt admits the crawlers of ChatGPT, Perplexity, and Claude.

The index combines five components: speed (20 points), structured data (25), llms.txt (20), AI crawler access (20), SEO foundation (15). Results are cached for 24 hours — per page, not per domain.

How our own checker gave us a B

The first thing we did was run our own site through the analyzer. Homepage: GEO 79, grade B. “Solid foundation, room to grow.” Uncomfortable, but fair — we dug in.

Then it got interesting. A blog article showed the same 79/B, even though it carried far more markup: TechArticle, FAQPage, breadcrumbs, author data. That doesn’t happen — unless the checker itself is broken.

Two bugs were hiding inside the tool:

  1. Validation truncated the path down to the domain root. You enter automata.sale/blog/some-post/ — and the tool audited automata.sale, the homepage. The user thought they were looking at a report about the article.
  2. The cache was keyed by domain, not by URL. Audit the homepage, and for the next 24 hours every other page of the same site returned a copy of that result.

We fixed both: the audit became per-URL, and the cache is now keyed by full address. While at it, we made the fallback speed measurement honest — when the Google PSI quota runs out, TTFB is measured over a warmed-up connection, without the DNS and TLS handshake noise of the very first request.

Then we put our own house in order: real FAQPage markup from the actual FAQ section on the homepage, citation rules added to llms.txt, title and description lengths brought under control. The result: homepage — GEO 94 (A), blog articles — 100/100.

How articles get written now: agent skills and a pipeline

The other half of the story is how the article you are reading reached your screen. I don’t have a separate “writing mode”: text is born anywhere in my work — inside a client project, in an Obsidian note, right in a conversation with the assistant.

Then a pipeline takes over, built on ZCode (an agentic terminal workflow) and two skills — reusable instructions the agent loads on trigger:

  • smm-crosspost — the entire publishing chain: normalizing the article to the blog schema, commit, deploy, cross-posting to social channels;
  • aeo — the rules of writing text that language models want to cite: question-answer structure, facts in the first lines of each section, a high density of verifiable statements.

It works like this. From any project or note I say: “publish.” The agent:

  1. brings the frontmatter up to the “maximum” checklist (below);
  2. writes the article into the site repository and deploys;
  3. waits until the page appears in the RSS feed;
  4. runs the fresh URL through the same express audit;
  5. writes a separate adaptation for each social channel and posts it.

Why an article physically cannot ship “broken”

The “maximum” checklist is baked into the skill, and part of it is closed by the site engine itself: a single H1, canonical, Open Graph, TechArticle and BreadcrumbList markup are generated automatically by the layout. The rest are explicit fields with concrete numbers:

WhatRequirementWhy
Short title (seoTitle)under 70 characterswon’t get cut off in results
Description120–165 charactersa full snippet in search
FAQ block (faq_items)3–5 questions from the textFAQPage markup, rich answers
Image alt attributeson every imageaccessibility and image search
H2 subheadingsat least twostructure for humans and parsers

But the checklist is half the defense. The other half is the gate before cross-posting: after deploy, the skill sends the fresh page to the audit API and requires Schema 100, SEO meta 100, and GEO ≥ 95 (grade A). If that fails, the agent fixes and redeploys — and the social posts don’t go out at all. The Russian original of this article passed the gate on the first try: 100/100, grade A.

What this gives a business

Counted honestly, without marketing fog:

  • Every article ships in perfect shape for classic SEO and for AI search — not “we’ll polish it later,” but at the moment of publication.
  • Time from idea to publication is one working session with the agent: text, markup, deploy, social channels. What used to take days between “written” and “published” now takes hours.
  • The entry point doesn’t matter. An article can be born from a bug in a client project, a morning note, an incident review — the pipeline is the same.
  • The tool and the process check each other. The checker catches the site, the skill catches the article, the gate catches what slipped past both.

Auditing your own site takes seconds; fixing the blind spots took an evening; rebuilding the publishing pipeline took a day. If you want to check your site’s AI-search readiness — the form is on the automata.sale homepage, no sign-up required.


📞 +7 (906) 311-77-69 · ✉ hello@automata.sale · 💬 Telegram: @automatasale · 🌐 automata.sale

Sole proprietor Evgeny Uryadov (Automata) · Tax ID 645112058391 · Reg. 312645301900058 Working with clients across Europe, CIS, and beyond