<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nitish Kumar Yadav</title>
    <description>The latest articles on DEV Community by Nitish Kumar Yadav (@nitishyadav).</description>
    <link>https://dev.to/nitishyadav</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3994901%2Fb6b311a9-0f34-438b-877f-f6a343b9b8de.jpeg</url>
      <title>DEV Community: Nitish Kumar Yadav</title>
      <link>https://dev.to/nitishyadav</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nitishyadav"/>
    <language>en</language>
    <item>
      <title>Answer Engine Optimization for Developers: What I Check First</title>
      <dc:creator>Nitish Kumar Yadav</dc:creator>
      <pubDate>Fri, 14 Aug 2026 19:06:04 +0000</pubDate>
      <link>https://dev.to/nitishyadav/answer-engine-optimization-for-developers-what-i-check-first-1928</link>
      <guid>https://dev.to/nitishyadav/answer-engine-optimization-for-developers-what-i-check-first-1928</guid>
      <description>&lt;p&gt;Most AEO advice starts with content. When I review a site, I start lower in the stack.&lt;/p&gt;

&lt;p&gt;What does the crawler receive? Is the useful information in the HTML? Can a machine tell which company and product the page is about? Only after those checks do I look at how the answer is written.&lt;/p&gt;

&lt;p&gt;I work on &lt;a href="https://fixaeo.com/" rel="noopener noreferrer"&gt;FixAEO&lt;/a&gt;, so I spend a lot of time thinking about why one brand appears in an AI answer while another does not. There is no single switch that controls this. In practice, the problems are usually spread across access, page structure, entity data, content, and measurement.&lt;/p&gt;

&lt;p&gt;This is the order I use when checking them.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The short version:&lt;/strong&gt; Make the right pages easy to fetch, put the important information in reliable HTML, describe your entities accurately, answer specific questions, and track mentions separately from citations. Add &lt;code&gt;llms.txt&lt;/code&gt; if it helps agents navigate your site, but do not treat it as a shortcut.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Last reviewed: August 15, 2026.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  First, define what AEO means here
&lt;/h2&gt;

&lt;p&gt;Answer Engine Optimization (AEO) is the work of making a brand or website easier for answer systems to find, understand, and cite.&lt;/p&gt;

&lt;p&gt;It overlaps heavily with technical SEO. The difference is the final output. A search engine usually returns a ranked list of pages. An answer engine may read several pages, write its own response, and show only a few sources.&lt;/p&gt;

&lt;p&gt;For a developer, the rough path looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;request -&amp;gt; crawler or user-triggered fetch -&amp;gt; retrieval index
        -&amp;gt; candidate selection -&amp;gt; generated answer -&amp;gt; mention or citation
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You cannot force the last two stages. You can make the inputs less ambiguous.&lt;/p&gt;

&lt;p&gt;My review order is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;crawler access&lt;/li&gt;
&lt;li&gt;rendered HTML&lt;/li&gt;
&lt;li&gt;entity and product data&lt;/li&gt;
&lt;li&gt;answer-friendly content&lt;/li&gt;
&lt;li&gt;repeatable measurement&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Check the response before changing robots.txt
&lt;/h2&gt;

&lt;p&gt;People often open &lt;code&gt;robots.txt&lt;/code&gt;, see an &lt;code&gt;Allow&lt;/code&gt;, and assume the crawler can reach the page. That is only one layer.&lt;/p&gt;

&lt;p&gt;A CDN, Web Application Firewall, rate limiter, or bot-management rule can still return a challenge page or a &lt;code&gt;403&lt;/code&gt;. I check the actual response and the server logs before changing the file.&lt;/p&gt;

&lt;p&gt;I also keep search crawlers and training crawlers separate. OpenAI documents &lt;code&gt;OAI-SearchBot&lt;/code&gt; for ChatGPT search and lists &lt;code&gt;GPTBot&lt;/code&gt; separately for potential model training. Perplexity documents &lt;code&gt;PerplexityBot&lt;/code&gt; for its search index and &lt;code&gt;Perplexity-User&lt;/code&gt; for user-requested fetches. Anthropic also publishes separate crawler guidance.&lt;/p&gt;

