<?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: bilal ikram</title>
    <description>The latest articles on DEV Community by bilal ikram (@babel42).</description>
    <link>https://dev.to/babel42</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%2F4116409%2F897ccf7a-b415-43eb-a60c-aa85bbaaf22a.jpeg</url>
      <title>DEV Community: bilal ikram</title>
      <link>https://dev.to/babel42</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/babel42"/>
    <language>en</language>
    <item>
      <title>How we use AI assistant data to find backlinks, fix our own site and see why competitors get recommended</title>
      <dc:creator>bilal ikram</dc:creator>
      <pubDate>Wed, 11 Nov 2026 00:45:10 +0000</pubDate>
      <link>https://dev.to/babel42/how-we-use-ai-assistant-data-to-find-backlinks-fix-our-own-site-and-see-why-competitors-get-l2h</link>
      <guid>https://dev.to/babel42/how-we-use-ai-assistant-data-to-find-backlinks-fix-our-own-site-and-see-why-competitors-get-l2h</guid>
      <description>&lt;p&gt;As a new business, we didn't show up in AI assistants. We build Babel42, an AI visibility tool, and what we could see is what got our competitors mentioned, and better still, what got them recommended. So we're using our own tool on ourselves.&lt;/p&gt;

&lt;p&gt;The setup is simple. We create a few different buyer personas, and each one asks the assistants several questions. Then we see who gets recommended and the reason the assistant gave for it. With normal SEO you'd just go after keywords. But no one uses AI search the same way, so picking questions to target is a bit of a guessing game. Running several personas and informing prompts with keyword volume data from search helps.&lt;/p&gt;

&lt;p&gt;Very useful for us has been the list of cited sources. We pull the list of sources the assistants cited through our MCP.&lt;/p&gt;

&lt;p&gt;Then we remove the obvious ones: Reddit, YouTube, competitors, and the big publications that are out of reach for now. What's left is a list of smaller sites we can actually pitch. The full list ran to 66 pages, which would be a pain to sort by hand. Through the MCP it's a couple of prompts.&lt;/p&gt;

&lt;p&gt;Then we look at why the competitors won. We started with the smaller fish in our pond rather than the big names. A few of the reasons the buyers gave:&lt;/p&gt;

&lt;p&gt;PingMyBrand won because it was the only option with confirmed agency pricing, $199 a month for up to 10 brands. tutka won on an agency plan at $149 a month with GA4 built in. LLM Metrix won because its case study was the most transparent, with an actual number and timeframe in it. ClayHog won partly because it offered to share anonymised case studies.&lt;/p&gt;

&lt;p&gt;We use that information to improve our site, add content thats mentioned regularly, add clarity and it's why are publishing original research.&lt;/p&gt;

</description>
      <category>aeo</category>
      <category>ai</category>
      <category>seo</category>
    </item>
    <item>
      <title>How to create a page that gets read by AI assistants</title>
      <dc:creator>bilal ikram</dc:creator>
      <pubDate>Tue, 29 Sep 2026 23:43:18 +0000</pubDate>
      <link>https://dev.to/babel42/how-to-create-a-page-that-gets-read-by-ai-assistants-2f61</link>
      <guid>https://dev.to/babel42/how-to-create-a-page-that-gets-read-by-ai-assistants-2f61</guid>
      <description>&lt;p&gt;An AI assistant does not read your whole page. It takes one section out and answers from that.&lt;/p&gt;

&lt;p&gt;We read 15,592 sections the way a crawler does. Half were under 40 words. Only a quarter carried a number, a quotation or a link out. And 76.6% never named the brand whose site they were sitting on, because the copy says "we" and "our platform" instead.&lt;/p&gt;

&lt;p&gt;None of that matters while a human is reading top to bottom. It matters when one section gets lifted out on its own and has to answer the question by itself.&lt;/p&gt;

&lt;p&gt;Six things that change it:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Put the question in the H1&lt;/li&gt;
&lt;li&gt;Give every heading an answer under it&lt;/li&gt;
&lt;li&gt;Write sections of 40 to 350 words&lt;/li&gt;
&lt;li&gt;One checkable fact in each section&lt;/li&gt;
&lt;li&gt;Name yourself instead of saying "we"&lt;/li&gt;
&lt;li&gt;Keep the facts out of JavaScript&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you only do one, do the third and fourth together: take the ten sections you most want quoted and get each one past 40 words with a number in it. The section, not the page.&lt;/p&gt;

