<?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: Daehyeon Nam (남대현)</title>
    <description>The latest articles on DEV Community by Daehyeon Nam (남대현) (@daehyeonnam).</description>
    <link>https://dev.to/daehyeonnam</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%2F4189469%2F8ba087cd-e7ff-4dc5-819e-f35030000f30.jpg</url>
      <title>DEV Community: Daehyeon Nam (남대현)</title>
      <link>https://dev.to/daehyeonnam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/daehyeonnam"/>
    <language>en</language>
    <item>
      <title>Naver Blog: 128 Google results, 0 AI citations. We collected 2,435 citations to find out why.</title>
      <dc:creator>Daehyeon Nam (남대현)</dc:creator>
      <pubDate>Fri, 16 Oct 2026 19:47:21 +0000</pubDate>
      <link>https://dev.to/daehyeonnam/naver-blog-128-google-results-0-ai-citations-we-collected-2435-citations-to-find-out-why-2la0</link>
      <guid>https://dev.to/daehyeonnam/naver-blog-128-google-results-0-ai-citations-we-collected-2435-citations-to-find-out-why-2la0</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I'm Daehyeon Nam (남대현), founder and CEO of &lt;strong&gt;Trina Inc.&lt;/strong&gt; (주식회사 트리나), a four-person company in Gyeongju, South Korea that builds GEO (Generative Engine Optimization) agents. This post describes a study we ran ourselves, and there is one company link at the very end. I have a commercial interest here and I'd rather say so up front than bury it. Everything below is self-contained — you don't need to follow any link to check the reasoning.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Korea's dominant blogging platform, Naver Blog, shows up in Google results for Korean queries constantly. It shows up in generative AI answers &lt;strong&gt;never&lt;/strong&gt;. We measured it. The cause turned out not to be content quality. It was four lines in a &lt;code&gt;robots.txt&lt;/code&gt; file.&lt;/p&gt;

&lt;h2&gt;
  
  
  What we measured
&lt;/h2&gt;

&lt;p&gt;We designed a query set around dental care in Korea, ran it against two generative engines, and collected every source each engine offered as the basis for its answer.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Queries&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;120&lt;/strong&gt; (10 regions × 10 procedures × 6 intents, stratified)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reproducibility&lt;/td&gt;
&lt;td&gt;drawn with a seeded LCG — the same 120 queries come back every run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Engines&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;ChatGPT, Gemini&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Citations collected&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2,435&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discrimination sample&lt;/td&gt;
&lt;td&gt;2,597&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Features&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Control&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Google organic&lt;/strong&gt; top results for &lt;em&gt;the same queries&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The control group is the whole ballgame. Without it, a model just learns to separate "dental pages" from "random pages," which is trivially true and useless. What we actually wanted to know was: &lt;strong&gt;which pages show up in search but never get cited by AI, and why?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 1 — two blogging platforms, completely inverted
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Channel&lt;/th&gt;
&lt;th&gt;Google organic appearances&lt;/th&gt;
&lt;th&gt;AI citations&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Naver Blog&lt;/td&gt;
&lt;td&gt;128 (12.0%)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tistory&lt;/td&gt;
&lt;td&gt;13 (1.2%)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;91&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Naver Blog appeared in Google organic results for these queries roughly &lt;strong&gt;10× more often&lt;/strong&gt; than Tistory. Tistory took essentially all of the AI citations.&lt;/p&gt;

&lt;p&gt;Across the entire Naver family — Blog, Cafe, Post, and Knowledge-iN combined — we found &lt;strong&gt;1 citation out of 2,435&lt;/strong&gt;, and that one was Knowledge-iN.&lt;/p&gt;

&lt;p&gt;This isn't a channel performing slightly worse at the margin. It's a channel that &lt;strong&gt;exists on one surface and not on the other&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 2 — the cause is crawl policy, not content
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;blog.naver.com/robots.txt&lt;/code&gt; opens 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="c"&gt;# BOT ACCESS FOR THE PURPOSES OF AI TRAINING AND
# RETRIEVAL-AUGMENTED GENERATION (RAG) IS STRICTLY PROHIBITED.
&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;Disallow&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;OAI&lt;/span&gt;-&lt;span class="n"&gt;SearchBot&lt;/span&gt;   &lt;span class="n"&gt;Disallow&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;Disallow&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;Disallow&lt;/span&gt;: /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can verify this yourself in one line:&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; https://blog.naver.com/robots.txt | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-20&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The distinction almost everyone collapses
&lt;/h2&gt;

