SEO, AEO and GEO
AEO: becoming the answer AI engines give
Answer Engine Optimization is the work of making your brand and pages citable by the engines that answer questions directly. This page explains exactly what NeoRank measures, how to read the figures and what to change on your site.
What is AEO?
An answer engine (ChatGPT, Gemini, Claude, Perplexity, DeepSeek…) does not return a list of links: it writes an answer. Your brand is in it — named, recommended, or cited with a link to your page — or it is not. Answer Engine Optimization (AEO) covers everything that raises the odds of being that answer: content that answers clearly, an entity (your brand) that is easy to identify, pages AI crawlers can read, and evidence that other sources repeat.
AEO does not replace SEO: many answers rest on pages the engines crawled or found through a web search. It adds to it. See SEO for the technical base and GEO for the generative side (being recommended, compared, described correctly).
How NeoRank measures AEO
NeoRank does not guess your AI visibility: it asks real prompts to the engines, records every answer and looks for your brand, your domain and your competitors in it. These runs are called observations.
The engines queried
| Engine | Publisher | Web search while answering |
|---|---|---|
| ChatGPT | OpenAI | No: the model's own answer |
| Gemini | No: the model's own answer | |
| Claude | Anthropic | No: the model's own answer |
| Perplexity | Perplexity | Yes: its answer API is search-backed |
| DeepSeek | DeepSeek | No: the model's own answer |
| Grok | xAI | Measured where it is enabled; otherwise “Activating”, not measured |
| Meta AI | Meta | No: the model's own answer; measured where it is enabled |
An engine is queried only when it is verified on the platform (API key present and model approved by the administrator). The dashboard header's “AI engines” pill (for example “AI engines 7/7”) shows how many engines are verified. Where Grok is not enabled, its tile shows “Activating”. Grok and Meta AI are observed engines: NeoRank asks them your prompts but does not use them for its own analyses.
- Automatic reading — where it is enabled, AI Overviews are observed through a licensed SERP provider (DataForSEO today, for Google AI Overviews only), then analysed by the NeoRank engine: which cited links are yours, which a competitor's. The tile shows “observed via DataForSEO · analysed by NeoRank Engine”, within request ceilings set by the platform; a query never read is not counted as a query without an AI Overview.
- Search Console — per Google's documentation, clicks and impressions from AI Overviews and AI Mode are counted in the Performance report's “Web” search type. The Search Console API has no dedicated search type or appearance: your Search Console figures in NeoRank include them, with no way to isolate them. The “Generative AI performance” report (impressions only) exists only in the Search Console interface.
- Manual reading — “Check in Google” (the tile's panel or Query sets) opens the tracked prompt in Google, in your browser. Then record whether an AI Overview shows, whether your site is cited (named or with a link), the cited URL and the date. The tile then shows the share of checked queries with an AI Overview and the share citing your site, labelled “manual reading — not automated”, dated, never mixed with the engines' observations; a reading older than 30 days is flagged stale. A client viewer cannot record a reading.
Tracked prompts and query sets
Prompts come from two sources, grouped into query sets:
- The default set, created by an analysis: five questions about the brand, in the workspace's language (what the brand is, its offer, its reliability, its alternatives, what the domain is for), plus up to ten recommendation questions (“Who do you recommend for…”) built from the keywords read by the market-data provider. That provider has been retired since 26/09/2026: in practice a new site therefore gets the brand questions only — add your category questions yourself.
- Your prompts, added from AI visibility: 3 to 1,500 characters, 25 prompts at most per site. You choose “All verified engines” or a single engine; this set queries three engines at most.
A prompt's language and country travel in its text: NeoRank sends no country parameter to the engines. To measure a market, word the prompt as a user in that market would (“Which logistics consultancy do you recommend in Lyon?”).
How an observation runs
- An observation starts with every analysis of the site (if your plan includes AI) or when you click “Run the observation” in AI visibility.
- Each active prompt is asked to each verified engine of the set, once per repetition (one for the sets the dashboard creates). The instruction asks for an answer to the exact question, without claiming web access.
- The run's maximum cost is reserved on your organisation's monthly AI quota before any call; a set whose estimate exceeds its budget is refused.
- An engine that fails three times in a row is skipped for the rest of the run, which is then “partial”. Every answer is stored (up to 100,000 characters, 180 days).
- Answers are parsed (mentions, citations, sentiment), then the KPIs are recomputed over the last three finished or partial runs.
Mentions and citations: how they are detected
Detection is deterministic — text rules, not a second model judging the answer. You can therefore always trace why an answer counts or not.
- Brand mention: the answer's text is normalised (lower case, accents and punctuation removed), then the site's name and domain are looked for as whole words (4 characters at least). An answer counts one brand mention at most. There are no aliases: if answers name you differently, that form is not recognised.
- Domain mention: your domain written in the answer, counted separately.
- Competitor mention: only for the names listed as the query set's competitors. A competitor not listed is not looked for (“mentions not looked for”); its citations, however, are counted by domain for the competitors the analysis identified.
- Recommendation: recommending wording in the answer and positive sentiment near your brand.
- Position: the order in which each entity first appears in the answer (1 = named first).
- Citation: only URLs written out in the answer are extracted. A URL on your domain (or a subdomain) is a citation of your site; a URL whose domain contains a tracked competitor's name is a competitor citation; the rest are third-party sources.
Share of voice, as it is computed
Over the site's last three finished or partial runs:
share of voice = your brand's mentions ÷ (your brand's mentions + tracked competitors' mentions)- The header's GEO score is this share of voice, shown out of 100.
- A weighted share gives more weight to an entity named early: each mention is worth 1 ÷ its position in the answer.
- The brand's rank places it among all entities by number of mentions.
Two other figures look like a share of voice but are not: an engine tile's value is the rate of that engine's answers naming your brand (answers naming you ÷ answers obtained), and a query set's share is the rate of the set's answers mentioning your brand. While too few answers have succeeded (fewer than three, or under 60 % of the expected answers), the sample is declared insufficient.
Reading the dashboard's AI views
| View | What it shows | Use it to |
|---|---|---|
| AI visibility | Share of voice, mentions, answers observed, pages and prompts cited, verified engines, “AI-ready” tiles, per-engine tiles, sentiment, evidence | Track prompts, run an observation, open an uncited prompt's resolution |
| Query sets | Each set, its prompts, its share of answers mentioning you and the engine where you are most present | Compare families of questions (brand, category, comparisons) |
| Digital PR and citations | Third-party domains cited in answers, especially those cited without your site | Choose where to earn mentions and links |
| Competitor analysis | AI citations and mentions per competitor | See who occupies your answers |
| Observations and alerts | Finished, partial or failed runs, with the site's alerts | Check that an observation actually ran |
On an uncited prompt, Resolve opens the panel: answers read, who cites or names you, the sites cited instead of you, the steps and excerpts per engine. The views are detailed in AI visibility and engines.
“Not measured” in the AI views
- Not sampled: the prompt has not been answered yet.
- Failed: the answer failed; the reason is shown, never a zero.
- Measured: a zero is then a real zero — asked, answered, and you are not in it.
- An engine that is not verified is not queried; without a plan that includes AI, no observation runs.
The general rule is detailed in Sources and “Not measured”.
Optimising for answer engines
The recommendations below are tied to what NeoRank actually measures on your site. When a practice is not measured by the product, it says so.
Direct answers and question / answer blocks
- Put the answer first in a section: one or two sentences that stand alone, then the detail. An engine reuses a self-contained passage more easily.
- Word subheadings as your customers' questions and answer right below. The NeoRank Engine records the question / answer pairs and answer candidates of every crawled page (page report in Crawled pages).
- Structure procedures as numbered lists and comparisons as tables.
- In the writing assistant, AI citability checks three signals in your draft: an explicit question, a structured answer (list or steps) and a cited source.
Valid structured data (JSON-LD)
JSON-LD states explicitly who you are and what the page contains. NeoRank reads the JSON-LD of every crawled page: AI visibility's Schema.org tile counts the pages carrying it and the invalid blocks, and the audit flags JSON-LD that does not parse (JSON_LD_INVALID). Start with the entity:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Consulting",
"url": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"sameAs": [
"https://www.linkedin.com/company/example-consulting"
]
}
</script>OrganizationorLocalBusinesson the home and About pages;Product/Serviceon offers;Articlewith author and date on content.FAQPagedescribes questions / answers visible on the page well, but Google now shows a rich result for it only for a small category of sites: use it for structure, not for an expected display.- NeoRank's check verifies that the JSON parses, not full conformance to the Schema.org vocabulary: validate with the Schema.org validator too.
A clear, consistent entity
- Use the same brand name everywhere (title, JSON-LD, legal notice, external profiles). NeoRank recognises only the site's name and domain: a brand written three ways is diluted in answers too.
- Say in one sentence what you do, for whom and where, on the home and About pages.
- Link your official profiles with
sameAs, and keep identical contact details on every page (Local SEO measures the consistency of those declared in JSON-LD).
Sources, evidence and third-party citations
- Back claims with dated figures and named sources: a sourced passage is easier to reuse.
- Open Digital PR and citations: the domains engines cite on your prompts, and above all those cited without your site, are your PR and partnership targets.
- Perplexity answers from a web search: your well-ranked pages count directly. The other engines answer from the model: your presence in the sources they learned from matters more — an effect NeoRank observes in the answers but does not measure at the source.
AI crawler access and the llms.txt file
A blocked crawler cannot read your content. Robots directives reads your site's live robots.txt for eight AI crawlers (GPTBot, ChatGPT-User, PerplexityBot, Google-Extended, ClaudeBot, Applebot-Extended, cohere-ai, Meta-ExternalAgent); AI visibility's tiles show four of them. The simulator tests a path, the generator proposes a file — nothing is published on your server.
# Let answer-engine crawlers read public content
User-agent: GPTBot
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Google-Extended
Allow: /
# Your usual exclusions still apply
User-agent: *
Disallow: /account//llms.txt is a proposed convention (llmstxt.org): a Markdown file at the root that introduces the site and its key pages to language models. NeoRank checks that it exists (200 answer as text or Markdown) and can generate a draft from Settings › Accelerated indexing (“Get llms.txt”), built from the site name, the home page's title and the best-linked pages. No engine commits to reading it: publish it as a complement, not as a guaranteed lever.
# Example Consulting
> Logistics consultancy for small businesses, based in Lyon.
## Main pages
- [Services](https://www.example.com/services): the three engagements and what they deliver
- [Method](https://www.example.com/method): how an engagement runs
- [FAQ](https://www.example.com/faq): lead times, pricing, areas servedA method: measure, fix, measure again
- Track 10 to 25 prompts that reflect real questions: brand, category (“which tool for…”), comparisons, objections.
- Note, for each prompt, the brands and sites the answers cite instead of you: they are your competitors in the answers, even while share of voice is not comparative yet.
- Run an observation, then open the Resolve panel of uncited prompts: who is cited instead of you, and with which page?
- Fix: a page that answers the question, the entity's JSON-LD, crawler access, third-party sources.
- Run an analysis again (new crawl) then an observation, and compare over the last three runs.