Discovery files are one lever. A handful of other mechanisms shape how AI
systems identify and represent a business — some worth the effort, some only
for particular kinds of site. Here is what each actually does.
Google Search
The preferred sources button
Google Search lets readers mark a site as a preferred source. Once
they do, your content is more likely to surface in Top Stories and carries a
“preferred” badge in AI Mode and AI Overviews. There is no file to publish and
no markup to add — the button simply prompts a reader to make that choice.
Check eligibility first
Only domain and subdomain level sites appear in the source preferences tool
— example.com and code.example.com qualify,
example.com/blog does not. Open google.com/preferences/source?q=yourdomain.com and look for
yourself. If you are not listed, neither implementation below will do
anything.
Live example
This is the real button, rendered by Google's script on this page:
Nothing appears here if you block third-party scripts, or if Google does not
serve a button for this domain — which is exactly the failure mode to weigh
below.
Official Google-branded button; far more clickable than a text link
data-theme and data-lang handle dark themes and locale
Updates itself if Google changes the button
Loads a third-party script — disclose it in your privacy notice
Renders nothing if the script is blocked or fails
Plain deeplink
No JavaScript
html
<a href="https://www.google.com/preferences/source?q=example.com">
Add as a preferred source
</a>
Nothing to load, nothing to disclose
Works with JavaScript off, and never renders empty
Style it to match your own design
No Google branding, so it reads as an ordinary link
You maintain the label and styling yourself
Load it where it belongs, not everywhere
If you use the script, put it on the one page carrying the button rather
than in a global layout. That is what this site does — the SwG script loads
on this page only, which is why the privacy notice can still say
fonts are the only third-party request everywhere else.
Schema.org Organization data in JSON-LD tells Google who you are
in a form it already consumes at scale. Google uses it to disambiguate you
from similarly named organisations, to choose which logo to show, and to
populate knowledge panel details.
Google recommends placing it on your home page or a single page describing the
organisation — an about page — rather than on every page. No property is
strictly required; add the ones that are true.
Deliberately so. identity.json serves AI systems reading
discovery files; this JSON-LD serves crawlers reading your pages. Populate
both from the same facts, and keep the logo minimum of 112×112px
in mind. If the two ever disagree, you have introduced exactly the
contradiction the file set exists to prevent.
IndexNow lets you tell search engines a URL has changed instead of waiting to
be re-crawled. Engines that adopt the protocol agree to share submitted URLs
with every other participating engine, so one ping propagates. That matters
for AI visibility because assistants sit on top of these indexes — a stale
index means stale answers about you.
Setup
Generate a key: 8 to 128 characters, letters, numbers and dashes only.
Host it as a UTF-8 text file at your root — example.com/{key}.txt
— containing the key and nothing else. This proves ownership.
Ping on publish or update.
submit
# one URL
curl "https://api.indexnow.org/indexnow?url=https://example.com/page&key=YOUR_KEY"
# many URLs — up to 10,000 per request
curl -X POST https://api.indexnow.org/indexnow \
-H "Content-Type: application/json" \
-d '{
"host": "example.com",
"key": "YOUR_KEY",
"urlList": [
"https://example.com/llms.txt",
"https://example.com/about"
]
}'
A 200 confirms receipt — not indexing. Submit only URLs that
genuinely changed; pinging unchanged pages wastes your quota and earns
nothing.
Unglamorous, free, and worth more than any of the above if you have not done
it.
Pick one canonical domain
www or bare, HTTP or HTTPS — choose one and 301 everything
else to it. A site reachable at four addresses can be read as four weakly
related entities.
Use one name, everywhere
The string in your llms.txt, your JSON-LD, your LinkedIn and
your invoices should match. Entity resolution is largely string matching;
every variant dilutes it. This is what brand.txt is for.
Link your profiles both ways
sameAs in your markup pointing out, and your profiles pointing
back. A reciprocal link is verifiable; a one-way claim is an assertion.
Say what you are not
Markets you left, services you never offered. Absence of a boundary is not
read as a boundary — it is filled by inference.
None of this is part of the AI Discovery Files specifications, which live in
the
project repository
. It is collected here because it comes up constantly once the files are
published. Each item links to its primary source — check there before making a
decision that matters, since these features change without notice.