&lt;p&gt;That lets a site owner make a more precise choice than blocking every AI-related user agent.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User-agent: OAI-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: GPTBot
Disallow: /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a policy example, not a recommended default. The right rules depend on how you want your content used. User-agent names and provider policies can also change, so check the current documentation before deploying anything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.openai.com/en/articles/12627856-publishers-and-developers-faq" rel="noopener noreferrer"&gt;OpenAI publisher and developer guidance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://support.anthropic.com/en/articles/8896518-does-anthropic-crawl-data-from-the-web-and-how-can-site-owners-block-the-crawler" rel="noopener noreferrer"&gt;Anthropic crawler guidance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.perplexity.ai/docs/resources/perplexity-crawlers" rel="noopener noreferrer"&gt;Perplexity crawler guidance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One practical test is to request the page with the intended user agent and inspect the status, headers, and body. This does not prove that the provider will index the page, but it will expose obvious blocking and challenge-page problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Look at the HTML a crawler actually gets
&lt;/h2&gt;

&lt;p&gt;The next question is simple: if JavaScript does not run, is the useful information still there?&lt;/p&gt;

&lt;p&gt;Server-side rendering is not mandatory for every site. It does remove a common source of failure, especially when product details, pricing, documentation, or comparison data load through several client-side requests.&lt;/p&gt;

&lt;p&gt;I look for these problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the product description appears only after hydration&lt;/li&gt;
&lt;li&gt;pricing is inserted after a click&lt;/li&gt;
&lt;li&gt;documentation requires a logged-in session&lt;/li&gt;
&lt;li&gt;the visible headings are styled &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; elements&lt;/li&gt;
&lt;li&gt;the canonical URL points to another page&lt;/li&gt;
&lt;li&gt;a &lt;code&gt;noindex&lt;/code&gt; directive is present by mistake&lt;/li&gt;
&lt;li&gt;the server returns different content to a non-browser client&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fetch the page without running JavaScript and read the response. At minimum, I want to see the title, main explanation, headings, canonical URL, update date, and the links that establish context.&lt;/p&gt;

&lt;p&gt;If those pieces are missing, I would fix that before rewriting paragraphs for AI search.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Add JSON-LD that matches the visible page
&lt;/h2&gt;

&lt;p&gt;Structured data is useful because it gives machines explicit entity information. It is not a citation guarantee.&lt;/p&gt;

&lt;p&gt;For a SaaS homepage, I normally begin with &lt;code&gt;Organization&lt;/code&gt; and &lt;code&gt;SoftwareApplication&lt;/code&gt;. A small graph is enough if it is accurate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@graph&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Organization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://example.com/#organization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Example&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://example.com/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;logo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://example.com/logo.png&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sameAs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.linkedin.com/company/example&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://github.com/example&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SoftwareApplication&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Example App&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://example.com/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;applicationCategory&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;BusinessApplication&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;operatingSystem&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Web&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;publisher&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://example.com/#organization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;offers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Offer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;price&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;priceCurrency&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;USD&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is consistency. The name, URL, logo, price, and social profiles should agree with what a person sees on the page. Do not add ratings, reviews, prices, or affiliations that are not visible and true.&lt;/p&gt;

&lt;p&gt;I validate the result with the &lt;a href="https://validator.schema.org/" rel="noopener noreferrer"&gt;Schema.org validator&lt;/a&gt; and &lt;a href="https://search.google.com/test/rich-results" rel="noopener noreferrer"&gt;Google's Rich Results Test&lt;/a&gt;. Google also documents the supported properties for &lt;a href="https://developers.google.com/search/docs/appearance/structured-data/organization" rel="noopener noreferrer"&gt;&lt;code&gt;Organization&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://developers.google.com/search/docs/appearance/structured-data/software-app" rel="noopener noreferrer"&gt;&lt;code&gt;SoftwareApplication&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Treat llms.txt as a map, not a ranking file
&lt;/h2&gt;

