多信号关键词收入归因 是做什么的?
您正在使用 BigQuery 中的 GSC 批量导出和 GA4 导出数据,进行关键词级别的收入归因分析。输出结果是一个可排序的 Markdown 表格,包含(查询、页面、意图、点击量、归因会话、归因转化、归因收入、置信度),以及一个简短的头条摘要。
使用时机
当用户想知道哪些查询驱动流量价值(会话、转化、收入)而不仅仅是点击量时,触发此技能。该方法论比标准的 ga4_gsc_query_revenue MCP 工具更精细,因为它通过三个信号(页面 + 日期 + 设备)进行连接后再分配 GA4 指标,应用意图权重使品牌和交易查询获得比信息查询更多的权重,并重新归一化以确保总和与 GA4 完全一致。
如果用户只想要点击份额或一个一行答案(如“我的网站排名哪些关键词”),请改用 ahrefs-quick-lookup 或预构建的 ga4_gsc_query_revenue 工具。
必需输入
询问缺少的参数。如果用户未指定,则使用显示的值作为默认值。
| 参数 | 默认值 | 说明 |
|---|---|---|
brand_terms | 必需 | 小写数组。Tier 1 子字符串匹配。使用规范的品牌形式(例如 ['snippet digital', 'snippetdigital'])。 |
brand_tokens | [] | 小写数组。Tier 2 词干前缀令牌。每个令牌匹配任何单词的开头,因此 'model' 可以匹配 'models'、'modelling'、'modeling'。对于多词品牌,建议使用此参数以捕捉单词顺序和词干变体。 |
brand_min_token_matches | 2 | 查询中必须出现来自 brand_tokens 的多少个令牌才能被视为品牌查询。对于双词品牌,2 是合适的默认值。 |
brand_negative_terms | [] | 小写数组。Tier 3 假阳性防护。任何包含其中一个的查询将永远不会被视为品牌查询。用于有歧义的单词品牌(例如 ['apple pie', 'apple cider'] 对于 Apple)。 |
gsc_dataset | 必需 | 包含 searchdata_url_impression 的数据集,例如 searchconsole。 |
ga4_dataset | 必需 | GA4 导出数据集,例如 analytics_123456789。 |
days | 28 | 从今天减去 3 天开始回溯的天数(GSC 大约有 3 天的延迟)。 |
min_clicks | 5 | 删除在此时间窗口内总点击量低于此值的查询。 |
value_per_conversion | 0.0 | 如果 GA4 中没有货币价值,可选的固定潜在客户价值。设置为例如 499.0 以表示每次转化的固定价值。 |
conversion_events | ['form_submit', 'generate_lead', 'purchase'] | 计为转化的 GA4 事件名称。 |
意图权重和意图正则表达式也是可配置的(参见 attribution.sql 中的 DECLARE 块)。默认值针对 B2B/潜在客户生成网站进行了调整;对于电子商务网站,可能需要将交易权重提高到 2.5。
品牌匹配:如何填写
在向用户询问品牌词时,请明确询问这两个层级:
"您的品牌是什么?请提供 1) 人们输入的确切短语(例如 'snippet digital', 'snippetdigital'),以及 2) 您品牌中用于匹配词干的独特单词(例如 'snippet', 'digital')。"
对于大多数多词品牌,第二层应包含与第一层相同的单词,但作为单个令牌。示例:
| 品牌 | brand_terms(第一层) | brand_tokens(第二层) | min |
|---|---|---|---|
| Coca-Cola | ['coca cola', 'cocacola', 'coke'] | ['coca', 'cola'] | 2 |
| Snippet Digital | ['snippet digital', 'snippetdigital'] | ['snippet', 'digital'] | 2 |
| UK Models | ['uk models', 'ukmodels'] | ['uk', 'model'] | 2 |
| Keyword Insights | ['keyword insights', 'keywordinsights'] | ['keyword', 'insights'] | 2 |
对于单字品牌(Apple, Notion, Stripe),第二层通常不是必需的。请改用第三层来排除假阳性:
| 品牌 | brand_terms(第一层) | brand_negative_terms(第三层) |
|---|---|---|
| Apple(公司) | ['apple'] | ['apple pie', 'apple cider', 'apple fruit'] |
| Stripe(支付) | ['stripe'] | ['pin stripe', 'stripe pattern'] |
如果用户报告说,明显与品牌相关的查询被分类为信息查询(例如复数形式或单词顺序变体被遗漏),解决方法通常是添加第二层令牌。
步骤
-
确认输入。 如果缺少 brand_terms、gsc_dataset 或 ga4_dataset,请询问用户。明确确认任何异常值(例如 days > 90,min_clicks > 25)。
-
探测两个数据集是否存在。 在运行完整查询之前,通过 BigQuery MCP
query工具运行两个廉价探测:SELECT MAX(data_date) FROM \{gsc_dataset}.searchdata_url_impression``SELECT MAX(_TABLE_SUFFIX) FROM \{ga4_dataset}.events_*`` 如果任何一项出错,向用户展示确切的错误信息并停止。不要继续进行主查询。
-
运行归因查询。 使用 BigQuery MCP
query工具,代入<<GSC_DATASET>>和<<GA4_DATASET>>为用户的数据集名称后运行attribution.sql中的 SQL。更新 DECLARE 块以反映用户的 brand_terms、days、min_clicks、value_per_conversion 和 conversion_events。将max_rows设置为 200 以捕获长尾数据。 -
渲染输出。 将结果格式化为按归因收入降序排序的 Markdown 表格。列:query、page、intent、clicks、att_sessions、att_conversions、att_revenue(带货币符号)、candidates_on_page、confidence。在表格之后,撰写:
- 一个 2-3 句话的头条摘要,总结总点击量、会话、转化、收入以及品牌份额。
- 排名前 3 的高置信度驱动因素(每行一项)。
- 任何值得标记的模式(例如,所有 HIGH 置信度的页面转化率为零;看起来不寻常的意图分布;子字符串规则遗漏的品牌变体)。
-
可选地渲染可视化构件。 如果用户要求仪表盘、快照或截图,使用
show_widgetMCP 工具构建一个内嵌的 HTML 小部件。该小部件应包括:4 个指标卡片(点击量、会话、转化、收入);一个按意图着色的前 12 个查询归因收入水平条形图;一个按意图分布(点击量 vs 会话 vs 收入)的堆叠条形图;以及一个可排序、可过滤的表格。
常见陷阱及应对措施
- 品牌词被子字符串规则遗漏。 "uk model" 不包含 "uk models"。始终主动模糊化品牌列表:包含单数/复数形式、带空格和不带空格、常见拼写错误、内部职位名称。如果您看到首页上的信息查询在原始点击量上超过品牌查询,这几乎总是遗漏品牌变体的结果。
- 收入处处为零。 这意味着 GA4 没有填充
ecommerce.purchase_revenue或event_params.value。对于潜在客户生成网站来说,这很常见。要么接受转化作为成功指标,要么传递value_per_conversion,以便收入被估算为conversions x value。 - 所有置信度评级都是 LOW,因为所有数据都在首页上。 这是一个合法的发现,而不是一个错误。首页确实有太多候选查询导致无法清晰归因。将其标记为一个结构性发现(“内部链接和特定主题的着陆页可以将此归因分解为确定性的块”),而不是试图操纵分数。
- 连接率似乎很低。 GSC 和 GA4 对 URL 的规范化方式不同(尾部斜杠、查询字符串、片段)。SQL 已在两侧去除尾部斜杠和查询字符串;如果连接率仍然低于 50%,请检查协议不匹配(http vs https)或主机名差异(www vs 非 www)。
- GA4 自然流量过滤器排除了太多内容。 SQL 过滤到任何事件报告
medium=organic的会话。如果用户的 GA4 设置使用不同的流量来源值(例如频道分组中的Organic Search),请编辑ga4_sessionsCTE 中的 WHERE 子句。 - GSC 数据集在一个项目中,GA4 在另一个项目中。 BigQuery 跨项目查询可以正常工作;只需完全限定两个占位符,例如
project-a.searchconsole和project-b.analytics_123456789。MCP 服务帐户需要在两者上具有读取权限。
输出格式示例
## [域名] 关键词收入归因,过去 28 天
**时间窗口:** 2026-04-01 至 2026-04-28
**品牌词:** "..." | **最小点击量:** 5
| 查询 | 页面 | 意图 | 点击量 | 归因会话 | 归因转化 | 归因收入 | 置信度 |
|---|---|---|---|---|---|---|---|
| ... | ... | branded | 280 | 263.4 | 19.96 | £9,960 | HIGH |
**头条:** 903 点击量,697 个归因会话,39 次转化,£19,461 收入。品牌占用了 57% 的点击量却贡献了 86% 的转化。
**排名前 3 的高置信度驱动因素**
1. ...
2. ...
3. ...
**模式**
- ...
- ...
此技能中的文件
attribution.sql:参数化查询SKILL.md:本文件examples/synthetic_saas_demo.md:供参考的已实践输出示例