<?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: jf lu</title>
    <description>The latest articles on DEV Community by jf lu (@jflu).</description>
    <link>https://dev.to/jflu</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%2F4077579%2Fd737178d-307a-45b7-8d7c-9fb564bce2db.png</url>
      <title>DEV Community: jf lu</title>
      <link>https://dev.to/jflu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jflu"/>
    <language>en</language>
    <item>
      <title>I tracked AI crawlers on my new GEO site for 30 days — here's what I learned</title>
      <dc:creator>jf lu</dc:creator>
      <pubDate>Fri, 28 Aug 2026 08:27:00 +0000</pubDate>
      <link>https://dev.to/jflu/i-tracked-ai-crawlers-on-my-new-geo-site-for-30-days-heres-what-i-learned-5e9l</link>
      <guid>https://dev.to/jflu/i-tracked-ai-crawlers-on-my-new-geo-site-for-30-days-heres-what-i-learned-5e9l</guid>
      <description>&lt;p&gt;I launched a site focused on Generative Engine Optimization (GEO) about 2 months ago. Instead of just tracking Google rankings, I set up Cloudflare D1 logging to track every AI crawler visit.&lt;/p&gt;

&lt;p&gt;Here's what 30 days of data shows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Crawler breakdown:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bingbot: 98 hits/day average (highest volume)&lt;/li&gt;
&lt;li&gt;ClaudeBot: 18-22 hits/day (steady, consistent)&lt;/li&gt;
&lt;li&gt;GPTBot: 8-12 hits/day (sporadic bursts)&lt;/li&gt;
&lt;li&gt;PerplexityBot: 3-5 hits/day (small but high-quality)&lt;/li&gt;
&lt;li&gt;Bytespider: 500+ hits/day (massive scanning, likely training data)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key insights:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bing is the new Google for AI.&lt;/strong&gt; Bingbot volume dwarfs everything else. If you're optimizing for GEO, Bing Webmaster Tools is your best free analytics source.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ClaudeBot is remarkably consistent.&lt;/strong&gt; Same crawl pattern every day, suggesting scheduled indexing rather than on-demand. If you publish content, expect 24-48hr lag before Claude "sees" it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Bytespider (ByteDance) is aggressive.&lt;/strong&gt; 500+ hits/day on a small site. They're clearly doing massive data collection. If you want visibility in Doubao/DeepSeek, your content needs to be crawlable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;External referrers matter more than I expected.&lt;/strong&gt; A single Reddit post drove 8 AI crawler visits from a domain I'd never heard of (sahammurah.com). External mentions = AI discovery signals.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What I'm doing differently now:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added llms.txt (AI-specific robots.txt equivalent)&lt;/li&gt;
&lt;li&gt;Every article now has FAQPage + Article Schema&lt;/li&gt;
&lt;li&gt;Answer-first paragraphs (first sentence = direct answer)&lt;/li&gt;
&lt;li&gt;Verifiable data points with source citations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anyone else tracking AI crawlers? What patterns are you seeing?&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
    <item>
      <title>What GEO Work Actually Moves AI Crawlers? Our Data, and a New-Site Launch Checklist</title>
      <dc:creator>jf lu</dc:creator>
      <pubDate>Wed, 19 Aug 2026 06:57:33 +0000</pubDate>
      <link>https://dev.to/jflu/what-geo-work-actually-moves-ai-crawlers-our-data-and-a-new-site-launch-checklist-4021</link>
      <guid>https://dev.to/jflu/what-geo-work-actually-moves-ai-crawlers-our-data-and-a-new-site-launch-checklist-4021</guid>
      <description>&lt;p&gt;You are about to launch a new site and the advice keeps multiplying: add /ai/summary.json, wire up llms.txt, sprinkle FAQPage markup, build a discovery layer. But which of these does an AI crawler actually care about?&lt;br&gt;
