---
name: googleads-data-acquisition
display_name: 数据采集与脚本调度
description: Google Ads 数据采集层。跨账户数据采集经验总结——通过 Composio 拉取 Google Ads 账户数据、系统分析、记录学习的完整工作流。基于 14 个账户、~$190K/月花费、96% 浪费率的经验提炼。适用于新账户接手、全量数据拉取、跨账户分析。
version: 1.6.0
author: palu + Claude Code
created: 2026-05-14
last_updated: 2026-06-04
license: Private
parent: googleads
auto_execute: true
source: 14 个 Composio 全量采集账户接管报告 + 跨账户三维全息分析
supersedes: 接手账户信息采集.md（仅技术流程，本 skill 补充分析框架 + 决策支持）
applies_to: [Codex, Claude Code, Hermes]
versioning: |
  X.Y.Z 规则:
  X +1: 推翻核心规律（如原来判定为废物方向的意图簇产生大量目标客户）
  Y +1: 新增已验证规律/新数据补充（新账户分析后追加）
  Z +1: 修复错别字/路径错误/文案精度
changelog:
  - 1.6.0 (2026-06-04): 分页机制——Q01-Q18 新增 next_page_token 循环拉取，消除 API 分页截断。
                        行数校验 Gate——第三步后新增第四步(拉取完整性校验)：每查询输出实际行数+跨查询交叉校验。
                        api-datasets.yaml 同步升级 2.0.0（删除所有硬编码 LIMIT + impressions>0 过滤）。
  - 1.5.0 (2026-06-03): 查询编号重构——取消字母后缀，平级 Q01-Q18。每查询标注巡检类别编号和 API v23 状态。标题改为"18 个 GAQL 查询（对齐账户巡检.md 17 类）"。新增权威来源声明。
  - 1.4.0 (2026-05-28): 合并 googleads-data-acquisition 旧版(v1.3.0) 全量运营内容 + 新版(v1.0.0)脚本索引/决策树/降级策略/操作门禁 → 统一版本
  - 1.3.0 (2026-05-26): 旧版峰值——14账户经验、Evidence Gate、10条硬规则、关键词/文案生成规则、持续更新机制
  - 1.0.0 (2026-05-27): 新版初版——从 scripts/ 目录扫描 + launch-playbook + task-router 提取脚本调度逻辑
---

# 数据采集与脚本调度

## 触发条件

加载本 skill 当：

- 需要通过 Composio 拉取 Google Ads 账户数据
- 接手同事/新账户，需要做全量数据采集
- 对已拉取的数据做系统分析和知识沉淀
- 属于 T7 战略级——新账户起跑前的数据准备

## 权威来源

> 本文件为 GAQL 技术实现参考。巡检数据类别定义以 `账户巡检.md` 为准（17 类）。
> 查询编号 Q01-Q18 与账户巡检.md 的 17 类对应关系见各查询标题。

## 脚本清单

所有脚本位于 `交接中心/docs/knowledge/googleads/reference/scripts/`：

| 脚本 | 用途 | 触发条件 | 输出格式 |
|------|------|---------|---------|
| `zero-conversion-alert.gs` | 零转化告警——检测系列/广告组连续7天有点击零转化 | T4 诊断巡检 / T0 "不消耗排查" | Google Ads Script 报告 |
| `lead-classifier.py` | 线索质量分类——基于表单字段+行为信号分级(S/A/B/C) | 有效客户数异常波动 / 甲方反馈线索质量差 | JSON: {lead_id, grade, signals} |
| `ivt-defense-workflow.md` | IVT(无效流量)防御——展示级IVT排查+过滤规则 | 展示量异常飙升(>200% WoW) / CTR异常低 / 甲方质疑流量质量 | 排查报告 |
| `competitor-ad-intel.py` | 竞品广告情报——SEMRush/Adthena 竞品关键词+文案抓取 | T7 战略级 / 新市场冷启动前 / 季度竞品回顾 | CSV: {domain, keyword, copy, position, date} |
| `rss-fetcher.py` | RSS 源抓取——行业反欺诈/安全博客+法律新闻+竞品网站 | 夜不收 情报采集(按 cron 定时) | JSON: {source, title, url, date, category, relevance_score} |
| `weekly-intel.py` | 周度情报汇总——聚合 RSS+社区+竞品，产出周报 | 每周策略复盘(T7) / 出价周度审查 | 周报 MD |

## 数据拉取决策树

```
任务需要外部数据？
├── 实时账户数据（消耗/转化/展示份额）
│   └── Composio API → api-datasets.yaml 定义的数据集
├── 竞品情报（关键词/文案/排名）
│   ├── 有 SEMRush/Adthene 订阅 → competitor-ad-intel.py
│   └── 无订阅 → Google SERP 手动采集 + Ads Transparency Center
├── 行业反欺诈/安全新闻
│   └── rss-fetcher.py → curated-anti-fraud-articles.md
├── 脚本排障（GAQL/触发器/表格）
│   └── routing-priority.md P0: Google Ads Scripts 排障
├── 转化异常诊断
│   ├── 零转化 → zero-conversion-alert.gs
│   ├── 展示异常 → ivt-defense-workflow.md
│   └── 线索质量 → lead-classifier.py
└── 无匹配脚本 → Composio 降级(tool_search → Google Ads API)
```

## 工作流总览