&lt;p&gt;I would not make &lt;code&gt;llms.txt&lt;/code&gt; the first AEO task on a backlog.&lt;/p&gt;

&lt;p&gt;The file is an emerging proposal for giving agents a short Markdown map of useful resources. It can be handy for a documentation-heavy product, but it is not an IETF standard and does not guarantee that commercial answer engines will use it.&lt;/p&gt;

&lt;p&gt;A basic version might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Example&lt;/span&gt;
&lt;span class="gt"&gt;
&amp;gt; Example monitors distributed jobs and alerts teams when a run fails.&lt;/span&gt;

&lt;span class="gu"&gt;## Documentation&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Quick start&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://example.com/docs/quick-start.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;: Run the first job.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;API reference&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://example.com/docs/api.md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;: Endpoints and authentication.

&lt;span class="gu"&gt;## Product&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Pricing&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://example.com/pricing&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;: Current plans and limits.
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Security&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://example.com/security&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;: Data handling and compliance.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep it short and point it at pages you maintain. It does not replace &lt;code&gt;robots.txt&lt;/code&gt;, &lt;code&gt;sitemap.xml&lt;/code&gt;, canonical tags, semantic HTML, or normal internal links. The proposal is documented at &lt;a href="https://llmstxt.org/" rel="noopener noreferrer"&gt;llmstxt.org&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Write sections that can stand on their own
&lt;/h2&gt;

&lt;p&gt;AI retrieval systems often work with passages. That changes how I edit a page.&lt;/p&gt;

&lt;p&gt;I ask whether a useful section still makes sense when it is lifted out of the surrounding article. If the answer depends on three earlier paragraphs, the passage is harder to reuse accurately.&lt;/p&gt;

&lt;p&gt;The formats that work well are not exotic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a direct definition below a question heading&lt;/li&gt;
&lt;li&gt;a comparison table with named criteria&lt;/li&gt;
&lt;li&gt;numbered steps with a clear outcome&lt;/li&gt;
&lt;li&gt;examples that show an input and an output&lt;/li&gt;
&lt;li&gt;a claim followed by its source&lt;/li&gt;
&lt;li&gt;version numbers, prerequisites, and known failure cases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Specific wording helps. “A modern platform for intelligent growth” tells a reader almost nothing. “A tool that checks brand mentions in five answer engines and exports the cited URLs” describes an entity and a job.&lt;/p&gt;

&lt;p&gt;This is also why I avoid filling a page with synonyms for the same idea. One clear term, used consistently, is easier for both people and machines to follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Measure mentions and citations separately
&lt;/h2&gt;

&lt;p&gt;A single “AI visibility” score can hide what actually changed.&lt;/p&gt;

&lt;p&gt;I keep at least four signals separate:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;What it tells you&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mention rate&lt;/td&gt;
&lt;td&gt;How often the answer names the brand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Citation rate&lt;/td&gt;
&lt;td&gt;How often the answer links to the brand's pages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sentiment&lt;/td&gt;
&lt;td&gt;Whether the answer recommends, describes, or criticizes the brand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Share of voice&lt;/td&gt;
&lt;td&gt;How often the brand appears compared with competitors&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Use a fixed prompt set, run it on a schedule, and keep the raw answers. AI output varies, so one good response is not a trend.&lt;/p&gt;

&lt;p&gt;For example, 20 prompts across 5 engines, checked weekly for 4 weeks, produce 400 observations. That is enough to see direction while still acknowledging that the output is non-deterministic.&lt;/p&gt;