We run a Cloudflare Worker that logs every request to geo010.com and tags it by crawler, so we could answer that question with data instead of opinion. This article attributes 15 days of AI crawler traffic to nine GEO measures, shows which ones changed nothing, and turns the results into a launch checklist for a new site.&lt;br&gt;
How Did We Attribute Traffic to Each GEO Measure?&lt;br&gt;
Every request to geo010.com passes through a Worker that records the date, path, status, page type and a normalized crawler name into a D1 database. For each of nine GEO measures we shipped, we then asked the logs three questions: which crawlers hit the relevant paths, how often, and did visits change after the measure shipped?&lt;/p&gt;

&lt;p&gt;Two warnings before the numbers. First, a crawler label is only a user agent — attackers spoof them, so we cross-checked paths and status before counting anything. Second, some "visits" were us: we verify deployments with curl, and our own checks show up in the logs. We filtered those out.&lt;/p&gt;

&lt;p&gt;Which GEO Measures Actually Drove Crawler Traffic?&lt;br&gt;
Robots.txt and sitemap.xml were the only paths every major AI crawler used. The homepage was the only page they all visited. Everything else showed up in a minority of crawlers — or none at all.&lt;br&gt;
Here is the full attribution table, ranked by how much real crawler traffic each measure produced:&lt;/p&gt;

&lt;p&gt;GEO measure Which crawlers  Evidence (Aug 4–19)   Impact&lt;br&gt;
robots.txt  ClaudeBot, Googlebot, OAI-SearchBot, Bingbot, FacebookBot   ClaudeBot 104, Googlebot 32, OAI-SearchBot 26, Bingbot 17   Highest — nearly daily entry point&lt;br&gt;
sitemap.xml ClaudeBot, Bingbot, GPTBot  ClaudeBot 104, Bingbot 11, GPTBot 9 Highest — ClaudeBot reads it religiously&lt;br&gt;
Homepage /  GPTBot, PerplexityBot, OAI-SearchBot, ClaudeBot, Claude-SearchBot, Applebot GPTBot 21, PerplexityBot 12, OAI-SearchBot 10, ClaudeBot 8  High — visited by every major crawler daily&lt;br&gt;
New content pages   GPTBot (primary), ClaudeBot, PerplexityBot  GPTBot 121 content pages; ClaudeBot 2 community articles    High — GPTBot traverses all pages&lt;br&gt;
Freshness alignment All (indirect)  Crawler bursts on 08-08, 08-12 and 08-17 followed freshness passes  Medium — sustains re-visits&lt;br&gt;
llms.txt    GPTBot, Amazonbot, Googlebot    4 total requests, GPTBot 2  Low — only GPTBot treats it as an entry&lt;br&gt;
Definition-first layout GPTBot, ClaudeBot, Bingbot, others  Entity-density page reached by 7+ crawlers  Low-medium — quality, not quantity&lt;br&gt;
FAQPage markup  None (AI)   0 visits from major AI crawlers after shipping  None (crawl) — a citation-layer lever&lt;br&gt;
AI discovery endpoints (/ai/, ai.txt, plugins)  None    0 requests in 15 days   None — not used by today's crawlers&lt;br&gt;
The ranking surprised us. The "boring" infrastructure files — robots.txt and sitemap.xml — produced more genuine crawler traffic than every shiny AI feature combined.&lt;/p&gt;

&lt;p&gt;Why Do GPTBot and ClaudeBot Crawl Completely Differently?&lt;br&gt;
The two most important AI crawlers could not be more different in behavior, and the difference determines what to build first:&lt;/p&gt;

&lt;p&gt;Behavior    GPTBot  ClaudeBot&lt;br&gt;
Reads robots.txt    Rarely (1 request)  Religiously (104 requests)&lt;br&gt;
Reads sitemap.xml   Occasionally (9)    Every day (104)&lt;br&gt;
Visits content pages    Yes — 121 pages, including a full-site pass on Aug 17 Rarely (a handful total)&lt;br&gt;
Entry strategy  Traverses the whole site per pass   Follows robots → sitemap, then mostly home&lt;br&gt;
ClaudeBot is a disciplined path-follower. It checks your robots and your sitemap almost daily, but it barely descends into content unless something in that sitemap or homepage directs it. GPTBot is a deep scanner. It skips robots, reads llms.txt occasionally, and walks the entire site — on Aug 17 it made a single pass touching 60 pages, each one once.&lt;/p&gt;

