# You Didn't Know GEO: AI Visibility Principles, Practices, and Trade-offs
**作者**: Tw93
**日期**: 2026-05-03T13:33:18.000Z
**来源**: [https://x.com/HiTw93/status/2050931710066565374](https://x.com/HiTw93/status/2050931710066565374)
---

## One Hour to Make AI Find Your Content
A few friends pinged me recently saying my open source tools were showing up when they asked AI questions. I hadn’t done anything deliberate, so I figured: why not spend an hour structuring things properly? After doing it, I fired off a quick tweet, but the notes were messy. People seemed genuinely interested, so I decided to write it up as a proper article for reference.
I hate gaming rankings or generating junk content. This article won’t teach you shortcuts. It’s about helping AI better understand the content you already have.
I looked into why it happened and found that AI search runs on entirely different logic. Traditional SEO is about fighting into the top 10, but 83% of AI Overview citations come from pages outside the top 10. AI rewards clear structure and reliable sourcing, not PageRank. My projects aren’t big, but the READMEs and docs are well-written enough that AI picks them up where bigger sites have thin content. That’s probably why friends were seeing Pake and MiaoYan in their AI results.
AI search is growing fast: 527% year-over-year in the first half of 2025, ChatGPT hit 900 million weekly active users by February 2026, and referral traffic converts at roughly 5x the rate of traditional search. But it still accounts for less than 1% of total referral traffic. This is a brand visibility strategy, not a traffic strategy. Worth an hour of setup, not a week, because your product is your real competitive advantage, not this.

## Use robots.txt to Sort Out Crawler Types
Most people treat robots.txt as a switch: either block AI crawlers or allow them all. But AI crawlers come in several types, and they do different things.
Training crawlers (GPTBot, ClaudeBot, Meta-ExternalAgent, CCBot) take your content to train models. Blocking them keeps your content out of training data but doesn’t affect current AI search results.
Search and retrieval crawlers (OAI-SearchBot, Claude-SearchBot, PerplexityBot) fetch content in real time to answer user queries. Block these and you vanish from AI search.
User-triggered fetchers (ChatGPT-User, Claude-User, Perplexity-User, Google-Agent) only fire when someone pastes your URL into a chat window. Block them and users asking “summarize this page” get nothing.
Opt-out tokens (Google-Extended, Applebot-Extended) aren’t real crawlers. They’re signals you declare in robots.txt to opt out of AI training.
Undeclared crawlers (Bytespider, xAI’s Grok bot) don’t identify themselves and don’t necessarily follow the rules.

My approach: allow search/retrieval and user-triggered crawlers, block training and undeclared ones.
```
# Search & retrieval: allow
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
# User-triggered: allow
User-agent: ChatGPT-User
Allow: /
User-agent: Claude-User
Allow: /
# Training: block
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
# Opt-out tokens
User-agent: Google-Extended
Disallow: /
# Undeclared: block
User-agent: Bytespider
Disallow: /
```
## Write Your llms.txt and Cross-Link Your Sites
llms.txt is a new standard, similar to robots.txt but designed for AI consumption. You place a Markdown file at your site root describing what your site does, its key pages, and who’s behind it. AI systems prioritize this file when they crawl your content.
BuiltWith tracks over 840,000 websites that have deployed llms.txt, including Anthropic, Cloudflare, Stripe, and Vercel. But in SE Ranking’s survey of 300,000 domains, adoption is only 10%. It’s still early, and being early is an advantage.
The format is simple:
```
# Your Project Name
> One-line description of what this is.
## Links
- [Documentation](https://yoursite.com/docs)
- [GitHub](https://github.com/you/project)
- [Blog](https://yoursite.com/blog)
## About
Short paragraph explaining the project, its purpose,
key features, and what makes it different.
```

After creating yours, submit it to directory.llmstxt.cloud, llmstxt.site, and the llms-txt-hub repository on GitHub via PR.
I also did something interesting: I made each site’s llms.txt reference the others. I maintain tw93.fun, weekly.tw93.fun, and yobi.tw93.fun. Each site’s llms.txt links to the rest, forming a mesh. An AI crawler entering through any one site can follow the links and discover everything else.

These changes take effect after crawlers revisit your site, usually within a few days. After that, try searching for your project name in ChatGPT. The citation sources and description accuracy should improve.

## Provide Full Content and Markdown Routes
llms.txt is the summary. llms-full.txt is the complete version, typically 30-60KB, containing project descriptions, FAQs, usage scenarios, competitive comparisons, and README excerpts. Mintlify’s CDN analysis shows llms-full.txt gets 3-4x more traffic than llms.txt. AI systems that find the summary want the full version.
Markdown routes go further. Evil Martians recommend providing a .md version of every page on your site. A 15,000-token HTML page becomes a 3,000-token Markdown document, 80% less noise.

The simplest way to tell AI you have a Markdown version is adding this to your page’s <head>:
```
<link rel="alternate" type="text/markdown" href="/page.md" />
```
Claude Code and Cursor already send Accept: text/markdown headers when fetching docs. This is standard HTTP/1.1 content negotiation, around since 1997.
## Register Your Site with Search Platforms
The robots.txt and llms.txt work from the previous sections makes your content readable to AI, but AI has to find you first. ChatGPT’s search runs on Bing, Google AI Overview uses Google’s own index, and Perplexity also relies on search APIs. If your pages aren’t indexed by search engines, none of the structuring work above matters. So the first step is making sure Google and Bing have indexed your site.
The setup is straightforward: go to Google Search Console, verify your domain via DNS or HTML file upload, then submit your sitemap URL (usually yoursite.com/sitemap.xml). Check the “Pages” indexing report to see which pages are indexed and which have issues. If an important page isn’t indexed, use the URL Inspection tool to manually request indexing.
You might think Bing doesn’t matter, but Copilot, DuckDuckGo, and Yahoo all run on Bing’s index underneath. Register with Bing Webmaster Tools, submit your sitemap, and check the AI Performance panel to see how often AI cites your content. While you’re there, set up IndexNow so Bing gets notified immediately when you publish new content instead of waiting for a crawler to find it.
Setting up IndexNow means placing an API key file at your site root, then sending a POST request to api.indexnow.org/indexnow with the list of changed URLs whenever you publish. Bing picks them up within minutes. Many static site generators and CMS platforms have IndexNow plugins available.

Google Search Console doesn’t have an AI-specific panel yet, but submitting your sitemap and monitoring indexing status is still worth doing. Google’s AI Overviews pull from a wider range than traditional results, so even pages that don’t rank in the top 10 can appear in AI-generated answers.
Perplexity has more users than you’d expect. They run a publisher program at pplx.ai/publisher-program. Once approved, you get an 80/20 revenue share and access to citation analytics data.
## I Built a Dedicated Knowledge Site for AI
Instead of waiting for AI to scrape information from scattered sources, give it a single entry point with everything organized.
A knowledge site should provide three layers: an overview (llms.txt), a full version (llms-full.txt, 30-60KB), and standalone knowledge pages for each core project. Add structured JSON APIs so AI tools can fetch data programmatically. Pull data live from upstream sources like the GitHub API with caching that refreshes periodically, keeping maintenance cost near zero.
One thing that’s easy to miss: give AI a narrative structure, not just a list of projects. If you have multiple projects, write a description that connects them, how they relate, your technical direction, the overall picture. When AI answers “who is this person” or “what does this team do,” a coherent narrative works much better than a flat list.
My implementation is called Yobi (from the Japanese 呼び / よび, meaning “to call” or “to summon”). It serves an llms.txt overview, a 50KB llms-full.txt, per-project pages, and four JSON endpoints (/api/profile, /api/projects, /api/blog, /api/weekly) that pull live data from the GitHub API with ISR caching that refreshes hourly. Stack: Next.js + TypeScript on Vercel.

The JSON API returns structured project data with live GitHub stats:

## Give Each Project Its Own Page
Each project needs its own standalone page, not a row in a list, but a self-contained Markdown document with a citable summary, core features, competitive comparisons, use cases, and install commands. Ahrefs found that cited pages have titles with higher semantic similarity to user queries, and natural-language URL slugs (like /projects/pake) get cited more than opaque IDs (like /page?id=47).

URL structure matters. /projects/pake tells the model what the page is about before it reads a single line. /page?id=47 tells it nothing.
## Sync Structured Data to Your Main Domain
Subdomains carry less authority than root domains. AI crawlers that discover example.com won’t automatically find docs.example.com or api.example.com. If your llms.txt, project pages, and API data are spread across subdomains, AI may only see part of the picture.
The fix is to mirror key structured data onto your main domain so that example.com/llms.txt, example.com/projects/xxx.md, and example.com/api/projects.json all live under one roof. AI crawlers discover your main site through search indexing and find everything without leaving. Implementation options include scheduled CI sync, build-time fetching, or reverse proxying. I use a GitHub Action that syncs subdomain data to the blog repo nightly.

When launching a new site, use a checklist to avoid gaps. Core items: robots.txt (categorized crawler permissions), llms.txt (site summary with cross-references), sitemap (submitted to search engines), Bing Webmaster Tools (enable IndexNow), Google Search Console (monitor indexing). Each site’s llms.txt should reference the others, forming a discovery mesh.
The easiest trap when doing this work is getting carried away with every GEO technique you come across and trying to add them all, creating a mess and losing sight of what matters.
## These Didn’t Work
<meta name="ai-content-url"> and <meta name="llms">: no spec, no adoption by any major AI system.
/.well-known/ai.txt: multiple competing proposals, no real adoption. Wait for a winner.
HTML comments with AI hints: parsers strip comments before AI sees the content.
User-Agent sniffing to serve Markdown: returning different content to bots versus humans is cloaking. Google will penalize you.
Unofficial AI meta tags: unless a major AI provider explicitly documents support, it’s just noise.
## JSON-LD Isn’t as Useful as You’d Think
I initially thought JSON-LD would be powerful for AI visibility. Deeper research showed a more complicated picture. SearchVIU ran an experiment where they put data only in JSON-LD without showing it on the page. All five AI systems they tested failed to find it. Mark Williams-Cook’s follow-up experiment showed that LLMs treat <script type="application/ld+json"> as plain text, reading whatever words are inside without understanding the structured semantics.
The one confirmed exception is Bing/Copilot, which uses JSON-LD to enrich its search index. Keep existing JSON-LD (it helps Bing/Copilot and traditional rich results), but don’t add it expecting ChatGPT or Claude to cite you more.
## What the Research Data Says
The GEO paper from Princeton and IIT Delhi, published at KDD 2024, found that adding authoritative citations improves AI visibility by 115%, relevant statistics by 33%, and direct quotations from credible sources by 43%.

My friend @yaojingang has been doing serious research on GEO. His geo-citation-lab ran 602 prompts across three platforms and scraped tens of thousands of pages for feature analysis. His full report is worth reading. Here are the patterns most useful for content creators.
Specificity. Pages with real data, clear definitions, and side-by-side comparisons see over 50% higher impact than vague, general pages. Step-by-step structure also helps noticeably. Pure FAQ format actually hurts. Those GEO tools that tell you “add FAQ to boost your score” are giving advice the data contradicts, which also validates my decision to drop FAQ sections from my own pages.
Content depth. AI doesn’t favor short summaries. It favors long content it can slice into reusable segments. High-impact pages average nearly 2,000 words with 10+ headings. Low-impact pages average just 170 words, over a 10x gap. The sweet spot is 1,000 to 3,000 words.
Relevance. All mechanical SEO metrics (heading hierarchy, meta descriptions, keyword density) predict less than one single variable: whether your page content actually answers the question the user asked.
Platform differences. ChatGPT cites fewer sources but uses each deeply; its per-citation impact is over 5x that of Google. Perplexity casts a wider net, citing more than twice as many sources. To get cited by ChatGPT, go deep on individual pages. To get cited by Perplexity, go wide.
Content type. Official websites, news, and industry verticals account for roughly 80% of citation sources. But encyclopedia-style and explainer pages have 3x the impact of news pages. English content accounts for over 83% of global citation samples, so projects targeting an international audience need English versions.
## Retrieved Doesn’t Mean Cited
Of all the pages ChatGPT retrieves during a session, only 15% end up in the final answer. The other 85% are never cited. Getting into the retrieval pool is just the first hurdle. The model still has to decide which pages are worth citing.
Ahrefs found that cited pages have titles with noticeably higher semantic similarity to user queries, and pages with descriptive natural-language URL slugs get cited more than those with opaque IDs. This is why llms.txt and Markdown routes help: they give the model a clean, unambiguous signal about what your page covers.
Brands get cited 6.5x more often through third-party sources than through their own domains. Someone praising your project on Reddit or Hacker News carries more weight than your own marketing copy. That’s exactly why having a well-structured llms.txt matters: it gives the model a citable anchor to point to, even when the conversation that triggered the query happened somewhere else.
There are AI SEO audit tools that score your site and tell you to add FAQ sections, trust pages, or more text. Don’t let scores drive your decisions. The test is simple: does every paragraph you add contain information that isn’t already on the page? If not, don’t add it. I once added a FAQ to Yobi that just restated what the About section already said, purely to push the score up. That’s padding. I removed it.
Everything here is about helping AI understand what you have accurately, giving it a clean working environment. That lasts longer than any shortcut.
The basic configuration takes about an hour. The knowledge endpoint and per-project pages take longer, but once the data structure is in place, maintenance is easy. The daily sync runs on its own.
Give it a few days for crawlers to pick up the changes, then try searching for your name or project in ChatGPT, Perplexity, or Claude. The citations should be more accurate.

AI citation attribution is still unreliable. CJR and Tow Center tested 200 AI-generated citations and found 153 with partial or complete errors. Do the structural work because it makes your content easier to access accurately, but don’t treat an AI citation as proof that users saw your exact words. The mechanism is still improving
If you have your own products, blog, or website, give it a try. You can also hand this article to Claude Code and let it handle most of the setup.
## Further Reading
1. GEO: Generative Engine Optimization - Princeton & IIT Delhi, KDD 2024
2. Overseas GEO Research - geo-citation-lab
3. llms.txt standard specification
4. Why ChatGPT Cites One Page Over Another - Ahrefs
5. GEO Benchmark Study 2026 - ConvertMate
6. Optimizing Content for AI Discovery - Evil Martians
7. How LLMs Actually Use Schema Markup - SearchVIU
8. AI Search Has a Citation Problem - CJR / Tow Center
9. LLMs.txt: Why Brands Rely On It and Why It Doesn’t Work - SE Ranking
10. How Often Do LLMs Visit llms.txt? - Mintlify
11. IndexNow Protocol Documentation
## 相关链接
- [Tw93](https://x.com/HiTw93)
- [@HiTw93](https://x.com/HiTw93)
- [2.5K](https://x.com/HiTw93/status/2050931710066565374/analytics)
- [directory.llmstxt.cloud](https://directory.llmstxt.cloud/)
- [llmstxt.site](https://llmstxt.site/)
- [tw93.fun](https://tw93.fun/)
- [weekly.tw93.fun](https://weekly.tw93.fun/)
- [yobi.tw93.fun](https://yobi.tw93.fun/)
- [Google Search Console](https://search.google.com/search-console)
- [yoursite.com/sitemap.xml](https://yoursite.com/sitemap.xml)
- [api.indexnow.org/indexnow](https://api.indexnow.org/indexnow)
- [pplx.ai/publisher-program](https://pplx.ai/publisher-program)
- [example.com](https://example.com/)
- [docs.example.com](https://docs.example.com/)
- [api.example.com](https://api.example.com/)
- [example.com/llms.txt](https://example.com/llms.txt)
- [example.com/projects/xxx.md](https://example.com/projects/xxx.md)
- [example.com/api/projects.json](https://example.com/api/projects.json)
- [@yaojingang](https://github.com/yaojingang)
- [geo-citation-lab](https://github.com/yaojingang/geo-citation-lab)
- [full report](https://github.com/yaojingang/geo-citation-lab/blob/main/04-repet/final_report.md)
- [GEO: Generative Engine Optimization - Princeton & IIT Delhi, KDD 2024](https://arxiv.org/abs/2311.09735)
- [Overseas GEO Research - geo-citation-lab](https://github.com/yaojingang/geo-citation-lab)
- [llms.txt standard specification](https://llmstxt.org/)
- [Why ChatGPT Cites One Page Over Another - Ahrefs](https://ahrefs.com/blog/why-chatgpt-cites-pages/)
- [GEO Benchmark Study 2026 - ConvertMate](https://www.convertmate.io/research/geo-benchmark-2026)
- [Optimizing Content for AI Discovery - Evil Martians](https://evilmartians.com/chronicles/optimizing-content-for-ai-discovery)
- [How LLMs Actually Use Schema Markup - SearchVIU](https://searchviu.com/en/how-llms-actually-use-schema-markup/)
- [AI Search Has a Citation Problem - CJR / Tow Center](https://www.cjr.org/tow_center/we-compared-eight-ai-search-engines-theyre-all-bad-at-citing-news.php)
- [LLMs.txt: Why Brands Rely On It and Why It Doesn’t Work - SE Ranking](https://seranking.com/blog/llms-txt/)
- [How Often Do LLMs Visit llms.txt? - Mintlify](https://www.mintlify.com/blog/how-often-do-llms-visit-llms-txt)
- [IndexNow Protocol Documentation](https://www.indexnow.org/documentation)
- [Upgrade to Premium](https://x.com/i/premium_sign_up)
- [9:33 PM · May 3, 2026](https://x.com/HiTw93/status/2050931710066565374)
- [2,598 Views](https://x.com/HiTw93/status/2050931710066565374/analytics)
---
*导出时间: 2026/5/3 22:19:54*
---
## 中文翻译
# 你不了解的 GEO:AI 可见性原则、实践与权衡
**作者**: Tw93
**日期**: 2026-05-03T13:33:18.000Z
**来源**: [https://x.com/HiTw93/status/2050931710066565374](https://x.com/HiTw93/status/2050931710066565374)
---

## 一小时让 AI 发现你的内容
最近有几个朋友 ping 我,说他们在问 AI 问题时,我的开源工具出现了。我并没有刻意做什么,所以我想:为什么不花一个小时把结构整理好呢?做完之后,我发了一条推特,但笔记很乱。大家似乎真的很感兴趣,所以我决定把它写成一篇正规的文章供参考。
我讨厌操纵排名或制造垃圾内容。这篇文章不会教你捷径。它是关于帮助 AI 更好地理解你已经拥有的内容。
我调查了原因,发现 AI 搜索运行在完全不同的逻辑之上。传统 SEO 是为了挤进前 10 名,但 83% 的 AI 摘要引用来自前 10 名之外的页面。AI 奖励清晰的结构和可靠的来源,而不是 PageRank。我的项目不大,但 README 和文档写得足够好,以至于在更大的网站内容薄弱的地方,AI 会抓取它们。这可能就是朋友们在 AI 结果中看到 Pake 和 MiaoYan 的原因。
AI 搜索增长很快:2025 年上半年同比增长 527%,ChatGPT 在 2026 年 2 月达到 9 亿周活跃用户,推荐流量的转化率大约是传统搜索的 5 倍。但它仍然只占总推荐流量的不到 1%。这是一种品牌可见性策略,而不是流量策略。值得花一个小时设置,而不是一周,因为你的产品才是你真正的竞争优势,而不是这个。

## 使用 robots.txt 区分爬虫类型
大多数人把 robots.txt 当成一个开关:要么屏蔽所有 AI 爬虫,要么全部允许。但 AI 爬虫分为几种,它们做不同的事情。
训练爬虫(GPTBot、ClaudeBot、Meta-ExternalAgent、CCBot)获取你的内容来训练模型。屏蔽它们可以阻止你的内容进入训练数据,但不会影响当前的 AI 搜索结果。
搜索和检索爬虫(OAI-SearchBot、Claude-SearchBot、PerplexityBot)实时获取内容以回答用户查询。屏蔽这些,你就会从 AI 搜索中消失。
用户触发的获取器(ChatGPT-User、Claude-User、Perplexity-User、Google-Agent)仅在有人将你的 URL 粘贴到聊天窗口时才会触发。屏蔽它们,那些要求“总结此页面”的用户将一无所获。
退出令牌(Google-Extended、Applebot-Extended)不是真正的爬虫。它们是你在 robots.txt 中声明以退出 AI 训练的信号。
未声明的爬虫(Bytespider、xAI 的 Grok bot)不表明身份,也不一定遵守规则。

我的做法:允许搜索/检索和用户触发的爬虫,屏蔽训练和未声明的爬虫。
```
# 搜索与检索:允许
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
# 用户触发:允许
User-agent: ChatGPT-User
Allow: /
User-agent: Claude-User
Allow: /
# 训练:屏蔽
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
# 退出令牌
User-agent: Google-Extended
Disallow: /
# 未声明:屏蔽
User-agent: Bytespider
Disallow: /
```
## 编写你的 llms.txt 并交叉链接你的站点
llms.txt 是一个新标准,类似于 robots.txt,但是为 AI 消费而设计的。你在站点根目录放置一个 Markdown 文件,描述你的站点做什么、关键页面以及背后是谁。AI 系统在抓取你的内容时会优先处理此文件。
BuiltWith 跟踪到超过 840,000 个网站部署了 llms.txt,包括 Anthropic、Cloudflare、Stripe 和 Vercel。但在 SE Ranking 对 300,000 个域名的调查中,采用率只有 10%。现在还早,早入局就是优势。
格式很简单:
```
# 你的项目名称
> 一句话描述这是什么。
## 链接
- [文档](https://yoursite.com/docs)
- [GitHub](https://github.com/you/project)
- [博客](https://yoursite.com/blog)
## 关于
简短的一段话解释项目、其目的、
关键功能以及它的独特之处。
```

创建好你的文件后,将其提交到 directory.llmstxt.cloud、llmstxt.site,以及通过 PR 提交到 GitHub 上的 llms-txt-hub 仓库。
我还做了一件有趣的事:我让每个站点的 llms.txt 引用其他站点。我维护着 tw93.fun、weekly.tw93.fun 和 yobi.tw93.fun。每个站点的 llms.txt 都链接到其余站点,形成一个网状结构。进入任何一个站点的 AI 爬虫都可以跟随链接并发现其他所有内容。

这些更改在爬虫重新访问你的站点后生效,通常在几天内。之后,尝试在 ChatGPT 中搜索你的项目名称。引用来源和描述的准确性应该会有所提高。

## 提供完整内容和 Markdown 路由
llms.txt 是摘要。llms-full.txt 是完整版,通常 30-60KB,包含项目描述、FAQ、使用场景、竞品比较和 README 节选。Mintlify 的 CDN 分析显示,llms-full.txt 的流量是 llms.txt 的 3-4 倍。找到摘要的 AI 系统会想要完整版。
Markdown 路由更进一步。Evil Martians 建议为站点上的每个页面提供 .md 版本。一个 15,000 token 的 HTML 页面会变成 3,000 token 的 Markdown 文档,噪音减少 80%。

告诉 AI 你有 Markdown 版本的最简单方法是在页面的 `<head>` 中添加:
```
<link rel="alternate" type="text/markdown" href="/page.md" />
```
Claude Code 和 Cursor 在获取文档时已经发送 `Accept: text/markdown` 头。这是标准的 HTTP/1.1 内容协商,自 1997 年以来就存在了。
## 在搜索平台注册你的站点
前一节的 robots.txt 和 llms.txt 让你的内容对 AI 可读,但 AI 必须先找到你。ChatGPT 的搜索运行在 Bing 上,Google AI Overview 使用 Google 自己的索引,Perplexity 也依赖搜索 API。如果你的页面没有被搜索引擎索引,上面的所有结构工作都没有意义。所以第一步是确保 Google 和 Bing 已经索引了你的站点。
设置很简单:去 Google Search Console,通过 DNS 或 HTML 文件上传验证你的域名,然后提交你的站点地图 URL(通常是 yoursite.com/sitemap.xml)。检查“页面”索引报告,看看哪些页面被索引了,哪些有问题。如果一个重要页面没有被索引,使用 URL 检查工具手动请求索引。
你可能认为 Bing 不重要,但 Copilot、DuckDuckGo 和 Yahoo 底层都运行在 Bing 的索引上。在 Bing Webmaster Tools 注册,提交你的站点地图,并检查 AI Performance 面板,看看 AI 引用你内容的频率。在那里的时候,设置 IndexNow,这样当你发布新内容时 Bing 会立即收到通知,而不必等待爬虫发现。
设置 IndexNow 意味着在你的站点根目录放置一个 API 密钥文件,然后在每次发布时向 api.indexnow.org/indexnow 发送一个 POST 请求,包含更改的 URL 列表。Bing 会在几分钟内获取它们。许多静态站点生成器和 CMS 平台都有 IndexNow 插件。

Google Search Console 还没有 AI 专用面板,但提交站点地图并监控索引状态仍然值得做。Google 的 AI 摘要从比传统结果更广的范围获取,所以即使没有排进前 10 的页面也可能出现在 AI 生成的答案中。
Perplexity 的用户比你想象的要多。他们在 pplx.ai/publisher-program 运营一个发布者计划。一旦获得批准,你可以获得 80/20 的收入分成并访问引用分析数据。
## 我为 AI 构建了一个专门的知识站点
与其等待 AI 从零散的来源抓取信息,不如给它一个单一的入口点,把一切都组织好。
知识站点应该提供三层:概述(llms.txt)、完整版(llms-full.txt,30-60KB)以及每个核心项目的独立知识页面。添加结构化的 JSON API,以便 AI 工具可以通过编程方式获取数据。从上游源(如 GitHub API)实时提取数据,并配合定期刷新的缓存,将维护成本降至接近零。
有一点很容易被忽视:给 AI 一个叙事结构,而不仅仅是项目列表。如果你有多个项目,写一段描述将它们连接起来,说明它们之间的关系、你的技术方向、整体情况。当 AI 回答“这个人是谁”或“这个团队做什么”时,一个连贯的叙述比一个平铺的列表有效得多。
我的实现叫作 Yobi(来自日语 呼び / よび,意思是“呼唤”或“召唤”)。它提供 llms.txt 概述、一个 50KB 的 llms-full.txt、每个项目的页面,以及四个 JSON 端点(/api/profile、/api/projects、/api/blog、/api/weekly),它们从 GitHub API 提取实时数据,并使用每小时刷新的 ISR 缓存。技术栈:Vercel 上的 Next.js + TypeScript。

JSON API 返回带有实时 GitHub 统计数据的结构化项目数据:

## 给每个项目独立的页面
每个项目都需要自己的独立页面,不是列表中的一行,而是一个自包含的 Markdown 文档,带有可引用的摘要、核心功能、竞品比较、使用案例和安装命令。Ahrefs 发现,被引用的页面的标题与用户查询的语义相似度更高,且自然语言 URL slug(如 /projects/pake)比不透明的 ID(如 /page?id=47)更容易被引用。

URL 结构很重要。/projects/pake 在模型读一行之前就告诉了它页面是关于什么的。/page?id=47 什么也没告诉它。
## 将结构化数据同步到你的主域名
子域名的权威性不如根域名。发现 example.com 的 AI 爬虫不会自动找到 docs.example.com 或 api.example.com。如果你的 llms.txt、项目页面和 API 数据分散在子域名上,AI 可能只看到一部分。
解决方法是将关键的结构化数据镜像到你的主域名,以便 example.com/llms.txt、example.com/projects/xxx.md 和 example.com/api/projects.json 都在同一个屋檐下。AI 爬虫通过搜索索引发现你的主站点,不需要离开就能找到所有内容。实现选项包括定时的 CI 同步、构建时获取或反向代理。我使用一个 GitHub Action,每晚将子域名数据同步到博客仓库。

启动新站点时,使用检查清单以避免遗漏。核心项目:robots.txt(分类的爬虫权限)、llms.txt(带有交叉引用的站点摘要)、sitemap(提交给搜索引擎)、Bing Webmaster Tools(启用 IndexNow)、Google Search Console(监控索引)。每个站点的 llms.txt 应该引用其他站点,形成一个发现网。
做这项工作最容易掉进的陷阱是,遇到每个 GEO 技巧都想加上,结果搞得一团糟,反而忽略了重点。
## 这些没用
<meta name="ai-content-url"> 和 <meta name="llms">:没有规范,没有主要 AI 系统采用。
/.well-known/ai.txt:多个相互竞争的提案,没有真正的采用。等赢家出来再说。
带有 AI 提示的 HTML 注释:解析器在 AI 看到内容之前会剥离注释。
User-Agent 嗅探以提供 Markdown:向机器人提供与人类不同的内容属于伪装。Google 会惩罚你。
非官方的 AI 元标签:除非主要 AI 提供商明确记录支持,否则那只是噪音。
## JSON-LD 不像你想的那么有用
我最初以为 JSON-LD 对 AI 可见性会很有用。深入研究显示情况更复杂。SearchVIU 做了一个实验,他们只把数据放在 JSON-LD 中而不显示在页面上。他们测试的所有五个 AI 系统都没能找到它。Mark Williams-Cook 的后续实验表明,LLM 将 `<script type="application/ld+json">` 视为纯文本,读取里面的单词而不理解结构化的语义。
唯一确认的例外是 Bing/Copilot,它使用 JSON-LD 来丰富搜索索引。保留现有的 JSON-LD(它对 Bing/Copilot 和传统的富媒体结果有帮助),但不要为了指望 ChatGPT 或 Claude 多引用你而添加它。
## 研究数据怎么说
普林斯顿和 IIT 德里发表的 GEO 论文(KDD 2024)发现,添加权威引用可以将 AI 可见性提高 115%,相关统计数据提高 33%,来自可信来源的直接引用提高 43%。

我的朋友 @yaojingang 一直在对 GEO 进行认真的研究。他的 geo-citation-lab 在三个平台上运行了 602 个提示词,并抓取了数万个页面进行特征分析。他的完整报告值得一读。以下是对内容创作者最有用的模式。
具体性。带有真实数据、清晰定义和并列比较的页面,比模糊、通用的页面影响力高 50% 以上。分步结构也有明显帮助。纯 FAQ 格式实际上是有害的。那些告诉你“添加 FAQ 以提高分数”的 GEO 工具给出的建议与数据相矛盾,这也验证了我从自己的页面中删除 FAQ 部分的决定。
内容深度。AI 不喜欢简短的摘要。它喜欢可以切分成可重用片段的长内容。高影响力页面平均接近 2,000 字,有 10 个以上的标题。低影响力页面平均只有 170 字,差距超过 10 倍。最佳点是 1,000 到 3,000 字。
相关性。所有机械的 SEO 指标(标题层级、元描述、关键词密度)的预测力都不如一个变量:你的页面内容是否真的回答了用户问的问题。
平台差异。ChatGPT 引用的来源较少,但每个都用得很深;它的每次引用影响力超过 Google 的 5 倍。Perplexity 撒的网更广,引用的来源是两倍多。要被 ChatGPT 引用,需要在单个页面上深挖。要被 Perplexity 引用,需要广撒网。
内容类型。官方网站、新闻和行业垂直网站约占引用来源的 80%。但百科全书式和解释性页面的影响力是新闻页面的 3 倍。英语内容占全球引用样本的 83% 以上,所以针对国际受众的项目需要英文版本。
## 被检索不等于被引用
在 ChatGPT 会话期间检索到的所有页面中,只有 15% 最终进入了答案。其余 85% 从未被引用。进入检索池只是第一关。模型仍然必须决定哪些页面值得引用。
Ahrefs 发现,被引用的页面标题与用户查询的语义相似度明显更高,且具有描述性自然语言 URL slug 的页面比那些有不透明 ID 的页面更容易被引用。这就是为什么 llms.txt 和 Markdown 路由有帮助:它们给模型一个关于你的页面涵盖内容的清晰、明确的信号。
品牌通过第三方来源被引用的频率是通过自己域名的 6.5 倍。有人在 Reddit 或 Hacker News 上称赞你的项目,比你自己的营销文案更有分量。这正是为什么拥有一个结构良好的 llms.txt 至关重要……