```
准备 → Composio 连接 → 18 个 GAQL 查询 → 三路处理 → 四级分类(A/B/C/D) → 资产入库 → 决策输出
        (账户巡检.md 触发)        ├── 路1: 原始存档 → account-data/
                                  ├── 路2: 基准对比 → 触达决策标记
                                  └── 路3: 提取资产 → asset-library/
                                                                             ↓
                                                                   下次部署直接消费
```

### 建议拉取批次

以下为建议顺序，同批内可并发。全量巡检按 Batch A→B→C 依次执行。

**Batch A — 核心表现层：** Q01 账户身份、Q02 转化追踪、Q03 全量系列、Q04 关键词、Q05 搜索词、Q08 设备、Q13 网络、Q14 落地页、Q17 政策状态。此批拉完可判断账户健康状态。

**Batch B — 精细优化层：** Q06 素材资产、Q07 地域、Q09 质量得分、Q12 广告组、Q18 否定词。此批提供优化方向。

**Batch C — 深度诊断层：** Q10 时段、Q11 竞价分析、Q15 受众、Q16 附加信息。此批数据可能因 API 限制或账户未配置返回空集。

### 四级分类标准

每次巡检/数据采集后，所有关键词/搜索词/素材执行以下分类：

| 级别 | 标准 | 去向 | 用途 |
|------|------|------|------|
| **A级** | 多账户有效客户验证 | `asset-library/keywords/A-级-已验证转化词.csv` | 新账户直接复制部署 |
| **B级** | 单账户有效客户+多账户有相似信号 | `asset-library/keywords/B-级-单账户验证词.csv` | 小预算测试 |
| **C级** | 方向对但无转化数据 | 保留在原始存档 | 14天后复查，有转化→升B |
| **D级** | 已验证废物方向（高花费零转化） | `asset-library/negatives/` + `learnings/failures/` | 永不重复，否定词追加 |

**广告素材**同理：
- BEST label + 有转化 → 提取模板到 `asset-library/creatives/高转化RSA模板.csv`
- LOW label + 零转化 → 标记轮换

**地理**同理：
- 持续高效(CPA<均值70%) → `asset-library/geos/高效地区清单.csv`
- 持续低效(3次巡检零转化) → `asset-library/geos/地理排除清单.csv`

---

## 第一步：准备

### 加载必要文件

| 文件 | 用途 |
|------|------|
| `交接中心/docs/checkpoints/googleads-accounts.yaml` | 账户注册表，确认是否已有记录 |
| `交接中心/docs/knowledge/googleads/维权项目知识库/usalp关键词2.0/投放方案3.0/投放方案3.0.md` | 当前投放参数、策略规则 |
| `交接中心/docs/knowledge/googleads/asset-library/negatives/硬阻断词.csv` | 跨账户硬阻断词库 |
| `交接中心/docs/knowledge/googleads/asset-library/negatives/软否定候选.csv` | 观察中待判定词 |
| `交接中心/docs/knowledge/googleads/asset-library/keywords/A-级-已验证转化词.csv` | A 级种子词（多账户验证）|
| `交接中心/docs/knowledge/googleads/asset-library/keywords/B-级-单账户验证词.csv` | B 级测试词（单账户验证）|

### 确认账户状态

从 accounts.yaml 读取账户状态：
- `active: true` → 正常采集（30 天窗口）
- `active: false` + `frozen_archive: true` → 冻结账户采集（90 天归档）
- 新账户（不在注册表中）→ 全量采集后注册

---

## 第二步：Composio 连接

```bash
composio connections list --toolkit googleads
```

- 已有连接 → 记录 connection name，直接用
- 无连接 → 新建 OAuth 连接，发授权链接给账户持有人
- 多账户连接 → 确认目标 Customer ID

**注意**：冻结账户采集完后立即删除 Composio 连接。

---

## 第三步：18 个 GAQL 查询（对齐账户巡检.md 17 类）

### Q01 (巡检 #1) 账户身份 · API:正常
```sql
SELECT customer.id, customer.descriptive_name, customer.currency_code, customer.time_zone
FROM customer LIMIT 1
```

### Q02 (巡检 #16) 转化追踪 · API:正常 · 不含 GCLID/归因
```sql
SELECT conversion_action.name, conversion_action.type, conversion_action.status
FROM conversion_action
WHERE conversion_action.status = 'ENABLED'
```

### Q03 (巡检 #2) 全量系列 · API:正常
```sql
SELECT campaign.id, campaign.name, campaign.status, campaign.serving_status,
       campaign.advertising_channel_type, campaign.bidding_strategy_type,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions, metrics.cost_per_conversion,
       metrics.search_impression_share
FROM campaign
WHERE campaign.status != 'REMOVED' AND segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
```

### Q04 (巡检 #4) 关键词 · API:正常
```sql
SELECT ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type,
       ad_group_criterion.status, campaign.name, ad_group.name,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions
FROM keyword_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
```

### Q05 (巡检 #5) 搜索词 · API:正常

> **关键：必须导出每条搜索词，不能聚合。** 搜索词报告里的每一行都是一个真实用户输入的搜索词，其中可能包含关键词覆盖不到的长尾变体。

```sql
SELECT search_term_view.search_term, campaign.name, ad_group.name,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions
FROM search_term_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
```

