<?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: Brian Sam-Bodden</title>
    <description>The latest articles on DEV Community by Brian Sam-Bodden (@bsbodden).</description>
    <link>https://dev.to/bsbodden</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%2F1726578%2Ff7da5710-2042-4aa2-9b1c-a2ad9a7bf19b.jpeg</url>
      <title>DEV Community: Brian Sam-Bodden</title>
      <link>https://dev.to/bsbodden</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bsbodden"/>
    <language>en</language>
    <item>
      <title>Is Your Site Even Visible to ChatGPT? Auditing "GEO" (AI Crawler Access)</title>
      <dc:creator>Brian Sam-Bodden</dc:creator>
      <pubDate>Sun, 06 Sep 2026 17:08:43 +0000</pubDate>
      <link>https://dev.to/bsbodden/is-your-site-even-visible-to-chatgpt-auditing-geo-ai-crawler-access-2dc7</link>
      <guid>https://dev.to/bsbodden/is-your-site-even-visible-to-chatgpt-auditing-geo-ai-crawler-access-2dc7</guid>
      <description>&lt;p&gt;If you ship a &lt;code&gt;robots.txt&lt;/code&gt; once and forget about it, there's a decent chance you're invisible to the crawlers that actually feed answers into ChatGPT, Perplexity, and Claude right now — and most SEO tooling won't tell you, because it was built for Googlebot, not GPTBot.&lt;/p&gt;

&lt;p&gt;I spent a chunk of this year building an SEO CLI (more on that at the end), and the AI-crawler side turned out to be the part with the least existing tooling. So here's what I learned auditing it, plus a few checks you can run on your own site in the next five minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The crawlers that matter now
&lt;/h2&gt;

&lt;p&gt;Google isn't the only bot reading your site anymore. If you care about showing up in AI-generated answers, these are the user agents worth knowing:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Crawler&lt;/th&gt;
&lt;th&gt;Company&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;GPTBot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;Training data + (separately) &lt;code&gt;ChatGPT-User&lt;/code&gt; for live browsing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ClaudeBot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;Training + retrieval&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PerplexityBot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Perplexity&lt;/td&gt;
&lt;td&gt;Powers live citations in Perplexity answers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Google-Extended&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;Opts you in/out of Gemini/AI Overviews specifically — separate from regular Googlebot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Bingbot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Microsoft&lt;/td&gt;
&lt;td&gt;Feeds Copilot as well as classic Bing search&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The catch: a lot of &lt;code&gt;robots.txt&lt;/code&gt; files either predate these bots entirely, or block them "for safety" without realizing that also means zero chance of being cited when someone asks an AI assistant a question your content actually answers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check #1: What does your robots.txt actually say?
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://yoursite.com/robots.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Look specifically for blanket rules like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: *
&lt;span class="n"&gt;Disallow&lt;/span&gt;: /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That blocks everything, including AI crawlers, by default. More common and sneakier: an explicit block on just the AI bots because someone copy-pasted a "protect your content from AI" snippet without thinking through the tradeoff:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: &lt;span class="n"&gt;GPTBot&lt;/span&gt;
&lt;span class="n"&gt;Disallow&lt;/span&gt;: /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If your business model depends on being &lt;em&gt;found&lt;/em&gt;, this is usually the wrong default. You can always carve out exceptions for specific paths instead of an all-or-nothing block.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check #2: Can the crawler actually render your content?
&lt;/h2&gt;

&lt;p&gt;This is the one people miss. Most AI crawlers do &lt;strong&gt;not&lt;/strong&gt; execute JavaScript. If your page is a client-rendered React/Vue app that fetches content after load, &lt;code&gt;GPTBot&lt;/code&gt; sees an empty &lt;code&gt;&amp;lt;div id="root"&amp;gt;&lt;/code&gt; and nothing else — even if your &lt;code&gt;robots.txt&lt;/code&gt; is wide open.&lt;/p&gt;

&lt;p&gt;Quick test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s2"&gt;"GPTBot"&lt;/span&gt; https://yoursite.com | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="s2"&gt;"&amp;lt;title&amp;gt;.*&amp;lt;/title&amp;gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If that comes back empty or with a generic loading-state title, that's your answer. Server-side rendering, static generation, or at minimum pre-rendering for bot user agents will fix it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check #3: Is your content structured for extraction?
&lt;/h2&gt;

&lt;p&gt;Even with access, LLM-facing crawlers do better with content that's structured to be &lt;em&gt;quoted&lt;/em&gt;, not just read:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear H2/H3 hierarchy instead of one wall-of-text &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;FAQ sections with actual question-formatted headings (these get lifted almost verbatim into AI answers)&lt;/li&gt;
&lt;li&gt;JSON-LD structured data (&lt;code&gt;Article&lt;/code&gt;, &lt;code&gt;FAQPage&lt;/code&gt;, &lt;code&gt;HowTo&lt;/code&gt;) — LLM crawlers use this as a strong trust/extraction signal, same as it always helped rich results&lt;/li&gt;
&lt;li&gt;Direct, extractable answers near the top of a section rather than buried after three paragraphs of preamble&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Check #4: Citation readiness
&lt;/h2&gt;

&lt;p&gt;If a model &lt;em&gt;did&lt;/em&gt; want to cite you, would it have what it needs? Author attribution, a clear publish/update date, and a canonical URL all factor into whether a crawler treats your page as a citable source versus content to skim and move past.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting it together
&lt;/h2&gt;

&lt;p&gt;I ended up building this into a CLI tool (&lt;a href="https://rankcli.dev" rel="noopener noreferrer"&gt;RankCLI&lt;/a&gt;) because I wanted these checks to live in CI, not in a dashboard I'd forget to open. There's also a free MCP server if you want to run these checks straight from Claude, Cursor, or any other MCP-compatible AI host — no signup, nothing sent to a server, it just reads the HTML your MCP host already fetched:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @rankcli/mcp-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or point an MCP client at the hosted version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"rankcli"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.rankcli.dev/mcp/free"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But even without any tool, the four checks above take about five minutes and will tell you more about your AI-search visibility than most SEO audits currently do. Worth doing before you spend more time optimizing for a Google result page that's increasingly not where people are looking.&lt;/p&gt;

&lt;p&gt;What are you seeing on your own sites — anyone actually blocking GPTBot on purpose, or is it mostly accidental?&lt;/p&gt;

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