&lt;p&gt;The practical consequence: if your robots.txt or sitemap.xml is broken, you hurt the crawler that reads them daily (ClaudeBot). If your content is shallow, you waste the crawler that reads everything (GPTBot).&lt;/p&gt;

&lt;p&gt;What Did We Get Wrong in Earlier Analyses?&lt;br&gt;
Honesty check. Earlier write-ups on this site credited FAQPage and new-article launches with immediate crawler spikes. Our per-request attribution showed those were misattributed:&lt;/p&gt;

&lt;p&gt;"A new article got crawled 6-10 times on launch day." Actually most of those hits were browser visitors and our own checks; each AI crawler visited the new page once. New content is crawled once per GPTBot pass, not burst-spiked by the act of publishing.&lt;br&gt;
"FAQPage pages were visited by ClaudeBot and OAI-SearchBot the same day." Not supported by the logs — the six pages got no visits from major AI crawlers after the markup shipped. Their visitors were browsers, Bingbot and our curl checks.&lt;br&gt;
"The 08-11 traffic spike was AI growth." It was a scanner attack — ChatGPT-User and Amazonbot probing /.env.production and /telescope/requests. Same for a spoofed-GPTBot burst on 08-13.&lt;br&gt;
None of those measures are useless. They just do their work at a different layer: FAQPage helps a page be quoted once AI is already considering it; llms.txt helps GPTBot orient; discovery endpoints may help future tooling. The mistake was measuring them against crawl counts at all.&lt;/p&gt;

&lt;p&gt;What Three More Days Confirmed&lt;br&gt;
When we first published this article, the data window was 12 days. Three more days (Aug 17–19) gave us a live test of the same predictions:&lt;/p&gt;

&lt;p&gt;Date    What happened   What it proved&lt;br&gt;
Aug 17  GPTBot hit 60 pages in a single pass — the first full-site traversal since launch Content pages are discovered via sitemap, not via AI endpoints. GPTBot never touched /ai/summary.json.&lt;br&gt;
Aug 17  ClaudeBot made 23 requests: all robots.txt + sitemap.xml + homepage ClaudeBot has not changed its entry-only behavior in three weeks. Sitemap quality matters more than content quantity for this crawler.&lt;br&gt;
Aug 17  Total requests 1,066; only 371 returned 200 Scanner noise persists — the same path-spam pattern (old PHP paths, /api/v1/validate/code) returns daily. Noise filtering is ongoing work.&lt;br&gt;
Aug 18  Bingbot made 51 requests (highest single-day for Bing); Meta-ExternalAgent appeared for the first time with 8 requests  Not all crawlers behave the same. Bingbot probes old/cached paths; Meta-ExternalAgent is a new entrant worth monitoring.&lt;br&gt;
Aug 18–19 Both community articles (the crawler-data post and this one) each got 1 GPTBot visit + 1 ClaudeBot visit    New content is indexed once per crawler type — not burst-on-publish. The "crawled 6-10 times on launch day" claim from earlier articles was definitely noise.&lt;br&gt;
The extra data made the picture sharper, not murkier: robots + sitemap + homepage are the crawl foundation; everything else is a citation-layer optimization you add later.&lt;/p&gt;

&lt;p&gt;What Should a New Site Build First?&lt;br&gt;
If we were launching a new site today, we would build three things before anything else: a correct robots.txt, a sitemap.xml where every URL returns 200, and a server-rendered homepage that explains what the site is — plus a few genuinely useful articles.&lt;br&gt;
Make robots.txt correct. Allow the AI crawlers you want, block only what you must (analytics, staging, private pages). A wrong rule that blocks everything is a silent zero.&lt;br&gt;
Make sitemap.xml 100% valid. Every URL in it must return 200. A sitemap full of 404s teaches the daily visitor (ClaudeBot) that your site is broken.&lt;br&gt;
Serve real HTML on the homepage. AI crawlers do not run JavaScript. The homepage must contain the answer to "what is this site?" in plain text, with links to your best pages.&lt;br&gt;
Publish 3-5 real articles before launch day. GPTBot traverses everything; give it pages worth reading. Five solid pages beat fifty shells.&lt;br&gt;
That is the entire pre-launch crawl work. It took us the least effort of all nine measures, and it produced the most crawler traffic.&lt;/p&gt;

