<?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: flexext-dev</title>
    <description>The latest articles on DEV Community by flexext-dev (@flexextdev).</description>
    <link>https://dev.to/flexextdev</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%2F4244552%2Ffc7df322-576b-430e-bc0c-9a66a64430d0.jpg</url>
      <title>DEV Community: flexext-dev</title>
      <link>https://dev.to/flexextdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/flexextdev"/>
    <language>en</language>
    <item>
      <title>How AI Search &amp; Shopping Agents Actually Crawl CMS Sites (/llms.txt, Accept: text/markdown &amp; MCP)</title>
      <dc:creator>flexext-dev</dc:creator>
      <pubDate>Sat, 14 Nov 2026 14:14:24 +0000</pubDate>
      <link>https://dev.to/flexextdev/how-ai-search-shopping-agents-actually-crawl-cms-sites-llmstxt-accept-textmarkdown-mcp-55go</link>
      <guid>https://dev.to/flexextdev/how-ai-search-shopping-agents-actually-crawl-cms-sites-llmstxt-accept-textmarkdown-mcp-55go</guid>
      <description>&lt;p&gt;Over the past 30 days on our own extension store infrastructure, we analyzed every verified bot request hitting production. The numbers surprised even us:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Googlebot / Google Crawler:&lt;/strong&gt; &lt;code&gt;378&lt;/code&gt; verified requests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI (&lt;code&gt;GPTBot&lt;/code&gt; + &lt;code&gt;OAI-SearchBot&lt;/code&gt;):&lt;/strong&gt; &lt;code&gt;377&lt;/code&gt; requests (&lt;code&gt;+ 7&lt;/code&gt; direct human click-throughs from &lt;code&gt;ChatGPT-User&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meta AI External Agent:&lt;/strong&gt; &lt;code&gt;187&lt;/code&gt; requests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bingbot:&lt;/strong&gt; &lt;code&gt;87&lt;/code&gt; requests&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anthropic &lt;code&gt;ClaudeBot&lt;/code&gt;:&lt;/strong&gt; &lt;code&gt;26&lt;/code&gt; requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI answer engines and shopping assistants are no longer an edge experiment — they are already half of your technical crawl budget. Yet when an LLM agent fetches a typical WordPress, Joomla, OpenCart, or Craft CMS page, it receives &lt;strong&gt;300–600 KB of mega-menus, SVGs, CSS classes, and modal markup&lt;/strong&gt; before reaching the first paragraph of product specifications.&lt;/p&gt;

&lt;p&gt;Here is the 4-layer engineering checklist we use across &lt;a href="https://flexext.dev/" rel="noopener noreferrer"&gt;FlexExt.dev&lt;/a&gt; and &lt;a href="https://flexext.store/" rel="noopener noreferrer"&gt;FlexExt Store&lt;/a&gt; to make PHP CMS and e-commerce sites 100% readable to AI agents without hurting human UX or full-page caches.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Stop Accidentally Blocking Search Citation Bots in &lt;code&gt;robots.txt&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Many site owners copied blanket &lt;code&gt;robots.txt&lt;/code&gt; blocks in 2024 that block &lt;em&gt;both&lt;/em&gt; model-training scrapers and real-time search citation crawlers (&lt;code&gt;OAI-SearchBot&lt;/code&gt;, &lt;code&gt;ChatGPT-User&lt;/code&gt;, &lt;code&gt;PerplexityBot&lt;/code&gt;). If &lt;code&gt;OAI-SearchBot&lt;/code&gt; is disallowed, ChatGPT Search cannot cite or link to your product pages.&lt;/p&gt;

&lt;p&gt;A clean 2026 &lt;code&gt;robots.txt&lt;/code&gt; policy explicitly allows search/citation agents and points crawlers to both your XML sitemap and &lt;code&gt;/llms.txt&lt;/code&gt;:&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: ChatGPT-User
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: ClaudeBot
Allow: /

Sitemap: https://example.com/sitemap.xml
# AI Discovery Index: https://example.com/llms.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  2. Publish &lt;code&gt;/llms.txt&lt;/code&gt; and &lt;code&gt;/llms-full.txt&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Following the &lt;code&gt;llms.txt&lt;/code&gt; specification, exposing a concise Markdown map at &lt;code&gt;https://yourdomain.com/llms.txt&lt;/code&gt; gives AI agents a curated, hallucination-free index of your documentation, pricing tiers, canonical URLs, and APIs in under 2,000 tokens.&lt;/p&gt;

&lt;p&gt;Make sure your web server serves it with explicit UTF-8 Markdown headers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Files&lt;/span&gt; &lt;span class="s2"&gt;"llms.txt"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nc"&gt;ForceType&lt;/span&gt; &lt;span class="s2"&gt;"text/markdown; charset=utf-8"&lt;/span&gt;
    &lt;span class="nc"&gt;Header&lt;/span&gt; &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="nc"&gt;Content&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nc"&gt;Type&lt;/span&gt; &lt;span class="s2"&gt;"text/markdown; charset=utf-8"&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nc"&gt;Files&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. Support &lt;code&gt;Accept: text/markdown&lt;/code&gt; Content Negotiation (Without Breaking Page Cache!)
&lt;/h2&gt;

&lt;p&gt;Modern AI agents and RAG pipelines increasingly send &lt;code&gt;Accept: text/markdown&lt;/code&gt; when fetching URLs. Returning a clean Markdown representation of your product or article (title, SKU, live price, stock availability, specs, and FAQs) cuts token noise by &lt;strong&gt;80–90%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Two critical rules when implementing this in PHP (WordPress, Joomla, OpenCart, Craft CMS):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Always emit &lt;code&gt;Vary: Accept&lt;/code&gt;&lt;/strong&gt; so Cloudflare, Varnish, or native full-page caches never serve Markdown to a human Chrome browser (or cached HTML to an agent).&lt;/li&gt;
&lt;li&gt;Bypass HTML minifiers/caches when &lt;code&gt;str_contains($_SERVER['HTTP_ACCEPT'] ?? '', 'text/markdown')&lt;/code&gt; is true.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$accept&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$_SERVER&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'HTTP_ACCEPT'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;str_contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$accept&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'text/markdown'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$_GET&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'format'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="s1"&gt;'markdown'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Content-Type: text/markdown; charset=utf-8'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nf"&gt;header&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Vary: Accept'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$markdownRenderer&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;renderProduct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$product&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nb"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Ship Complete &lt;code&gt;Schema.org&lt;/code&gt; Graphs &amp;amp; Agent Discovery Cards
&lt;/h2&gt;

&lt;p&gt;When shopping assistants compare software or physical products, they cross-check visible copy against structured JSON-LD:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Product&lt;/code&gt; + &lt;code&gt;Offer&lt;/code&gt; (&lt;code&gt;price&lt;/code&gt;, &lt;code&gt;priceCurrency&lt;/code&gt;, &lt;code&gt;availability&lt;/code&gt;, &lt;code&gt;url&lt;/code&gt;, &lt;code&gt;sku&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;FAQPage&lt;/code&gt; (10–15 real buyer questions and answers)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/.well-known/mcp/server-card.json&lt;/code&gt; and &lt;code&gt;/.well-known/agent-card.json&lt;/code&gt; for Model Context Protocol (MCP) and Google A2A discovery.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Test Your Own Site in 3 Seconds (Free 25-Check Live Scanner)
&lt;/h2&gt;

&lt;p&gt;To avoid manually running &lt;code&gt;curl&lt;/code&gt; checks on every client store, we built a &lt;strong&gt;free, zero-signup technical scanner&lt;/strong&gt; that runs 25 live HTTP probes across 6 AI &amp;amp; GEO Readiness pillars:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Live Scanner:&lt;/strong&gt; &lt;a href="https://aichecker.flexext.dev/" rel="noopener noreferrer"&gt;https://aichecker.flexext.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It automatically fingerprints 45+ CMS and e-commerce stacks (WordPress, WooCommerce, Joomla 4/5/6, OpenCart 3/4, Craft CMS, Shopware, PrestaShop, Shopify) and generates a downloadable starter kit (&lt;code&gt;llms.txt&lt;/code&gt;, &lt;code&gt;robots.txt&lt;/code&gt;, &lt;code&gt;server-card.json&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;If you want drop-in native plugins that automate &lt;code&gt;/llms.txt&lt;/code&gt;, &lt;code&gt;Accept: text/markdown&lt;/code&gt;, and JSON-LD dynamically from your catalog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WordPress, Joomla &amp;amp; OpenCart AI SEO Suites:&lt;/strong&gt; &lt;a href="https://flexext.dev/" rel="noopener noreferrer"&gt;https://flexext.dev/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native Joomla 4/5/6 E-Commerce Suite (&lt;code&gt;FlexExt Store&lt;/code&gt;):&lt;/strong&gt; &lt;a href="https://flexext.store/" rel="noopener noreferrer"&gt;https://flexext.store/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free Open-Source GPL Community Plugins:&lt;/strong&gt; &lt;a href="https://github.com/flexext-dev/free" rel="noopener noreferrer"&gt;https://github.com/flexext-dev/free&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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