<?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: Sandeep Goel</title>
    <description>The latest articles on DEV Community by Sandeep Goel (@sandeep_goel_seo).</description>
    <link>https://dev.to/sandeep_goel_seo</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%2F4188384%2F223cbc33-3d64-45bb-bc70-c2a7d0b685aa.png</url>
      <title>DEV Community: Sandeep Goel</title>
      <link>https://dev.to/sandeep_goel_seo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sandeep_goel_seo"/>
    <language>en</language>
    <item>
      <title>How LLM Search Changes the SEO</title>
      <dc:creator>Sandeep Goel</dc:creator>
      <pubDate>Fri, 16 Oct 2026 09:08:36 +0000</pubDate>
      <link>https://dev.to/sandeep_goel_seo/how-llm-search-changes-the-seo-48bb</link>
      <guid>https://dev.to/sandeep_goel_seo/how-llm-search-changes-the-seo-48bb</guid>
      <description>&lt;p&gt;Most SEO workflows were built around one question: where does this page rank for this keyword? LLM search adds a second question. When someone asks a chatbot or an AI answer box about your topic, can the system find your page, read it, and pull a clean piece of it into an answer?&lt;br&gt;
I have been working through that second question with clients since AI answers started showing up in their reports. This post is the workflow I use now, written for developers and SEOs who share the same site. If you want the short comparison first, I wrote about what actually changes between &lt;a href="https://sandeepgoel.me/geo-vs-traditional-seo/" rel="noopener noreferrer"&gt;traditional SEO and GEO &lt;/a&gt;on my own site. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here I will Stay on the Technical Side.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6x47opssstltr8iepi3s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6x47opssstltr8iepi3s.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How LLM Search Works, in Plain Terms&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most AI search products follow a similar pattern. A person asks a question. The system rewrites it into one or more search queries, retrieves pages or passages, ranks them, and a language model writes an answer from that material. Some products show citations and some don't. The details differ by product, and nobody outside those companies has the full picture, so I treat this as a working model and not a spec.&lt;/p&gt;

&lt;p&gt;Two things follow from it. First, your page has to be reachable by whatever does the retrieval. Second, the passage that gets pulled has to make sense on its own, because the model often sees a slice of your page and not the whole thing.&lt;/p&gt;

&lt;p&gt;Everything else in this post hangs on those two points. I keep the steps in one place, which I call my &lt;a href="https://sandeepgoel.me/top-ai-seo-experts-in-india/" rel="noopener noreferrer"&gt;AI search visibility framework&lt;/a&gt;, so every project goes through the same checks in the same order.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Six Steps are:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Crawl access:&lt;/strong&gt; can the right bots fetch the page and see the content?&lt;br&gt;
&lt;strong&gt;Entity clarity:&lt;/strong&gt; is it obvious who or what the page is about?&lt;br&gt;
&lt;strong&gt;Structured data:&lt;/strong&gt; does the markup match what a reader sees?&lt;br&gt;
&lt;strong&gt;Passage design:&lt;/strong&gt;  does each section work when it is read alone?&lt;br&gt;
&lt;strong&gt;Retrieval testing:&lt;/strong&gt; what do real prompts return?&lt;br&gt;
&lt;strong&gt;Log monitoring:&lt;/strong&gt; which bots visit, and what do they get back?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Check Crawlability for AI Bots&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where I start, because nothing else matters if the bot gets a 403.&lt;br&gt;
Different companies run different crawlers for different jobs. Here is the short version, and you should check each vendor's current documentation because names and behavior change.&lt;/p&gt;

&lt;p&gt;Googlebot crawls for Google Search. Google says AI Overviews and AI Mode use the same index, and that &lt;a href="https://developers.google.com/search/docs/appearance/ai-features" rel="noopener noreferrer"&gt;no special requirements apply to appear in AI features&lt;/a&gt; beyond normal SEO fundamentals. Blocking Googlebot removes you from Search entirely.&lt;br&gt;
Google-Extended is a robots.txt token, not a separate crawler. It controls whether your content is used for Gemini model training and grounding. It does not affect Search ranking.&lt;br&gt;
OpenAI uses GPTBot for training data, OAI-SearchBot for ChatGPT search results, and ChatGPT-User when a person asks ChatGPT to open a page.&lt;br&gt;
Anthropic uses ClaudeBot, Claude-SearchBot and Claude-User in a similar split.&lt;br&gt;
Perplexity uses PerplexityBot and Perplexity-User.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2yzp20yxybos2yg8r03a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2yzp20yxybos2yg8r03a.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The training bots and the search bots are separate decisions. Plenty of publishers allow the search bots and block the training bots. That is a business call, and a robots.txt like this expresses it:&lt;br&gt;
User-agent: OAI-SearchBot&lt;br&gt;
Allow: /&lt;/p&gt;