&lt;p&gt;This is the part I'd most like developers to take away, independent of anything else in this post.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GPTBot&lt;/code&gt; and &lt;code&gt;Google-Extended&lt;/code&gt; are &lt;strong&gt;training&lt;/strong&gt; crawlers.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;OAI-SearchBot&lt;/code&gt; and &lt;code&gt;ChatGPT-User&lt;/code&gt; are &lt;strong&gt;retrieval&lt;/strong&gt; crawlers — they're read at &lt;em&gt;answer time&lt;/em&gt;, and they're what makes your document quotable in a response.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Blocking the first group says &lt;em&gt;"don't train a model on my writing."&lt;/em&gt;&lt;br&gt;
Blocking the second says &lt;em&gt;"make sure my writing can never be quoted in an AI answer."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Those are completely different decisions, and &lt;code&gt;robots.txt&lt;/code&gt; lets you specify them separately.&lt;/strong&gt; Plenty of sites make the second choice while believing they only made the first.&lt;/p&gt;

&lt;p&gt;Naver Blog blocks both and explicitly forbids RAG in a comment. No amount of content quality gets through that gate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 3 — blocking domains convert search → citation at one-fifth the rate
&lt;/h2&gt;

&lt;p&gt;We took the top 60 cited domains plus the top 60 search domains (90 unique after dedup), fetched each &lt;code&gt;robots.txt&lt;/code&gt;, and parsed the allow/deny status of six AI bots: &lt;code&gt;GPTBot&lt;/code&gt;, &lt;code&gt;OAI-SearchBot&lt;/code&gt;, &lt;code&gt;ChatGPT-User&lt;/code&gt;, &lt;code&gt;Google-Extended&lt;/code&gt;, &lt;code&gt;PerplexityBot&lt;/code&gt;, &lt;code&gt;CCBot&lt;/code&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Domain group&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;Search queries&lt;/th&gt;
&lt;th&gt;Citation queries&lt;/th&gt;
&lt;th&gt;Conversion&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Blocks AI bots&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;171&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.17×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open&lt;/td&gt;
&lt;td&gt;82&lt;/td&gt;
&lt;td&gt;559&lt;/td&gt;
&lt;td&gt;455&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.81×&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Showing up in search converts to getting cited at roughly &lt;strong&gt;one-fifth the rate&lt;/strong&gt; if you block AI crawlers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding 4 — an accidental natural experiment
&lt;/h2&gt;