**输出要求：** 导出为 CSV，保留每一行原始搜索词。后续在 keyword-mining 流程中，筛选：
- 有转化的搜索词 → 是否在词表中？不在则加入 Broad
- 高花费零转化搜索词 → 加入否定词
- 没见过但有转化意图的搜索词 → 标记观察

### Q06 (巡检 #6+#7) 广告素材+素材资产 · ⚠️ v23: asset_type,policy_summary_info 报错

> 哪条标题/描述点击率最高？Q5 告诉你谁在搜，Q5b 告诉你什么文案有效。

```sql
SELECT campaign.name, ad_group.name,
       ad_group_ad_ad.ad_strength, ad_group_ad.status,
       ad_group_ad_asset_view.asset,
       ad_group_ad_asset_view.asset_type,
       ad_group_ad_asset_view.performance_label,
       ad_group_ad_asset_view.policy_summary_info,
       metrics.impressions, metrics.clicks, metrics.ctr,
       metrics.cost_micros, metrics.conversions
FROM ad_group_ad_asset_view
WHERE segments.date DURING LAST_30_DAYS
  AND ad_group_ad_asset_view.asset_type IN ('HEADLINE', 'DESCRIPTION')
ORDER BY metrics.impressions DESC
```

**输出要求：** 导出 CSV，关注 performance_label（BEST / GOOD / LOW / UNKNOWN），BEST 的标题是 RSA 优化方向。

### Q07 (巡检 #10) 地域表现 · ⚠️ 改用 geographic_view

> 哪个州 CPA 最低？钱应该往哪投？

```sql
SELECT geo_target_constant.country_code, geo_target_constant.name,
       campaign.name,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions, metrics.cost_per_conversion
FROM campaign_criterion
WHERE segments.date DURING LAST_30_DAYS
  AND campaign_criterion.type = 'LOCATION'
ORDER BY metrics.cost_micros DESC
```

### Q08 (巡检 #12) 设备表现 · API:正常

> 移动端 vs 桌面端 CPA 差异。如果移动端 CPA 远高于桌面，说明落地页移动适配有问题。

```sql
SELECT campaign.name,
       segments.device,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions, metrics.cost_per_conversion
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
  AND segments.device IN ('DESKTOP', 'MOBILE', 'TABLET')
ORDER BY metrics.cost_micros DESC
```

### Q09 (巡检 #4补充) 质量得分 · API:正常

> QS 每提高 1 分，CPC 约降低 10-15%。没有 QS 数据就无法优化。

```sql
SELECT campaign.name, ad_group.name,
       ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type,
       ad_group_criterion.quality_info.quality_score,
       ad_group_criterion.quality_info.creative_quality_score,
       ad_group_criterion.quality_info.post_click_quality_score,
       ad_group_criterion.quality_info.search_predicted_ctr
FROM ad_group_criterion
WHERE ad_group_criterion.type = 'KEYWORD'
  AND ad_group_criterion.quality_info.quality_score IS NOT NULL
ORDER BY ad_group_criterion.quality_info.quality_score ASC
```

### Q10 (巡检 #11) 时段表现 · ⚠️ 30天可能过大，改用 LAST_7_DAYS

> 小时级 CPA 数据，用于 dayparting 调价。如果某个时段 CPA 持续高出其他时段 50%+，应降低该时段出价。
> 若 7 天仍文件过大，按单个 campaign 分别拉取。

```sql
SELECT campaign.name,
       segments.day_of_week, segments.hour,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions, metrics.cost_per_conversion
FROM campaign
WHERE segments.date DURING LAST_7_DAYS
ORDER BY metrics.cost_micros DESC
```

### Q11 (巡检 #17) 竞价分析 · ✅ 已验证: campaign 级搜索份额指标

> 搜索展示份额及丢失原因。因评级丢失>40% = QS/广告效力问题。因预算丢失>10% = 预算受限。
> v23 下 auction_campaign.* 字段不可用。改用 campaign 资源自带的搜索份额指标。

```sql
SELECT campaign.name,
       metrics.search_impression_share,
       metrics.search_absolute_top_impression_share,
       metrics.search_rank_lost_absolute_top_impression_share,
       metrics.search_budget_lost_absolute_top_impression_share
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
  AND campaign.status = 'ENABLED'
```

### Q12 (巡检 #3) 广告组 · API:正常

> 系列太粗，需要广告组级数据看具体哪个组在消耗。

```sql
SELECT campaign.name, ad_group.name, ad_group.status,
       ad_group.type,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions, metrics.cost_per_conversion
FROM ad_group
WHERE segments.date DURING LAST_30_DAYS
  AND ad_group.status != 'REMOVED'
ORDER BY metrics.cost_micros DESC
```

### Q13 (巡检 #14) 网络表现 · ⚠️ segments.network→ad_network_type

> Search vs Search Partners vs Display Network — 钱花对渠道了吗？

```sql
SELECT campaign.name,
       segments.network,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions, metrics.cost_per_conversion
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
  AND segments.network IN ('SEARCH', 'SEARCH_PARTNERS', 'DISPLAY')
ORDER BY metrics.cost_micros DESC
```

### Q14 (巡检 #9) 落地页 · API:正常

> 每个落地页的花费、转化、CTR——哪个页面真的在转化？

```sql
SELECT landing_page_view.unexpanded_final_url, campaign.name,
       metrics.impressions, metrics.clicks, metrics.ctr,
       metrics.cost_micros, metrics.conversions, metrics.cost_per_conversion
FROM landing_page_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.conversions DESC
```