&lt;p&gt;What Should a New Site NOT Build First?&lt;br&gt;
Skip these until the foundations above exist. Our logs show they contribute nothing to crawl, however good they look on a roadmap:&lt;/p&gt;

&lt;p&gt;AI discovery endpoints (/ai/summary.json, /.well-known/ai.txt, ai-plugin.json, openapi.json) — zero crawler requests in 15 days. Audit tools like them; crawlers ignore them.&lt;br&gt;
FAQPage markup on every page — no crawl effect in our data. Add it later, on pages that are already candidates for citation.&lt;br&gt;
A monitoring dashboard — start with your server logs or platform analytics for the first week; you only need to know whether crawlers are arriving and what they hit.&lt;br&gt;
Freshness plumbing — worth building, but only once you have content and dates to keep honest.&lt;br&gt;
This does not mean those features are bad. It means they are phase-two work, and building them before the crawl foundation is optimizing a pipeline that is not flowing yet.&lt;/p&gt;

&lt;p&gt;FAQ&lt;br&gt;
What should a brand-new site build first for AI crawlers? A correct robots.txt, a sitemap.xml where every URL returns 200, and a server-rendered homepage with a one-line statement of what the site is plus a few real articles. Those were the only entry points every AI crawler used in our logs.&lt;/p&gt;

&lt;p&gt;Do AI discovery endpoints like /ai/summary.json help AI crawlers? Not in our 15 days of logs. GPTBot, ClaudeBot, PerplexityBot and OAI-SearchBot visited robots.txt and sitemap.xml almost every day but never requested any AI-facing endpoint.&lt;/p&gt;

&lt;p&gt;Why do GPTBot and ClaudeBot behave differently? ClaudeBot follows the classic crawl path — robots.txt and sitemap.xml daily, but barely any content. GPTBot ignores robots, reads llms.txt occasionally, and traverses the entire site — 121 content pages touched, including a single full-site pass on Aug 17.&lt;/p&gt;

&lt;p&gt;Does adding FAQPage markup get a page crawled more? In our data, no measurable crawl effect. It improves how a page is quoted once AI is already considering it — it is a citation-layer lever, not a crawl driver.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>geo</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Entity Association Density: The GEO Metric That Decides Whether AI Cites You</title>
      <dc:creator>jf lu</dc:creator>
      <pubDate>Fri, 14 Aug 2026 11:32:25 +0000</pubDate>
      <link>https://dev.to/jflu/entity-association-density-the-geo-metric-that-decides-whether-ai-cites-you-hgg</link>
      <guid>https://dev.to/jflu/entity-association-density-the-geo-metric-that-decides-whether-ai-cites-you-hgg</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;Two websites cover the same topic. The content quality looks roughly equal. Yet AI cites site A again and again — and never mentions site B.

If that sounds familiar, the difference is often not what you wrote, but how densely your entities connect.

&lt;span class="gs"&gt;**Entity Association Density**&lt;/span&gt; measures how interconnected and cross-referenced the entities in your content are — whether an article presents a single isolated concept, or weaves a connected web of related knowledge around its core topic. It is one of the strongest predictors of whether an AI answer engine cites your content, alongside Content Cross-Verification (every claim corroborated by other authoritative sources).

The evidence is concrete. Yext's 2025 analysis of &lt;span class="gs"&gt;**6.8 million AI citation behaviors**&lt;/span&gt; found that 86% of citations come from authoritative, brand-managed sources — websites, listings, and reviews — with brand-owned websites alone accounting for 44% of all citations.

Here is what that means in practice, and how to act on it.

&lt;span class="gu"&gt;## Low density vs. high density: a before-and-after&lt;/span&gt;

&lt;span class="gs"&gt;**Low entity association density:**&lt;/span&gt;
&lt;span class="gt"&gt;
&amp;gt; "CRM systems help businesses manage customer relationships. CRM systems can improve sales efficiency. When choosing a CRM system, you need to consider features, pricing, and implementation difficulty."&lt;/span&gt;

