10 Common AEO Mistakes to Avoid
Errors that prevent AI agents from citing your content
Answer Engine Optimization is the practice of making your content easy for AI assistants and agents to fetch, parse, understand and cite. It overlaps with traditional SEO, but the failure modes are different. A page can rank respectably in classic search and still be invisible to an assistant answering a question, because the assistant never rendered your JavaScript, timed out on your origin, or could not find a quotable answer in the first screen of text.
Below are ten mistakes that reliably keep content out of AI answers, why each one hurts, and what to do instead. Most are unglamorous engineering and editorial fixes rather than clever tricks.
1. Blocking AI crawlers without meaning to
The single most common cause of missing citations is a robots.txt rule that nobody remembers writing. Security plugins, CDN defaults, staging configs promoted to production and copy-pasted "block the bots" snippets all produce disallow rules for user agents such as GPTBot, ClaudeBot, PerplexityBot, Google-Extended and Applebot-Extended. Some of these agents fetch pages for training; others fetch pages live to answer a user's question right now. Blocking the second category removes you from answers immediately.
How to fix it: read your live robots.txt, not the one in your repository, and decide each agent deliberately. A permissive baseline looks like this:
User-agent: * Allow: / Sitemap: https://example.com/sitemap.xml
Then check the layers above robots.txt too. WAF rules, bot-management settings, rate limits, geo blocks and "verified bots only" toggles can return 403 or a challenge page to AI crawlers even when robots.txt is wide open. Confirm by requesting your own pages with the crawler's user agent and inspecting the status code and body, not just the headline response.
2. Content that only exists after client-side JavaScript runs
Many AI fetchers retrieve raw HTML and do not execute JavaScript, or execute it only partially and under a tight time budget. If your article text, product specifications or FAQ answers are injected by a framework at runtime, a fetcher may receive an empty shell with a loading spinner and nothing quotable.
How to fix it: serve the substantive content in the initial HTML response. Server-side rendering, static generation or prerendering all work. Tabs, accordions and "read more" toggles are fine as long as the hidden text is present in the markup and merely styled away. The quick test is to fetch the URL without a browser and search the response body for a sentence from the middle of your article. If it is not there, no amount of on-page optimization matters.
3. Slow origin responses that cut crawl depth
Crawlers operate under time and budget limits. A slow origin does two things at once: it increases the chance an individual live fetch is abandoned before your answer arrives, and it reduces how many of your URLs get crawled in a given window. Sites with tens of thousands of pages feel this most, because slow responses push the crawler into fetching only the shallowest, most-linked pages.
How to fix it: cache aggressively at the edge, keep HTML time-to-first-byte low, and make sure the crawler path is as fast as the human path. Watch for the common trap where logged-out or bot traffic bypasses your cache and lands on the origin. Also verify you are not rate-limiting agents into 429 responses; a 429 teaches a crawler to back off for a long time.
4. Burying the answer under preamble
Long introductions exist for engagement metrics and ad impressions. They work against extraction. When a model is assembling an answer from a fetched page, the passage that directly and completely answers the question is what gets quoted. If your page spends six paragraphs on context before stating the answer, a competitor's page that answers in the first two sentences gets cited instead.
How to fix it: lead with a direct, self-contained answer of two to four sentences immediately under the heading that poses the question, then expand. Self-contained matters: a passage that says "as mentioned above, it depends on the second factor" is unusable out of context. Repeat the subject noun instead of relying on pronouns, and include the units, dates and qualifiers inside the passage itself.
5. Missing or invalid structured data
Structured data does not force a citation, but it removes ambiguity. Schema.org markup tells a parser unambiguously which text is the question and which is the answer, who the author is, when the page was updated, what the price and availability are, and what type of entity the page describes. Without it, a parser has to infer all of that from layout, and inference fails on unusual templates.
How to fix it: add JSON-LD for the types that genuinely match the page, typically Article, FAQPage, HowTo, Product, Organization and BreadcrumbList. Then validate. Invalid or half-populated markup is worse than none, because it can be discarded wholesale. Two failure patterns are especially common: markup that describes content not visible on the page, and markup templated across thousands of pages with a field that silently renders empty.
6. No clear author or entity attribution
Assistants tend to prefer sources they can attribute. A page with no named author, no organization identity, no publication date and no way to establish who is speaking is a weaker citation candidate than an otherwise identical page that carries all four, because the assistant cannot tell the user where the claim came from.
How to fix it: give every substantive page a named author with a real biography page, a visible publication date and a visible last-updated date that reflects genuine revisions. Describe the publishing organization consistently across your site, your Organization schema and your external profiles, using the same legal name, the same URL and the same descriptors. Consistency is what lets a model resolve your brand to a single entity rather than several fuzzy ones.
7. Walls of unstructured prose
A two-thousand-word page with a single heading and no lists is hard to segment. Retrieval systems chunk documents before embedding or ranking them, and headings, lists and tables are the strongest signals for where one idea ends and the next begins. Poor chunking produces passages that mix two topics, and mixed passages match poorly against specific questions.
How to fix it: use a real heading hierarchy where each h2 covers one question or claim and each h3 covers a sub-point. Keep paragraphs tight. Convert enumerations into ordered or unordered lists, and convert comparisons into tables with proper header cells. Make headings descriptive rather than clever, because the heading text frequently determines whether a section is retrieved at all.
8. Duplicate and thin programmatic pages
Generating a page for every city, every job title or every product permutation is legitimate when each page carries distinct information. It becomes a liability when the pages differ only in a substituted noun. Near-identical pages compete with each other, dilute crawl budget across low-value URLs, and give a retrieval system dozens of interchangeable candidates, none of which is clearly the best answer.
How to fix it: set a minimum bar of unique, verifiable information per generated page and do not publish pages that fail it. Consolidate thin variants into a stronger parent page with canonical tags pointing to it. Prune templated pages that attract no traffic and no citations. Fewer, denser pages consistently outperform larger sets of interchangeable ones.
9. No llms.txt or stated content policy
The llms.txt convention is a plain-text file at your domain root that points agents to your most useful, canonical documents in a compact form, alongside a short description of what your site is. It is a young convention rather than a universal standard, but it is cheap to publish, it costs nothing if ignored, and it gives an agent an authoritative map instead of forcing it to guess from your navigation.
How to fix it: publish an llms.txt that names your organization in one line, then links your core reference pages, documentation and canonical explainers with a short gloss for each. Keep it current, because a file full of dead links is a negative signal. Pair it with a clear, public statement of which agents may use your content and how you want to be attributed. Our llms.txt generator will produce a starting file from your existing site structure.
10. Measuring only Google rankings
The last mistake is the one that hides the other nine. If your reporting consists of keyword positions and organic sessions, you have no visibility into whether assistants are fetching your pages, which pages they fetch, whether those fetches succeed, or whether the answers they produce mention you. Referral traffic from AI surfaces is also systematically undercounted, because many answers are consumed without a click and some referrers arrive unattributed or as direct traffic.
How to fix it: instrument two things. First, crawl activity: parse your server and edge logs for known AI user agents and track request volume, status codes, response times and which URL patterns they reach. A spike in 403s or 429s from a specific agent is an outage you would otherwise never see. Second, answer presence: track how often your brand and your URLs appear in assistant answers for the questions that matter to your business, and how that changes when you ship content. Our AI citation tracking and agent experience platform cover both sides.
Where to start
Work in order of blast radius. Access problems come first, because nothing else matters if agents cannot fetch your pages: check robots.txt, check your bot-management rules, check status codes for AI user agents, and confirm your content is present in server-rendered HTML. Then fix performance, so crawls go deep rather than stopping at your home page.
Only after that does content work pay off, and it pays off in this order: put direct answers at the top of each section, impose a real heading structure, add and validate structured data, and attach clear authorship. Finally, prune the thin pages, publish an llms.txt, and put measurement in place so you can tell which changes actually moved citations.
None of this requires guessing at how a particular model ranks sources. It requires making your content reachable, parseable, quotable and attributable, which is the part you control. If you would like a concrete list of which of these ten apply to your domain, run a free AEO audit or book a demo.
Want Personalized Recommendations?
Get a custom AEO audit for your specific domain.