&lt;p&gt;Because blocking policy varies by domain, the web ran an experiment for us. The test: &lt;strong&gt;if which bot a domain blocks predicts which engine fails to cite it&lt;/strong&gt;, then this is a mechanism, not a correlation.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Blocking pattern&lt;/th&gt;
&lt;th&gt;Search&lt;/th&gt;
&lt;th&gt;ChatGPT&lt;/th&gt;
&lt;th&gt;Gemini&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Training bots only (&lt;code&gt;OAI-SearchBot&lt;/code&gt;, &lt;code&gt;ChatGPT-User&lt;/code&gt; left &lt;strong&gt;open&lt;/strong&gt;)&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI bots blocked, &lt;code&gt;Google-Extended&lt;/code&gt; left &lt;strong&gt;open&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;42&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;GPTBot&lt;/code&gt; only&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;All six blocked (&lt;code&gt;blog.naver.com&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;69&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Across all 8 domains with a blocking policy, the bot blocked and the engine that failed to cite &lt;strong&gt;matched 8 out of 8&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The limitation, stated up front
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;n = 8 domains, and we did not run a significance test.&lt;/strong&gt; What we are reporting is that all 8 matched. That's hard to wave away as coincidence, but it is &lt;em&gt;not&lt;/em&gt; the same as measuring an effect size. Finding 4 demonstrates a mechanism; it does not quantify one.&lt;/p&gt;

&lt;p&gt;This is also an &lt;strong&gt;observational&lt;/strong&gt; study. We did not run an intervention — same page, blocked vs. open, measured both ways. Finding 4 is the closest thing to an intervention available to us, and its sample is 8.&lt;/p&gt;

&lt;p&gt;The query set is one vertical (dental) in one country. We don't generalize the specific percentages to other markets. The mechanism isn't Korea-specific, though — &lt;code&gt;robots.txt&lt;/code&gt; directives are read the same way everywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  We killed our own first model before this one
&lt;/h2&gt;

&lt;p&gt;This was our second study. In the first, we collected ~95,000 pieces of AI-cited content and decomposed "what causes a citation" into 189 factors, with per-engine models.&lt;/p&gt;

&lt;p&gt;Then we tested it before shipping it, and &lt;strong&gt;threw most of it away&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Re-measured with &lt;strong&gt;query-level out-of-fold&lt;/strong&gt; splits: &lt;strong&gt;R² = −0.31&lt;/strong&gt;. Worse than predicting the mean. No predictive power at all.&lt;/li&gt;
&lt;li&gt;We were in a &lt;strong&gt;p &amp;gt; n&lt;/strong&gt; regime — more variables than data points. Such a model fits anything.&lt;/li&gt;
&lt;li&gt;We were evaluating &lt;strong&gt;in-sample&lt;/strong&gt;. That's grading yourself on questions you already saw.&lt;/li&gt;
&lt;li&gt;We were using &lt;strong&gt;globally random negatives&lt;/strong&gt;, which is why we got a model that trivially separated "dental page" from "any page."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We named those four failures and designed each one out. Query-level out-of-fold, per-query controls, permutation tests, and seeded reproducibility all came from that post-mortem.&lt;/p&gt;

&lt;h2&gt;
  
  
  One more trap: "more is better" metrics were mostly channel proxies
&lt;/h2&gt;

&lt;p&gt;List item count, image count, body length, and outbound link count all come out positive — &lt;em&gt;more correlates with citation&lt;/em&gt; — across the full sample. But &lt;strong&gt;compare clinic homepages only to other clinic homepages and the direction flips&lt;/strong&gt; (lists 36 vs 61, images 11 vs 21).&lt;/p&gt;

&lt;p&gt;Long lists and lots of links are what &lt;em&gt;portals&lt;/em&gt; look like. &lt;strong&gt;The channel is what's getting cited, not the trait.&lt;/strong&gt; If you read correlations without holding the channel fixed, you'll produce a content checklist that tells you to cosplay as a portal.&lt;/p&gt;

&lt;p&gt;The only features that held direction &lt;em&gt;within&lt;/em&gt; self-owned sites were image alt ratio, heading tag count, location info, and practitioner info.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to actually do
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fetch the &lt;code&gt;robots.txt&lt;/code&gt; of every channel you publish to&lt;/strong&gt; — not just your own domain, the platforms too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separate the two decisions.&lt;/strong&gt; If you want to refuse training but still be quotable: block &lt;code&gt;GPTBot&lt;/code&gt; and &lt;code&gt;Google-Extended&lt;/code&gt;, leave &lt;code&gt;OAI-SearchBot&lt;/code&gt; and &lt;code&gt;ChatGPT-User&lt;/code&gt; open.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't infer AI visibility from search visibility.&lt;/strong&gt; The Naver/Tistory gap we measured is a 10-to-1 inversion between the two surfaces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Measure citations directly.&lt;/strong&gt; Ranking is not citation. There are pages sitting at the top of organic that have never once been quoted.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What we changed because of this
&lt;/h2&gt;

&lt;p&gt;We publish to &lt;strong&gt;our customers' own domains&lt;/strong&gt;. We don't accumulate core content on platforms whose crawl policy we can't control. That's not a preference — it's the conclusion of the measurement above.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Trina Inc.&lt;/strong&gt; (주식회사 트리나) — founded 2026-08-21, Gyeongju, South Korea, 4 people. We build GEO agents: query discovery, content generation, publishing to the customer's own domain, and direct measurement of whether AI engines actually cite them. &lt;a href="https://trina.app" rel="noopener noreferrer"&gt;https://trina.app&lt;/a&gt; · &lt;a href="mailto:contact@trina.app"&gt;contact@trina.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you find a number above that's wrong, tell me and I'll fix it.&lt;/p&gt;

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