### Q15 (巡检 #13) 受众表现 · ✅ 已验证: 返回 0 行=合法空集

> 受众列表的细分表现——哪个受众段在转化？
> v23 下 .audience 字段不可用。基础查询可拉取，若账户无受众列表则返回 0 行。

```sql
SELECT ad_group_audience_view.resource_name,
       campaign.name, ad_group.name,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions
FROM ad_group_audience_view
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.cost_micros DESC
```

### Q16 (巡检 #8) 附加信息 · ✅ 已验证: ad_group_asset 基础字段

> 站内链接/结构化摘要/电话/表单——哪些附加信息有效？
> v23 下 ad_group_asset_view.asset/performance_label 不可用。改用 ad_group_asset 基础查询。

```sql
SELECT ad_group_asset.resource_name,
       campaign.name, ad_group.name,
       ad_group_asset.status,
       metrics.impressions, metrics.clicks,
       metrics.cost_micros, metrics.conversions
FROM ad_group_asset
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.clicks DESC
```

### Q17 (巡检 #1补充) 政策状态 · API:正常
```sql
SELECT campaign.id, campaign.name, campaign.status,
       campaign.primary_status, campaign.primary_status_reasons
FROM campaign
WHERE campaign.status != 'REMOVED'
```

### Q18 (巡检 #15) 否定词 · API:正常
```sql
SELECT campaign.name, ad_group.name, ad_group_criterion.keyword.text
FROM ad_group_criterion
WHERE ad_group_criterion.negative = TRUE AND ad_group_criterion.status = 'ENABLED'
```

### 分页机制 ◀ 不可跳过

> Google Ads API 默认每页返回行数有限。未处理 `next_page_token` 则只拿到第一页——后续数据被静默丢弃。
> **所有 Q01-Q18 查询必须逐页拉取，直到 `next_page_token` 为空。**

**Composio 执行分页的标准模式**：

```
1. 执行 GAQL 查询 → 获取第 1 页结果 + next_page_token
2. IF next_page_token 非空:
     用相同 GAQL + page_token 参数执行下一页 → 追加到结果集
     重复直到 next_page_token 为空
3. 合并所有页 → 去重(按 resource_name 或 搜索词文本) → 输出完整结果集
```

**分页检查清单（每次拉取后）**：

```
[ ] 每类查询是否检查了 next_page_token?
[ ] 如返回了 token 但未追页 → 记录为 ✗(分页未完成) 而非 ✓
[ ] 合并后是否做了去重?（跨页重复是 API 已知行为）
```

**Composio 环境下的降级方案**（如 MCP 工具不支持 page_token 参数）：

1. 用 `COMPOSIO_SEARCH_TOOLS` 确认当前工具 schema 是否支持 `page_token` 或 `next_page_token`
2. 不支持 → 在完整度 Gate 中标注 `⚠️ 分页不可用，实际行数可能被截断`
3. 对比预期行数（活跃账户 30 天搜索词应 >500 条，关键词应 >50 条）→ 行数过低则提示用户手动从 Google Ads 后台导出 CSV 补全

**预期行数参考（30 天窗口，日花费 $50+ 的活跃账户）**：

| 查询 | 预期最少行数 | 异常信号 |
|------|:----------:|------|
| Q04 关键词 | ≥50 | <20: 关键词可能被暂停或账户结构异常 |
| Q05 搜索词 | ≥500 | <200: **极可能被截断**，检查分页 |
| Q06 素材资产 | ≥10 | =0: 账户无 RSA 或 API 权限不足 |
| Q07 地域 | ≥5 | =0: 检查 geographic_view 权限 |
| Q10 时段 | ≥20 | =0: 检查 ad_schedule_view 权限 |

> 以上为维权/沙特项目经验值。新项目首次拉取时以实际为准，后续拉取对比首次基准。

### 跨查询交叉校验 ◀ 拉完即执行

```
[ ] Q05 搜索词行数 ≥ Q04 关键词行数?（搜索词应多于关键词——BROAD 匹配会扩散到大量长尾）
    否 → Q05 可能被截断，检查分页
[ ] Q04 关键词有花费 > $0 的词 → Q05 搜索词中也应有对应花费?（花费一致性）
    否 → Q05 不完整，检查分页或日期窗口对齐
[ ] Q03 系列总花费 ≈ SUM(Q04 关键词花费) ≈ SUM(Q05 搜索词花费)?（差异 >20% = 数据不全）
    是 → 数据完整度可信
    否 → 标注差异，检查是否有系列/广告组被过滤
```

### 补充查询：冻结账户（90 天归档）

若查询 6 显示 SUSPENDED/CLOSED，或查询 3 全部零花费+零转化：

