DEV Community

Shan Liu
Shan Liu

Posted on

I spent a month doing AEO for a tiny niche site. Most of the advice was wrong.

"Answer Engine Optimization" is the new gold rush: get your site cited by ChatGPT, Perplexity, and Google's AI Overviews. There is an entire cottage industry selling advice on how — add schema markup, publish more pages, buy a tool.

I run a small bilingual Chinese-astrology calculator (auspiceoracle.com). It's about as niche and low-authority as a site gets, which makes it a decent lab rat: zero brand signal, zero backlinks, nothing to confound the measurement. Before writing a single content page I did two things most AEO advice skips — I read the actual studies, and I set up measurement before launch. Here's what survived contact with the data.

Finding 1: schema markup is not an AEO lever

This one hurt, because adding JSON-LD is the single most-repeated piece of AEO advice.

The best evidence available is an Ahrefs difference-in-differences study: 1,885 pages that added JSON-LD, each matched to 3 control URLs on other domains at similar pre-period citation levels, 30-day windows, four statistical approaches. Result:

Platform Citation change after adding JSON-LD
Google AI Overviews −4.6% (small but significant decline)
Google AI Mode +2.4% — indistinguishable from zero
ChatGPT +2.2% — indistinguishable from zero

The much-quoted counter-stat ("AI-cited pages are 3× more likely to have JSON-LD") is confounding, and Ahrefs says so themselves: schema lives on better-maintained sites. Four independent mechanism studies agree on why — when LLMs fetch a live page they extract visible HTML and ignore the structured-data layer. One test planted facts that existed only in FAQ schema; no platform used them. Another fed models deliberately invalid schema and they happily extracted from it — the script block is being read as plain text.

What I kept: an extractable, plain-language definition in the first two visible sentences of every content page. That's the thing the machines actually read. Schema stays on the pages as cheap rich-result table stakes, but I budget zero AEO effort against it.

Finding 2: page volume is a weak signal, and you can't shortcut brand

The other standard advice is programmatic content: generate hundreds of pages, win on surface area. Ahrefs' correlation study across 75,000 brands ranks the signals that track AI visibility:

Signal Spearman ρ
YouTube mentions ~0.74
Branded web mentions 0.66–0.71
Branded search volume 0.35–0.47
Domain Rating 0.27–0.33
Number of site pages ~0.19
Backlinks ~0.18–0.23

Read the fine print, though, before acting on any row: the sample is filtered to DR>40 brands, the correlations are zero-order (nobody partialled out brand size), and there's no independent replication. The honest inference isn't "make YouTube videos" — it's that AI visibility tracks composite brand prominence, which a new site does not have and cannot fake with page count. For a small site, both the vendor pitch ("more pages!") and the counter-pitch ("pages don't matter!") are extrapolations from a population you're not in. The studies literally sampled pages that already had 100+ AI citations. Yours have zero. Nobody has published data about you.

Finding 3: don't out-define Wikipedia; map the entity gaps

My original plan assumed the English terminology in my niche was unclaimed. It wasn't — Wikipedia holds the head term with an actively-growing article, and LLMs demonstrably over-index on encyclopedic sources. Any page whose job is to out-define Wikipedia is dead on arrival.

But the MediaWiki API tells you something more useful than "Wikipedia exists": which sub-concepts have no article and no redirect. In my niche, a half-dozen core glossary terms return missing — definitionally seated at the head, structurally scattered below. That gap map, not keyword volume, became the content plan.

The part nobody sells: measurement

AI crawlers have no submission channel. You can't ping GPTBot. Zero crawls means "not discovered yet," not "misconfigured." The only proactive lever is indirect: Bing's index feeds OpenAI's and Copilot's retrieval, so IndexNow (one key file + one POST per publish) is the single highest-leverage submission you can make. Everything else is external links doing discovery work.

My production box runs Next.js behind a tunnel with no nginx, so there were no access logs to mine. The fix was one line in the middleware — match the AI user-agents, console.log a line, and the process manager's logs become the dataset:

# UA × hit count, from pm2 logs
grep -h '[ai-bot]' ~/.pm2/logs/app-out*.log | awk '{print $3}' | sort | uniq -c | sort -rn
Enter fullscreen mode Exit fullscreen mode

Two distinctions matter when you read those logs:

  • GPTBot / ClaudeBot / PerplexityBot = your page entered a crawl queue. Necessary, not sufficient.
  • ChatGPT-User / Perplexity-User / Claude-User = a human saw your site cited in an answer and the assistant fetched the page for them. This is the metric. Everything else is leading-indicator noise.

And one thing you cannot retrofit: a baseline. Before the pages went live I ran a fixed panel of six prompts through ChatGPT, Perplexity, and Google (18 cells), recorded who got cited, and archived screenshots. All 18 cells: zero citations of us, as expected. The discipline is the same panel every month, questions never edited — change the questions and you've changed the ruler. Without the pre-launch zero row, any future citation could be "maybe we already had that."

Early returns, for honesty's sake: on launch day one crawler (ClaudeBot) fetched all ten new pages exactly once each, like it was walking a checklist. The others: zero. Citations: zero. This is a 90-day experiment, not a success story — which is exactly why the baseline row matters.

The contrarian call: let the training crawlers in

Standard advice for content sites is to allow retrieval bots but block training crawlers (CCBot, GPTBot-as-trainer, Google-Extended). I did the opposite — explicit allow for everything.

The reasoning is cold-start economics. Nobody's model "knows" my site's terminology or that it exists. Being ingested into training data is how that changes, and the lag is a full model generation — a cost you pay now for visibility later. Blocking training crawlers protects content whose value is exclusivity; a new site has none. I wrote down the reversal condition (if content gets scraped-and-republished at scale, or citations stabilize, revisit), which keeps it a decision instead of a default.

What I'd tell you to do

  1. Write the definition in the first two visible sentences. Skip the schema debate entirely.
  2. Map entity gaps with the MediaWiki API before writing anything.
  3. Set up IndexNow; accept that everything else is discovery-by-links.
  4. Log AI user-agents at the edge, and learn the -Bot vs -User distinction.
  5. Record a citation baseline before launch. Same prompts, monthly, forever.
  6. Treat every AEO study as data about someone else's population until your own logs say otherwise.

The meta-lesson: AEO in 2026 is where SEO was in 2003 — long on vendors, short on mechanisms. The mechanisms are checkable. Check them.

The site in question, if you want to see the "extractable first two sentences" pattern live: how the engine works, and the true solar time deep-dive that became the first post in this series.

Top comments (2)

Collapse
 
citedy profile image
Dmitry Sergeev

finally someone mentioning that a lot of aeo "tips" are just basic seo rebranded lol. did you notice a big difference between perplexity and chatgpt citations?

Collapse
 
shanni profile image
Shan Liu

Honest answer: no, because I don't have a citation delta yet lol. There's nothing to compare between Perplexity and ChatGPT on my end.

The only difference so far is crawl-side: on launch day ClaudeBot fetched all ten pages exactly once each, while GPTBot and PerplexityBot haven't shown up at all.

What I'd expect from the mechanisms, and what the monthly panel should test: Perplexity is retrieval-first and fetches live at query time, so it should react to new pages faster. ChatGPT leans much more on Bing's index plus training data, which is why IndexNow is the only real submission lever there and why the lag should be longer.