# eonebill.ai — Google 的 AI 功能报告 × TriRank 六引擎周扫

两次互相独立的测量摆在一起：Google 说它在生成式 AI 功能里展示过哪些页，TriRank 说它自己的周扫在哪些页上看到了引用。**两边的分母不一样**，所以先看分母段再看表。

---

## 分母段

### Google 那一半（GSC 导出）

| 项 | 值 | 来源 |
| --- | ---: | --- |
| 导出行数 | 257 | 网页表数据行 |
| 归一后互异页数 | 256 | `normalizePageUrl` 折叠后 |
| 展示数合计（页维度） | 18,165 | 网页表求和 |
| 展示数合计（日维度） | 17,940 | 图表（逐日）求和 |
| 窗口 | 2026-08-01 … 2026-08-28（28 天） | 图表首末行 |
| 过滤器 | 搜索类型 = 网络；日期 = 过去 28 天 | 过滤器表 |

⚠️ **257 个导出行归一后只剩 256 个互异页**，因为 GSC 把下面这组当成不同的行报，而 `normalizePageUrl` 按设计把非根路径的尾斜杠折掉（它的 docblock 记着 GSC 会把同一页的展示数拆到多个变体上）：

- `eonebill.ai/receipt-template` ← `https://www.eonebill.ai/receipt-template` + `https://www.eonebill.ai/receipt-template/`

⇒ **按行数的统计分母是 257，按集合的统计分母是 256**，两个数下面都各自标了，没有互相顶替。全表仍按导出原样出 257 行，折叠掉的那一对会拿到相同的引擎判定。

两个合计差 **225**。这不是哪一边少算了：国家/地区维度求和与设备维度求和**也都是 17,940**，三个维度对同一个总数三方一致，多出来的 225 只出现在页维度 —— 一次展示可以落在不止一个页上，页维度因此不可加。表里的 `gsc_ai_impressions` 是页维度的原值，未做任何摊分。

### TriRank 那一半（生产 D1，窗口 2026-08-01 … 2026-08-28）