```sql
-- 系列 90 天
SELECT campaign.id, campaign.name, campaign.status, campaign.serving_status,
       campaign.advertising_channel_type, campaign.bidding_strategy_type,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions, metrics.cost_per_conversion
FROM campaign
WHERE segments.date DURING LAST_90_DAYS
ORDER BY metrics.cost_micros DESC

-- 关键词 90 天（按转化排序）
SELECT ad_group_criterion.keyword.text, ad_group_criterion.keyword.match_type,
       campaign.name, ad_group.name,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions
FROM keyword_view
WHERE segments.date DURING LAST_90_DAYS
ORDER BY metrics.conversions DESC

-- 搜索词 90 天（仅转化词）
SELECT search_term_view.search_term, campaign.name,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions
FROM search_term_view
WHERE segments.date DURING LAST_90_DAYS AND metrics.conversions > 0
ORDER BY metrics.conversions DESC

-- 落地页 90 天
SELECT landing_page_view.unexpanded_final_url, campaign.name,
       metrics.impressions, metrics.clicks, metrics.cost_micros,
       metrics.conversions, metrics.cost_per_conversion
FROM landing_page_view
WHERE segments.date DURING LAST_90_DAYS
ORDER BY metrics.conversions DESC
```

---

### 第3.5步：拉取完整性校验 ◀ 不可跳过

> 18 类数据全部拉取完成后，先验证每类数据的实际行数。行数异常 = 数据被截断，禁止进入分析。

**输出格式**：

```
[拉取完整度: X/18 查询 | 预计总行数 ~Y | 实际总行数 Z]

| # | 查询 | 状态 | 行数 | 分页 | 判断 |
|----|------|:--:|:----:|:--:|------|
| Q01 | 账户身份 | ✓ | 1 | — | 正常 |
| Q02 | 转化追踪 | ✓ | 2 | — | 正常 |
| Q03 | 全量系列 | ✓ | 3 | 1页 | 正常 |
| Q04 | 关键词 | ✓ | 48 | 1页 | 正常 |
| Q05 | 搜索词 | ⚠️ | 187 | 1页 | 🔴 行数异常: 日花费>$100但搜索词<200，检查分页 |
| Q06 | 素材资产 | ✓ | 23 | 2页 | 正常 |
| ... | ... | ... | ... | ... | ... |
```

**异常判断规则**：

| 条件 | 判定 | 动作 |
|------|:--:|------|
| 行数 = 0 且账户有花费 | 🔴 数据缺失 | 检查 API 权限/查询语法/账户状态 |
| 行数 < 预期最低行数 | 🔴 疑似截断 | 检查 next_page_token 是否已追页 |
| 行数 = 预期最低行数边界值(如恰好 500/1000/10000) | 🟡 可能在 API 默认分页边界 | 追页确认 |
| 行数 > 预期且无分页标记 | 🟢 正常 | 通过 |
| 跨查询交叉校验失败(花费不一致) | 🔴 数据不全 | 逐查询排查，标注为 ✗ |

**所有 🔴 项处理完毕前，禁止进入第四步分析框架。**

> 若 Composio MCP 工具不支持 `next_page_token`，标注 `⚠️ 分页不可用` 并提示用户：从 Google Ads 后台导出完整 CSV（报告 → 预定义报告 → 搜索词/关键词 → 下载 .csv），作为补全数据源。

---

## 第四步：拉完数据后的分析框架（经验核心）

### 4.1 ——意图审计（最重要的环节）

**不要相信 Google 后台转化数。** 14 个账户的经验证明：Google 优化的是"表单提交"，不是"客户质量"。

逐条分析搜索词和关键词的意图，按以下分类：

| 意图类型 | 例子 | 判断 |
|---------|------|------|
| 诈骗受害者求助 | "I lost money in a scam", "recover stolen investment funds" | 目标客户 |
| 身份盗窃受害者 | "someone stole my social security number", "identity theft victim lawyer" | 目标客户 |
| 找诈骗维权律师 | "investment fraud attorney", "wire fraud lawyer" | 目标客户 |
| 找理赔金 | "claim settlements", "class action lawsuit money" | 非目标（最大浪费源）|
| 人身伤害 | "injury lawyer", "personal injury settlement" | 非目标（完全错业务线）|
| 免费服务 | "pro bono", "free legal advice", "legal aid" | 非目标 |
| 信息查询 | "how to report a scammer", "what is fraud" | 非目标（跨账户零转化）|
| 举报意图 | "report to ic3", "attorney general complaint" | 非目标 |
| 找无人认领资金 | "unclaimed money", "unclaimed property" | 非目标 |
| 找律师比价 | "find a lawyer", "lawyers near me", "lawsuit attorneys" | 非目标 |

### 4.2 ——跨账户匹配（关键验证）

采集完成后，将本账户数据与跨账户 14 个账户的已验证模式对照：

**本账户的关键词/搜索词是否命中以下 5 大废物方向？**
```
class action lawsuits / claims
claim settlements / settlement money
injury lawyer / personal injury
unclaimed money / unclaimed property
find a lawyer / pro bono / free legal / legal aid
```
未命中 → 方向可能正确
命中 → 此方向 6+ 账户验证为零目标客户

**本账户的搜索词是否匹配"目标客户语义模式"？**
```
"I lost money in [scam/investment]"
"scammed by [platform/person]"
"[fraud type] attorney/lawyer"
"recover [lost funds/investment]"
"sue [bank/platform/financial advisor]"
```

### 4.3 ——CPA 幻觉检测

**危险信号**：CPA 特别低（<$150）但转化数特别高（>20cv）

14 个账户经验：608 账户 $77,950/月、60 转化、$130 CPA——100% 非目标客户。
**CPA 越低越要逐条看搜索词**——便宜的转化往往是错了人。

### 4.4 ——结构健康检查