One entity — "CRM" — repeated with no connections. AI reads this and concludes: &lt;span class="ge"&gt;*this author only knows CRM.*&lt;/span&gt; There is nothing to extract beyond a single fact.

&lt;span class="gs"&gt;**High entity association density:**&lt;/span&gt;
&lt;span class="gt"&gt;
&amp;gt; "CRM systems (such as Salesforce, HubSpot) serve as the core tool for customer relationship management, working in conjunction with Marketing Automation (MA), Enterprise Resource Planning (ERP), and other systems. According to Yext's 2025 analysis of 6.8 million AI citations, 44% of AI citations come from brand-owned websites and 86% from brand-managed sources overall. Products like Salesforce's Einstein GPT and HubSpot's Breeze AI are redefining industry standards. But CRM implementation challenges are also significant — analysts report that a substantial share of CRM projects fail to meet expectations due to employee resistance."&lt;/span&gt;

Entities in one short passage: CRM, Salesforce, HubSpot, Marketing Automation, ERP, Yext, AI citations, Einstein GPT, Breeze AI. Every one supports the core topic from a different angle.

&lt;span class="gu"&gt;## Why AI rewards density&lt;/span&gt;

During RAG generation, AI faces an efficiency problem: it must extract as much useful information as possible from a limited content snippet. A passage that "only discusses CRM" gives AI one fact. A passage that connects CRM to Salesforce, Gartner data, and implementation challenges lets AI extract a multi-dimensional knowledge cluster from a single article.

The underlying logic: &lt;span class="gs"&gt;**the lower the information entropy, the higher the citation value.**&lt;/span&gt; Content that saves AI time is content AI cites.

&lt;span class="gu"&gt;## Four practical ways to raise your density&lt;/span&gt;

&lt;span class="gs"&gt;**1. Build an entity list before you write.**&lt;/span&gt;
Before drafting, list 5-10 entities around your core topic: main products, related technologies, industry authorities, competitors, upstream/downstream concepts, data sources, real-world cases. Then weave them in as logical chains — "because of this entity, that entity follows" — not as a keyword list.

&lt;span class="gs"&gt;**2. Use comparisons and connections.**&lt;/span&gt;
"What's the difference between A and B?" and "How do C and D work together?" are sentence structures that inherently carry high density. They force you to name and connect multiple entities.

&lt;span class="gs"&gt;**3. Add related-reading links.**&lt;/span&gt;
Close with 3-5 internal links to related articles. You are building an entity network within your site — AI crawlers follow these links to map your whole knowledge system.

&lt;span class="gs"&gt;**4. Balance density with quality.**&lt;/span&gt;
Density is not "more is better." Cramming in irrelevant entities creates noise. &lt;span class="gs"&gt;**Every entity should support or extend the core concept.**&lt;/span&gt; A simple test: if removing an entity doesn't weaken the article, it is redundant.

&lt;span class="gu"&gt;## The partner metric: Content Cross-Verification&lt;/span&gt;

Entity Association Density answers "does your content connect enough ideas?" Content Cross-Verification answers "can your claims be confirmed elsewhere?"

AI performs a de facto fact-check before citing. If only you say something, AI hedges — "according to Website A's report." If multiple authoritative sources say the same thing, AI cites it confidently as consensus.

That is why you should not only cite authoritative third-party sources in your content (Yext, Gartner, academic papers) but also aim to &lt;span class="ge"&gt;*be cited by*&lt;/span&gt; them — white papers, media reports, research mentions. A solo voice is an isolated claim; a corroborated claim is consensus.

&lt;span class="gu"&gt;## A one-sentence summary&lt;/span&gt;

AI does not cite the loudest site — it cites the site that gives it the most connected, verifiable knowledge in the fewest snippets. Entity Association Density and Content Cross-Verification are the two levers that make that happen.&lt;span class="sb"&gt;


&lt;/span&gt;&lt;span class="p"&gt;![&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="sx"&gt;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/vv6vlag9is4pchrlwda6.png&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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