&lt;p&gt;Run a free AI AEO audit on your site here: &lt;a href="https://babel42.io/ai-seo-audit" rel="noopener noreferrer"&gt;https://babel42.io/ai-seo-audit&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  AEO #LLMSEO #GEO
&lt;/h1&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%2Fvsvnql5ct163z45r2n5q.jpg" 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%2Fvsvnql5ct163z45r2n5q.jpg" alt=" " width="800" height="1000"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>aeo</category>
    </item>
    <item>
      <title>Cloudflare blocks AI agent traffic by default from 15 September</title>
      <dc:creator>bilal ikram</dc:creator>
      <pubDate>Tue, 08 Sep 2026 21:24:31 +0000</pubDate>
      <link>https://dev.to/babel42/cloudflare-blocks-ai-agent-traffic-by-default-from-15-september-348g</link>
      <guid>https://dev.to/babel42/cloudflare-blocks-ai-agent-traffic-by-default-from-15-september-348g</guid>
      <description>&lt;p&gt;From 15 September, Cloudflare blocks "Agent" traffic by default on pages that carry ads. Agent means bots browsing live on someone's behalf, which includes the crawlers AI assistants send out to check a product before recommending it. Search crawlers stay allowed.&lt;/p&gt;

&lt;p&gt;The default lands on new domains onboarding to Cloudflare, new sites added by existing customers, and every existing free-tier account. A configured paid zone is untouched on the day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Cloudflare counts as an agent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloudflare now sorts AI traffic into Search, Agent and Training. Search indexes your content to answer questions about it later. Training absorbs it into a model. Agent is the new one: automated activity acting in real time on a person's behalf, with a human waiting on the other end. Cloudflare's own examples are chat fetch bots such as ChatGPT-User, and browser-use agents driving Chrome.&lt;/p&gt;

&lt;p&gt;That is the fetch that runs when someone asks an assistant about your product and it goes to look at your pricing page before answering. Block it and the assistant still answers. It just answers from whatever it already had.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;robots.txt does not cover this&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The block happens at Cloudflare's edge, before the request reaches your origin. robots.txt is a request you make of a crawler that chooses to honour it, and it has no bearing on what the edge does with the connection. Allowing has to be configured per zone, in Cloudflare's AI traffic controls or as a WAF rule matching the user agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  The agents worth allowing
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;ChatGPT&lt;/span&gt;-&lt;span class="n"&gt;User&lt;/span&gt;          &lt;span class="c"&gt;# ChatGPT (also ChatGPT-User/2.0)
&lt;/span&gt;&lt;span class="n"&gt;OAI&lt;/span&gt;-&lt;span class="n"&gt;SearchBot&lt;/span&gt;         &lt;span class="c"&gt;# ChatGPT
&lt;/span&gt;&lt;span class="n"&gt;Claude&lt;/span&gt;-&lt;span class="n"&gt;User&lt;/span&gt;           &lt;span class="c"&gt;# Claude
&lt;/span&gt;&lt;span class="n"&gt;Claude&lt;/span&gt;-&lt;span class="n"&gt;SearchBot&lt;/span&gt;      &lt;span class="c"&gt;# Claude
&lt;/span&gt;&lt;span class="n"&gt;Perplexity&lt;/span&gt;-&lt;span class="n"&gt;User&lt;/span&gt;       &lt;span class="c"&gt;# Perplexity
&lt;/span&gt;&lt;span class="n"&gt;PerplexityBot&lt;/span&gt;         &lt;span class="c"&gt;# Perplexity
&lt;/span&gt;&lt;span class="n"&gt;Google&lt;/span&gt;-&lt;span class="n"&gt;Agent&lt;/span&gt;          &lt;span class="c"&gt;# Gemini
&lt;/span&gt;&lt;span class="n"&gt;GoogleAgent&lt;/span&gt;-&lt;span class="n"&gt;Mariner&lt;/span&gt;   &lt;span class="c"&gt;# Gemini
&lt;/span&gt;&lt;span class="n"&gt;Googlebot&lt;/span&gt;             &lt;span class="c"&gt;# Gemini
&lt;/span&gt;&lt;span class="n"&gt;GrokBot&lt;/span&gt;               &lt;span class="c"&gt;# Grok
&lt;/span&gt;&lt;span class="n"&gt;xAI&lt;/span&gt;-&lt;span class="n"&gt;Grok&lt;/span&gt;              &lt;span class="c"&gt;# Grok
&lt;/span&gt;&lt;span class="n"&gt;Grok&lt;/span&gt;-&lt;span class="n"&gt;DeepSearch&lt;/span&gt;       &lt;span class="c"&gt;# Grok
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The training crawlers, if you still want those blocked
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GPTBot
ClaudeBot
anthropic-ai
meta-externalagent
Bytespider
Google-Extended
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Watch the multi-purpose crawlers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cloudflare applies the most restrictive matching rule to a crawler that does more than one job, and names Googlebot, Applebot and Bingbot as ones that get caught by a Training block. A blanket "block training" can therefore cost you ordinary search indexing. Set the categories separately and check what each named agent falls under before you save.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decide it rather than inherit it&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you sell ad space, the block may be exactly what you want, and Cloudflare is handing it to you for free. The bad outcome is having the default applied to you on the fifteenth without a decision, then working out months later why assistants describe your product from a stale snapshot while your search traffic looks fine.&lt;/p&gt;

&lt;p&gt;Check the zone before the fifteenth. It is a five-minute job now and an invisible problem afterwards.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>aeo</category>
      <category>cloudfare</category>
    </item>
  </channel>
</rss>
