SEO·AEO 给开发者

第 0005 课 · 它奏效了吗?

衡量效果

两块记分牌,极度不对称。经典搜索给你一个第一方 API。AI 引用什么都不给你——于是你只能搭建那个所有人都在搭的 proxy(代理指标)。

回顾 第 0004 课:你让一个页面获得了入选资格(0002),给它的事实打上了标注(0003),并把它的文字塑造成便于 retrieve(检索)的形态(0004)。这一切都是一场赌注。这一课要闭合这个循环——你怎么知道它真的落地了?

两条管线的衡量方式并不相同,而这道差距就是整个故事。对于经典搜索,Google 通过一个 API 给你 ground truth(真实基准)。对于 AI 答案的 citation(引用),没有任何引擎对外提供这样的接口——所以市面上每一个追踪工具,以及你即将搭建的那个,都是一个 proxy(代理指标)[1]

你的收获: 在一组 answer-engine(答案引擎)的回复上运行 citation_share.py,得到你的 coverage(覆盖率)(引用了你的 prompt 占比)和 share of voice(声量占比)(你在所有引用中所占的份额)相对于竞争对手的数据——这正是 Profound 和 Ahrefs Brand Radar 在卖的那个 proxy 指标。

两块记分牌

经典搜索 —— 第一方 API

Google Search Console API。真实的 impressions(曝光)、clicks(点击)、average position(平均排名),以及确切的 query(查询词)——全部来自 Google 自己的日志。[2]

Web 搜索类型现在已经把来自 AI 功能的流量也算进去了,所以 AI-Overview 的点击已经会显示在这里。

✓ ground truth、可查询、免费

AI 引用 —— 没有 API

没有任何 OpenAI / Anthropic / Perplexity / Google 的接口能回答“我的站点被引用了多少次?”。Google 2026 年 6 月的 gen-AI 报告只是 Console 里的一个 UI 视图,还没进入 API。[3]

所以你只能采样:跑一套 prompt(提示词)库,解析里面的 citation(引用),统计。

✗ 只有 proxy——合成的,不是真实流量

经典这一侧:直接调用 API

这是个已经解决了的问题——先认证,然后 POST 一个日期区间和你想要的维度。没有工具需要搭建;平台本身就是工具。

# Search Console: top queries by clicks, last 28 days
POST https://www.googleapis.com/webmasters/v3/sites/{siteUrl}/searchAnalytics/query
{
  "startDate": "2026-05-20", "endDate": "2026-06-17",
  "dimensions": ["query"],
  "rowLimit": 100
}
# -> rows of { keys:[query], clicks, impressions, ctr, position }

按计划定时拉取它,把这些行存起来,你就有了随时间变化的排名/曝光/点击趋势——任何 SEO 监控系统的骨干。

AEO 这一侧:你要搭建的 proxy

因为没有 ground truth,每一个商用 AEO 追踪工具都做同样的三步——tools/citation_share.py 也是如此:

步骤它是什么谁负责
1 · prompt 库你所在领域里一组固定的买家问题你(API key + prompt)
2 · 跑引擎把每个 prompt 发出去,捕获回复 + 被引用的链接你(一次 API 调用)
3 · 解析并打分提取被引用的域名 → coverage + share of voicecitation_share.py

第二个辅助脚本 tools/build_prompts.py 负责第 1 步:它把那套买家问题 prompt 库组装出来——来自一次 LLM fan-out(扇出)或你的 Search Console 行数据——并且采用 citation_share.py 正好能消费的形态。这个工具就是那个离线、可测试的核心。它对 被引用的链接(AEO 里相当于排名的东西)打分,而不是对单纯的品牌提及打分:

# coverage = prompts that cite me; SOV = my citations / all citations
cited = cited_domains(entry)          # links in response + citations[]
hit   = bool(cited & my_domains)
sov   = mine / total_citations
现在就做:
  1. 自检(离线):python3 tools/citation_share.py --demo
  2. 手工做一个很小的 results.json——3–4 个买家问题,把从 ChatGPT/Perplexity 拿到的真实答案 + 链接粘进去——然后给它打分:python3 tools/citation_share.py results.json --domain yourdomain.com
  3. 下周再跑一次。 唯一重要的那个数字是你自己 coverage 的趋势——而不是绝对值。
$ python3 tools/citation_share.py results.json --domain myseo.io

AI-citation share — 4 prompts, you = myseo.io
────────────────────────────────────────────────────
COVERAGE  50%  cited in 2/4 prompts
SHARE OF VOICE  33%  of all citations are yours
────────────────────────────────────────────────────
Top cited domains:
3ahrefs.com
2myseo.io  ← you
1moz.com
────────────────────────────────────────────────────
Per prompt:
[HIT ] best seo audit tool for developers?
[miss] how to track rankings via api?
[HIT ] what is generative engine optimization?
[miss] cheapest backlink checker?
proxy ≠ ground truth——诚实地读你自己的数字。 你的 prompt 库是挑选的一个样本,不是引擎真实的 query(查询词)分布,而且答案是非确定性的。所以绝对的 share of voice 没什么意义,两个工具的数字也不可比——它们跑的是不同的 prompt。[1]把它当成一次民意调查来对待:一套固定的 prompt 集随时间反复跑,能给出一个可信的趋势;单次跑出来那个醒目的百分比则不能。把 prompt 保持不变,否则你衡量的是你的 prompt,而不是你的站点。

要知道的天花板:citation_share.py 只统计被引用的链接。“品牌被提及但没有链接”是另一种(更软的)指标;域名匹配很粗糙(没有 public-suffix 列表)。这两点都在工具的 docstring 里被标注为后续可升级的方向。

提取练习 · 不许偷看

读懂记分牌

凭记忆作答——正是这份努力让知识留得住。每题只有一次机会;在看其他选项前先选。

第 1 / 4
哪一边有你今天就能调用的第一方衡量 API?
第 2 / 4
每一个 AEO 引用追踪工具是怎么拿到它的数字的?
第 3 / 4
为什么不该把两个不同 AEO 工具给出的 share of voice(声量占比)拿来对比?
第 4 / 4
Search Console API 能给你而 AEO proxy 给不了的是什么?
一手来源 — 接下来读这个 (≈12 分钟)
《Search Analytics: query》——Search Console API 参考文档

确切的请求体以及你拿回的那些行数据——这就是你经典搜索这一侧的 ground-truth(真实基准)数据源。从 <a href="https://developers.google.com/webmaster-tools/about">API 概览</a> 开始。AEO 这一侧,参见 <a href="https://ahrefs.com/blog/chatgpt-visibility-tracking/">Ahrefs 的 ChatGPT 可见性指南</a> 里的 proxy(代理指标)方法讲解,以及 <a href="/zh/resources/"><code>RESOURCES.md</code></a> 里关于差距的说明。

卡住了,或者好奇? 这个 agent 就是你的老师。尽管问——“给我看一个真实的 robots.txt”、“Claude 和 Perplexity 的 retrieve 方式不一样吗?”——追问是学得最快的方式。