第 0005 课 · 它奏效了吗?
衡量效果
两块记分牌,极度不对称。经典搜索给你一个第一方 API。AI 引用什么都不给你——于是你只能搭建那个所有人都在搭的 proxy(代理指标)。
回顾 第 0004 课:你让一个页面获得了入选资格(0002),给它的事实打上了标注(0003),并把它的文字塑造成便于 retrieve(检索)的形态(0004)。这一切都是一场赌注。这一课要闭合这个循环——你怎么知道它真的落地了?
两条管线的衡量方式并不相同,而这道差距就是整个故事。对于经典搜索,Google 通过一个 API 给你 ground truth(真实基准)。对于 AI 答案的 citation(引用),没有任何引擎对外提供这样的接口——所以市面上每一个追踪工具,以及你即将搭建的那个,都是一个 proxy(代理指标)。[1]
citation_share.py,得到你的 coverage(覆盖率)(引用了你的 prompt 占比)和 share of voice(声量占比)(你在所有引用中所占的份额)相对于竞争对手的数据——这正是 Profound 和 Ahrefs Brand Radar 在卖的那个 proxy 指标。 两块记分牌
Google Search Console API。真实的 impressions(曝光)、clicks(点击)、average position(平均排名),以及确切的 query(查询词)——全部来自 Google 自己的日志。[2]
Web 搜索类型现在已经把来自 AI 功能的流量也算进去了,所以 AI-Overview 的点击已经会显示在这里。
✓ ground truth、可查询、免费
没有任何 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 voice | citation_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
- 自检(离线):
python3 tools/citation_share.py --demo - 手工做一个很小的
results.json——3–4 个买家问题,把从 ChatGPT/Perplexity 拿到的真实答案 + 链接粘进去——然后给它打分:python3 tools/citation_share.py results.json --domain yourdomain.com - 下周再跑一次。 唯一重要的那个数字是你自己 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?
要知道的天花板:citation_share.py 只统计被引用的链接。“品牌被提及但没有链接”是另一种(更软的)指标;域名匹配很粗糙(没有 public-suffix 列表)。这两点都在工具的 docstring 里被标注为后续可升级的方向。
提取练习 · 不许偷看
读懂记分牌
凭记忆作答——正是这份努力让知识留得住。每题只有一次机会;在看其他选项前先选。
确切的请求体以及你拿回的那些行数据——这就是你经典搜索这一侧的 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> 里关于差距的说明。