If you’ve read anything about “getting cited by AI” in the last year, the advice was probably some combination of: add structured data, write clearer copy, fix your headings. All reasonable. We build a tool that does exactly that kind of analysis, so I’m biased toward it being useful.
Then we started logging where the AI answers were actually pulling from — the source types cited when an assistant answers a buying question in a given category — and the data made me rethink the priority order.
Company homepages were rarely the primary source.
What the citation mix actually looks like
When you ask ChatGPT, Perplexity, Gemini, or Claude something like “best project management tool for a small agency,” the model (usually with web search on) assembles an answer from retrieved documents. Log what those documents are across a category and a pattern shows up fast. Roughly:
- Review platforms — G2, Capterra, Trustpilot, category-specific review sites
- Industry directories — niche listings, “best X tools” databases
- Editorial roundups — blog posts titled “12 best X for Y in 2026”
- Forums and communities — Reddit threads, Stack Overflow, niche forums
- Brand-owned sites — usually the smallest slice
The exact mix varies a lot by category — developer tools skew heavily toward forums and GitHub, local services skew toward review sites and maps — but brand sites consistently underperform the intuition.
This makes sense once you think about retrieval rather than ranking. The model isn’t looking for the most authoritative page about you. It’s looking for documents that compare options in your category. Your homepage says “we’re the best.” A G2 category page says “here are 40 tools, ranked, with reviews.” Guess which one is more useful for answering a comparison question.
The uncomfortable implication
You can have perfect technical SEO, flawless JSON-LD, a beautifully clear homepage — and still be absent from the answer, because the answer was assembled from four sources you’re not on.
That doesn’t make on-page work pointless. It makes it necessary but not sufficient, and it changes the order you should do things in:
- Be present on the source types your category’s answers are built from
- Be parseable so that when the model does encounter you, it correctly understands what you are
Most advice covers step 2 exclusively. Step 1 is unglamorous, non-technical, and does more.
The technical half (step 2) — what actually helps
Since this is dev.to, here’s the part you can ship this afternoon.
Make your entity unambiguous
The single highest-leverage markup is Organization schema with a populated sameAs. It links your site to every other profile that represents you — which is exactly how a retrieval system corroborates that scattered mentions are the same entity:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Your Company",
"url": "https://yourcompany.com",
"description": "One plain sentence: what you sell and who it's for.",
"sameAs": [
"https://www.g2.com/products/your-company/reviews",
"https://www.crunchbase.com/organization/your-company",
"https://github.com/yourcompany",
"https://www.linkedin.com/company/yourcompany"
]
}
</script>
Enter fullscreen mode Exit fullscreen mode
Note what’s in that sameAs array: the review site and the directory. You’re explicitly connecting yourself to the sources that actually get cited.
Write passages that survive extraction
Retrieval works on chunks, not pages. A paragraph that only makes sense after reading the three above it is a bad chunk. A self-contained paragraph that answers one question is a good one.
Practically, that means:
<!-- Bad: requires context to be useful -->
## How it works
It integrates seamlessly and handles this automatically for you.
<!-- Good: survives being ripped out of context -->
## How does [Product] handle rate limiting?
[Product] applies a token bucket per API key, defaulting to 100
requests per minute. Limits are configurable per plan, and 429
responses include a Retry-After header.
Enter fullscreen mode Exit fullscreen mode
The second one can be lifted directly into an answer with attribution. The first can’t be lifted at all.
FAQPage schema formalizes this — it’s a machine-readable declaration of “here is a question and here is its self-contained answer”:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "How does the API handle rate limiting?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A token bucket per API key, defaulting to 100 requests per minute, configurable per plan. 429 responses include a Retry-After header."
}
}]
}
</script>
Enter fullscreen mode Exit fullscreen mode
Don’t block the crawlers you want
Easy to get wrong, especially if someone added a blanket rule during a scraping panic. Check your robots.txt for the AI crawlers you actually want indexing you (GPTBot, PerplexityBot, ClaudeBot, Google-Extended, among others). Blocking them is a legitimate choice — just make sure it’s a choice and not a leftover.
Comparison pages are retrieval bait
If the cited documents are mostly comparison content, one thing you control is publishing genuinely useful comparison content yourself. An honest “X vs Y” page — including where you lose — is far more likely to be retrieved for a comparison query than a features page. It also tends to be the highest-intent traffic you’ll get.
The honest caveats
Two things worth saying plainly, because a lot of content in this space overclaims:
Nobody can guarantee AI citations. You can improve the signals that correlate with being retrieved and understood. You cannot control what any model outputs next week. Anyone selling you a promised ranking in ChatGPT is selling you something they can’t deliver.
This is a moving target. Retrieval behavior differs across engines and changes with model updates. What I described is a snapshot, not a law. Measure your own category rather than trusting a generic list — including this one.
How to check your own category
Free version, takes ten minutes: open each of the four assistants, ask three or four buying questions a customer in your category would ask, and note which domains get cited. Not which companies get named — which domains get linked. Tally them. The pattern usually appears within a dozen questions.
If you’d rather not do it by hand, Greater Than Services (what I work on) runs those queries across ChatGPT, Perplexity, Gemini and Claude and gives you the source-type breakdown for your specific category, plus the schema fixes as copy-paste code. Free preview, no signup. But the manual method above genuinely works and costs nothing — the point of this post is the finding, not the tool.
TL;DR
Your homepage’s job is to be unambiguous when a model encounters it. Getting encountered mostly happens elsewhere — on the review sites, directories, roundups and forums that AI answers are actually assembled from.
Fix the markup. Then go get listed.
Curious what the citation mix looks like in other categories — if you run the manual check for yours, drop what you find in the comments. Especially interested in whether dev-tool categories really are as forum-heavy as they look.
답글 남기기