AEO: answer engine optimization
Whether crawlers can fetch a page, whether its content is in the HTML, and what its markup says, with the fix beside each finding.
AEO, answer engine optimization, shows what a crawler or an answer engine can observe about the page. It is a checklist of what can be seen, with the evidence for each finding. It gives no score and does not predict whether ChatGPT, Gemini or any other assistant will cite the page: nobody can read that from a browser.
Run it#
- Turn Nitpique on, open the side panel, choose Page, then AEO.
- Nitpique reads the page, its
robots.txtand its HTML as the server sends it. The summary says how many findings need a fix, how many to improve and how many passed. - Open a finding to see why it matters, the evidence, a change to copy and Show on page, which outlines the element it is about (hover) or selects it (click).
- Make the change and press Refresh to check it.
Hand a finding on#
Open any row for what was observed, and the change to make where there is one. Three buttons carry it further: Show on page outlines the element a finding is about, Copy as issue puts the finding on the clipboard as Markdown, with the page address, what was seen and the change, ready to paste into an issue tracker, and Specification opens the standard behind a checklist row. At the foot, The Report menu under it copies or downloads the whole audit as one Markdown file: the summary, each level of the checklist and every finding. Nothing is sent anywhere: the report is made in the panel.
While the page is being read, a small loader shows in the middle of the view; it comes back each time you press Refresh, and stands still if your system asks for reduced motion.
The checklist#
The first block lists the files and headers an AI agent looks for on a site, one row each: Found, Missing, Invalid or Not checked where the file could not be reached. Open a row for what was seen, a sample to copy and a link to the specification. The header counts files, such as 3 of 5 found; it is not a score and does not say how an assistant will treat the site.
- robots.txt: there, with at least one group, and not blocking this page for everyone.
- Sitemap: the one robots.txt names, else
/sitemap.xml. It must parse and list this page; the row says how many URLs have alastmoddate. A sitemap index is accepted, and a compressed one is not read. - AI crawler rules: whether any of the nine crawlers below has a rule of its own.
- Content Signals: a
Content-Signalline in robots.txt that says whether the content may be used for search, as input to an answer, or for training. - Markdown for agents: the page is requested with
Accept: text/markdown. A Markdown answer should also sendVary: Accept, or a cache can serve it to a browser.
Technical groundwork#
The next level is read only when you press Check Level 2, which makes two more requests to the site. It lists the same way, and both rows are emerging, so missing is a note: a site with no public API has nothing to catalogue.
- API catalog:
/.well-known/api-cataloganswers with a linkset, JSON that lists each API by its address with a link to its description. - Link headers: the page's own response carries a
Linkheader that points to an API catalog, a service description, service documentation or a description, so an agent need not guess paths.
Discovery for agents#
Level 3 is read only when you press Check Level 3, which makes five more requests to the site, each for a file under /.well-known/, four at a time. A missing file is a note here too: a site with no sign-in for apps or agents has nothing to publish.
- OAuth discovery:
oauth-authorization-server, or an OpenIDopenid-configurationwhere that is all the site publishes. It must name an issuer that is the site's own address, and an authorization or token endpoint, or a client that follows the specification rejects it. - OAuth protected resource:
oauth-protected-resourcenames a resource and the authorization servers that guard it. It matters where there are APIs behind sign-in. - A2A agent card:
agent-card.jsondescribes an agent that others can call, with its name and skills. The Agent2Agent protocol is new, so this row is marked emerging. - Web Bot Auth keys:
http-message-signatures-directory, the public keys a site's own bots sign their requests with, as a key set (an IETF draft, so marked emerging). Only a site that runs bots has one. - WebMCP tools: tools a page registers for an agent in the browser. They are handed to the browser, which shows them only to agents, so no other script can list them: the row says whether this browser offers WebMCP and is not counted.
Commerce#
Commerce is optional, read only when you press Check, and never counted against a site, since only shops need it. It makes one request.
- UCP profile:
/.well-known/ucp, the Universal Commerce Protocol profile, with theversion,servicesandpayment_handlersits specification requires. - Agent payments (x402, ACP, AP2, MPP) cannot be read from a page: x402 answers 402 Payment Required only on a paid resource, and the others are agreed between a shop and its payment provider. The row says so and is not counted.
Crawlers#
The page's robots.txt is checked, for this page's path, against the crawlers of the main AI and search products. Each shows as allowed, blocked or unknown, with its purpose: Search (finds pages to show in answers), Assistant (opens a page when a person asks) or Training (collects pages to train models). Hover a row for the rule that decided it.
- A blocked search crawler is a failure: the page can be left out of those answers. The fix is the lines to add to
robots.txt. - A blocked assistant crawler is a warning: it cannot open the page for the person who asked.
- A blocked training crawler is only a note. Blocking it is a choice about training use and does not stop the same company's search crawler: they are separate rules.
robots.txt allows everything. If the file cannot be read, access shows as unknown.Rendered against served#
Nitpique fetches the page's HTML as the server sends it, without running any script, and compares it with the live page. Content that exists only after JavaScript runs is invisible to a crawler that does not run scripts.
- The main content depends on JavaScript when most of the page's text is missing from the served HTML (a failure), or a share of it (a warning).
- The h1, the title, the description, the canonical link, most of the links and the structured data are each checked for being added by script.
Structured data#
JSON-LD on the page is parsed, and each item is checked for the properties that usually describe its type (an Article's headline, author, date and image, a Product's name, image and offers, and so on). A block that does not parse is a failure. An Article whose headline is not found in the page's title or top headings is flagged, because markup should describe what visitors can see. Microdata and RDFa are counted, not checked.
Content signals#
A few plain structure checks: one h1, headings that do not skip a level, and a main landmark. On a page that reads as an article, whether an author and a publication date are given, in the page or in its markup. These are signals, not rules: a missing one is marked to improve, never as an error.
What it sends#
The audit makes four requests, all to the page's own site and from your browser, with no cookies on three of them: its robots.txt, the page itself as the server sends it, the page again asking for Markdown, and its sitemap. Pressing Check Level 2 adds two more: the API catalog, and the page for its headers. Check Level 3 adds five, one for each discovery file, and Commerce one, for the UCP profile. Nothing is sent to Nitpique or anywhere else, and the results stay in the panel. The page is read again each time you open the view or press Refresh.
Questions
Does AEO predict whether ChatGPT will cite my page?
No. It shows what a crawler or answer engine can observe, with the evidence. It gives no score and does not predict citations.
Do I need special markup for AEO?
No. Google says none is needed for its AI features. The checks only help your markup say what the page really is.
What requests does the audit make?
Four, all to the page's own site and from your browser: robots.txt, the page as served, the page asking for Markdown, and the sitemap. Level 2 adds two and Level 3 adds four.
Does blocking a training crawler block that company's search?
No. They are separate rules, so blocking a training crawler does not stop the same company's search crawler.