| 项 | 值 | 来源 |
| --- | ---: | --- |
| 站表匹配行数 | 1 | denominators_1 |
| 站 id | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` (https://www.eonebill.ai/) | site_eonebill |
| 窗口内扫描日数 | 8 | denominators_1 |
| 窗口内 geo_visibility 行数 | 199 | denominators_1 |
| 窗口内出现的 distinct query | 5 | denominators_2 |
| tracked_query 总数 / active | 5 / 5 | denominators_2 |
| 窗口内 citation_source 行数（全部来源） | 1323 | denominators_4 |
| 其中 eonebill 自家 host | 182 | denominators_4 |

每引擎（窗口内）：

| engine | geo_visibility 行 | 扫描日 | citation_source 行 |
| --- | ---: | ---: | ---: |
| perplexity | 39 | 8 | 408 |
| chatgpt | 39 | 8 | 249 |
| aio | 35 | 8 | 258 |
| claude | 36 | 8 | 160 |
| google_aio | 35 | 8 | 145 |
| ai_mode | 15 | 3 | 103 |

🔴 **这两个分母差三个数量级，读表前必须先读到这里。** Google 报了 257 个页；TriRank 在这个窗口里只追 **5 个 query**、只扫了 **8 天**。一个引擎列最多只可能在这 5 个 query 够得到的那几页上亮起来。所以引擎列里的 `0` 的意思是「这次周扫没在这一页上看到引用」，**不是**「Google 说错了」，也**不是**「这一页没有被 AI 引用过」。

---

## 汇总四数

① **257 页里被六引擎任一引用的页数：20**（分母 257）
② **零引用页数：237**（分母 257；= 257 − 20）
③ **Top 10 页（按 gsc_ai_impressions）里被引用的页数：4**（分母 10）
④ **效度对照** —— 集合 A = TriRank 在窗口内判为引用的 eonebill 页，集合 B = GSC 那 257 个导出行归一后的 **256** 个互异页（|B| = 256）。按续裁 c 分三份：

**A_google_aio** — |A| = 10 · |A ∩ B| = 10 · |A − B| = 0

A − B 为空。



**A_ai_mode** — |A| = 8 · |A ∩ B| = 8 · |A − B| = 0

A − B 为空。



**A_并集（六引擎）** — |A| = 34 · |A ∩ B| = 20 · |A − B| = 14

A − B (每一条全列，按上面那条诊断分成两组)：

真缺席 11 条 —— 我们说引用了、GSC 的 256 页里没有它，去掉 query 也没有：
- `eonebill.ai/contract-generator`
- `eonebill.ai/docs`
- `eonebill.ai/docs/faq`
- `eonebill.ai/docs/plans`
- `eonebill.ai/docs/plans?utm_source=openai`
- `eonebill.ai/features/ai-invoice`
- `eonebill.ai/invoices`
- `eonebill.ai/pricing`
- `eonebill.ai/pricing?utm_source=openai`
- `eonebill.ai/roi-calculator?utm_source=openai`
- `eonebill.ai/solutions/small-business?utm_source=openai`

归一伪影 3 条 —— 只是带了引擎自己加的 query 参数，**同一页以干净 URL 就在 B 里**，不构成分歧：
- `eonebill.ai/?utm_source=openai` （干净形 `eonebill.ai/` 在 B 中）
- `eonebill.ai/about?utm_source=openai` （干净形 `eonebill.ai/about` 在 B 中）
- `eonebill.ai/free-tools/bill-generator?utm_source=openai` （干净形 `eonebill.ai/free-tools/bill-generator` 在 B 中）

⚠️ |A| = 34 里有 **5** 条是同一页的带参/不带参两种写法各算了一次（判据保留 query string，按裁决不改），所以 A 的「互异页数」是 29。


B − A = **236** 页（只报数；分母 |B| = 256）。

🔴 **|A ∩ B| 小是结构使然，不是效度差。** A 的上限是窗口内 tracked query 数（5 个）能够到的页数 —— A 不可能大到接近 257。要追的是 **A − B**：那是「我们说引用了、而 Google 说没在 AI 功能里展示过」的页。

---

## 全表（257 行，按 gsc_ai_impressions 降序）

引擎列的判定臂是 **citation_source.url**（主臂）。表头六列的含义：

- `aio` —— 🔴 legacy 误名，照 `src/db/app.schema.ts` 的 `GeoEngine` 注释原文：*Gemini + Google Search grounding, **NOT** the AI Overview product*。
- `google_aio` —— 真正的 Google AI Overview，从实时 SERP 上读。
- `ai_mode` —— Google AI Mode（udm=50 对话标签页）。

**三个 Google 引擎永不合并** —— schema 注释：把一个新来源折进旧 key 会让每一张历史图表说谎；第三个引擎存在的意义就是要能看见它们互相不一致。

单元格：`1` = 该引擎在窗口内至少一次把这一页作为来源返回；`0` = 扫到了但没看到这一页；`no probe` = 该引擎在窗口内对本站零行。

> 🔴 **`chatgpt` 那一列 257 行全是 0，而这个 0 说的不是 ChatGPT 的行为。**
> 窗口内 ChatGPT 引用本站的 **7 个互异 URL，7 个带 `?utm_source=openai`** —— 全部带。其余五个引擎**一个带 query 的都没有**。
> 判据（按裁决用 `normalizePageUrl`）保留 query string，而 GSC 报的是干净 URL，所以 ChatGPT 的 URL **在结构上不可能**匹配上任何一行，那一列必然全 0。
> 这个 0 在判据下是真的，但读者会从它读出的因果（「ChatGPT 不引用这个站」）是假的：ChatGPT 在这个窗口里引了本站 7 个页，其中 **3 个的干净形就在这 257 行里**。
> **判据没有被我改**（裁决定的是 `normalizePageUrl`），改判据是 PM 的决定；下面「判据的一个已知缺陷」段给出改了会变成什么数。

每引擎的自引用 URL 形态，以及去掉 query 后能对上几页：

| engine | 窗口内自引用互异 URL | 其中带 query | 当前判据命中页数 | 若去 query 会命中 |
| --- | ---: | ---: | ---: | ---: |
| perplexity | 12 | 0 | 8 | 8 |
| chatgpt | 7 | 7 | 0 | 3 |
| aio | 7 | 0 | 7 | 7 |
| claude | 11 | 0 | 7 | 7 |
| google_aio | 10 | 0 | 10 | 10 |
| ai_mode | 10 | 0 | 8 | 8 |

| page | gsc_ai_impressions | perplexity | chatgpt | aio | claude | google_aio | ai_mode |
| --- | ---: | :---: | :---: | :---: | :---: | :---: | :---: |
| https://www.eonebill.ai/glossary/subtotal | 6,650 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/receipt-generator | 1,445 | 1 | 0 | 1 | 0 | 0 | 1 |
| https://www.eonebill.ai/free-tools/bill-generator | 1,076 | 1 | 0 | 1 | 1 | 1 | 1 |
| https://www.eonebill.ai/blog/cell-phone-tax-deduction | 814 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/net-14 | 622 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-receipt | 570 | 1 | 0 | 1 | 1 | 1 | 1 |
| https://www.eonebill.ai/free-tools/shipping-label-generator | 511 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/cleared-payment | 407 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-invoicing-apps-freelancers-2026 | 378 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-invoice-generator | 339 | 1 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/credit-note-template | 266 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/utility-bill-generator | 257 | 0 | 0 | 0 | 0 | 1 | 0 |
| https://www.eonebill.ai/blog/venmo-invoice-template | 231 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-ai-receipt-generator-2026 | 228 | 0 | 0 | 1 | 0 | 1 | 1 |
| https://www.eonebill.ai/free-tools/qr-code-generator | 218 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-quote | 200 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/dental | 171 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/delivery-note-template | 164 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/medical-receipt | 160 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/mileage-calculator | 157 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/pay-stub-generator | 157 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/sales-tax-calculator | 154 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/service-receipt | 122 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/purchase-order-template | 115 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/quote-template/electrical | 114 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/hotel-receipt | 113 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/cash-invoice | 102 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/bill-of-lading-generator | 101 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/freelance-rate-calculator | 96 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-free-invoice-software-2026 | 94 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/delivery-note-generator | 83 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/invoice-template-singapore | 79 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/estimate-generator | 77 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/refund-receipt | 72 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/payment-reminder-generator | 70 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/ | 64 | 1 | 0 | 1 | 1 | 1 | 1 |
| https://www.eonebill.ai/invoice-template/invoice-template-france | 59 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/photography | 55 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-ai-invoice-generator-2026 | 54 | 0 | 0 | 0 | 0 | 0 | 1 |
| https://www.eonebill.ai/compare/eonebill-vs-wave | 54 | 0 | 0 | 1 | 0 | 0 | 0 |
| https://www.eonebill.ai/quote-template/landscaping | 53 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/quote-template/plumbing | 52 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/late-payment-interest-calculator | 46 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-invoice-tracking-apps-2026 | 45 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/purchase-order-generator | 35 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/net-30-payment-terms-explained | 34 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/solutions/professional-services | 33 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/freelancer-payment-terms-guide | 32 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/en/statement-template/statement-of-account | 29 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/client-wont-sign-contract-what-to-do | 27 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/word | 27 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template | 26 | 1 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/billing-address | 25 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/cash-receipt | 24 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/compare | 20 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template/auto-repair | 19 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template/electrical | 19 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/quote-generator | 19 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/quote-template/construction | 19 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-square-invoices-alternatives-2026 | 18 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/attorney | 17 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-invoice-home-alternatives-2026 | 16 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/how-to-bill-for-overtime | 16 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/cancellation-invoice | 16 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/invoice-template-india | 16 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/sample-invoice-template | 16 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template | 16 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template/concrete-estimate | 15 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/wave-accounting-replacement-2026 | 14 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/topics/comparisons | 13 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/excel | 13 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-paypal-invoicing-alternatives-2026 | 12 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/free-honeybook-alternative | 12 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/receipt-generator | 12 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/profit-margin-calculator | 12 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/net-45 | 12 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/personal | 12 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/time-and-material | 12 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/eonebill-vs-wave-invoice-software-2026 | 11 | 1 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/attorney-brief | 11 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/sales-receipt | 11 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/solutions/freelancers | 11 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/accounting-software-trends-2026 | 10 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/event-planner-invoice-template | 10 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/free-bonsai-alternative | 10 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/wave-vs-eonebill-2026 | 10 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template/plumbing | 10 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/expense-tracker | 10 | 0 | 0 | 0 | 0 | 1 | 1 |
| https://www.eonebill.ai/free-tools/invoice-to-pdf | 10 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/invoice-template-canada | 10 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/invoice-template-excel | 10 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/free-wave-alternative | 9 | 0 | 0 | 0 | 1 | 0 | 0 |
| https://www.eonebill.ai/blog/invoice-number-format-best-practice | 9 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/rent-receipt | 9 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-dubsado-alternatives-2026 | 8 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-harvest-alternatives-2026 | 8 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-invoice-ninja-alternatives-2026 | 8 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/contract-template | 8 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/construction | 8 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/eonebill-vs-xero | 7 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/freelance-writer-invoice-template | 7 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template/video-production | 7 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-freshbooks-alternative | 7 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-trial/invoice | 7 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/invoice-template-malaysia | 7 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/free-healthcare-consulting-invoice-template | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/free-legal-services-invoice-template | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/free-quickbooks-alternative-for-freelancers | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/invoice-ninja-vs-eonebill-2026 | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/variable-expenses | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/ach-payment | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/contractor | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/mechanic | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/proposal-template | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/solutions/contractors | 6 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-expense-trackers-freelancers-2026 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-stripe-invoicing-alternatives-2026 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/client-gifts-tax-write-off | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/construction-invoice-template | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/freshbooks-alternative-2026 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/how-to-add-gst-to-invoice | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/nda-template-guide | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/simple-invoice-app-for-freelancers | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template/junk-removal | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/terms-and-conditions-generator | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/hourly-invoice | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-bonsai-invoice-alternatives-2026 | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-honeybook-alternatives-freelancers-2026 | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/delivery-note-guide | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/freshbooks-vs-wave-2026 | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/how-to-set-payment-terms | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/en/statement-template/monthly-statement | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/balance-due | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/consulting | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/freelance | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/milestone-invoice | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/pdf | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/proforma | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-and-co-alternatives-2026 | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-invoice-simple-alternatives-2026 | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/how-to-follow-up-on-unpaid-invoice | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/progress-invoice-template | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/quickbooks-too-expensive-alternative | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/compare/eonebill-vs-quickbooks | 3 | 0 | 0 | 0 | 0 | 1 | 0 |
| https://www.eonebill.ai/estimate-template/asphalt | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/features/expenses | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/draw-request | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/invoice-date | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/invoice-in-spanish | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/net-90 | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/payment-receipt | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/statement-of-work | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/void-invoice | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/invoice-template-pdf | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/recurring-invoice | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/privacy | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/gym-receipt | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/towing | 3 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/ai-freelancer-financial-management-2026 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-billdu-alternatives-2026 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-xero-alternatives-freelancers-2026 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/best-zoho-invoice-alternatives-2026 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/bookipi-alternative | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/check-stub-maker | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/cleaning-estimate-template | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/do-llc-get-1099 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/eonebill-vs-freshbooks | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/facebook-marketplace-taxes | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/free-freshbooks-alternative | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/freelancer-invoice-india | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/invoice-for-cash-payment | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/invoice-maker-vs-eonebill-2026 | 2 | 0 | 0 | 0 | 0 | 1 | 1 |
| https://www.eonebill.ai/blog/invoice-simple-vs-eonebill-2026 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/invoice2go-vs-eonebill-2026 | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/makereceipt-vs-eonebill | 2 | 0 | 0 | 0 | 1 | 0 | 0 |
| https://www.eonebill.ai/blog/net-60-payment-terms | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/compare/eonebill-vs-bookipi | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/compare/eonebill-vs-makereceipt | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/en/timesheet-template/weekly-timesheet | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template/construction | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/1099-generator | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/business-loan-calculator | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/invoice-number-generator | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/payment-link-generator | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-trial/receipt | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-trial/timesheet | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/credit-invoice | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/deliverable | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/discount | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/interim-invoice | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/payment-gateway | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/mechanic-workshop | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/proforma-invoice | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/ | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/roofing | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/solutions/tech-digital | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/solutions/trades-field-services | 2 | 0 | 0 | 0 | 0 | 0 | 0 |
| http://www.eonebill.ai/glossary/what-is-billing-statement | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/about | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
| https://www.eonebill.ai/blog/best-wave-invoice-alternatives-2026 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/business-travel-tax-deduction | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/childcare-invoice-template | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/create-invoice | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/eonebill-vs-quickbooks-2026 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/free-quickbooks-alternative | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/freshbooks-vs-quickbooks-freelancers-2026 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/how-to-issue-a-refund | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/lawn-care-invoice-template | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/massage-therapy-invoice-template | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/net-45-payment-terms | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/professional-invoice | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/proposal-template | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/proposal-vs-contract | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/blog/wave-alternative-2026 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/brief-template/strategy-brief | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/compare/eonebill-vs-freshbooks | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| https://www.eonebill.ai/compare/eonebill-vs-zoho | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| https://www.eonebill.ai/contact | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/contract-template/construction-contract | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/contract-template/independent-contractor-agreement | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/delivery-note-template/goods-received-note | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/en/credit-note-template/refund-invoice | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/en/statement-template | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/en/timesheet-template/excel-timesheet | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/en/timesheet-template/monthly-timesheet | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/en/timesheet-template/project-timesheet | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template/paving | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template/pdf | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/estimate-template/photography | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
| https://www.eonebill.ai/free-tools/hourly-rate-calculator | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/free-tools/logo-maker | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/accounts-receivable | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/deferred-revenue | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/eft-payment | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/gross-amount | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/invoiced | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/monthly-recurring-revenue | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/payment-float | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/reimbursement | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/glossary/Subtotal-vs-total | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/catering | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/electrical | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/electrical-progress-bill | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/french | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/hvac-service | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/law-firm | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/legal | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/modern-invoice | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/timesheet-invoice | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/invoice-template/virtual-assistant | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/purchase-order/excel | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/quote-template | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/donation-receipt | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| https://www.eonebill.ai/receipt-template/excel | 1 | 0 | 0 | 0 | 0 | 0 | 0 |

---

## 两臂对照（续裁 b）

主臂 = `citation_source.url`（一次回答里engine返回的**全部**来源 URL）。
副臂 = `geo_visibility.cited_url`（该次探测**被选中的那一个** URL）。

两臂对同一 (页, 引擎) 判定不一致的组合共 **18** 处，逐条列出，**不静默取或**：

| page | engine | 主臂 citation_source | 副臂 geo_visibility |
| --- | --- | :---: | :---: |
| https://www.eonebill.ai/free-tools/receipt-generator | aio | 1 | 0 |
| https://www.eonebill.ai/free-invoice-generator | perplexity | 1 | 0 |
| https://www.eonebill.ai/blog/best-ai-invoice-generator-2026 | ai_mode | 1 | 0 |
| https://www.eonebill.ai/compare/eonebill-vs-wave | aio | 1 | 0 |
| https://www.eonebill.ai/estimate-template | perplexity | 1 | 0 |
| https://www.eonebill.ai/blog/eonebill-vs-wave-invoice-software-2026 | perplexity | 1 | 0 |
| https://www.eonebill.ai/free-tools/expense-tracker | google_aio | 1 | 0 |
| https://www.eonebill.ai/free-tools/expense-tracker | ai_mode | 1 | 0 |
| https://www.eonebill.ai/blog/free-wave-alternative | claude | 1 | 0 |
| https://www.eonebill.ai/compare/eonebill-vs-quickbooks | google_aio | 1 | 0 |
| https://www.eonebill.ai/blog/invoice-maker-vs-eonebill-2026 | google_aio | 1 | 0 |
| https://www.eonebill.ai/blog/invoice-maker-vs-eonebill-2026 | ai_mode | 1 | 0 |
| https://www.eonebill.ai/blog/makereceipt-vs-eonebill | claude | 1 | 0 |
| https://www.eonebill.ai/about | perplexity | 1 | 0 |
| https://www.eonebill.ai/about | aio | 1 | 0 |
| https://www.eonebill.ai/compare/eonebill-vs-freshbooks | google_aio | 1 | 0 |
| https://www.eonebill.ai/compare/eonebill-vs-zoho | google_aio | 1 | 0 |
| https://www.eonebill.ai/free-tools | claude | 1 | 0 |

⚠️ **18 处全部同向**（主臂 1 / 副臂 0，零处反向）。这一点是可证伪的：如果成因是数据错乱而不是口径差，反向的组合应该也会出现。

不一致的成因是两列问的不是同一个问题，不是数据出错：`cited_url` 每行只存一个 URL，而同一次回答里引擎可能引了本站不止一页；那些多出来的页只在 `citation_source` 里有。所以主臂是 `citation_source`，副臂只用来对照。

---

## 方法与口径段

**归一化** —— 两边 URL 一律经 `normalizePageUrl`（`src/lib/gsc-url.ts`）。这不是本脚本自己写的函数，是直接 import 仓内那个：它去协议、去前导 `www.`、只小写 host 不动 path、**保留 query string**（`?page=N` 是真实不同页）、只对非根路径去尾斜杠。⚠️ 派单原写的四条归一规则（去协议/去 www/去尾斜杠/小写 host）与它有两条不符，按续裁作废，以仓内函数为准。它的行为被 `scripts/check-host-normalizers.ts` 逐格冻结。

**引擎列的判据** —— 对每一页、每一引擎：窗口内该引擎任意一行 `citation_source.url` 归一后等于该页 ⇒ `1`。该引擎在窗口内对本站零行 ⇒ `no probe`（本次六个引擎都有行，所以表里不会出现 `no probe`；判定逻辑保留，因为它下次可能出现）。

**citation_source 的取数范围** —— 导出时按 `is_self = 1 OR host IS NULL OR host LIKE '%eonebill%'` 过滤，1323 行取到 182 行。对本表**无损**：只有 eonebill 自家 host 的来源才可能等于这 257 页之一。`host IS NULL` 那一支是防解析失败的兜底 —— 实际取回的 182 行里 host 全部为 `eonebill.ai`，该支零命中。

**geo_visibility.cited 有三个值，不是两个** —— `1` / `0` / `NULL`。窗口内 NULL 有 16 行。副臂只认 `cited = 1` 且 `cited_url` 非空，NULL 不当作 0。

**判据（原样）**
- **4.1** 网页表求和 = 18165（期望 18165）· 日表求和 = 17940（期望 17940）· 差 225。257 个数据行、28 个日行、首末 2026-08-01/2026-08-28。全部通过，否则脚本 exit 1。
- **4.2 正控（两臂各一条，各走表格真正用的那条代码路径）** —— 主臂：`https://www.eonebill.ai/free-receipt` / perplexity / 2026-08-26 ⇒ 判定 `1` ✅；副臂：`https://www.eonebill.ai/free-tools/bill-generator` / ai_mode / 2026-08-26 ⇒ 判定 `1` ✅。派单原只要求一条，那一条落在副臂上；主臂是续裁 b 定的判定臂，只验副臂等于没验过表里那六列。
- **4.3 负控** —— 虚构页 `https://www.eonebill.ai/no-such-page-x` 注入两臂的同一批结构，六引擎 × 两臂全部返回 `0`，且不进汇总①。做完即丢，不入文档、不入表。
- **4.4** 无时钟、无随机、无网络 ⇒ 同一输入两次运行产物逐字节相等。
- **ENGINES/SITE/WINDOW** —— 六个引擎列不是照记忆写的，运行时与 `SELECT DISTINCT engine` 的实际结果比对；站表匹配行数必须为 1；每一行 D1 数据的 `date` 必须落在窗口内。任一不符 exit 1。

