# 被 AI 访问监控：从链接到转化的最简单做法

这是一份实施教程，不是一个新的监控 SaaS。目标是让你知道：网站访问者是否带着可以观察到的 AI 来源信号进入了你的网站，以及这些访问有没有继续完成注册、咨询或购买。

## 先分清两件事

- **被 AI 引用**：ChatGPT、Perplexity、Claude 等回答中出现了你的网站链接。MadeInRed 的「被 AI 引用体检」负责检查网站是否具备被抓取、理解和引用的基础条件。
- **被 AI 访问**：用户点击 AI 产品回答中的链接，浏览器真的打开了你的网站。它是访问归因问题，通常要结合 UTM、HTTP Referer、落地页和后续转化来观察。

一次引用不保证一定带来访问；一次访问也不代表 AI 一定引用了页面正文。两者要分开记录。

## 方法一：使用 UTM 参数

如果你能控制展示给用户的链接，可以在 URL 后面加 UTM 参数。例如：

    https://your-site.example/pricing?utm_source=chatgpt.com&utm_medium=referral&utm_campaign=ai-referrals

进入网站后，把 utm_source、utm_medium、utm_campaign 交给你的分析系统或后端保存。最小统计维度是：

1. 来源（source）
2. 媒介（medium）
3. 进入的页面（landing page）
4. 会话是否完成目标（注册、提交表单、购买等）
5. 首次访问时间

**注意：你不能强制 ChatGPT 或其他 AI 产品一定自动添加 UTM。** 只有请求实际带到你的网站时，才能把这个参数当成正向证据。不要把“所有来自 ChatGPT 的点击”写成已经被完整统计。

## 方法二：读取 HTTP Referer

当链接没有 UTM 时，服务器有时仍能从请求头里的 Referer（历史拼写）看到上一个页面。例如请求可能带有：

    Referer: https://chatgpt.com/

在边缘函数、应用服务器或 Web 服务器日志里记录它。Nginx 的最小示例：

    log_format ai_ref '$time_iso8601 $request $status ref=$http_referer';
    access_log /var/log/nginx/ai-referrer.log ai_ref;

在应用代码里，读取请求头的方式是：

    const referer = request.headers.get('referer') || '';
    const source = new URL(referer).hostname;

    if (source === 'chatgpt.com' || source.endsWith('.chatgpt.com')) {
      // 记录一次“可观察到的 ChatGPT 引荐访问”
    }

生产代码要先判断空值、解析失败和恶意构造的请求头，不要直接相信任意字符串。也可以只保存规范化后的主机名，而不是长期保存完整 URL。

## 把来源归一化

先保存原始观测值一小段时间，再建立归一化规则。常见候选包括：

- chatgpt.com、chat.openai.com
- perplexity.ai
- claude.ai
- gemini.google.com

不要因为域名“看起来像 AI”就自动归类，也不要假设所有 AI 产品都使用稳定的 Referer。建议保留两个字段：

- raw_referrer：仅在隐私政策允许的期限内保存，用于排查
- attribution_source：例如 chatgpt、perplexity、unknown

## 最小数据表

你可以在分析工具、日志管道或自己的数据库中记录类似下面的字段：

| 字段 | 示例 | 用途 |
|---|---|---|
| source | chatgpt.com | 来源主机或 UTM 来源 |
| medium | referral | 区分引荐、自然、付费 |
| landing_path | /pricing | 哪个页面接住了访问 |
| session_id | 随机 ID | 关联后续行为，不放邮箱或姓名 |
| converted | true / false | 是否完成目标 |
| observed_at | 2026-10-08T12:00:00Z | 复盘时间范围 |

## 5 分钟验证清单

1. 建一个你自己控制的测试链接，带上 utm_source=chatgpt.com。
2. 在真实浏览器中打开它，确认落地页没有丢掉查询参数。
3. 查看浏览器网络请求、边缘日志或应用日志，确认参数被收到。
4. 完成一次测试转化，确认来源能和转化事件关联。
5. 再测试一个不带 UTM、但设置 Referer 的访问，确认日志能看到或明确看到为空。
6. 对照原始日志和分析面板，检查时区、去重和跨页面传递是否一致。

## 什么结论可以说，什么结论不能说

可以说：

- “我们观察到带 utm_source=chatgpt.com 的访问。”
- “我们观察到 Referer 主机为 chatgpt.com 的访问。”
- “这些可观察到的访问中，有多少完成了目标。”

不能说：

- “没有 UTM，所以这个用户一定不是从 AI 来的。”
- “没有 Referer，所以 AI 没有带来访问。”
- “一次带参数的访问就证明 AI 让业务增长。”

浏览器隐私设置、跳转、应用内浏览器、复制粘贴、Referrer-Policy 和广告拦截都可能移除这些信号。UTM 与 Referer 是**正向证据**，缺少它们只是“来源不可观察”，不是反向证据。

## 隐私与安全

- UTM 中不要放邮箱、姓名、订单号等个人信息。
- 只保留完成归因所需的字段，设置明确的日志保留期限。
- 完整 Referer 可能包含路径和查询参数；默认优先保存主机名，必要时再短期保存原值。
- 按你所在地区的隐私法规、Cookie 同意机制和隐私政策执行。
- 不要把来源字段直接当作授权条件，也不要用它处理账号安全决策。

## 和 MadeInRed 的关系

先用 [被 AI 引用体检](https://madeinred.com/) 检查网站是否能被 AI 抓取和引用，再用本教程在你自己的分析或日志系统中验证“可观察到的 AI 引荐访问”。体检回答“能不能被看见和引用”，本教程回答“点击发生后，我能看到哪些访问信号”。

原始 Markdown 地址：https://madeinred.com/monitor.md