| 检查项 | 标准 | 危险信号 |
|--------|------|---------|
| 系列数 | 1-2 个 Search 系列 | >3 个系列（结构臃肿）|
| Video 系列 | 不建 | 存在 = 浪费一个系列名额 |
| 活跃/总系列比 | >50% | <30%（大量 PAUSED 残留）|
| 关键词匹配类型 | BROAD 为主 | PHRASE/EXACT 为主（法律词搜索量为零）|
| 落地页域名 | infotechpop.com / winclaim.online | 未验证域名 |

### 4.5 ——追踪基础设施检查

| 组件 | 必须部署？|
|------|---------|
| 系列级追踪模板 | **必须**（14 个账户零部署=零归因）|
| GCLID 追踪脚本 | **必须**（关联表单提交→Google Ads）|
| Enhanced Conversions | 推荐（AI Max 学习信号）|

---

## 第五步：记录沉淀

### 存放路径

```
交接中心/docs/knowledge/googleads/account-data/{customer_id}/
├── YYYY-MM-DD_takeover-report.md    ← 采集报告
├── YYYY-MM-DD_rescue-report.md      ← 冻结账户归档（可选）
├── HOME.md                           ← 首页摘要（可选）
└── INDEX.md                          ← 索引（可选）
```

### 注册表更新

更新 `交接中心/docs/checkpoints/googleads-accounts.yaml`：

```yaml
- customer_id: "XXX-XXX-XXXX"
  active: true/false
  frozen_archive: true/false        # 仅冻结账户
  takeover: true
  takeover_date: "YYYY-MM-DD"
  reusable_assets: N                # 可复用资产数量
  composio_connections: []          # 冻结后删除
  notes: "[一句话诊断摘要]"
```

---

## 第六步：决策输出

### 经验门禁（Evidence Gate）——生成任何内容前必须执行

本门禁的目的是：**确保新账户的所有关键词、否定词、文案、出价决策，100% 来源于 14 个账户的已验证数据，而不是 AI 的通用知识或模型记忆。**

在任何输出生成前，先回答以下问题：

**Q1：这个关键词是否在 cross-account-seeds.csv 中有记录？**
- 有 → 直接采用，标注来源
- 没有 → 检查是否为目标客户语义模式（4.2 节）的合理扩展，否则禁止输出

**Q2：这个否定词是否在 asset-library/negatives/硬阻断词.csv 中有记录？**
- 有 → 直接采用
- 没有 → 检查是否为 5 大废物方向（4.2 节）的变体，否则禁止输出

**Q3：这个建议是否违反 10 条硬规则中任一条？**
- 不违反 → 继续
- 违反 → 禁止输出，标注违反的具体规则编号

**Q4：使用的落地页域名是否为已验证域名？**
- infotechpop.com 或 winclaim.online → 允许
- 其他域名 → 禁止（14 个账户经验：未验证域名零转化）

**Q5：出价预算建议是否在 $150-200/天范围内（首月）？**
- 是 → 允许
- 否 → 需要特别说明理由（14 个账户经验：超出范围曾导致 $77,950 全浪费）

---

### 关键词生成规则——不允许凭空创作

**允许的关键词来源（优先级从高到低）：**

| 来源 | 示例 | 优先级 |
|------|------|--------|
| cross-account-seeds.csv 中的 A 级词 | identity theft legal advice（7cv 跨账户） | P0 — 首选 |
| cross-account-seeds.csv 中的 B 级词 | financial fraud attorney（4cv） | P1 — 可采用 |
| 已验证 A 级词的同意图变体 | identity theft legal advice → identity theft legal help | P2 — 允许但标注"扩展" |
| 138 账户已验证关键词（附录 E） | cyber security fraud scams and identity theft（2cv） | P2 — 允许 |
| 目标客户语义模式（4.2 节） | "I lost money in [type]" → 新变体 | P3 — 需标注"语义模式扩展" |

**禁止的关键词来源（无条件禁止）：**

| 来源 | 原因 |
|------|------|
| AI 根据"最佳实践"凭空生成的词 | 无数据支撑 |
| 从其他业务线/行业引用来的词 | 已验证 14 个账户中零目标客户 |
| PHRASE/EXACT 匹配的法律术语 | 14 个账户验证：搜索量为零 |
| 5 大废物方向的任何变体 | 6+ 账户验证为零目标客户 |

---

### 文案生成规则——必须绑定已验证资产

**每条广告文案必须满足以下条件：**

```
必选（至少 1 项）：
  □ 引用已验证关键词（cross-account-seeds.csv）
  □ 引用已验证搜索词语义模式（4.2 节目标客户模式）
  □ 对应已验证落地页域名（infotechpop.com / winclaim.online）

必选：
  □ 不包含 5 大废物方向的语义暗示
  □ 不包含 PHRASE/EXACT 匹配依赖
  □ 不使用通用维权文案模板（必须基于本项目数据）
```

**文案输出前必须标注来源链：**

```
关键词来源：cross-account-seeds.csv → identity theft legal advice（A 级，7cv）
落地页来源：winclaim.online（已验证 17cv）
语义模式：身份盗窃受害者找律师（4.2 节目标客户分类）
```

如果无法标注来源链 → 禁止输出。

---

### 基于跨账户经验的 10 条硬规则