**没有做的事** —— 零写库；表里没有任何一个数是估算或摊分出来的；A−B 全列，B−A 只报数（派单口径）。

---

## 判据的一个已知缺陷（未修，等 PM 裁）

裁决定的判据是 `normalizePageUrl`，它**保留 query string**（那是它自己的设计：`?page=N` 是真实不同页）。放在这单里，它有一个此前没人预见到的后果：**有的引擎会往它引用的 URL 上挂自己的跟踪参数**，而 GSC 报的是干净 URL。窗口内只有 ChatGPT 这么做（`?utm_source=openai`，7/7 全带），其余五引擎零处。

后果有三个，都在上面标出来了，这里汇总：
1. `chatgpt` 列 257 行全 0，是结构使然。
2. A−B 的 14 条里有 3 条是伪影（干净形就在 B 里）。
3. |A_并集| = 34 里有 5 条是同一页的两种写法各算一次。

**若把判据换成「去掉 query 再匹配」：**

| | 当前判据（裁决所定） | 去 query 后 |
| --- | ---: | ---: |
| 汇总① 被任一引擎引用的页数 | 20 / 257 | 20 / 257 |
| 汇总③ Top 10 里被引用 | 4 / 10 | 4 / 10 |
| `chatgpt` 列命中页数 | 0 | 3 |