&lt;p&gt;User-agent: Claude-SearchBot&lt;br&gt;
Allow: /&lt;/p&gt;

&lt;p&gt;User-agent: PerplexityBot&lt;br&gt;
Allow: /&lt;/p&gt;

&lt;p&gt;User-agent: GPTBot&lt;br&gt;
Disallow: /&lt;/p&gt;

&lt;p&gt;In two recent Semrush audits I ran at &lt;a href="https://obeliskinfotech.com/" rel="noopener noreferrer"&gt;Obelisk Infotech&lt;/a&gt;, the agency I founded, neither site blocked any AI bot. The problems were ordinary ones: broken images, pages with very little text, and missing meta descriptions. Still, I have seen sites where a security plugin or a CDN bot rule quietly challenges unknown crawlers, so I test instead of assuming.&lt;/p&gt;

&lt;p&gt;A quick first pass with curl shows what a bot might receive:&lt;br&gt;
curl -s -o /dev/null -w "%{http_code}\n" -A "OAI-SearchBot" &lt;a href="https://example.com/your-page/" rel="noopener noreferrer"&gt;https://example.com/your-page/&lt;/a&gt;&lt;br&gt;
curl -s -A "OAI-SearchBot" &lt;a href="https://example.com/your-page/" rel="noopener noreferrer"&gt;https://example.com/your-page/&lt;/a&gt; | grep -i "a phrase from your main content"&lt;/p&gt;

&lt;p&gt;The first command checks the status code. The second checks that your main content is in the raw HTML. Many crawlers do not run JavaScript, so a page that builds its text in the browser can look empty to them. A spoofed user agent is only a rough test, because firewalls often judge bots by IP range too. The real answer is in your server logs, which I come back to in step 6. You can do every check in this post yourself with curl, your logs and Search Console.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Make Entities Obvious&lt;/strong&gt;&lt;br&gt;
An entity is a thing a system can identify: a person, a company, a product, a place. When an LLM answers a question about "the best tool for X" or "who is this consultant", it is working with entities and the claims attached to them. If your site describes the same business three different ways, you make that job harder. For a quick example, I keep &lt;a href="https://sandeepgoelseo.wordpress.com/2026/10/08/about-sandeep-goel-ai-seo-aeo-and-geo-consultant/" rel="noopener noreferrer"&gt;a short profile page on WordPress &lt;/a&gt;that uses the same wording as my site.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I do in Practice:&lt;/strong&gt;&lt;br&gt;
Use one canonical name for the person, brand and product, and use it everywhere.&lt;br&gt;
Write an About page that says plainly who you are, what you do, where you work and who you serve. No slogans.&lt;/p&gt;

&lt;p&gt;Keep profile descriptions consistent across LinkedIn, GitHub, directories and your own site.&lt;/p&gt;

&lt;p&gt;Link to those profiles from the site, and mark them with sameAs in structured data.&lt;/p&gt;

&lt;p&gt;None of this is magic. Repeated, consistent facts are easier for a system to connect than scattered ones, and I can't prove how much weight any single source gets. I treat it as cheap hygiene.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Add Structured Data that matches the Page&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Structured data helps machines read a page without guessing. Google's &lt;a href="https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data" rel="noopener noreferrer"&gt;introduction to structured data&lt;/a&gt; explains how markup helps it understand content, and it prefers JSON-LD. For AI features specifically, Google says no special schema is needed. The rule I follow is simple: mark up what is visibly on the page, and nothing more.&lt;br&gt;
Here is a minimal Organization example:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
  "&lt;a class="mentioned-user" href="https://dev.to/context"&gt;@context&lt;/a&gt;": "&lt;a href="https://schema.org" rel="noopener noreferrer"&gt;https://schema.org&lt;/a&gt;",&lt;br&gt;
  "@type": "Organization",&lt;br&gt;
  "name": "Example Studio",&lt;br&gt;
  "url": "&lt;a href="https://example.com/" rel="noopener noreferrer"&gt;https://example.com/&lt;/a&gt;",&lt;br&gt;
  "logo": "&lt;a href="https://example.com/logo.png" rel="noopener noreferrer"&gt;https://example.com/logo.png&lt;/a&gt;",&lt;br&gt;
  "description": "A web design studio for small clinics in Pune.",&lt;br&gt;
  "sameAs": [&lt;br&gt;
    "&lt;a href="https://www.linkedin.com/company/example-studio" rel="noopener noreferrer"&gt;https://www.linkedin.com/company/example-studio&lt;/a&gt;",&lt;br&gt;
    "&lt;a href="https://github.com/example-studio" rel="noopener noreferrer"&gt;https://github.com/example-studio&lt;/a&gt;"&lt;br&gt;
  ]&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Validate it with the Rich Results Test, then compare it with the page. If the markup says "web design studio" and the page says "marketing agency", fix one of them. Two mistakes show up again and again. One is markup copied from a template that still describes another business, which is easy to do after a redesign. The other is markup for details that appear nowhere on the page, such as ratings nobody can see. Both turn a helpful signal into a mismatch. Local businesses have a few extra properties, like address and opening hours, which I covered in &lt;a href="https://sandeepgoel.me/schema-markup-for-local-businesses/" rel="noopener noreferrer"&gt;schema markup for local businesses&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Write Passages that work on their own&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the part that changes day-to-day writing the most. Retrieval systems tend to work with chunks of a page. If a chunk starts with "This also fixes the earlier problem," the system has no idea what "this" is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My rules of thumb, which are habits and not laws:&lt;/strong&gt;&lt;br&gt;