| # | 规则 | 证据强度 |
|---|------|---------|
| 1 | 首月预算 $150-200/天，不超 $300/天 | 强规律（138 有效 vs 608 无效）|
| 2 | 只跑 1 个 Search 系列，不开 Video/Demand Gen | 强规律（全部 VIDEO 零转化）|
| 3 | 必须用已验证域名 infotechpop.com 或 winclaim.online | 强规律（仅这 2 个域名有转化）|
| 4 | 先预载跨账户否定词库，再创建系列 | 强规律（5 大浪费方向 6+ 账户验证）|
| 5 | 避开 claim/settlement/injury/unclaimed/free 五大废物方向 | 强规律（12/14 账户掉入）|
| 6 | BROAD 是唯一选择，但必须配正确关键词方向 | 强规律（918 匹配窄=死）|
| 7 | 关键词聚焦 Scam Victim / Fraud Recovery / Wire Fraud / Identity Theft | 强规律（唯一产生目标客户）|
| 8 | 不在 Google CPA 好看时乐观 | 强规律（608 案例 $77,950 全浪费）|
| 9 | 不上 300+ 种子词——60 个已验证 BROAD 足够 | 强规律|
| 10 | 不在 PHRASE/EXACT 上浪费预算——法律词搜索量为零 | 强规律（918 + UCC Article 4A 双重验证）|

### 新账户 3 步起步法

**第 1 步：预载否定词**
- 加载 `asset-library/negatives/硬阻断词.csv`
- 语义否定模板：`how to / what is / near me / report / free / pro bono / claim / class action`

**第 2 步：部署种子词（60 个 BROAD）**
- 优先从 `asset-library/keywords/A-级-已验证转化词.csv` 选取 A 级词
- 重点：identity theft legal advice、scam recovery、financial fraud attorney

**第 3 步：部署落地页 + 追踪**
- infotechpop.com（投资诈骗）/ winclaim.online（身份盗窃）
- 系列级追踪模板必须部署

---

## Evidence Gate（操作门禁）

所有数据驱动操作必须遵守以下规则：

1. 不出价建议无有效客户数据
2. 不否词无搜索词报告 30 天数据
3. 不调整时段无 ad_schedule_performance_30d
4. 不排除地域无 geo_performance_30d
5. 不调整预算无 campaign_budget_conversion_30d
6. 不开关系列无 campaign_status_7d
7. 不结构重组无全账户健康检查
8. 不出文案不在已验证资产之列
9. 不新业务线无 launch-playbook 参数
10. 不跨项目无 PROJECT_REGISTRY.yaml 匹配

---

## Composio 降级策略

1. **优先用已有脚本**——它们已验证，有确定的输入/输出格式
2. 脚本未覆盖 → Composio `tool_search` 找 Google Ads API endpoint
3. Composio 不可用 → 提示用户手动从 Google Ads 后台导出 CSV
4. 脚本 + Composio 都不可用 → 降级为"等待数据"，不凭空猜测

---

## 持续更新机制（每次新账户分析后执行）

本 skill 是活体文档。每次拉完一个新账户并完成分析后，必须回流更新以下内容。

### 更新触发条件

每次完成一个新账户的完整分析后，检查以下条件：

| 条件 | 动作 |
|------|------|
| 新账户验证了某个已有规律 | 在「跨账户证据强度追踪表」追加账户编号 |
| 新账户发现了已有规律的反例 | 降低该规律证据强度，标注反例 |
| 新账户发现了新的浪费方向 | 追加到「5 大废物方向」和否定词 CSV |
| 新账户发现了新的转化种子词 | 追加到跨账户种子词 CSV |
| 新账户数据与现有规律冲突 | 追加到「待验证异常/冲突」区，不直接修改规律 |
| 新账户的决策建议与 10 条硬规则矛盾 | 先记录为异常，3 个账户验证后再修改规则 |

### 更新步骤

```
拉新账户 → 完成分析报告 → 对照「更新触发条件」表
                             ↓
                  命中任一条件 → 按对应动作更新
                             ↓
                  更新 CSV 资产文件（否定词/种子词）
                             ↓
                  本 skill version +1（Y 或 Z）
                             ↓
                  更新 launch-playbook（如需 → +1）
```

### 具体写回位置

| 要更新的内容 | 写回位置 |
|------------|---------|
| 新验证的否定词（强规律） | `asset-library/negatives/硬阻断词.csv` + `asset-library/negatives/waste-direction-reference.md` + 本文档 4.2 |
| 新验证的种子词（有转化） | `asset-library/keywords/A-级-已验证转化词.csv` 或 `B-级-单账户验证词.csv`（按四级分类）|
| 新验证的高转化素材 | `asset-library/creatives/高转化RSA模板.csv` |
| 新CPA基准数据 | `asset-library/cpa-benchmarks/CPA基准.csv` |
| 新高效/低效地理数据 | `asset-library/geos/高效地区清单.csv` 或 `地理排除清单.csv` |
| 已验证落地页数据 | `asset-library/landing-pages/已验证落地页.csv` |
| 新的浪费方向（2+ 账户验证） | `asset-library/negatives/硬阻断词.csv` + `asset-library/negatives/waste-direction-reference.md` + `learnings/failures/` + 本文档 4.2 废物方向表 |
| 5 大废物方向出现新变体 | `asset-library/negatives/waste-direction-reference.md` + 本文档 4.2 废物方向表 |
| 新的结构健康检查指标 | 本文档 4.4 |
| 10 条硬规则的变化 | 本文档第六步 + launch-playbook 附录 |
| 本 skill 版本号 | 本文档 frontmatter version |
| 新的结构健康检查指标 | 本文档 4.4 |
| 10 条硬规则的变化 | 本文档第六步 + launch-playbook 附录 A |
| 本 skill 版本号 | 本文档 frontmatter version |
| 变更日志 | 本文档末尾「变更记录」 |
| CPA/花费数据刷新 | `strategies/转化关键词.md` + `strategies/低成本关键词/low-cost-keywords-20260514.md` |

