<?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: siccscha</title>
    <description>The latest articles on DEV Community by siccscha (@siccscha).</description>
    <link>https://dev.to/siccscha</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%2F4057262%2Fe5aa64c2-77f7-4faf-90c5-76d3fee74acd.png</url>
      <title>DEV Community: siccscha</title>
      <link>https://dev.to/siccscha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/siccscha"/>
    <language>en</language>
    <item>
      <title>Your robots.txt decides whether ChatGPT can cite you. Here's the 5-minute check.</title>
      <dc:creator>siccscha</dc:creator>
      <pubDate>Fri, 31 Jul 2026 22:23:09 +0000</pubDate>
      <link>https://dev.to/siccscha/your-robotstxt-decides-whether-chatgpt-can-cite-you-heres-the-5-minute-check-185l</link>
      <guid>https://dev.to/siccscha/your-robotstxt-decides-whether-chatgpt-can-cite-you-heres-the-5-minute-check-185l</guid>
      <description>&lt;p&gt;More and more answers reach your readers through ChatGPT, Claude and Perplexity instead of a blue link. Whether those answers can ever cite &lt;em&gt;you&lt;/em&gt; is decided by one file: &lt;code&gt;robots.txt&lt;/code&gt;. And most robots.txt files decide it by accident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two kinds of AI crawlers — and only one of them matters for citations
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kind&lt;/th&gt;
&lt;th&gt;User agents&lt;/th&gt;
&lt;th&gt;Blocking it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Training&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;GPTBot&lt;/code&gt;, &lt;code&gt;ClaudeBot&lt;/code&gt;, &lt;code&gt;Google-Extended&lt;/code&gt;, &lt;code&gt;Applebot-Extended&lt;/code&gt;, &lt;code&gt;CCBot&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;your content isn't used to train models&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Retrieval&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;OAI-SearchBot&lt;/code&gt;, &lt;code&gt;ChatGPT-User&lt;/code&gt;, &lt;code&gt;Claude-SearchBot&lt;/code&gt;, &lt;code&gt;Claude-User&lt;/code&gt;, &lt;code&gt;PerplexityBot&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;you can never be cited in an AI answer&lt;/strong&gt; — no link, no attribution, ever&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Blocking training crawlers is a legitimate choice. Blocking retrieval agents is almost never what a site &lt;em&gt;intended&lt;/em&gt; — it just silently removes you from AI answers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The blanket-block mistake
&lt;/h2&gt;

&lt;p&gt;The "block the AI bots" wave of 2024/25 produced a lot of this:&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;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: &lt;span class="n"&gt;ChatGPT&lt;/span&gt;-&lt;span class="n"&gt;User&lt;/span&gt;
&lt;span class="n"&gt;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: &lt;span class="n"&gt;ClaudeBot&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 single group blocks training &lt;strong&gt;and&lt;/strong&gt; retrieval — worst of both worlds if you still hold the training position but wanted visibility. I checked major news sites this week: nytimes.com allows &lt;strong&gt;1 of 7&lt;/strong&gt; retrieval agents, reuters.com, theverge.com and wired.com &lt;strong&gt;2 of 7&lt;/strong&gt; each. None of them is fully citable — and these are sites whose entire business is being the cited source.&lt;/p&gt;

&lt;p&gt;A deliberate policy — citable, but not training material — looks like this:&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;OAI&lt;/span&gt;-&lt;span class="n"&gt;SearchBot&lt;/span&gt;
&lt;span class="n"&gt;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: &lt;span class="n"&gt;ChatGPT&lt;/span&gt;-&lt;span class="n"&gt;User&lt;/span&gt;
&lt;span class="n"&gt;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: &lt;span class="n"&gt;Claude&lt;/span&gt;-&lt;span class="n"&gt;SearchBot&lt;/span&gt;
&lt;span class="n"&gt;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: &lt;span class="n"&gt;Claude&lt;/span&gt;-&lt;span class="n"&gt;User&lt;/span&gt;
&lt;span class="n"&gt;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: &lt;span class="n"&gt;PerplexityBot&lt;/span&gt;
&lt;span class="n"&gt;Allow&lt;/span&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;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: &lt;span class="n"&gt;ClaudeBot&lt;/span&gt;
&lt;span class="n"&gt;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: &lt;span class="n"&gt;Google&lt;/span&gt;-&lt;span class="n"&gt;Extended&lt;/span&gt;
&lt;span class="n"&gt;User&lt;/span&gt;-&lt;span class="n"&gt;agent&lt;/span&gt;: &lt;span class="n"&gt;CCBot&lt;/span&gt;
&lt;span class="n"&gt;Disallow&lt;/span&gt;: /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The CDN plot twist: rules you never wrote
&lt;/h2&gt;

&lt;p&gt;Here's how I fell into this myself. My own site's served robots.txt contained a "managed" block list my CDN (Cloudflare) had injected &lt;strong&gt;above&lt;/strong&gt; my hand-written rules — blocking the same crawlers my own section explicitly allowed, plus a &lt;code&gt;Content-Signal:&lt;/code&gt; line that is an express reservation of rights under Article 4 of the EU DSM Directive. A legal statement, published in my name, that I had never written.&lt;/p&gt;

&lt;p&gt;Two lessons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Read the served file, not your source file.&lt;/strong&gt; &lt;code&gt;curl https://yoursite/robots.txt&lt;/code&gt; and look for sections you didn't write.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contradictory groups for the same crawler are effectively undefined behavior.&lt;/strong&gt; The spec's tie-breaking (longest match wins, &lt;code&gt;Allow&lt;/code&gt; beats &lt;code&gt;Disallow&lt;/code&gt; on equal length, a group naming the agent beats &lt;code&gt;*&lt;/code&gt;) resolves conflicts &lt;em&gt;within&lt;/em&gt; a group — but when two groups target the same bot with opposite rules, what happens depends on each vendor's implementation. You genuinely don't know what you're telling that crawler.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Beyond robots.txt: two more silent killers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pages that are empty without JavaScript.&lt;/strong&gt; Retrieval agents don't render. A page Google ranks fine (Google renders) can be blank to every AI system. Test: &lt;code&gt;curl&lt;/code&gt; your page and check whether the text is in the HTML.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing attribution signals.&lt;/strong&gt; AI answers lift and attribute passages more readily from pages with an author, a date, question-shaped headings and &lt;code&gt;FAQPage&lt;/code&gt; markup.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The 5-minute check
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;curl https://yoursite/robots.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Search it for the five retrieval agents above. Any &lt;code&gt;Disallow&lt;/code&gt; that hits them = you're out of AI answers.&lt;/li&gt;
&lt;li&gt;Look for sections and &lt;code&gt;Content-Signal:&lt;/code&gt; lines you didn't write.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;curl&lt;/code&gt; a key page and check the text is present without JavaScript.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For one site, that's honestly enough. I also built the bulk/scheduled version — a technical SEO audit that includes exactly this citability check per vendor, plus a diff against the previous run: &lt;a href="https://apify.com/siccscha/seo-health-auditor" rel="noopener noreferrer"&gt;SEO Audit + AI Visibility on Apify&lt;/a&gt;. Disclosure: that's my tool; the manual check above needs nothing but curl.&lt;/p&gt;

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