&lt;p&gt;Referral traffic belongs in the same review, but it answers a different question. A citation can influence brand consideration even when nobody clicks it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The checklist I use
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Important pages return &lt;code&gt;200&lt;/code&gt; without authentication&lt;/li&gt;
&lt;li&gt;[ ] Canonical URLs point to the intended originals&lt;/li&gt;
&lt;li&gt;[ ] Search-oriented AI crawlers are not blocked by mistake&lt;/li&gt;
&lt;li&gt;[ ] CDN and firewall rules agree with &lt;code&gt;robots.txt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Primary information is present in reliable HTML&lt;/li&gt;
&lt;li&gt;[ ] Each page has one descriptive H1 and a logical heading order&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;Organization&lt;/code&gt; data matches the visible company details&lt;/li&gt;
&lt;li&gt;[ ] Product pages use accurate &lt;code&gt;SoftwareApplication&lt;/code&gt; or &lt;code&gt;Product&lt;/code&gt; data&lt;/li&gt;
&lt;li&gt;[ ] JSON-LD validates without critical errors&lt;/li&gt;
&lt;li&gt;[ ] Sitemap dates represent real updates&lt;/li&gt;
&lt;li&gt;[ ] Optional &lt;code&gt;llms.txt&lt;/code&gt; links to maintained pages&lt;/li&gt;
&lt;li&gt;[ ] Important claims have named evidence&lt;/li&gt;
&lt;li&gt;[ ] Mentions and citations are reported separately&lt;/li&gt;
&lt;li&gt;[ ] Raw answers are saved for comparison&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Three questions I hear often
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is AEO different from SEO?
&lt;/h3&gt;

&lt;p&gt;Yes, but the two share the same foundation. SEO helps a page get crawled, indexed, and ranked. AEO adds work that helps answer systems extract a useful passage, connect it to the correct entity, and cite it. Skipping technical SEO usually creates AEO problems too.&lt;/p&gt;

&lt;h3&gt;
  
  
  Will llms.txt improve visibility on its own?
&lt;/h3&gt;

&lt;p&gt;No. Use it as a navigation aid if it suits your site. Fix access, HTML, canonical tags, structured data, and internal links first.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does schema guarantee a citation?
&lt;/h3&gt;

&lt;p&gt;No. Accurate JSON-LD can remove ambiguity, but the answer engine still decides what to retrieve and cite. Good schema supports accessible pages and well-sourced content; it does not replace them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I would start
&lt;/h2&gt;

&lt;p&gt;If a site is missing from AI answers, I would not begin with a large content rewrite. I would fetch the important pages, check the response codes and HTML, compare the visible information with the JSON-LD, and verify the crawler policy.&lt;/p&gt;

&lt;p&gt;Once that foundation is clean, improve the passages and start measuring a fixed prompt set. That order makes the investigation easier because each change has a clear reason.&lt;/p&gt;

&lt;p&gt;If you want a starting point, FixAEO has a free &lt;a href="https://fixaeo.com/aeo-audit-tool/" rel="noopener noreferrer"&gt;AEO audit&lt;/a&gt;. I also wrote a longer overview of the topic here: &lt;a href="https://fixaeo.com/blogs/what-is-aeo/" rel="noopener noreferrer"&gt;What is AEO?&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>seo</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How AI engines actually decide what to cite (ChatGPT, Perplexity, Gemini, AI Overviews)</title>
      <dc:creator>Nitish Kumar Yadav</dc:creator>
      <pubDate>Sun, 21 Jun 2026 05:19:39 +0000</pubDate>
      <link>https://dev.to/nitishyadav/how-ai-engines-actually-decide-what-to-cite-chatgpt-perplexity-gemini-ai-overviews-6bh</link>
      <guid>https://dev.to/nitishyadav/how-ai-engines-actually-decide-what-to-cite-chatgpt-perplexity-gemini-ai-overviews-6bh</guid>
      <description>&lt;p&gt;Everyone keeps asking "is SEO dead." Wrong question.&lt;/p&gt;

