sino-bc-cli 1.8.20 → 1.8.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SKILL.md +1 -1
- package/dist/index.js +1 -1
- package/dist/skills/custom/biz-line-strategy-generate/SKILL.md +20 -23
- package/dist/skills/custom/biz-line-strategy-generate/references/api-flow.md +5 -5
- package/dist/skills/custom/biz-line-strategy-generate/references/four-strategies.md +16 -14
- package/dist/skills/custom/biz-line-strategy-generate/references/metrics.md +29 -278
- package/dist/skills/custom/biz-line-strategy-generate/references/output-excel.md +8 -57
- package/dist/skills/custom/biz-line-strategy-generate/references/runtime.md +22 -57
- package/dist/skills/custom/biz-line-strategy-generate/references/spec.md +124 -0
- package/dist/skills/custom/biz-line-strategy-generate/scripts/build_report.py +98 -9
- package/dist/skills/custom/biz-line-strategy-generate/scripts/cleanup.py +71 -82
- package/dist/skills/custom/biz-line-strategy-generate/scripts/cli_json.py +125 -19
- package/dist/skills/custom/biz-line-strategy-generate/scripts/fetch_data.py +61 -32
- package/dist/skills/custom/biz-line-strategy-generate/scripts/run_workflow.py +189 -0
- package/dist/skills/custom/biz-line-strategy-generate/scripts/summarize.py +158 -148
- package/dist/skills/custom/biz-line-strategy-generate/scripts/test_strategy_rules.py +16 -2
- package/dist/skills/custom/biz-line-strategy-generate/scripts/test_workflow.py +345 -0
- package/package.json +1 -1
- package/dist/skills/custom/biz-line-strategy-generate/scripts/__pycache__/build_report.cpython-314.pyc +0 -0
- package/dist/skills/custom/biz-line-strategy-generate/scripts/__pycache__/cli_json.cpython-314.pyc +0 -0
- package/dist/skills/custom/biz-line-strategy-generate/scripts/__pycache__/fetch_data.cpython-314.pyc +0 -0
- package/dist/skills/custom/biz-line-strategy-generate/scripts/__pycache__/summarize.cpython-314.pyc +0 -0
|
@@ -10,7 +10,7 @@ metadata:
|
|
|
10
10
|
|
|
11
11
|
# 业务线策略生成
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
本技能随 CLI 安装,需要 Python 3。复用现有 `biz-line` 接口,按固定分析规则和 Excel 模板生成四大策略与 learning,单次最多并发 3 条业务线。每条独立导出一份 Excel(`策略` + `明细` 两张表),校验成功后清理本次其他临时文件。执行入口与参数见下方「Agent 流程」。
|
|
14
14
|
|
|
15
15
|
**开始前 MUST 先读 [`../sino-bc-shared/SKILL.md`](../sino-bc-shared/SKILL.md)**。字段口径见 [`../sino-bc-biz-line/SKILL.md`](../sino-bc-biz-line/SKILL.md)。
|
|
16
16
|
|
|
@@ -25,19 +25,22 @@ metadata:
|
|
|
25
25
|
|
|
26
26
|
## Agent 流程
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
使用本技能目录的 **`scripts/run_workflow.py`**,不要临时重写拉数、分析或排版脚本。执行前定位技能的绝对路径;Python 只需标准库。首次使用读取 [`references/runtime.md`](references/runtime.md)。
|
|
29
29
|
|
|
30
|
-
1.
|
|
31
|
-
2.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
未传日期时脚本用 `+list` 的 `periodStart/periodEnd`、`prevPeriodStart/prevPeriodEnd`。`+list` 必须走 `--data`(脚本已封装),禁止 `+list --name`。多条业务线按 `--id` 分目录循环。
|
|
36
|
-
3. **汇总**:`python3 scripts/summarize.py --request-dir <本次目录>`。打开 `payload.json`:主表文案是否只有总结、明细是否在 `details`、枚举是否中文、词包有没有整包粘贴。硬伤改 payload 再导。
|
|
37
|
-
4. **导出**:`python3 scripts/build_report.py --input <本次目录>/payload.json`。桌面一份 xlsx,两张表。记下 `output_path`。
|
|
38
|
-
5. **收尾**:中途重导过才 `cleanup.py --keep-excel <最终> --written-excel ...`。**Excel 生成后不要删 request 目录**,也不要 `cleanup.py --request-dir`。汇报时同时给 Excel 路径和本次 `request_dir`。
|
|
30
|
+
1. 用户给名称,传 `--name`;命中多个候选则返回歧义。用户给多个 ID,重复传 `--id`。用户要第一页/前 N 条,先用既有 `biz-line +list --data` 选出真实 ID,再在**一次入口调用**中传入。
|
|
31
|
+
2. 入口默认最多 **3 条业务线并发**,允许 `--concurrency 1` 或 `2`,不能大于 3。同一批次不要并排启动多个入口绕开限制;单条内部 CLI 请求和分页串行。
|
|
32
|
+
3. 每条自动执行现拉 → 固定分析 → 一次性排版 → Excel 回读校验 → 发布最终文件 → 清理。默认接口周期;用户给日期时成对传 `--curr-start/--curr-end`、`--prev-start/--prev-end`。
|
|
33
|
+
4. 每条成功后立即交付**该业务线自己的最终 Excel**,并删除本次其他临时产物,包括 JSON、请求/回包、日志副本、图片、临时脚本、缓存、无扩展名文件及临时 Excel,不等全部业务线结束。
|
|
34
|
+
5. 失败任务返回阶段和错误摘要,清理自己的临时文件,其他业务线继续。清理失败须报告残留路径,不能声称已清理。只给实际成功返回的 `output_path` 链接;不用已删除的请求目录作交付物。
|
|
39
35
|
|
|
40
|
-
|
|
36
|
+
```bash
|
|
37
|
+
python3 -B <本技能绝对路径>/scripts/run_workflow.py --name "用户指定的业务线名称"
|
|
38
|
+
python3 -B <本技能绝对路径>/scripts/run_workflow.py --id <真实ID1> --id <真实ID2> --concurrency 3
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`--output-dir` 指定最终目录,默认桌面。用户明确指定账号时使用可重复的 `--account-fb/--account-gg/--account-tt`;这些覆盖参数用于本次调用全部业务线,账号范围不同须分别请求并遵守并发上限。
|
|
42
|
+
|
|
43
|
+
不要人工改 payload 再二次导出,或导入另一工作簿库重排。固定分析与 learning 规则见 [`references/metrics.md`](references/metrics.md);策略写法见 [`references/four-strategies.md`](references/four-strategies.md)。
|
|
41
44
|
|
|
42
45
|
## 主表 vs 明细
|
|
43
46
|
|
|
@@ -51,35 +54,29 @@ learning 见 [`references/metrics.md`](references/metrics.md);策略写法见
|
|
|
51
54
|
## 结论规则
|
|
52
55
|
|
|
53
56
|
- **首期**(没有 `prevPeriodStart/End`):对客户 KPI;认不出或没填 → 待观察;展示当期全量兴趣词/关键词/国家,避免全 0。
|
|
54
|
-
-
|
|
57
|
+
- **第二期起**:结论只跟核心指标环比(优先明确的可比核心指标;默认观察 CPI=美元消耗/平台安装量)。变好=有效,稳定=待观察,变差=待观察(预警)。KPI / 达标占比只写在「依据」,**不能**单独把结论打成无效。
|
|
55
58
|
- 不要用脚本旧默认 `CPM≤5` 当结论轴。
|
|
56
59
|
|
|
57
60
|
## 常见误区
|
|
58
61
|
|
|
59
62
|
- 衍生指标不要传给 `indicators`,先查基础指标再本地算。
|
|
60
63
|
- `country_code` 只能单独传或与 `calendar_date` 同传;国家用**投放报告实际国家**,不用设置项。
|
|
61
|
-
- 除预算外,三大策略看新增值自身数据;0%↔0%
|
|
64
|
+
- 除预算外,三大策略看新增值自身数据;0%↔0% 残留枚举不当本期未出现。
|
|
62
65
|
- 环比方向:成本类下降为好。维度合计先求和再算比率。
|
|
63
66
|
- 出价按广告组 + `calendar_date` 相邻天比对;主表输出升/降数量、幅度分布/中位数,不要默认罗列。
|
|
64
67
|
- 分析单位是业务线,账号按 ID 去重。Excel 不输出项目 PM。
|
|
65
68
|
- 组别用 `ssoTeamCodeName`,周期用接口 period 字段。
|
|
66
69
|
- 未绑定项目/账号不要编造。多项目仍一行,名称 `\n` 分隔。
|
|
67
|
-
- 文案用中文/`display_
|
|
70
|
+
- 文案用中文/`display_*`;词包只写「新增/本期未出现 N 个」+ 最多 3 短词。
|
|
68
71
|
- learning 第 1 层只写消耗 ≥$50 的新增。
|
|
69
72
|
- CLI 回包必须直写文件(`exec_cli_to_file`),`capture_output` 会在约 64KB 截断。翻页上限用脚本 `PAGE_CAP`(≥80),不要手写 30 页就停。
|
|
70
|
-
-
|
|
73
|
+
- 每条业务线只留一份最终 Excel;禁止按桌面 `业务线策略生成_*.xlsx` glob 删除。
|
|
71
74
|
|
|
72
75
|
## References
|
|
73
76
|
|
|
77
|
+
- [`references/spec.md`](references/spec.md):本技能的行为与验收规格,统一在技能目录内维护。
|
|
74
78
|
- [`references/api-flow.md`](references/api-flow.md)
|
|
75
79
|
- [`references/four-strategies.md`](references/four-strategies.md)
|
|
76
80
|
- [`references/metrics.md`](references/metrics.md)
|
|
77
81
|
- [`references/output-excel.md`](references/output-excel.md)
|
|
78
82
|
- [`references/runtime.md`](references/runtime.md)
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
python3 scripts/fetch_data.py --request-dir "$TMPDIR/sino-bc-strategy/<requestId>" --name "示例业务线"
|
|
82
|
-
python3 scripts/summarize.py --request-dir "$TMPDIR/sino-bc-strategy/<requestId>"
|
|
83
|
-
python3 scripts/build_report.py --input "$TMPDIR/sino-bc-strategy/<requestId>/payload.json"
|
|
84
|
-
# 默认不要:python3 scripts/cleanup.py --request-dir ...
|
|
85
|
-
```
|
|
@@ -33,7 +33,7 @@ sino-bc-cli biz-line api biz-line-project-list --data '{"bizLineId": 1251}'
|
|
|
33
33
|
- 一个业务线可能关联多个项目,每个项目下又有多个广告账号(分渠道:Meta/Facebook、Google、TikTok 等)。
|
|
34
34
|
- **判定是否可生成策略**:按文档 7.1 生成入口的逻辑——若该业务线未绑定项目、或项目下没有关联广告账号,则不允许自动生成,直接跳过并在汇报里说明「未绑定项目/广告账号」;不要对空账号硬凑数据。
|
|
35
35
|
- **用户指定广告账号**:如果用户在本次请求中明确给了广告账号 ID 和所属渠道,直接用用户提供的账号(覆盖接口返回的账号),但仍需要业务线/项目名称等基础信息用于 Excel 输出,因此第 2 步仍要跑一次以取项目名称。
|
|
36
|
-
- **`+project-list`
|
|
36
|
+
- **`+project-list` 失败即中止该条**:返回错误并清理本次临时文件,不能把失败当成无关联项目或继续导出不完整报告。
|
|
37
37
|
- 把该业务线下**所有项目**的项目名称都收集好,Excel 里要写进同一行的单元格(见 [`output-excel.md`](output-excel.md))。
|
|
38
38
|
|
|
39
39
|
> **项目 PM 暂不输出**:`biz-line-project-list` 只返回 `projectId` / `projectName` / `adAccounts`,不含 PM 字段;现阶段没有确认好的项目 PM 取数来源,Excel 里已去掉「项目PM」列,不要为了填这一列去猜或硬凑。(`biz-line-list` 的 `pmUserNames` 是**业务线级** PM,粒度不同,不能当项目 PM 用。)
|
|
@@ -76,7 +76,7 @@ sino-bc-cli biz-line api biz-line-project-list --data '{"bizLineId": 1251}'
|
|
|
76
76
|
| Google | `icenter-strategy-metrics-google` | `biz-line +google-metrics` |
|
|
77
77
|
| TikTok | `icenter-strategy-metrics-tiktok` | `biz-line +tiktok-metrics` |
|
|
78
78
|
|
|
79
|
-
请求体在维度接口基础上多了 `indicators`(成效指标数组,必填)。**接口只支持基础指标**(见 [`metrics.md`](metrics.md)
|
|
79
|
+
请求体在维度接口基础上多了 `indicators`(成效指标数组,必填)。**接口只支持基础指标**(见 [`metrics.md`](metrics.md) 的基础/衍生指标口径),业务线核心指标若是衍生指标,要展开成其依赖的基础指标一并查出,在固定汇总脚本中计算衍生值,不要把衍生指标名传给接口(会被忽略或报错)。
|
|
80
80
|
|
|
81
81
|
## 第 5 步:时间范围默认规则
|
|
82
82
|
|
|
@@ -86,7 +86,7 @@ sino-bc-cli biz-line api biz-line-project-list --data '{"bizLineId": 1251}'
|
|
|
86
86
|
|
|
87
87
|
- **本期**:出参 `periodStart` ~ `periodEnd`。
|
|
88
88
|
- **上期**:出参 `prevPeriodStart` ~ `prevPeriodEnd`。
|
|
89
|
-
-
|
|
89
|
+
- 缺少本期周期时明确报错,请用户指定日期,不自行猜测自然周。上期日期为空按首期处理。
|
|
90
90
|
- 两次调用(本期、上期)分别传各自的 `startDate` / `endDate`,本期与上期返回的数据在 Agent 侧做环比对比,不要在一次请求里跨两周合并查询。
|
|
91
91
|
- 注意区分:`periodStart` 系列是**出参**(业务线当前周期);`previewPeriodStart` 系列是策略新建/更新接口的**入参**字段名,两者不要混用。
|
|
92
92
|
- 维度接口与成效接口的时间范围最多支持近 21 天,不要传超过 21 天的跨度。
|
|
@@ -94,10 +94,10 @@ sino-bc-cli biz-line api biz-line-project-list --data '{"bizLineId": 1251}'
|
|
|
94
94
|
|
|
95
95
|
## 分页与数据量
|
|
96
96
|
|
|
97
|
-
维度/成效接口默认每页 10 条(`size`),脚本显式 `size=1000`,按 `data.total` 翻页,上限 `PAGE_CAP=80`(TikTok 出价按天可到 4~5
|
|
97
|
+
维度/成效接口默认每页 10 条(`size`),脚本显式 `size=1000`,按 `data.total` 翻页,上限 `PAGE_CAP=80`(TikTok 出价按天可到 4~5 万行)。回包直写文件。每次现拉,不要跳过已有页;最终 Excel 校验发布后立即清理该条全部临时文件。
|
|
98
98
|
|
|
99
99
|
## 汇总到 Excel 前的数据整理
|
|
100
100
|
|
|
101
101
|
按业务线 -> 渠道 两层汇总策略文案与 learning(账号已在业务线层去重,不再按项目拆分),最终按 [`output-excel.md`](output-excel.md) 的列规范拼成行数组,**一个业务线一行**;该业务线下的多个项目名称写在同一单元格内,每个项目一行(用换行分隔)。
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
通过 `run_workflow.py` 一次提交本次真实 ID 列表,最多 3 条并发;每条独立拉数、分析、导出、校验与清理。最终 Excel 成功校验前不删除原始数据;成功或失败后的清理规则见 [`runtime.md`](runtime.md)。
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
## 生成总则
|
|
6
6
|
|
|
7
7
|
- 策略生成默认按周维度运行,对比本周(本期)与上周(上期)的广告结构配置、消耗占比和核心 KPI 表现。
|
|
8
|
-
-
|
|
8
|
+
- 每个维度的生成内容需覆盖:**策略标签**(本周动作类型归纳,如预算调整/产品结构调整/受众新增/素材上新)、**策略内容**(自然语言描述变化)、**广告动作**(底层依据,如新增/本期未出现数量、出价变化);效果 learning 见 [`metrics.md`](metrics.md)。
|
|
9
9
|
- 输出文案用优化师能看懂的业务语言,不直接暴露底层字段名(如不要直接写 `targetingInterests`,写「兴趣词包」)。展示给用户时优先 `display_*`;若仍是枚举 code 要译成中文。除 `OUTCOME_*` / `COST_CAP` / `LOOKALIKE` / `BOARD` 外,常见还有:`BID_TYPE_CUSTOM`→自定义出价、`IN_APP_EVENT`→应用内事件、`INSTALL`→安装、`VIDEO_VIEWS`→视频播放、`ENGAGED_VIEW`→有效观看、`CORE`→核心受众。对照表在 `scripts/cli_json.py` 的 `ENUM_ZH`。
|
|
10
|
-
- 关键词、兴趣词包在接口里常常是**一整包逗号分隔字符串 = 1
|
|
11
|
-
-
|
|
10
|
+
- 关键词、兴趣词包在接口里常常是**一整包逗号分隔字符串 = 1 个维度值**。只写「新增/本期未出现 N 个」再加最多 3 个短词(`scripts/cli_json.py` 的 `short_label`),主表禁止整包粘贴,完整内容进明细续行。
|
|
11
|
+
- 「设置类字段」(国家、年龄、性别、兴趣词包、关键词、广告组等)判断**新增/本期未出现/配置变化**,不强依赖消耗数据;「报告类字段」(Spend、广告目标、广告系列类型、成效目标、出价方式等)需结合成效数据计算**占比变化**。
|
|
12
12
|
- 各维度对应的接口字段来自「维度接口」(`+facebook-dimension` / `+google-dimension` / `+tiktok-dimension`)的 `dimensions` 数组取值,账号级过滤用 `dimensionValues.account_id`。
|
|
13
13
|
|
|
14
14
|
## 预算策略
|
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
4. **主表统计、明细列全**:主表用 `bid_adjust_stats` 写上调/下调数量与幅度中位数;<10 条才在主表列全。全部逐条写入 `payload.details`(kind=出价)。不要默认在主表点名几十个广告组。
|
|
29
29
|
5. **调整前后值取本期首末值**:前值 = 该广告组**本期第一天**的出价,后值 = **本期最后一天**的出价,写成「从 首日值 调整到 末日值」。不要把中间每一次的跳变都串起来罗列。
|
|
30
30
|
6. **边界处理**:
|
|
31
|
+
- 期内有变化但首末值相同单独计为首末持平,不归类为下调;多个出价字段完整进明细,主表方向基于代表字段。
|
|
32
|
+
- 广告、广告组按渠道 + ID 区分,全量明细保留 ID,同名不能合并。
|
|
31
33
|
- 某天缺快照(广告组当天未投放)→ 跳过该天,用其前后两个**有值**的相邻快照继续比对,不要把「无值」当成一次变化。首末值同理取区间内第一个/最后一个**有值**的快照。
|
|
32
34
|
- 广告组在区间内新建(第一天才出现)→ 首次出现不算调整,只作为比对起点。
|
|
33
35
|
- 全区间出价值恒定 → 0 次,该广告组不写进文案;整个渠道都没有调整时写「本周未发生明显出价调整」。
|
|
@@ -47,7 +49,7 @@ Facebook 维度接口请求示例(本期按天 + 按广告组拉出价):
|
|
|
47
49
|
}
|
|
48
50
|
```
|
|
49
51
|
|
|
50
|
-
按 `adgroup_id` 升序 + `calendar_date` 升序返回,可以直接顺序扫一遍完成相邻比对;注意用 `
|
|
52
|
+
按 `adgroup_id` 升序 + `calendar_date` 升序返回,可以直接顺序扫一遍完成相邻比对;注意用 `data.total` 确认是否需要翻页,漏页会少算调整次数。`dimensionValues.account_id` 传的是该业务线下**全部项目去重后**的同渠道账号(见 [`api-flow.md`](api-flow.md)「账号去重与分析口径」)。
|
|
51
53
|
|
|
52
54
|
## 广告产品策略
|
|
53
55
|
|
|
@@ -62,20 +64,20 @@ Facebook 维度接口请求示例(本期按天 + 按广告组拉出价):
|
|
|
62
64
|
|
|
63
65
|
| 字段 | 数据逻辑 | 生成内容示例 | 支持渠道 |
|
|
64
66
|
| --- | --- | --- | --- |
|
|
65
|
-
| 国家(`country_code`,须单独请求,只能与 `calendar_date` 同传) |
|
|
66
|
-
| 兴趣词包(`targeting_interests` / `targeting_flexible_interests` / `targeting_exclusion_interests`) |
|
|
67
|
+
| 国家(`country_code`,须单独请求,只能与 `calendar_date` 同传) | 用**投放报告实际国家**,不用设置项。主表写新增/本期未出现数量+示例;>50 个只写区域聚合,全量进明细。首期展示当期全量 | 【国家】新增 1 个:xxx | Meta、Google、TikTok |
|
|
68
|
+
| 兴趣词包(`targeting_interests` / `targeting_flexible_interests` / `targeting_exclusion_interests`) | 查投放设置上的兴趣词包,总结新增/本期未出现 | 【兴趣词包】新增 2 个兴趣词包:短剧、线上娱乐;未发现本期未出现,受众覆盖范围扩大。 | Meta、TikTok(Google 不支持) |
|
|
67
69
|
| 受众类型(`audience_type`) | 查受众类型消耗数据(需加工),总结占比变化 | 【受众类型】无变化。详细:通用 50%>>55%,类似受众 40%>>35%,自定义受众 10%>>10% | Meta、Google、TikTok |
|
|
68
|
-
| 关键词(`keywords`) |
|
|
69
|
-
| 关键词分类(需在关键词基础上加工分类,无独立接口字段) |
|
|
70
|
-
| 年龄(`targeting_age`) |
|
|
71
|
-
| 性别(`targeting_genders`) |
|
|
72
|
-
| 广告组(`adgroup_id` / `adgroup_name`) |
|
|
70
|
+
| 关键词(`keywords`) | 查投放设置上的关键词,总结新增/本期未出现 | 【关键词】新增 3 个关键词:xxxx,本期未出现 1 个低效关键词:xxxx | Google(Meta、TikTok 不支持) |
|
|
71
|
+
| 关键词分类(需在关键词基础上加工分类,无独立接口字段) | 查投放设置上的关键词并加工分类,总结新增/本期未出现 | 【关键词分类】新增通用词 2 个:xxx、竞品词 1 个:xxx,品牌词无明显变化 | ASA |
|
|
72
|
+
| 年龄(`targeting_age`) | 查投放设置上的年龄,总结新增/本期未出现 | 【年龄】年龄定向无明显变化,仍以 18-44 岁人群为主。 | Meta、Google、TikTok |
|
|
73
|
+
| 性别(`targeting_genders`) | 查投放设置上的性别,总结新增/本期未出现 | 【性别】性别定向无明显变化,仍以女性人群为主。 | Meta、Google、TikTok |
|
|
74
|
+
| 广告组(`adgroup_id` / `adgroup_name`) | 主表只写新增/本期未出现数量 + `naming_patterns` 命名规律;全量名称进明细 | 【广告组】Meta:新增 17 个,本期未出现 26 个;命名规律:KPOP、两性 | Meta、Google、TikTok |
|
|
73
75
|
|
|
74
76
|
## 素材策略
|
|
75
77
|
|
|
76
78
|
| 字段 | 数据逻辑 | 生成内容示例 | 支持渠道 |
|
|
77
79
|
| --- | --- | --- | --- |
|
|
78
|
-
| Ad / Ad name(`ad_id` / `ad_name`) | 主表写数量 + 命名规律(与广告组同一套 `naming_patterns`);空名称不要写成方向「(空)」。全量进明细 | 【广告】Meta:新增 72
|
|
80
|
+
| Ad / Ad name(`ad_id` / `ad_name`) | 主表写数量 + 命名规律(与广告组同一套 `naming_patterns`);空名称不要写成方向「(空)」。全量进明细 | 【广告】Meta:新增 72 个,本期未出现 121 个;命名规律:旅行、两性 | Meta、Google、TikTok |
|
|
79
81
|
| 创意类型(`ad_format`) | 查创意类型(图片/视频等)的消耗占比变化 | 【创意类型】整体更偏向视频素材放量。图片 30%>>25%,视频 70%>>75%。 | Meta、Google、TikTok |
|
|
80
82
|
|
|
81
83
|
## 三类调整对象的对比口径(判定策略是否发生变化时使用)
|
|
@@ -84,8 +86,8 @@ Facebook 维度接口请求示例(本期按天 + 按广告组拉出价):
|
|
|
84
86
|
| --- | --- | --- |
|
|
85
87
|
| 可环比(如预算调整、媒体占比变化) | 上周有、本周也有 | 本周 vs 上周(同一对象) |
|
|
86
88
|
| 新增(如新国家、新广告、新素材) | 本周新增,上周没有 | 本周新增部分 vs 本周整体 |
|
|
87
|
-
|
|
|
89
|
+
| 本期未出现(如下架广告、本期未出现国家) | 上周有,本周未出现(不代表已暂停) | 仅陈述集合差异与整体同期表现,不证明因果 |
|
|
88
90
|
|
|
89
91
|
预算始终走「可环比」逻辑——看各媒体占比变化,以及各媒体总数据是否达标 KPI。
|
|
90
92
|
|
|
91
|
-
|
|
93
|
+
其他三大策略的新增成效取该维度本期新增值自身数据,完整进明细。总体结论与分项依据分开,固定规则见 [`metrics.md`](metrics.md),不以多个重叠维度的消耗加总或缺失 KPI 推断策略效果。
|
|
@@ -1,294 +1,45 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 固定分析与 learning 规则
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
正常生成由 `summarize.py` 固定执行,Agent 不为单次业务线写修订脚本。未知或不支持的口径明确标注,不猜阈值、币种、汇率或转化定义。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 基础指标与衍生指标
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
接口请求基础字段 `spend_usd`、`impressions`、`clicks`、`installs`、`purchase`、`purchase_value`。不要把衍生指标名传进 `indicators`。
|
|
8
8
|
|
|
9
|
-
|
|
|
10
|
-
| --- | --- |
|
|
11
|
-
| `spend_usd` | 消耗金额(美元) |
|
|
12
|
-
| `impressions` | 曝光量 |
|
|
13
|
-
| `clicks` | 点击量 |
|
|
14
|
-
| `video_views` | 视频观看次数 |
|
|
15
|
-
| `add_to_cart` | 添加购物车次数 |
|
|
16
|
-
| `checkouts` | 发起结账次数 |
|
|
17
|
-
| `purchase` | 购买次数 |
|
|
18
|
-
| `purchase_value` | 购买金额 |
|
|
19
|
-
| `installs` | 应用安装量 |
|
|
20
|
-
| `complete_registration` | 完成注册量 |
|
|
21
|
-
| `leads` | 留下潜客信息次数 |
|
|
22
|
-
| `engagement` | 互动次数 |
|
|
23
|
-
|
|
24
|
-
**互动次数(`engagement`)及以下的指标都是衍生指标**,接口不支持直接查询,必须先查出对应的基础指标,再在 Agent 侧按下表公式计算:
|
|
25
|
-
|
|
26
|
-
| 衍生指标 | 中文名 | 计算公式(基础指标) |
|
|
27
|
-
| --- | --- | --- |
|
|
28
|
-
| `ctr` | 点击率 | `clicks / impressions` |
|
|
29
|
-
| `cpc` | 单次点击成本 | `spend_usd / clicks` |
|
|
30
|
-
| `cpm` | 千次曝光成本 | `spend_usd / impressions * 1000` |
|
|
31
|
-
| `cpi` | 单次下载成本 | `spend_usd / installs` |
|
|
32
|
-
| `cpe` | 单次互动成本 | `spend_usd / engagement` |
|
|
33
|
-
| `cpv` | 单次视频观看成本 | `spend_usd / video_views` |
|
|
34
|
-
| `cpaPurchase` | 单次订单成本 | `spend_usd / purchase` |
|
|
35
|
-
| `cpaAddsToCart` | 单次加入购物车成本 | `spend_usd / add_to_cart` |
|
|
36
|
-
| `cpr` | 单次注册成本 | `spend_usd / complete_registration` |
|
|
37
|
-
| `cpl` | 单次线索成本 | `spend_usd / leads` |
|
|
38
|
-
| `cvrAddsToCart` | 加入购物车转化率 | `add_to_cart / clicks` |
|
|
39
|
-
| `cvrPurchases` | 订单转化率 | `purchase / clicks` |
|
|
40
|
-
| `cvrAppInstalls` | 安装转化率 | `installs / clicks` |
|
|
41
|
-
| `vtr` | 视频观看率 | `video_views / impressions` |
|
|
42
|
-
| `roas` | 投资回报率 | `purchase_value / spend_usd` |
|
|
43
|
-
| `arpp` | 笔单价 | `purchase_value / purchase` |
|
|
44
|
-
| `cvrRegistrationsCompleted` | 注册转化率 | `complete_registration / clicks` |
|
|
45
|
-
|
|
46
|
-
计算前先确认分母对应的基础指标已经在同一次 `indicators` 请求中一起查出(同一 `dimensions` 粒度下),避免分子分母来自不同粒度导致口径不一致。分母为 0 时该指标记为「-」,不参与后续 KPI 判断。
|
|
47
|
-
|
|
48
|
-
## 核心指标识别
|
|
49
|
-
|
|
50
|
-
1. `biz-line-list`(或 `biz-line +detail`)出参里的 `coreIndex` 是自由文本(来源 `t_biz_line.core_index`,未配置时为 null),先尝试匹配到上述基础/衍生指标名称(中英文、别名均可,如「安装成本」→ `cpi`;文本里可能带阈值如 `ROI>1.2`,要把指标名和目标阈值分别解析出来,阈值即 KPI 达标线)。
|
|
51
|
-
⚠️ 不要拿 `coreEffectIndex` 当核心指标:那是策略回顾里的「当期核心效果指标」,与业务线维度的 `coreIndex` 不是同一字段。
|
|
52
|
-
2. 若 `coreIndex` 为空或无法识别,按投放行业给默认核心指标(ECBR → ROAS,APP/GAME → CPI;此为文档中的候选默认值,如与业务方最新口径冲突以业务方最新说明为准)。行业取值见 `biz-line +categories` 一级节点(1=APP,2=ECBR,3=游戏)。
|
|
53
|
-
3. 核心指标若是衍生指标,必须展开到其依赖的基础指标(见上表公式),把这些基础指标一并加入本次 `indicators` 查询,不能只查核心指标名。
|
|
54
|
-
4. 一个业务线可能有多个核心指标,逐个按下方判定流程生成 learning,多个结论在同一个策略 learning 里合并展示。
|
|
55
|
-
|
|
56
|
-
## 策略效果判定流程(生成 learning)
|
|
57
|
-
|
|
58
|
-
### 第零步:先分清「预算策略」和「其他三大策略」的取数口径
|
|
59
|
-
|
|
60
|
-
两类策略的 KPI 评判对象完全不同,**先按这一步选对取数粒度,再往下走**:
|
|
61
|
-
|
|
62
|
-
| 策略 | KPI 评判对象 | 取数方式 |
|
|
63
|
-
| --- | --- | --- |
|
|
64
|
-
| **预算策略** | **各媒体的总投放数据** | 按渠道汇总本期全量 `spend_usd` 与核心指标基础指标(`dimensions` 只需 `account_id`,不下钻到具体配置值),逐渠道判断该渠道整体是否达标 KPI,再看渠道间占比变化 |
|
|
65
|
-
| **广告产品策略 / 受众策略 / 素材策略** | **该维度本期「新增值」自己的投放数据** | 按对应维度分组取成效(`dimensions` 带上该维度字段),只取本期新增出现的那些维度值,判断**这些新增值自身**是否达标 KPI,而不是看整体 |
|
|
66
|
-
|
|
67
|
-
举例:受众策略里国家新增了美国,就只看**美国**这个新增值的投放数据是否达标 KPI,不看整个业务线整体;素材策略新增了 2 个广告,就只看这 2 个新增广告的数据。
|
|
68
|
-
|
|
69
|
-
「新增值」的识别:用本期与上期的同维度取值集合做差集,本期有、上期没有的即新增值(判定方法同 [`four-strategies.md`](four-strategies.md) 各维度的新增/关停逻辑)。
|
|
70
|
-
|
|
71
|
-
**国家维度现已可取成效**(接口已更新):`country_code` 在维度接口和成效接口都支持,但只能**单独传**或**与 `calendar_date` 两个一起传**,与其他任何维度同传会报错「[country_code]只能和[calendar_date]同时传入」。所以国家维度要单独发一次成效请求:
|
|
72
|
-
|
|
73
|
-
```json
|
|
74
|
-
{
|
|
75
|
-
"startDate": "2026-09-01", "endDate": "2026-09-07",
|
|
76
|
-
"dimensionValues": { "account_id": ["act_123"], "country_code": ["US"] },
|
|
77
|
-
"dimensions": ["country_code"],
|
|
78
|
-
"indicators": ["spend_usd", "installs"],
|
|
79
|
-
"page": 1, "size": 1000
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
- 传了 `country_code` 维度后,`dimensionValues` 额外支持 `country_code` 过滤,**直接把本期新增的国家码数组传进去**即可只取新增国家的数据,不必全量拉回本地再筛。
|
|
84
|
-
- ⚠️ 传 `country_code` 时服务端转走跨渠道接口,`headerMap` 列名会变(`calendar_date` → 「日期」,`country_code` → 「国家/地区」)。展示列名一律读 `headerMap` 实际返回值,**不要写死**。
|
|
85
|
-
- 12 个基础指标在跨渠道接口同样支持、照常返回聚合值。
|
|
86
|
-
|
|
87
|
-
### 第一步:区分三类调整对象
|
|
88
|
-
|
|
89
|
-
| 类型 | 定义 | 对比方式 |
|
|
90
|
-
| --- | --- | --- |
|
|
91
|
-
| 可环比 | 上周有、本周也有(如预算调整、媒体占比变化) | 本周 vs 上周(同一对象) |
|
|
92
|
-
| 新增 | 本周新增,上周没有(如新国家、新广告、新素材) | 本周新增部分 vs 本周整体 |
|
|
93
|
-
| 关停 | 上周有,本周已关停(如下架广告、关停国家) | 关停后剩余存量整体表现 vs 关停前整体表现 |
|
|
94
|
-
|
|
95
|
-
预算策略始终走「可环比」逻辑(各媒体总数据 + 渠道占比变化);其他三大策略以「新增」为主写内容。新增值 KPI / 达标占比只作 learning 依据,不决定第二期总结论。
|
|
96
|
-
|
|
97
|
-
### 第二步:判定结论(2026-09-17 会议:第二期跟环比,KPI 只作依据)
|
|
98
|
-
|
|
99
|
-
实现函数:`cli_json.period_verdict`。旧表 `dual_verdict` 仅留作对照,**不要**再拿「达标占比≥70%」把总结论打成无效。
|
|
100
|
-
|
|
101
|
-
| 阶段 | 结论怎么定 | KPI 怎么用 |
|
|
102
|
-
| --- | --- | --- |
|
|
103
|
-
| **首期**(无 `prevPeriodStart/End`) | 能识别客户 KPI 则按是否达标:达标=有效,否则待观察;认不出/没填=待观察 | 结论轴 |
|
|
104
|
-
| **第二期起** | 核心指标环比(优先 CPI=消耗/激活,成本类下降为好):变好=有效,稳定=待观察,变差=待观察(预警) | 只写在「依据」,不单独改结论 |
|
|
105
|
-
|
|
106
|
-
第 1 / 2 层仍可写分项是否过消耗门槛、CPI 对照,作为备查,不决定四大策略总结论。
|
|
107
|
-
|
|
108
|
-
~~旧双轴表(KPI × 环比 → 无效)已停用。~~
|
|
109
|
-
|
|
110
|
-
**依据里可以写的两个轴**(第二期不拿「达标」轴改结论):
|
|
111
|
-
|
|
112
|
-
| 轴 | 预算 Spend | 其他三大策略 |
|
|
113
|
-
| --- | --- | --- |
|
|
114
|
-
| 核心指标 | 全渠道 CPI(消耗/激活),没有激活再退回 CPM | 过门槛新增的消耗加权达标占比(仅备查) |
|
|
115
|
-
| 环比变化 | 全渠道核心指标:本期 vs 上期(**第二期结论轴**) | 同上,业务线级同一口径 |
|
|
116
|
-
|
|
117
|
-
**环比变化的判定**:`变化幅度 = (本期值 - 上期值) / 上期值`,绝对值 ≤10% 记「稳定」,>10% 按方向记「变好」或「变差」。
|
|
118
|
-
|
|
119
|
-
⚠️ **方向要按指标类型判断,不能只看数值涨跌**:
|
|
120
|
-
- **成本类**(CPI、CPC、CPM、CPE、CPV、CPA、CPR、CPL、笔单价除外)→ **数值下降 = 变好**
|
|
121
|
-
- **收益/转化类**(ROAS、CTR、VTR、各类转化率 CVR、ARPP)→ **数值上升 = 变好**
|
|
122
|
-
|
|
123
|
-
例:CPI 从 15 降到 12,变化幅度 -20%,成本类指标下降 → 记「变好(>10%)」,不是变差。
|
|
124
|
-
|
|
125
|
-
上期值缺失(业务线本期首次投放、上期无数据)→ 环比记「无法对比」,此时结论只按 KPI 达标定:达标 = 有效,未达标 = 待观察(给一周观察期,不直接判无效),并在文案里说明缺上期数据。
|
|
126
|
-
|
|
127
|
-
### 各维度能否按值取成效(决定该维度能不能判 KPI)
|
|
128
|
-
|
|
129
|
-
成效接口的 `dimensions` 枚举决定了哪些维度可以「按值取投放数据」。下表已按 spec 核对:
|
|
130
|
-
|
|
131
|
-
| 维度字段 | Facebook | Google | TikTok | 说明 |
|
|
132
|
-
| --- | --- | --- | --- | --- |
|
|
133
|
-
| `optimization_goal` 成效目标 | ✅ | ✅ | ✅ | 广告产品策略 |
|
|
134
|
-
| `bid_strategy` 出价方式 | ✅ | ✅ | ✅ | 广告产品策略 |
|
|
135
|
-
| `objective` 广告目标 | ✅ | ❌ | ✅ | Google 不支持 |
|
|
136
|
-
| `advertising_channel_type` 广告系列类型 | ❌ | ✅ | ❌ | 仅 Google |
|
|
137
|
-
| `audience_type` 受众类型 | ✅ | ✅ | ✅ | 受众策略 |
|
|
138
|
-
| `targeting_age` 年龄 | ✅ | ✅ | ✅ | 受众策略 |
|
|
139
|
-
| `targeting_genders` 性别 | ✅ | ✅ | ✅ | 受众策略 |
|
|
140
|
-
| `targeting_interests` 兴趣词包 | ✅ | ❌ | ✅ | Google 不支持 |
|
|
141
|
-
| `keywords` 关键词 | ❌ | ✅ | ❌ | 仅 Google |
|
|
142
|
-
| `adgroup_id` / `adgroup_name` 广告组 | ✅ | ✅ | ✅ | 受众策略 |
|
|
143
|
-
| `ad_id` / `ad_name` 广告 | ✅ | ✅ | ✅ | 素材策略 |
|
|
144
|
-
| `ad_format` 创意类型 | ✅ | ✅ | ✅ | 素材策略 |
|
|
145
|
-
| `country_code` 国家 | ✅ | ✅ | ✅ | 受众策略;**须单独请求**(只能与 `calendar_date` 同传) |
|
|
146
|
-
|
|
147
|
-
标 ❌ 的维度(当前渠道拿不到该维度成效)→ 该维度记「无法对比」,在 learning 里写明「无法对比:<维度> 该渠道不支持取数」,不参与达标聚合。
|
|
148
|
-
|
|
149
|
-
### 三层聚合:枚举值 → 维度 → 大策略
|
|
150
|
-
|
|
151
|
-
learning 要逐层给出结果,**三层都要落到文案里**(预算策略除外,它走下方「预算策略的特殊处理」):
|
|
152
|
-
|
|
153
|
-
**第 1 层 · 每个新增枚举值**:只写**过了评判门槛**的新增值(消耗 ≥$50 等),给出核心指标值与是否达标。
|
|
154
|
-
例:国家维度新增了美国、越南 → 分别给「美国 CPI 6.4 达标(消耗 $2100)」「越南 CPI 12.1 未达标(消耗 $600)」。
|
|
155
|
-
被门槛拦下的不要逐条罗列:写成「另有 N 个新增消耗不足 $50,不纳入聚合」。广告/广告组新增值经常上百条且大半 $0,把它们全写进单元格会毁可读性,也不改变聚合结果。
|
|
156
|
-
|
|
157
|
-
**第 2 层 · 该维度所有新增枚举值合起来**:把该维度全部新增枚举值的基础指标**先求和再算核心指标**(不是对各枚举值的核心指标取平均),给出该维度整体的 KPI 值与是否达标。
|
|
158
|
-
例:`该维度 CPI = Σ(各新增值 spend_usd) / Σ(各新增值 installs)`。
|
|
159
|
-
⚠️ 衍生指标必须「先合并基础指标、再算比率」,直接平均比率会得出错误结论(辛普森悖论)。
|
|
160
|
-
|
|
161
|
-
**第 3 层 · 大策略总结论**:走下方「第二步」的**双维度判定**(KPI 达标 + 环比变化)。其中「是否达标 KPI」这一轴用消耗加权得出:
|
|
162
|
-
|
|
163
|
-
`达标占比 = Σ(达标维度的新增值消耗) / Σ(纳入聚合的全部维度新增值消耗)`
|
|
164
|
-
|
|
165
|
-
达标占比 **≥ 70% 记为「达标」**,否则记为「未达标」。这个达标/未达标结果**不直接等于结论**,还要再和环比变化一起查双维度表才能定结论。
|
|
166
|
-
|
|
167
|
-
只把**能取到成效、且通过评判门槛**的维度纳入聚合;「无法对比」和被门槛拦下的维度不投票,但要在文案里点名说明。
|
|
168
|
-
|
|
169
|
-
**为什么达标轴用消耗加权**:「全维度达标才算达标」会让维度多的策略天然吃亏——受众策略有 7 个维度,一个小兴趣词包不达标就把整个策略判成无效,这是维度个数带来的偏差而不是真实信号;「一个达标就算达标」是镜像问题,一个亮点能洗白多个拖累项。消耗是天然权重:烧了 $5000 的新国家本就该比烧了 $80 的新兴趣词包更有话语权,且结论与维度个数无关。这也和「消耗不足 <$50 判待观察」的门槛口径一致。
|
|
170
|
-
|
|
171
|
-
**第 1、2 层只给「是否达标」,不走双维度判定**:枚举值级和维度级只需回答「这个新增值/这个维度的新增值合计有没有达标 KPI」,作为文案里的分项证据;双维度判定(含环比)只在第 3 层策略级做一次。
|
|
172
|
-
|
|
173
|
-
### 特殊情况:所有维度都没有新增,只有关停 / 减少
|
|
174
|
-
|
|
175
|
-
此时没有「新增值」可评,**不要退化成「看业务线现有总投放是否达标」**——那衡量的是业务线大盘水平,跟本期这次「关停」动作没有因果关系,会把大盘本来就好/本来就差的情况错误归因到这次策略上。
|
|
176
|
-
|
|
177
|
-
改用**关停动作自身的因果口径:存量对比**(与第一步「关停」类型的对比方式一致):
|
|
178
|
-
|
|
179
|
-
1. 取**关停后仍在投放的存量**(本期继续投放的那部分)的核心指标,记为 `KPI_after`。
|
|
180
|
-
2. 取**关停前同一批存量 + 被关停对象**(即上期全量)的核心指标,记为 `KPI_before`。
|
|
181
|
-
3. 判定:仍走「第二步」的双维度表,只是两个轴的取值换成关停口径 —— **达标轴** = `KPI_after` 是否达标 KPI 目标;**环比轴** = `KPI_after` 相对 `KPI_before` 的变化(方向同样按成本类/收益类判断)。对应结果:
|
|
182
|
-
|
|
183
|
-
| 情况 | 结论 | 含义 |
|
|
9
|
+
| 观察指标 | 同粒度合计后的公式 | 方向 |
|
|
184
10
|
| --- | --- | --- |
|
|
185
|
-
|
|
|
186
|
-
|
|
|
187
|
-
|
|
|
188
|
-
|
|
|
189
|
-
|
|
190
|
-
4. 多个维度都只有关停时,同样按**各维度被关停对象的上期消耗**做消耗加权(消耗越大的关停动作影响越大),套用第 3 层的占比阈值。
|
|
191
|
-
5. 「无实质动作」必须**同时**满足:无新增、无关停、**所有占比变化都在 ±2% 内**。无新增但占比变化超过 ±2%(例如成效目标从安装改成应用内事件)是**可环比结构调整**,用业务线核心指标走双维度表,不要写成「本期无实质调整动作」。
|
|
192
|
-
|
|
193
|
-
文案要明确写出这是关停口径,例如:`无效。本期无新增,仅关停 2 个低效兴趣词包;关停后存量 CPI 13.2(未达标,KPI 目标 ≤10),关停前 13.0,未见改善。建议换策略。`
|
|
194
|
-
|
|
195
|
-
4. 纳入聚合的维度为 0 个(全部无法对比 / 全被门槛拦下)→ 整个策略记「无法对比」,不要硬给结论。
|
|
196
|
-
|
|
197
|
-
聚合结果要在 learning 里可追溯:三层都写进文案(见「第三步」输出格式)。
|
|
198
|
-
|
|
199
|
-
### 预算策略的特殊处理(不走上面的三层聚合)
|
|
200
|
-
|
|
201
|
-
预算策略下只有两个子项:**调整出价**和 **Spend**,各自的达标口径不同,且策略总结论只取 Spend。
|
|
11
|
+
| 安装 CPI(美元) | Σspend_usd / Σinstalls | 越低越好 |
|
|
12
|
+
| CPC(美元) | Σspend_usd / Σclicks | 越低越好 |
|
|
13
|
+
| CPM(美元) | Σspend_usd / Σimpressions × 1000 | 越低越好 |
|
|
14
|
+
| ROAS | Σpurchase_value / Σspend_usd | 越高越好 |
|
|
15
|
+
| CTR(%) | Σclicks / Σimpressions × 100 | 越高越好 |
|
|
202
16
|
|
|
203
|
-
|
|
17
|
+
缺少必需字段、非数值或分母为零时记为不可计算;不补零、不平均各行比率、不混合账号粒度和日期粒度的分子分母。
|
|
204
18
|
|
|
205
|
-
|
|
206
|
-
2. 逐个给出**每个有出价调整的广告组**的核心指标值与是否达标(对应第 1 层)。
|
|
207
|
-
3. 汇总:把**所有有出价调整的广告组**的基础指标先求和、再算核心指标,得到调整出价子项的总 KPI 与达标结果(对应第 2 层,同样先合并基础指标再算比率)。
|
|
208
|
-
4. 本期没有任何广告组调整过出价 → 该子项记「无实质动作 / 无法对比」,不影响 Spend 子项。
|
|
19
|
+
安装量不等于客户激活数,美元 CPI 不等于人民币 CPA。缺少同币种或留存数据时,客户 KPI 为「不可判定」。禁止旧的 `CPM≤5` 默认达标线。
|
|
209
20
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
Spend 子项的次级 learning 结论要走**双维度判定**(见「第二步」):既看全渠道加总 KPI 是否达标,也看该 KPI 本期 vs 上期的环比变化,两个轴一起查表定「有效 / 待观察 / 无效」。文案里同时给各渠道的消耗占比变化(占比变化仍按 ±2% 判有无变化)。
|
|
213
|
-
|
|
214
|
-
**预算策略总结论 = Spend 子项的双维度判定结果**(直接沿用,不再单独算一次)。调整出价的结论只作为文案里的分项说明呈现,不参与总结论计算。理由:出价调整是手段,预算分配的整体产出才是预算策略要负责的结果;且有出价调整的广告组可能只占一小部分消耗,让它左右总结论会失真。
|
|
215
|
-
|
|
216
|
-
调整出价子项只给「是否达标」(逐广告组 + 合计),不走双维度判定。
|
|
217
|
-
|
|
218
|
-
### 评判门槛(命中任一即判定「待观察」,不再往下判断有效/无效)
|
|
219
|
-
|
|
220
|
-
门槛的判定对象跟着上面第零步的取数口径走:**预算策略**按各渠道总数据判;**其他三大策略**按该维度**新增值自身**的数据判(新增值消耗小是常态,门槛在这里会经常命中,属预期行为)。
|
|
221
|
-
|
|
222
|
-
| 门槛 | 规则 | 原因 |
|
|
223
|
-
| --- | --- | --- |
|
|
224
|
-
| 消耗不足 | 本周消耗 < $50 | 数据量太小,指标不稳定 |
|
|
225
|
-
| 天数不足 | 本周有效投放天数 < 3 天 | 投放未跑满一周,样本代表性不足 |
|
|
226
|
-
| 转化不足 | 主 KPI 为转化类指标(CPI/CPA/ROI 等)且转化量 < 10 | 转化样本不够,统计显著性不足 |
|
|
227
|
-
| 无实质动作 | 占比变化在 ±2% 以内,且无新增/关停 | 实际没有发生有效调整,不评价调整成效 |
|
|
228
|
-
|
|
229
|
-
### 第三步:输出格式(结论 + 效果数据 + 建议)
|
|
230
|
-
|
|
231
|
-
**预算策略**(调整出价 + Spend 两个子项,总结论取 Spend):
|
|
232
|
-
|
|
233
|
-
```
|
|
234
|
-
结论:有效(取 Spend 子项)
|
|
235
|
-
KPI:CPI≤7
|
|
236
|
-
|
|
237
|
-
Spend
|
|
238
|
-
· 全渠道 CPI:本期 6.5 / 上期 6.8,达标,环比稳定 -4.4% → 有效
|
|
239
|
-
· 占比:FB 50.0% → 55.0%;TT 40.0% → 35.0%;GG 10.0% → 10.0%
|
|
240
|
-
|
|
241
|
-
调整出价
|
|
242
|
-
· 广告组A CPI 6.1 达标($2400)
|
|
243
|
-
· 广告组B CPI 7.4 未达标($900)
|
|
244
|
-
· 广告组C CPI 5.8 达标($1500)
|
|
245
|
-
· 合计 CPI 6.3,达标
|
|
246
|
-
|
|
247
|
-
建议:继续执行
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
(上例中环比 -4.4% 未超 10%,记「稳定」;达标 + 稳定 → 有效。)
|
|
251
|
-
|
|
252
|
-
**其他三大策略**(三层:每个新增枚举值 → 该维度合计 → 大策略加权):
|
|
253
|
-
|
|
254
|
-
```
|
|
255
|
-
结论:待观察(潜力)
|
|
256
|
-
依据:达标占比 52%(<70% → 未达标);环比本期 CPI 7.6 / 上期 9.1,变好 -16.5%
|
|
257
|
-
KPI:CPI≤7
|
|
258
|
-
|
|
259
|
-
国家
|
|
260
|
-
· 新增「美国」CPI 6.4 达标($2100)
|
|
261
|
-
· 新增「越南」CPI 12.1 未达标($600)
|
|
262
|
-
· 合计 CPI 7.3,未达标
|
|
263
|
-
|
|
264
|
-
兴趣词包
|
|
265
|
-
· 新增「短剧」CPI 12.3 未达标($1900)
|
|
266
|
-
· 新增「线上娱乐」CPI 6.2 达标($2600)
|
|
267
|
-
· 合计 CPI 8.1,未达标
|
|
21
|
+
## 核心指标识别
|
|
268
22
|
|
|
269
|
-
|
|
270
|
-
```
|
|
23
|
+
读取 `coreIndex` 原文(不是 `coreEffectIndex`),完整保存到明细。固定解析器只判断定义明确的单一表达式,例如 `CPI USD <= 3`、`CPM <= 5美元`、`ROAS >= 1.2`、`CTR >= 2%`。
|
|
271
24
|
|
|
272
|
-
|
|
273
|
-
结论:无效
|
|
274
|
-
口径:本期无新增,走关停
|
|
275
|
-
KPI:CPI≤10
|
|
25
|
+
组合条件、人民币 CPA、次日留存、未知指标或缺少币种的成本阈值,不强行解析为可判定 KPI。默认用美元安装 CPI 作观察指标,并说明无法对标客户 KPI 的原因,不使用 CPM 自动补位掩盖安装数据缺失。
|
|
276
26
|
|
|
277
|
-
|
|
278
|
-
关停前 13.0,环比稳定 +1.5%
|
|
27
|
+
## 周期与总体结论
|
|
279
28
|
|
|
280
|
-
|
|
281
|
-
|
|
29
|
+
- 首期由本次实际采用的上期起止日期是否齐全决定;有可判定 KPI 才按是否达标给出有效/待观察,否则待观察。
|
|
30
|
+
- 第二期起按同口径核心指标环比;绝对变化 ≤10% 为稳定,成本下降/收益上升为变好。变好=有效,稳定=待观察,变差=待观察(预警)。缺上期值或分母为零=无法对比,结论待观察。
|
|
31
|
+
- 本期消耗不足 $50、有效投放不足 3 天,或安装 CPI 的安装量不足 10,结论保持待观察。
|
|
32
|
+
- 同时展示请求周期和各渠道实际返回日期;六天对七天等覆盖差异要提示,不能把短周期消耗下降直接说成主动减预算。
|
|
33
|
+
- 总体环比只是同期观察,不能证明新增国家、广告或某次调价的因果效果。
|
|
282
34
|
|
|
283
|
-
|
|
35
|
+
## 四大策略的依据
|
|
284
36
|
|
|
285
|
-
|
|
286
|
-
- 结论下面按维度分段,**三层都要有**:① 每个新增枚举值的指标值 + 是否达标 + 消耗(`·` 一行一条,最多 8 条);② 该维度全部新增值合计的指标值 + 是否达标;③ 策略级达标占比与环比已在开头给出。
|
|
287
|
-
- 维度合计与策略合计都必须**先合并基础指标再算比率**,不要对各枚举值的比率取平均。
|
|
288
|
-
- 被门槛拦下、无新增、或该渠道不支持取数的维度也要点名说明原因(「本期无新增,跳过」「Google 渠道不支持该维度取数,无法对比」「消耗仅 $30,样本不足」),不能静默省略。
|
|
289
|
-
- 走关停口径时要在文案里说明,并给出 `KPI_after` 与 `KPI_before` 的对比。
|
|
290
|
-
- 全程带上 KPI 目标值,不要只写「达标 / 未达标」。
|
|
37
|
+
预算取同粒度全渠道基础数据合计,展示每渠道金额、占比与出价变动。其他三大策略以新增值自身数据为分项依据;按渠道 + ID(对象维度)或渠道 + 维度值识别新增,避免同名对象混淆。
|
|
291
38
|
|
|
292
|
-
|
|
39
|
+
1. 新增值消耗 ≥$50 才逐条写成效,低消耗只汇总数量。
|
|
40
|
+
2. 每个维度的过门槛新增基础数据先合计再算指标。明细完整保存每个新增对象的 ID、名称、渠道、消耗及指标。
|
|
41
|
+
3. 各维度可能覆盖同一投放,不能相加当成不重复的业务线消耗。客户 KPI 不可判定时,不生成达标/未达标或伪造达标占比。
|
|
42
|
+
4. 无新增时说明无新增;本期集合缺失仅代表「本期未出现」,不证明已暂停,不使用所谓关停因果结论。
|
|
43
|
+
5. 0% 到 0% 的残留枚举不作为调整依据。主表摘要最多列 8 个新增,完整细节进明细,超长内容分续行而非丢弃。
|
|
293
44
|
|
|
294
|
-
|
|
45
|
+
四大策略输出结论、依据和建议。第二期总结论采用总体可比指标,分项仍单独展示新增部分,明确二者的观察范围。
|