One question per section. Make the heading close to the question a person would type.&lt;/p&gt;

&lt;p&gt;Put the answer in the first one or two sentences, then add detail.&lt;br&gt;
Name the subject again at the start of a section instead of leaning on "it" or "this".&lt;/p&gt;

&lt;p&gt;Keep sections short, often 100 to 250 words, with plain tables for comparisons.&lt;/p&gt;

&lt;p&gt;Show the author and a last-updated date, and cite your sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Weak Opening:&lt;/strong&gt;  "It also makes pages faster, so that helps." A better one: "Enabling gzip or Brotli compression shrinks text files such as HTML, CSS and JavaScript, which makes pages load faster." The second one can be lifted out and still be true.&lt;/p&gt;

&lt;p&gt;I run a simple scoring pass on drafts using my &lt;a href="https://sandeepgoelseo.blogspot.com/2026/10/how-i-approach-ai-search-visibility-in.html" rel="noopener noreferrer"&gt;C.A.R.E. framework&lt;/a&gt;, which stands for Clarity, Authority, Relevance and Experience. If a section fails on clarity, I rewrite it before anything else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Test Retrieval with real prompts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Rank tracking tells you about a keyword. It does not tell you what an AI product says. So I keep a fixed list of 20 to 30 prompts per site: the questions customers ask, comparison questions, and a few that use the brand name directly.&lt;br&gt;
Once a month I run them in logged-out sessions and record whether the brand is mentioned, whether the page is cited, and whether the answer is correct. Answers change from one run to the next, so I run each prompt more than once and look at patterns, not single results. A shared spreadsheet is enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Watch your Logs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Logs are the closest thing to ground truth. This command counts AI bot requests by status code and path from a standard access log:&lt;br&gt;
grep -E "OAI-SearchBot|GPTBot|ChatGPT-User|PerplexityBot|ClaudeBot|Claude-SearchBot" access.log \&lt;br&gt;
  | awk '{print $9, $7}' | sort | uniq -c | sort -rn | head -20&lt;/p&gt;

&lt;p&gt;Look for three things. Which pages do the bots request? Do they get 200s, or a pile of 403s and 404s? And do they come back? Pair this with referral data in your analytics. Visits from domains such as chatgpt.com or perplexity.ai are small today for most sites, but they are real and they are countable.&lt;/p&gt;

&lt;p&gt;One optional extra is an llms.txt file in the site root. Chrome's Lighthouse documentation describes &lt;a href="https://developer.chrome.com/docs/lighthouse/agentic-browsing/llms-txt" rel="noopener noreferrer"&gt;llms.txt&lt;/a&gt; as a developing standard, a Markdown file that gives AI systems a short overview of the site and its key links, and notes that a missing file is not required yet. I add one because it takes twenty minutes, not because I have evidence that it moves anything.&lt;/p&gt;

&lt;p&gt;Notice that nothing in the left column goes away. A page that does not rank, load or index will not be retrieved either. LLM search adds work on top of the basics, and it rewards the sites that already did the basics well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where I Would Start&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you have one afternoon, check your robots.txt and CDN rules for AI search bots, confirm your main content is in the raw HTML, and read your last 30 days of bot logs. Those three checks find most of the real problems I see, and none of them needs a tool you don't already have.&lt;/p&gt;

&lt;p&gt;I'm &lt;a href="https://sandeepgoel.me/" rel="noopener noreferrer"&gt;Sandeep Goel&lt;/a&gt;, an SEO consultant who works on AI search visibility. If you try this workflow on a site, tell me what your logs showed. I'm curious which bots surprised you.&lt;/p&gt;

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