⚠️ **汇总①③ 一个字没动，这一点要说出来。** ChatGPT 那 3 个能对上的页，早就被别的引擎引用过了，所以它们本来就已经计进①。⇒ **这个缺陷只动 `chatgpt` 那一列，不动任何一个汇总数。** 表里两行左右相同不是算错或没算，是真的没变。

🔴 **全文所有数字用的都是左边那一列**（裁决所定的判据），右边那列只在这张表里出现，不进正文、不进全表、不进汇总四数。换不换是 PM 的决定，不是我的。

⚠️ 换判据不是免费的：`normalizePageUrl` 保留 query 是有理由的（`?page=N` 分页是真实不同页），一刀切去掉 query 会把分页折进根页。真要改，改的应该是「只剥已知的跟踪参数」，而那是一个新判据，需要自己的正负控。

---

## 数据日期段

- **GSC 报告**：更新于 2026-08-31 上午，官方标「6 小时前」。导出文件生成于 **2026-08-31T07:06:11Z**（`docProps/core.xml`，Apache POI）。窗口 `日期 = 过去 28 天` = 2026-08-01 … 2026-08-28。
- **D1 读数是快照**：**D1 读于 2026-08-31T07:41:26Z – 07:41:52Z（前九个文件）与 07:48:43Z – 07:48:51Z（四个分母文件）**。生产 D1 在读取之后仍在被写入（周扫是持续跑的），本文档的 TriRank 侧数字是那一刻的读数，不是此后任何时刻的状态。
- **输入文件**：`docs/data/gsc-ai-features-eonebill-2026-08-31.xlsx`（15348 字节）+ `docs/data/d1/*.json`（本次一并提交）。