&lt;p&gt;AI search doesn't show ten blue links. It generates one answer and names a few brands. If you're not in that answer, you don't exist for that query. So the real question is: how do these engines decide who to name?&lt;/p&gt;

&lt;p&gt;I went down a rabbit hole on how four of them actually retrieve and cite sources. Here's what's true in 2026, with real numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  ChatGPT: being known beats ranking
&lt;/h2&gt;

&lt;p&gt;ChatGPT answers in two modes. Default mode answers from trained-in memory, no live web. Search mode browses and attaches citations. The key fact: when it browses, it cites only about &lt;strong&gt;15% of the pages it pulls&lt;/strong&gt; (AirOps study of 548k pages). And it names brands roughly 3x more often than it links them.&lt;/p&gt;

&lt;p&gt;So two things get you in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Entity strength.&lt;/strong&gt; If you're a consistent entity across Wikipedia, Wikidata, Reddit and press, ChatGPT names you from memory without browsing at all. Being a known entity beats ranking #1 anywhere.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allow OAI-SearchBot&lt;/strong&gt; in robots.txt. It's separate from GPTBot (training). Block it and you vanish from ChatGPT Search. A lot of sites do this by accident.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Perplexity: it's mostly Reddit
&lt;/h2&gt;

&lt;p&gt;Perplexity does live retrieval and grounds every answer in sources. Its defining trait: it leans on community content hard. One 2025 study found &lt;strong&gt;Reddit was its most-cited source, ~47% of top citations&lt;/strong&gt;. It also rewards answer-first pages, because its reranker scores for how cleanly it can extract a passage. A page can rank #1 on Google and never get cited here if the answer is buried.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini: it's basically Google + the Knowledge Graph
&lt;/h2&gt;

&lt;p&gt;Gemini is the only major assistant running on Google's own live index plus the Knowledge Graph. So classical SEO is the floor, not optional. The twist: ranking #1 isn't enough anymore. Only about &lt;strong&gt;38% of Google's AI Overview citations come from the top 10 results, down from ~76% a year earlier.&lt;/strong&gt; It pulls from deeper now, via sub-queries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google AI Overviews: authority over freshness
&lt;/h2&gt;

&lt;p&gt;AI Overviews uses "query fan-out" - it splits your question into 8-12 sub-queries and pools the results. Most citations come from &lt;strong&gt;below position #1&lt;/strong&gt; (roughly 63% from below the top 10). And counterintuitively, it has the &lt;strong&gt;weakest freshness bias&lt;/strong&gt; of the major engines. Established, authoritative pages keep getting cited even without recent updates, which is the opposite of ChatGPT and Perplexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means if you're building something
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Lead every page with the answer in the first few lines. Most AI citations come from the top of the page.&lt;/li&gt;
&lt;li&gt;Be a real entity (Wikipedia, Wikidata, Crunchbase, consistent name everywhere).&lt;/li&gt;
&lt;li&gt;Let the AI crawlers in. Check robots.txt for OAI-SearchBot, PerplexityBot, Google-Extended.&lt;/li&gt;
&lt;li&gt;Show up off your own site - Reddit and YouTube get cited constantly.&lt;/li&gt;
&lt;li&gt;Track over time, not off one screenshot. These answers are non-deterministic; the same prompt gives different brands run to run.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I got tired of checking this by hand, so I built &lt;a href="https://fixaeo.com/" rel="noopener noreferrer"&gt;FixAEO&lt;/a&gt; - a free tool to see how AI engines describe and recommend your brand across 8 engines, plus a free &lt;a href="https://fixaeo.com/llms-txt-validator/" rel="noopener noreferrer"&gt;llms.txt validator&lt;/a&gt;. Sharing in case it saves you the manual prompting.&lt;/p&gt;

&lt;p&gt;What have you noticed about getting cited by AI? Curious if others are seeing the same patterns.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>marketing</category>
      <category>seo</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
