Disclosure: I'm Daehyeon Nam (남대현), founder and CEO of Trina Inc. (주식회사 트리나), 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.

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

What we measured

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.

Item Value
Queries 120 (10 regions × 10 procedures × 6 intents, stratified)
Reproducibility drawn with a seeded LCG — the same 120 queries come back every run
Engines ChatGPT, Gemini
Citations collected 2,435
Discrimination sample 2,597
Features 33
Control Google organic top results for the same queries

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: which pages show up in search but never get cited by AI, and why?

Finding 1 — two blogging platforms, completely inverted

Channel Google organic appearances AI citations
Naver Blog 128 (12.0%) 0
Tistory 13 (1.2%) 91

Naver Blog appeared in Google organic results for these queries roughly 10× more often than Tistory. Tistory took essentially all of the AI citations.

Across the entire Naver family — Blog, Cafe, Post, and Knowledge-iN combined — we found 1 citation out of 2,435, and that one was Knowledge-iN.

This isn't a channel performing slightly worse at the margin. It's a channel that exists on one surface and not on the other.

Finding 2 — the cause is crawl policy, not content

blog.naver.com/robots.txt opens like this:

# BOT ACCESS FOR THE PURPOSES OF AI TRAINING AND # RETRIEVAL-AUGMENTED GENERATION (RAG) IS STRICTLY PROHIBITED. User-agent: GPTBot Disallow: / User-agent: OAI-SearchBot Disallow: / User-agent: PerplexityBot Disallow: / User-agent: Google-Extended Disallow: / 

You can verify this yourself in one line:

curl -s https://blog.naver.com/robots.txt | head -20 

The distinction almost everyone collapses

This is the part I'd most like developers to take away, independent of anything else in this post.

  • GPTBot and Google-Extended are training crawlers.
  • OAI-SearchBot and ChatGPT-User are retrieval crawlers — they're read at answer time, and they're what makes your document quotable in a response.

Blocking the first group says "don't train a model on my writing."
Blocking the second says "make sure my writing can never be quoted in an AI answer."

Those are completely different decisions, and robots.txt lets you specify them separately. Plenty of sites make the second choice while believing they only made the first.

Naver Blog blocks both and explicitly forbids RAG in a comment. No amount of content quality gets through that gate.

Finding 3 — blocking domains convert search → citation at one-fifth the rate

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

Domain group Count Search queries Citation queries Conversion
Blocks AI bots 8 171 29 0.17×
Open 82 559 455 0.81×

Showing up in search converts to getting cited at roughly one-fifth the rate if you block AI crawlers.

Finding 4 — an accidental natural experiment

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

Blocking pattern Search ChatGPT Gemini
Training bots only (OAI-SearchBot, ChatGPT-User left open) 4 7 0
OpenAI bots blocked, Google-Extended left open 22 0 42
GPTBot only 5 0 10
All six blocked (blog.naver.com) 69 0 0

Across all 8 domains with a blocking policy, the bot blocked and the engine that failed to cite matched 8 out of 8.

The limitation, stated up front

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

This is also an observational 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.

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 — robots.txt directives are read the same way everywhere.

We killed our own first model before this one

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.

Then we tested it before shipping it, and threw most of it away:

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

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.

One more trap: "more is better" metrics were mostly channel proxies

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

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

The only features that held direction within self-owned sites were image alt ratio, heading tag count, location info, and practitioner info.

What to actually do

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

What we changed because of this

We publish to our customers' own domains. 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.

Trina Inc. (주식회사 트리나) — 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. https://trina.app · contact@trina.app

If you find a number above that's wrong, tell me and I'll fix it.