### 跨账户证据强度追踪表（每次新增账户后更新）

```
当前基础：14 个账户（截至 2026-05-14）
```

| 规律 | 当前证据账户数 | 证据强度 | 上次更新 |
|------|-------------|---------|---------|
| 5 大浪费方向=零目标客户 | 12/14 | 强规律 | 2026-05-14 |
| Video 系列零转化 | 3/3 | 强规律 | 2026-05-14 |
| PHRASE/EXACT 法律词搜索量为零 | 2/2 | 强规律 | 2026-05-14 |
| BROAD + 正确方向 = 有效组合 | 2/14 | 仅 2 账户验证 | 2026-05-14 |
| 首月 $150-200/天有效 | 1/14 | 仅 1 账户验证 | 2026-05-14 |
| 停留页 infotechpop.com/winclaim.online 有效 | 1/14 | 仅 1 账户验证 | 2026-05-14 |
| 西班牙语有转化信号 | 1/14 | 弱信号 | 2026-05-14 |
| crypto fraud 方向有转化 | 1/14 | 弱信号 | 2026-05-14 |

> 每个 "仅 X 账户验证" 和 "弱信号" 的规律，需要新增账户验证后才能升级为 "强规律"。

### 待验证异常/冲突（已有数据但不足以修改规律）

| 异常 | 来源 | 当前处理 |
|------|------|---------|
| 289 账户 "stolen social security number what to do" 有 3 转化（BROAD） | 289 | 标记为 B 级（含信息查询风险），继续观察 |
| 289 账户 "crypto investment fraud attorney" 有 1 转化 | 289 | 标记为 B 级（单账户单转化），继续观察 |
| 289 账户 "class action lawsuits" 有 7 转化和 "class action cases" 有 10 转化 | 289 | 经搜索词验证为 claim settlements 类非目标客户，标记为 REJECTED |
| 670 账户方向半对（online scams / cyber scam / fraud help）但零目标客户转化 | 670 | 方向对但搜索词全是信息查询型，说明正确方向+未配否定词仍会失败 |

---

## 知识来源

- `交接中心/docs/knowledge/googleads/reference/scripts/`（所有脚本源码）
- `交接中心/skills/googleads/00-orchestrator/api-datasets.yaml`（Composio 数据集定义）
- `交接中心/skills/googleads/00-orchestrator/degradation-policy.md`（降级策略）
- `交接中心/collaboration/谷歌ads启动/接手账户信息采集.md`（接手账户技术流程）

## 边界限制

- 不凭空创造数据（无来源 → 标注"无数据，等待"）
- 不用过时缓存数据（>7天 → 重新拉取）
- 不用单一来源做全量判断（交叉验证至少 2 个来源）
- 不跳过 Evidence Gate 直接给建议

## 参考文件索引

| 文件 | 位置 |
|------|------|
| 账户巡检卡片 | `交接中心/collaboration/谷歌ads启动/账户巡检.md` |
| 部署卡片 | `交接中心/collaboration/谷歌ads启动/Composio连接与部署.md` |
| 跨账户基础分析报告 | `交接中心/docs/knowledge/googleads/learnings/cross-account/cross-account-analysis-20260514.md` |
| 跨账户深度全息分析 | `交接中心/docs/knowledge/googleads/learnings/cross-account/cross-account-deep-dive-20260514.md` |
| 跨账户架构分析 | `交接中心/docs/knowledge/googleads/learnings/cross-account/cross-account-architecture-20260514.md` |
| 当前策略主文档 | `交接中心/docs/knowledge/googleads/维权项目知识库/usalp关键词2.0/投放方案5.2.0/投放方案5.2.0.md` |
| 硬阻断词 CSV | `交接中心/docs/knowledge/googleads/asset-library/negatives/硬阻断词.csv` |
| **废物方向关键词记录库** | **`交接中心/docs/knowledge/googleads/asset-library/negatives/waste-direction-reference.md`** |
| A 级种子词 CSV | `交接中心/docs/knowledge/googleads/asset-library/keywords/A-级-已验证转化词.csv` |
| B 级验证词 CSV | `交接中心/docs/knowledge/googleads/asset-library/keywords/B-级-单账户验证词.csv` |
| CPA 基准 CSV | `交接中心/docs/knowledge/googleads/asset-library/cpa-benchmarks/CPA基准.csv` |
| 高转化素材 CSV | `交接中心/docs/knowledge/googleads/asset-library/creatives/高转化RSA模板.csv` |
| 落地页数据 CSV | `交接中心/docs/knowledge/googleads/asset-library/landing-pages/已验证落地页.csv` |
| 账户注册表 | `交接中心/docs/checkpoints/googleads-accounts.yaml` |
| 账户数据目录 | `交接中心/docs/knowledge/googleads/account-data/` |
| 落地页站点 | `交接中心/迁移包/项目快照/lawyer_维权/USAlp6.0/` |
