siluzan-tso-cli 1.1.29-beta.2 → 1.1.29-beta.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.
Files changed (169) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +3174 -867
  3. package/dist/skill/AGENTS.md +30 -31
  4. package/dist/skill/SKILL.md +16 -33
  5. package/dist/skill/_meta.json +2 -2
  6. package/dist/skill/assets/campaign-create-keyword-test.fixed.json +10 -33
  7. package/dist/skill/assets/campaign-create-template.json +2 -0
  8. package/dist/skill/assets/campaign-create-template.md +114 -99
  9. package/dist/skill/assets/market-analysis-rules.md +55 -55
  10. package/dist/skill/assets/meta-period-report-rules.md +61 -60
  11. package/dist/skill/assets/pmax-asset-group-template.json +12 -4
  12. package/dist/skill/assets/pmax-asset-group-template.md +25 -0
  13. package/dist/skill/assets/pmax-brand-assets-template.json +25 -0
  14. package/dist/skill/assets/pmax-brand-assets-template.md +22 -0
  15. package/dist/skill/assets/pmax-brand-guidelines-enable-template.json +24 -0
  16. package/dist/skill/assets/pmax-brand-guidelines-enable-template.md +22 -0
  17. package/dist/skill/assets/pmax-create-template.json +41 -2
  18. package/dist/skill/assets/pmax-create-template.md +84 -51
  19. package/dist/skill/assets/pmax-lead-form-template.json +36 -0
  20. package/dist/skill/assets/pmax-lead-form-template.md +70 -0
  21. package/dist/skill/assets/pmax-signals-template.json +2 -6
  22. package/dist/skill/assets/pmax-whatsapp-template.json +26 -0
  23. package/dist/skill/assets/pmax-whatsapp-template.md +45 -0
  24. package/dist/skill/assets/website-diagnosis-rules.md +67 -67
  25. package/dist/skill/references/README.md +78 -65
  26. package/dist/skill/references/accounts/accounts.md +99 -105
  27. package/dist/skill/references/accounts/finance.md +23 -79
  28. package/dist/skill/references/accounts/open-account-by-media.md +84 -81
  29. package/dist/skill/references/accounts/open-account-google-ui.md +24 -24
  30. package/dist/skill/references/analytics/account-analytics.md +94 -103
  31. package/dist/skill/references/analytics/facebook-analysis-guide.md +61 -61
  32. package/dist/skill/references/analytics/google-analysis-batch.md +2 -2
  33. package/dist/skill/references/analytics/keyword-planner-workflows.md +22 -23
  34. package/dist/skill/references/analytics/market-analysis-guide.md +31 -25
  35. package/dist/skill/references/analytics/rag.md +20 -20
  36. package/dist/skill/references/analytics/reporting.md +4 -4
  37. package/dist/skill/references/analytics/website-diagnosis-guide.md +24 -24
  38. package/dist/skill/references/core/agent-conventions.md +136 -106
  39. package/dist/skill/references/core/cli-enums.md +47 -53
  40. package/dist/skill/references/core/playbooks.md +42 -41
  41. package/dist/skill/references/core/subagent-orchestration.md +40 -40
  42. package/dist/skill/references/core/tips.md +18 -61
  43. package/dist/skill/references/core/workflows.md +36 -29
  44. package/dist/skill/references/google-ads/google-ads-campaign-plan.md +25 -24
  45. package/dist/skill/references/google-ads/google-ads.md +81 -57
  46. package/dist/skill/references/google-ads/pmax-api.md +138 -34
  47. package/dist/skill/references/google-ads/rules/README.md +15 -15
  48. package/dist/skill/references/google-ads/rules/google-ads-account-audit.md +22 -22
  49. package/dist/skill/references/google-ads/rules/google-ads-compliance.md +27 -27
  50. package/dist/skill/references/google-ads/rules/google-ads-keyword-strategy.md +15 -15
  51. package/dist/skill/references/google-ads/rules/google-ads-keyword-taxonomy.md +32 -22
  52. package/dist/skill/references/google-ads/rules/google-ads-launch-plan-template.md +32 -30
  53. package/dist/skill/references/google-ads/rules/google-ads-pmax-guide.md +3 -1
  54. package/dist/skill/references/misc/tso-home.md +8 -8
  55. package/dist/skill/references/operations/clue.md +1 -1
  56. package/dist/skill/references/operations/forewarning.md +1 -1
  57. package/dist/skill/references/operations/hosted-automation-optimize-index.md +2 -2
  58. package/dist/skill/references/operations/hosted-automation-scenarios.md +5 -5
  59. package/dist/skill/references/operations/hosted-automation-self-control.md +15 -15
  60. package/dist/skill/references/operations/hosted-automation-user-catalog.md +13 -13
  61. package/dist/skill/references/operations/optimize.md +8 -8
  62. package/dist/skill/references/report-templates/README.md +45 -0
  63. package/dist/skill/references/report-templates/REPORT-WORKFLOW.md +114 -0
  64. package/dist/skill/references/report-templates/bing-period-report.md +65 -0
  65. package/dist/skill/references/report-templates/google-account-diagnosis-report.md +83 -0
  66. package/dist/skill/references/report-templates/google-ads-diagnosis.md +378 -0
  67. package/dist/skill/references/report-templates/google-inquiry-analysis.md +543 -0
  68. package/dist/skill/references/report-templates/google-period-report-excel.md +126 -0
  69. package/dist/skill/references/report-templates/google-period-report.md +60 -0
  70. package/dist/skill/references/report-templates/market-analysis-report.md +40 -0
  71. package/dist/skill/references/report-templates/meta-account-diagnosis-report.md +74 -0
  72. package/dist/skill/references/report-templates/meta-period-report-excel.md +230 -0
  73. package/dist/skill/references/report-templates/meta-period-report.md +219 -0
  74. package/dist/skill/references/report-templates/okki-weekly-google-client.md +217 -0
  75. package/dist/skill/references/report-templates/tiktok-period-report.md +56 -0
  76. package/dist/skill/references/report-templates/website-diagnosis-report.md +79 -0
  77. package/dist/skill/report-templates/README.md +16 -14
  78. package/dist/skill/report-templates/REPORT-WORKFLOW.md +13 -13
  79. package/dist/skill/report-templates/google-account-diagnosis-report.md +1 -1
  80. package/dist/skill/report-templates/google-ads-diagnosis.md +21 -21
  81. package/dist/skill/report-templates/google-inquiry-analysis.md +44 -44
  82. package/dist/skill/report-templates/google-period-report-excel.md +24 -24
  83. package/dist/skill/report-templates/google-period-report.md +23 -23
  84. package/dist/skill/report-templates/market-analysis-report.md +1 -1
  85. package/dist/skill/report-templates/meta-period-report-excel.md +72 -64
  86. package/dist/skill/report-templates/meta-period-report.html +706 -428
  87. package/dist/skill/report-templates/meta-period-report.md +61 -60
  88. package/dist/skill/report-templates/okki-weekly-google-client.md +26 -26
  89. package/dist/skill/report-templates/report-template-academic.html +1 -1
  90. package/dist/skill/report-templates/report-template-dark.html +1 -1
  91. package/dist/skill/report-templates/report-template-formal.html +1 -1
  92. package/dist/skill/report-templates/report-template-mobile.html +1 -1
  93. package/dist/skill/report-templates/report-template-onepager.html +1 -1
  94. package/dist/skill/report-templates/report-template-print.html +1 -1
  95. package/dist/skill/report-templates/report-template.html +1 -1
  96. package/dist/skill/report-templates/website-diagnosis-report.html +1731 -1653
  97. package/dist/skill/report-templates/website-diagnosis-report.md +21 -23
  98. package/dist/skill/scripts/install.ps1 +1 -1
  99. package/dist/skill/scripts/install.sh +1 -1
  100. package/dist/skill/snippets/handoff-p7-inquiry.md +5 -5
  101. package/eval/cases/accounts-entityid-vs-mediaccustomerid.scenario.json +2 -14
  102. package/eval/cases/accounts-mcc-bind-inquiry.scenario.json +1 -3
  103. package/eval/cases/accounts-single-balance-not-bulk.scenario.json +3 -14
  104. package/eval/cases/budget-display-not-raw-micros.scenario.json +1 -8
  105. package/eval/cases/clue-meta-leads-json.scenario.json +2 -14
  106. package/eval/cases/clue-tiktok-leads-json.scenario.json +2 -11
  107. package/eval/cases/destructive-account-delink-needs-confirm.scenario.json +3 -9
  108. package/eval/cases/destructive-forewarning-delete-needs-confirm.scenario.json +3 -9
  109. package/eval/cases/destructive-invoice-apply-needs-confirm.scenario.json +3 -9
  110. package/eval/cases/facebook-analysis-google-section-aliases.scenario.json +2 -11
  111. package/eval/cases/facebook-analysis-not-google-keywords.scenario.json +3 -10
  112. package/eval/cases/facebook-analysis-period-default.scenario.json +2 -14
  113. package/eval/cases/finance-invoice-info-list.scenario.json +3 -11
  114. package/eval/cases/forewarning-list-google.scenario.json +3 -14
  115. package/eval/cases/google-ads-no-structural-without-confirm.scenario.json +2 -6
  116. package/eval/cases/google-analysis-keywords-route.scenario.json +2 -14
  117. package/eval/cases/human-p1-multiturn.scenario.json +1 -5
  118. package/eval/cases/meta-single-balance-not-bulk.scenario.json +3 -17
  119. package/eval/cases/no-legacy-json-flag.scenario.json +2 -6
  120. package/eval/cases/open-account-google-noninteractive.scenario.json +1 -3
  121. package/eval/cases/open-account-tiktok-license-file.scenario.json +1 -3
  122. package/eval/cases/optimize-list-by-account.scenario.json +3 -11
  123. package/eval/cases/p1-single-account-profile.scenario.json +1 -11
  124. package/eval/cases/p2-balance-scan-bulk.scenario.json +2 -9
  125. package/eval/cases/p3-accounts-digest.scenario.json +1 -5
  126. package/eval/cases/p4-fb-meta-period-report.scenario.json +2 -12
  127. package/eval/cases/p4-period-report-window.scenario.json +1 -8
  128. package/eval/cases/pmax-asset-group-create-with-bg.scenario.json +15 -0
  129. package/eval/cases/pmax-brand-edit-routing.scenario.json +12 -0
  130. package/eval/cases/pmax-edit-not-campaign-edit.scenario.json +15 -0
  131. package/eval/cases/pmax-enable-brand-guidelines.scenario.json +15 -0
  132. package/eval/cases/pmax-no-assets-update-brand-fields.scenario.json +12 -0
  133. package/eval/cases/rag-before-keyword-expand.scenario.json +1 -11
  134. package/eval/cases/rag-list-then-query.scenario.json +2 -14
  135. package/eval/cases/report-list-google.scenario.json +2 -11
  136. package/eval/cases/report-push-list-google.scenario.json +2 -11
  137. package/eval/cases/setup-login-or-env.scenario.json +1 -3
  138. package/eval/cases/setup-siluzan-data-permission-env.scenario.json +1 -3
  139. package/eval/cases/tiktok-bc-bind-inquiry.scenario.json +2 -6
  140. package/eval/cases/time-range-user-delegates-default.scenario.json +1 -8
  141. package/eval/cases/tips-json-out-filtering.scenario.json +1 -3
  142. package/eval/cases/tips-large-json-pagination.scenario.json +1 -3
  143. package/eval/cases/uj-ad-campaign-validate-before-create-stub.scenario.json +2 -11
  144. package/eval/cases/uj-ad-outdoor-campgear-search-plan.scenario.json +1 -3
  145. package/eval/cases/uj-analytics-30d-pdf-campaign-device-geo.scenario.json +6 -18
  146. package/eval/cases/uj-analytics-compare-google-tiktok-last-month-roi.scenario.json +1 -8
  147. package/eval/cases/uj-analytics-google-weekly-trends-campaigns-keywords.scenario.json +2 -11
  148. package/eval/cases/uj-analytics-report-push-weekly-email.scenario.json +1 -3
  149. package/eval/cases/uj-finance-invoice-records-this-month.scenario.json +2 -11
  150. package/eval/cases/uj-life-newbie-siluzan-google-end-to-end.scenario.json +1 -4
  151. package/eval/cases/uj-ops-google-accounts-list-normal.scenario.json +2 -17
  152. package/eval/cases/uj-ops-google-yesterday-spend-conversions.scenario.json +2 -14
  153. package/eval/cases/uj-ops-pause-worst-adgroup-confirm.scenario.json +2 -6
  154. package/eval/cases/uj-ops-tiktok-leads-last-week.scenario.json +3 -17
  155. package/eval/cases/uj-patrol-cpc-spike-adgroups-over-15.scenario.json +1 -5
  156. package/eval/cases/uj-patrol-forewarning-create-daily-cap-3000.scenario.json +1 -3
  157. package/eval/cases/uj-patrol-forewarning-trigger-records.scenario.json +3 -17
  158. package/eval/cases/uj-patrol-google-balances-low.scenario.json +2 -11
  159. package/eval/cases/uj-roi-optimize-records-then-execute-cautiously.scenario.json +3 -14
  160. package/eval/cases/uj-roi-search-terms-add-negative-keywords.scenario.json +2 -14
  161. package/eval/stub-fixtures/facebook-analysis.json +24 -4
  162. package/eval/stub-fixtures/meta-overview.json +4 -1
  163. package/eval/stub-fixtures/pmax-asset-group-create-ok.json +12 -0
  164. package/eval/stub-fixtures/pmax-brand-assets-edit-ok.json +11 -0
  165. package/eval/stub-fixtures/pmax-brand-guidelines-enable-ok.json +11 -0
  166. package/eval/stub-fixtures/pmax-edit-ok.json +11 -0
  167. package/eval/stub-fixtures/pmax-get-bg-on.json +20 -0
  168. package/package.json +1 -1
  169. package/dist/skill/references/core/deliverable-preflight.md +0 -109
@@ -21,11 +21,11 @@
21
21
 
22
22
  根据媒体与用户意图,选择 `report-templates/` 下对应的 `*.md`:
23
23
 
24
- | 意图 | Google | Meta | TikTok | Bing |
25
- | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ----------------------- | ------------------------- | ----------------------- |
26
- | 周期分析 / 月报 / 周报 | `google-period-report.md` | `meta-period-report.md` | `tiktok-period-report.md` | `bing-period-report.md` |
27
- | OKKI 周报 / 固定话术发客户(Google) | `okki-weekly-google-client.md` | — | — | — |
28
- | **询盘分析** / 固定运营触发(Goog账户询盘分析 / 我给你询盘信息分析Google账号XXX效果) | `google-inquiry-analysis.md`(**严格 3 个月** + 用户上传询盘资料 + 8 Sheet xlsx;见 SKILL **P7**) | — | — | — |
24
+ | 意图 | Google | Meta | TikTok | Bing |
25
+ | ------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ---------------------------------- | ------------------------- | ----------------------- |
26
+ | 周期分析 / 月报 / 周报 | `google-period-report.md` | `meta-period-report.md` | `tiktok-period-report.md` | `bing-period-report.md` |
27
+ | OKKI 周报 / 固定话术发客户(Google) | `okki-weekly-google-client.md` | — | — | — |
28
+ | **询盘分析** / 固定运营触发(Goog账户询盘分析 / 我给你询盘信息分析Google账号XXX效果) | `google-inquiry-analysis.md`(**严格 3 个月** + 用户上传询盘资料 + 8 Sheet xlsx;见 SKILL **P7**) | — | — | — |
29
29
  | 深度诊断 / 健康检查 | `google-account-diagnosis-report.md` | `meta-account-diagnosis-report.md` | 同周期,注明能力受限 | 同周期 |
30
30
 
31
31
  无精确匹配时,用最接近媒体的同类 `*.md`,并在报告开头注明。
@@ -61,7 +61,7 @@
61
61
 
62
62
  ### 步骤 4b:交付前审阅最终产物(**必做**)
63
63
 
64
- - Read `references/core/deliverable-preflight.md` 自检表 A/B/C
64
+ - `references/core/agent-conventions.md` §七 自检表 A/B/C 审阅。
65
65
  - **Read 刚生成的报告文件**(HTML/Markdown 等),对照当次 `report-templates/*.md` 逐项确认章节与币种。
66
66
  - 未通过:**修改产物或补拉数据后重新生成**,再次 Read 审阅;不得在未审阅时交付。
67
67
 
@@ -76,11 +76,11 @@
76
76
 
77
77
  ### 步骤 5b:生成终稿(按媒体与格式)
78
78
 
79
- | 媒体 | 用户未指定格式 | 用户指定 Excel |
80
- | ---- | -------------- | -------------- |
81
- | **Meta/Facebook** | `facebook-analysis render` → **HTML**(必做) | Agent 脚本按 `meta-period-report-excel.md` 写 xlsx;**不**默认 `render` |
82
- | **Google** | 按 `report-template*.html` 写 HTML(默认 `report-template.html`) | **周期/定制 Sheet**:`google-period-report-excel.md`(P4,先 outline 后脚本);**OKKI**:P6;**询盘**:P7 |
83
- | **网站诊断** | `website-diagnosis render` → HTML | — |
79
+ | 媒体 | 用户未指定格式 | 用户指定 Excel |
80
+ | ----------------- | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
81
+ | **Meta/Facebook** | `facebook-analysis render` → **HTML**(必做) | Agent 脚本按 `meta-period-report-excel.md` 写 xlsx;**不**默认 `render` |
82
+ | **Google** | 按 `report-template*.html` 写 HTML(默认 `report-template.html`) | **周期/定制 Sheet**:`google-period-report-excel.md`(P4,先 outline 后脚本);**OKKI**:P6;**询盘**:P7 |
83
+ | **网站诊断** | `website-diagnosis render` → HTML | — |
84
84
 
85
85
  **禁止**:Meta 周期报告默认只交 Markdown/JSON;禁止 Agent 手写 Meta HTML。
86
86
 
@@ -103,8 +103,8 @@
103
103
 
104
104
  ## 未知报告名处理
105
105
 
106
- | 用户措辞 | 映射 |
107
- | ------- | ---- |
106
+ | 用户措辞 | 映射 |
107
+ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
108
108
  | 月报、周报、投放总结、效果回顾 | 周期分析 → 对应媒体 `*-period-report.md` |
109
109
  | **使用 okki 周报模板 / OKKI 周报 / okki 周报**(Google + 区间) | **固定话术 + 精简表 +(按需)Excel** → `okki-weekly-google-client.md`(见 SKILL **P6**);Excel **仅**由 Agent 脚本生成,**无** CLI 内置写表子命令 |
110
110
  | **Goog账户询盘分析 / Google 账户询盘分析 / 分析XXX Google账号的询盘效果 / 我给你询盘信息分析Google账号XXX效果**(或含「询盘 + 账户 + Google」三要素) | **询盘 + 账户合并分析 + 严格 3 个月 + 8 Sheet xlsx** → `google-inquiry-analysis.md`(见 SKILL **P7**);询盘资料用户上传任意载体,宿主 Agent 解析落盘 `inquiries.json`,xlsx **仅**由 Agent 脚本生成 |
@@ -1,4 +1,4 @@
1
- # Google 账户 — 诊断类报告(模板纲要)
1
+ # Google 账户 — 诊断类报告
2
2
 
3
3
  > 统计区间:`{startDate}` ~ `{endDate}`
4
4
  > 账户:`{mediaCustomerId}`(`{mediaCustomerName}`)
@@ -10,18 +10,18 @@
10
10
 
11
11
  ### 1. 数值格式(含「每日趋势」)
12
12
 
13
- | 类型 | 规则 | 示例 |
14
- | ---- | ---- | ---- |
15
- | 金额类(消耗、CPA、CPC、预算等) | **保留 2 位小数**,带货币 | `¥1,234.56 CNY` |
16
- | 展示、点击、转化次数 | **整数**,不写长小数 | `1,280` 而非 `1280.000000` |
17
- | 比率(CTR、CVR、环比%) | JSON 为 0~1 小数时,展示 `(v×100).toFixed(2)+'%'` | `0.0523` → `5.23%` |
18
- | **每日趋势 / 转化成本曲线** | 数据源:`daily-metrics` 或 `conversionCost.items`(`date`、`cost`、`cpa`、`conversions` 等) | 见下 |
13
+ | 类型 | 规则 | 示例 |
14
+ | -------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------- |
15
+ | 金额类(消耗、CPA、CPC、预算等) | **保留 2 位小数**,带货币 | `¥1,234.56 CNY` |
16
+ | 展示、点击、转化次数 | **整数**,不写长小数 | `1,280` 而非 `1280.000000` |
17
+ | 比率(CTR、CVR、环比%) | JSON 为 0~1 小数时,展示 `(v×100).toFixed(2)+'%'` | `0.0523` → `5.23%` |
18
+ | **每日趋势 / 转化成本曲线** | 数据源:`daily-metrics` 或 `conversionCost.items`(`date`、`cost`、`cpa`、`conversions` 等) | 见下 |
19
19
 
20
20
  **每日趋势表与图(§3.5 转化成本 / 按日趋势)**:
21
21
 
22
22
  - 表格中:`cost`、`cpa`、`averageCpc` 等金额 → **`Number(v).toFixed(2)`**(或千分位 + 2 位小数)。
23
23
  - 表格中:`conversions`、`clicks`、`impressions` → **整数**。
24
- - ECharts / Chart.js:Y 轴与 tooltip 对金额类 **最多 2 位小数**;禁止 `12.3456789` 类展示。
24
+ - ECharts:Y 轴与 tooltip 对金额类 **最多 2 位小数**;禁止 `12.3456789` 类展示。
25
25
  - 脚本示例(Node):`const money = (n) => Number(n).toFixed(2);` `const int = (n) => Math.round(Number(n));`
26
26
 
27
27
  ### 2. 每个模块必须有「分析」(禁止只贴表)
@@ -31,20 +31,20 @@
31
31
  1. **分析**(`### 分析` 或 `insight-title analysis-title`):≥2 条要点,写清**现象 + 依据字段**(如「CPA 由 85.2 升至 112.40,峰值出现在 3/15」),禁止空泛套话。
32
32
  2. **建议**(`### 建议` / `### 优化建议`):≥1 条可执行项,与上文分析对应。
33
33
 
34
- | 模块 | 数据对象 | 分析字段(优先写入报告) |
35
- | ---- | -------- | ------------------------ |
36
- | §02 诊断概览 | `diagnosisOverview` | 优势/不足每条已有描述,可补充 1 句总评 |
37
- | §03 核心指标 | `metrics` | `metrics.analysis`、`metrics.suggestions`;**无则 Agent 根据 JSON 撰写,禁止省略** |
38
- | §03.5 系列/地域/词/按日 | `campaigns`、`geographic`、`keywords`、`conversionCost` | 各对象的 `analysis`、`suggestions`;**按日趋势**另须结合曲线写 2 条趋势分析 |
39
- | §04 黄金账户 | `goldAccount` | 未达标项归纳 + 修复优先级 |
40
- | §05 预算竞争力 | `budgetCompetitiveness` | 每项 IS/份额与标准对比后的结论 |
41
- | §06 定向策略 | `fullGeographic`、`fullDevice`、`fullAudience`、`fullCustomAudience` | 各维 `analysis`、`suggestions`(无数据则写「本期无数据」+ 原因,**仍须有建议**) |
42
- | §07 着陆页 | `landingPageAnalysis` | 未达标项与行动优先级 |
43
- | §08 关键词/搜索词 | `fullKeywords`、`fullSearchTerms`、`broadKeywordsCount` | 各块 `analysis`、`suggestions` |
44
- | §09 出价策略 | `biddingStrategy` | 有问题系列逐条说明 |
45
- | §10 创意 | `adCreativeOptimization` | `analysis`、`suggestions` |
46
- | §11 新产品 | `newFeatures` | 未启用功能的建议 |
47
- | §12 总结 | `summary` | `keyIssues`、`optimizationRoadmap` |
34
+ | 模块 | 数据对象 | 分析字段(优先写入报告) |
35
+ | ----------------------- | -------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
36
+ | §02 诊断概览 | `diagnosisOverview` | 优势/不足每条已有描述,可补充 1 句总评 |
37
+ | §03 核心指标 | `metrics` | `metrics.analysis`、`metrics.suggestions`;**无则 Agent 根据 JSON 撰写,禁止省略** |
38
+ | §03.5 系列/地域/词/按日 | `campaigns`、`geographic`、`keywords`、`conversionCost` | 各对象的 `analysis`、`suggestions`;**按日趋势**另须结合曲线写 2 条趋势分析 |
39
+ | §04 黄金账户 | `goldAccount` | 未达标项归纳 + 修复优先级 |
40
+ | §05 预算竞争力 | `budgetCompetitiveness` | 每项 IS/份额与标准对比后的结论 |
41
+ | §06 定向策略 | `fullGeographic`、`fullDevice`、`fullAudience`、`fullCustomAudience` | 各维 `analysis`、`suggestions`(无数据则写「本期无数据」+ 原因,**仍须有建议**) |
42
+ | §07 着陆页 | `landingPageAnalysis` | 未达标项与行动优先级 |
43
+ | §08 关键词/搜索词 | `fullKeywords`、`fullSearchTerms`、`broadKeywordsCount` | 各块 `analysis`、`suggestions` |
44
+ | §09 出价策略 | `biddingStrategy` | 有问题系列逐条说明 |
45
+ | §10 创意 | `adCreativeOptimization` | `analysis`、`suggestions` |
46
+ | §11 新产品 | `newFeatures` | 未启用功能的建议 |
47
+ | §12 总结 | `summary` | `keyIssues`、`optimizationRoadmap` |
48
48
 
49
49
  > HTML 报告对齐 `GoogleAdsDiagnosisReport.html` 时:有 `*.analysis` / `*.suggestions` 数组的,**必须渲染**「分析」「建议」区块;禁止只渲染表格/图表。
50
50
 
@@ -110,11 +110,11 @@ CLI 业务 JSON 默认名为 `<section>-<accountId>.json`。**带 `--start`/`--e
110
110
 
111
111
  因此:
112
112
 
113
- | 做法 | 结果 |
114
- | --- | --- |
115
- | 三个月都 `--json-out ./snap-inquiry` | **旧版会覆盖**;新版 CLI 同目录可共存 3 个 `campaigns-*_YYYYMM01-YYYYMM31.json` |
113
+ | 做法 | 结果 |
114
+ | ------------------------------------------ | ---------------------------------------------------------------------------------- |
115
+ | 三个月都 `--json-out ./snap-inquiry` | **旧版会覆盖**;新版 CLI 同目录可共存 3 个 `campaigns-*_YYYYMM01-YYYYMM31.json` |
116
116
  | 每月 `--json-out ./snap-inquiry/<YYYY-MM>` | 每月目录内仍是 `campaigns-<id>_<月首>-<月末>.json`,**推荐**(脚本按目录读最直观) |
117
- | 步骤 2 整段 + 步骤 3 某月共用一个目录 | 文件名不同(整段 S~E vs 单月),**不会**互相覆盖 |
117
+ | 步骤 2 整段 + 步骤 3 某月共用一个目录 | 文件名不同(整段 S~E vs 单月),**不会**互相覆盖 |
118
118
 
119
119
  **脚本读数**(二选一,禁止写死无日期后缀的旧文件名):
120
120
 
@@ -204,16 +204,16 @@ Sheet 5 整段系列明细读:`./snap-inquiry/campaigns-<accountId>_<S>-<E>.js
204
204
 
205
205
  ### Sheet 顺序
206
206
 
207
- | 顺序 | Sheet 名 | 主源 |
208
- | ---: | ----------------------------- | ----------------------------------------------------------------------------- |
209
- | 1 | `会议讨论议题` | Agent 从 Sheet 2~8 提炼议题(不拉数);**含「会后补写区」由运营会后手填决策** |
210
- | 2 | `询盘明细---<S月>-<E月>月份` | `inquiries.json` |
211
- | 3 | `询盘分析-最近3个月` | `inquiries.json` + `campaign-geo-*.json` |
207
+ | 顺序 | Sheet 名 | 主源 |
208
+ | ---: | ----------------------------- | ----------------------------------------------------------------------------------------------- |
209
+ | 1 | `会议讨论议题` | Agent 从 Sheet 2~8 提炼议题(不拉数);**含「会后补写区」由运营会后手填决策** |
210
+ | 2 | `询盘明细---<S月>-<E月>月份` | `inquiries.json` |
211
+ | 3 | `询盘分析-最近3个月` | `inquiries.json` + `campaign-geo-*.json` |
212
212
  | 4 | `账号分析-最近3个月` | `./<YYYY-MM>/campaigns-*.json`(上区,系列加总)+ `./<YYYY-MM>/geographic-*.json`(下区)× 3 月 |
213
- | 5 | `广告系列消费明细` | `./snap-inquiry/campaigns-<accountId>_<S>-<E>.json`(整段 3 月) |
214
- | 6 | `国家消费明细<S月>-<E月>月份` | `./<YYYY-MM>/geographic-*.json` × 3 + `inquiries.json` 左 join |
215
- | 7 | `关键词` | `keywords-*.json` |
216
- | 8 | `搜索字词` | `search-terms-*.json` |
213
+ | 5 | `广告系列消费明细` | `./snap-inquiry/campaigns-<accountId>_<S>-<E>.json`(整段 3 月) |
214
+ | 6 | `国家消费明细<S月>-<E月>月份` | `./<YYYY-MM>/geographic-*.json` × 3 + `inquiries.json` 左 join |
215
+ | 7 | `关键词` | `keywords-*.json` |
216
+ | 8 | `搜索字词` | `search-terms-*.json` |
217
217
 
218
218
  ---
219
219
 
@@ -302,7 +302,7 @@ Sheet 5 整段系列明细读:`./snap-inquiry/campaigns-<accountId>_<S>-<E>.js
302
302
  | 3 | **客户来源集中度**(透视 2) | Top1 渠道占 `{p1}%`、Top3 合计 `{p3}%`;> 70% 高亮"渠道高度集中,风险敞口大" |
303
303
  | 4 | **长尾渠道**(透视 2) | 占比 < 5% 的渠道数量与合计占比;用于会议讨论"是否归并/精简" |
304
304
  | 5 | **产品 CPL 偏差**(透视 3,仅当产品→系列映射已配置) | 列出 CPL > 整体均值 × 1.5 的产品(拖累),CPL < 整体均值 × 0.5 的产品(明星) |
305
- | 6 | **大洲映射缺漏** | 透视 1 中"所属大洲 = 未知大洲"的国家清单(提示运营回流 `analytics/geo-continents.json`) |
305
+ | 6 | **大洲映射缺漏** | 透视 1 中"所属大洲 = 未知大洲"的国家清单(提示运营回流 `analytics/geo-continents.json`) |
306
306
 
307
307
  **条数**:上表 6 条为**完整模板**;若某条数据为空(如未配置产品映射、无大洲缺漏),可省略该行,但其余必出。
308
308
 
@@ -314,12 +314,12 @@ Sheet 5 整段系列明细读:`./snap-inquiry/campaigns-<accountId>_<S>-<E>.js
314
314
 
315
315
  #### 上区口径:系列维度加总(对齐 Google)
316
316
 
317
- | 项 | 约定 |
318
- | --- | --- |
319
- | 数据源 | `./snap-inquiry/<YYYY-MM>/campaigns-<accountId>_<月1号>-<月末>.json`(每月单独拉 `campaigns`;见「落盘防覆盖」) |
317
+ | 项 | 约定 |
318
+ | -------- | ----------------------------------------------------------------------------------------------------------------------------------- |
319
+ | 数据源 | `./snap-inquiry/<YYYY-MM>/campaigns-<accountId>_<月1号>-<月末>.json`(每月单独拉 `campaigns`;见「落盘防覆盖」) |
320
320
  | 聚合范围 | 该月内 **全部** `items[]` 行(`schemaVersion 3` 行统一在 `items`;含已暂停但在区间内有消耗的系列;**禁止**只取 Top N 或手工筛系列) |
321
- | 数据口径 | `google-analysis campaigns` 与账户月表一致;账户月表 = 各系列在当月起止日内指标之和 |
322
- | 禁止 | `daily-metrics` / `stats` / `overview` 填上区投放列(询盘列仍来自 `inquiries.json`) |
321
+ | 数据口径 | `google-analysis campaigns` 与账户月表一致;账户月表 = 各系列在当月起止日内指标之和 |
322
+ | 禁止 | `daily-metrics` / `stats` / `overview` 填上区投放列(询盘列仍来自 `inquiries.json`) |
323
323
 
324
324
  **脚本聚合(每月一份 `campaigns-*.json`)**:
325
325
 
@@ -343,10 +343,10 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
343
343
 
344
344
  **上区**(B→L,跳过 A 列保持与运营样表一致)3 行月汇总:
345
345
 
346
- | R | 内容 |
347
- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
348
- | R1 | (A 列空)`汇总` |
349
- | R2 | `时间` \| `点击次数` \| `展示次数` \| `点击率` \| `平均每次点击费用` \| `费用` \| `转化次数` \| `每次转化费用` \| `转化率` \| `询盘个数` \| `CPL` |
346
+ | R | 内容 |
347
+ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
348
+ | R1 | (A 列空)`汇总` |
349
+ | R2 | `时间` \| `点击次数` \| `展示次数` \| `点击率` \| `平均每次点击费用` \| `费用` \| `转化次数` \| `每次转化费用` \| `转化率` \| `询盘个数` \| `CPL` |
350
350
  | R3..R5 | 倒序写 3 个月(**E 月在上**,S 月在下):脚本读 `./<YYYY-MM>/campaigns-*.json` 按上表对 `items[]` 全量求和;`询盘个数` = `inquiries.json` 按月 count;`CPL` = `费用 / 询盘个数`(询盘 0 填 `—`) |
351
351
 
352
352
  **下区**(B→G)3 月 × **重点国家 / 非重点国** 切片(共 6 行):
@@ -377,12 +377,12 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
377
377
 
378
378
  **上区**:
379
379
 
380
- | R | 内容 |
381
- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
382
- | R1 | `广告系列表现明细 · 账户 <mediaCustomerId(带连字符)> · <数据开始月>-<数据结束月>` |
383
- | R2(A→M,13 列) | `系列名称` \| `系列ID` \| `策略` \| `开始日期` \| `消耗 (¥)` \| `展示` \| `点击` \| `CTR` \| `平均CPC` \| `转化` \| `CPA (¥)` \| `转化率` \| `消耗占比` |
380
+ | R | 内容 |
381
+ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
382
+ | R1 | `广告系列表现明细 · 账户 <mediaCustomerId(带连字符)> · <数据开始月>-<数据结束月>` |
383
+ | R2(A→M,13 列) | `系列名称` \| `系列ID` \| `策略` \| `开始日期` \| `消耗 (¥)` \| `展示` \| `点击` \| `CTR` \| `平均CPC` \| `转化` \| `CPA (¥)` \| `转化率` \| `消耗占比` |
384
384
  | R3… | 读 `campaigns-*.json` 的 `items[]`:`campaignName` / `campaignId` / `biddingStrategyTypeV2`(中文化:`MAXIMIZE_CONVERSIONS` → `Max转化`、`TARGET_SPEND` → `目标支出`、`MANUAL_CPC` → `手动CPC` 等;未命中保留原文)/ `startDate` / `spend` / `impressions` / `clicks` / `ctr` / `averageCpc` / `conversions` / `costPerConversion` / `conversionRate` / **`消耗占比` = `spend` / `sum(spend)`**(脚本算,写 0~1 小数) |
385
- | 末行 | `合计`:A 列写 `合计`;金额、展示、点击、转化 求和;CTR/CVR/CPA 按合计反推(**禁止**对各行比率求平均) |
385
+ | 末行 | `合计`:A 列写 `合计`;金额、展示、点击、转化 求和;CTR/CVR/CPA 按合计反推(**禁止**对各行比率求平均) |
386
386
 
387
387
  **下区**:
388
388
 
@@ -423,10 +423,10 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
423
423
 
424
424
  ### Sheet 7 `关键词`
425
425
 
426
- | R | 内容 |
427
- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
428
- | R1 | `关键词表现 · 账户 <id> · <分析月份>` |
429
- | R2(A→J,10 列) | `关键词` \| `匹配方式` \| `系列` \| `消耗 (¥)` \| `展示` \| `点击` \| `CTR` \| `平均CPC` \| `转化` \| `CPA (¥)` |
426
+ | R | 内容 |
427
+ | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
428
+ | R1 | `关键词表现 · 账户 <id> · <分析月份>` |
429
+ | R2(A→J,10 列) | `关键词` \| `匹配方式` \| `系列` \| `消耗 (¥)` \| `展示` \| `点击` \| `CTR` \| `平均CPC` \| `转化` \| `CPA (¥)` |
430
430
  | R3… | 读 `keywords-*.json` 的 `items[]`:`keyword` / `keywordMatchTypeZh`(中文匹配方式:`Broad` / `Phrase` / `Exact`)/ `campaignName` / `spend` / `impressions` / `clicks` / `ctr` / `averageCpc` / `conversions` / `costPerConversion` |
431
431
 
432
432
  按 `转化` 降序、`消耗` 降序双排序。
@@ -453,7 +453,7 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
453
453
  | R1 | `搜索字词--TOP100` |
454
454
  | R2 | `<S> - <E>`(如 `2026年4月1日 - 2026年4月30日` 等中文区间) |
455
455
  | R3(A→Q,17 列) | `搜索字词` \| `搜索字词匹配类型` \| `已添加/已排除` \| `广告系列` \| `广告组` \| `搜索广告关键字` \| `点击次数` \| `展示次数` \| `点击率` \| `货币代码` \| `平均每次点击费用` \| `费用` \| `绝对页首展示次数百分比` \| `页首展示次数百分比` \| `转化次数` \| `每次转化费用` \| `转化率` |
456
- | R4… | 读 `search-terms-*.json`(`data[]`):`searchTermText` / `matchTypeZh` / **`queryTargetingStatusZh`**(已添加/已排除/都没有;网关字段 `queryTargetingStatus`)/ `campaignName` / `adGroupName` / `keywordText` / 数值字段;`货币代码` 来自 `list-accounts` 同账户 `currencyCode` |
456
+ | R4… | 读 `search-terms-*.json`(`data[]`):`searchTermText` / `matchTypeZh` / **`queryTargetingStatusZh`**(已添加/已排除/都没有;网关字段 `queryTargetingStatus`)/ `campaignName` / `adGroupName` / `keywordText` / 数值字段;`货币代码` 来自 `list-accounts` 同账户 `currencyCode` |
457
457
 
458
458
  按 `费用` 降序前 100。
459
459
 
@@ -463,8 +463,8 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
463
463
 
464
464
  | # | 洞察类别 | 内容(每条引用本 Sheet 具体数字) |
465
465
  | --- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
466
- | 1 | **未添加但高转化搜索词**(候选加为关键词) | `queryTargetingStatusZh` = "都没有" 且 `转化次数` ≥ `{阈值}`,按转化降序前 10;阈值取本期搜索词转化中位数 |
467
- | 2 | **已添加但 0 转化高消耗搜索词**(候选加为否定关键词) | `queryTargetingStatusZh` = "已添加" 且 `转化次数` = 0 且 `费用` > `¥{阈值}`,按消耗降序前 10;阈值取本期搜索词消耗 P75 |
466
+ | 1 | **未添加但高转化搜索词**(候选加为关键词) | `queryTargetingStatusZh` = "都没有" 且 `转化次数` ≥ `{阈值}`,按转化降序前 10;阈值取本期搜索词转化中位数 |
467
+ | 2 | **已添加但 0 转化高消耗搜索词**(候选加为否定关键词) | `queryTargetingStatusZh` = "已添加" 且 `转化次数` = 0 且 `费用` > `¥{阈值}`,按消耗降序前 10;阈值取本期搜索词消耗 P75 |
468
468
  | 3 | **无关搜索词**(意图偏离候选) | 基于 `搜索字词` 文本扫描,标出与广告组 / 关键字 主题明显不符的词(如"工厂"系列出现"价格便宜""免费""教程"等),前 5;**仅展示**,**不**自动判定,由运营会上拍板 |
469
469
  | 4 | **匹配方式分布** | `Broad`:`{n_b}` 个、占消耗 `{p_b}%`;`Phrase`:`{n_p}` 个、占消耗 `{p_p}%`;`Exact`:`{n_e}` 个、占消耗 `{p_e}%` |
470
470
  | 5 | **页首展示低 / 高消耗搜索词**(仅当 `页首展示次数百分比` 字段可用) | 列 `费用` Top20 中 `页首展示次数百分比` < 50% 的搜索词,前 5;提示"花了钱但很少展示到页首,出价/质量得分待优化" |
@@ -521,15 +521,15 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
521
521
 
522
522
  ## 与其他报告模板的差异
523
523
 
524
- | 项 | `google-period-report.md` | `okki-weekly-google-client.md` | **本文(询盘分析)** |
525
- | ------------------------ | ------------------------- | ------------------------------ | --------------------------------------------- |
526
- | 时间窗 | 用户给定 | 用户给定(通常 1 周) | **严格 3 个自然月** |
527
- | 默认维度 | 8 维 + 追问 | 6 维固定 | **7 维固定(多 `geographic` 月度循环 3 次)** |
528
- | 是否需要询盘原始数据 | 否 | 否 | **是**(用户上传 / 反问索要) |
529
- | 输出形态 | 长文报告 | 客户话术 + 多 Sheet xlsx | **8 Sheet xlsx(不含客户话术)** |
530
- | Excel 由谁写 | Agent 脚本(可选) | Agent 脚本 | **Agent 脚本(必需)** |
531
- | 大洲映射 | 不涉及 | 不涉及 | **`references/analytics/geo-continents.json`** |
532
- | 重点国家 vs 非重点国切片 | 否 | 否 | **是**(Sheet 4 下半区,重点国可配置) |
524
+ | 项 | `google-period-report.md` | `okki-weekly-google-client.md` | **本文(询盘分析)** |
525
+ | ------------------------ | ------------------------- | ------------------------------ | ---------------------------------------------- |
526
+ | 时间窗 | 用户给定 | 用户给定(通常 1 周) | **严格 3 个自然月** |
527
+ | 默认维度 | 8 维 + 追问 | 6 维固定 | **7 维固定(多 `geographic` 月度循环 3 次)** |
528
+ | 是否需要询盘原始数据 | 否 | 否 | **是**(用户上传 / 反问索要) |
529
+ | 输出形态 | 长文报告 | 客户话术 + 多 Sheet xlsx | **8 Sheet xlsx(不含客户话术)** |
530
+ | Excel 由谁写 | Agent 脚本(可选) | Agent 脚本 | **Agent 脚本(必需)** |
531
+ | 大洲映射 | 不涉及 | 不涉及 | **`references/analytics/geo-continents.json`** |
532
+ | 重点国家 vs 非重点国切片 | 否 | 否 | **是**(Sheet 4 下半区,重点国可配置) |
533
533
 
534
534
  ---
535
535
 
@@ -10,15 +10,15 @@
10
10
 
11
11
  以下任一项未完成 → **禁止** `google-analysis` 之后的写 Excel 步骤:
12
12
 
13
- | # | 门禁 | 命令 / 动作 |
14
- | - | ---- | ----------- |
15
- | 1 | Read 当次必读 | `core/agent-conventions.md`、`core/tips.md`、`analytics/account-analytics.md`、`google-period-report.md`(本文)、`core/deliverable-preflight.md` |
16
- | 2 | **账户 ID 核验** | `siluzan-tso list-accounts -m Google -k <用户给的 mediaCustomerId> --json-out ./snap-p4` |
17
- | 3 | 确认 `currencyCode` | 来自步骤 2 落盘 JSON 的 `items[].ma.currencyCode`(或表格列「币种」) |
18
- | 4 | **拉数** | `google-analysis -a <已核验的 mediaCustomerId> --start … --end … --sections … --json-out <dir>` |
19
- | 5 | **先 outline 后脚本** | 对本次 `--sections` 涉及的**每一个**维度,Read 同目录 `<section>-<accountId>_*.outline.txt`(或 stdout 摘要里的 `outlineFile`) |
20
- | 6 | 写脚本 | 字段名**只**来自 outline 最后一行 TS 类型;业务 JSON **仅**在脚本内 `readFileSync` / `require` |
21
- | 7 | 交付前审阅 | 按 `deliverable-preflight.md` 自检;xlsx 无法 Read 时须贴自检表 + 脚本 stdout 摘要 |
13
+ | # | 门禁 | 命令 / 动作 |
14
+ | --- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
15
+ | 1 | Read 当次必读 | `core/agent-conventions.md`、`analytics/account-analytics.md`、`google-period-report.md`(本文) |
16
+ | 2 | **账户 ID 核验** | `siluzan-tso list-accounts -m Google -k <用户给的 mediaCustomerId> --json-out ./snap-p4` |
17
+ | 3 | 确认 `currencyCode` | 来自步骤 2 落盘 JSON 的 `items[].ma.currencyCode`(或表格列「币种」) |
18
+ | 4 | **拉数** | `google-analysis -a <已核验的 mediaCustomerId> --start … --end … --sections … --json-out <dir>` |
19
+ | 5 | **先 outline 后脚本** | 对本次 `--sections` 涉及的**每一个**维度,Read 同目录 `<section>-<accountId>_*.outline.txt`(或 stdout 摘要里的 `outlineFile`) |
20
+ | 6 | 写脚本 | 字段名**只**来自 outline 最后一行 TS 类型;业务 JSON **仅**在脚本内 `readFileSync` / `require` |
21
+ | 7 | 交付前审阅 | 按 `core/agent-conventions.md` §七 自检;xlsx 无法 Read 时须贴自检表 + 脚本 stdout 摘要 |
22
22
 
23
23
  ---
24
24
 
@@ -39,14 +39,14 @@
39
39
 
40
40
  用户已列出 Sheet 名时,**以用户清单为准**拉数(不必等追问);未列出的 P4 默认维度(系列/设备/优化建议等)**不强行追加**,除非用户要求。
41
41
 
42
- | 用户 Sheet(常见表述) | `google-analysis` section | 读法(schemaVersion 3) |
43
- | ---------------------- | ------------------------- | ------------------------ |
44
- | 账户概览 / 执行摘要 | `overview` | `record`(汇总维度) |
45
- | 每日报告 / 每日趋势 | `daily-metrics` | `items[]` |
46
- | 关键字 / 关键词报告 | `keywords` | `items[]` |
47
- | 搜索字词 / 搜索词报告 | `search-terms` | `items[]` |
48
- | 国家 / 地域 / 地区报告 | `geographic` | `items[]` |
49
- | 广告系列(若用户要) | `campaigns` | `items[]` |
42
+ | 用户 Sheet(常见表述) | `google-analysis` section | 读法(schemaVersion 3) |
43
+ | ---------------------- | ------------------------------ | -------------------------- |
44
+ | 账户概览 / 执行摘要 | `overview` | `record`(汇总维度) |
45
+ | 每日报告 / 每日趋势 | `daily-metrics` | `items[]` |
46
+ | 关键字 / 关键词报告 | `keywords` | `items[]` |
47
+ | 搜索字词 / 搜索词报告 | `search-terms` | `items[]` |
48
+ | 国家 / 地域 / 地区报告 | `geographic` | `items[]` |
49
+ | 广告系列(若用户要) | `campaigns` | `items[]` |
50
50
  | 设备(若用户要) | `devices` 或 `campaign-device` | `items[]`;OKKI 口径用后者 |
51
51
 
52
52
  **一次拉齐示例**(用户要 5 Sheet:概览+每日+关键词+搜索词+国家):
@@ -67,12 +67,12 @@ siluzan-tso google-analysis -a <id> --start <S> --end <E> --json-out ./snap-p4 \
67
67
 
68
68
  以下「直觉名」在 **schemaVersion 3** 落盘中**不存在**或易错——须以当次 `*.outline.txt` 为准:
69
69
 
70
- | 维度 | ❌ 禁止猜 | ✅ outline 真实字段 |
71
- | ---- | -------- | ------------------- |
72
- | `keywords` | `keywordText`、`status`、`matchType`(单独作展示列) | `keyword`、`userStatus`、`keywordMatchTypeZh`(或 `keywordMatchType`) |
73
- | `search-terms` | `query` | `searchTermText`;匹配类型用 `matchTypeZh`;状态用 `queryTargetingStatusZh` |
74
- | `geographic` | `geoName`、`countryCriterionIdName` | `countryOrRegion`、`countryNameZh`、`countryCode` |
75
- | 全维度 CTR/转化率 | 已是 0~100 的百分数 | `ctr` / `conversionRate` 为 **0~1 小数**;Excel 写入原值 + 单元格 `0.00%`,或文案 `(v*100).toFixed(2)+'%'` |
70
+ | 维度 | ❌ 禁止猜 | ✅ outline 真实字段 |
71
+ | ----------------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
72
+ | `keywords` | `keywordText`、`status`、`matchType`(单独作展示列) | `keyword`、`userStatus`、`keywordMatchTypeZh`(或 `keywordMatchType`) |
73
+ | `search-terms` | `query` | `searchTermText`;匹配类型用 `matchTypeZh`;状态用 `queryTargetingStatusZh` |
74
+ | `geographic` | `geoName`、`countryCriterionIdName` | `countryOrRegion`、`countryNameZh`、`countryCode` |
75
+ | 全维度 CTR/转化率 | 已是 0~100 的百分数 | `ctr` / `conversionRate` 为 **0~1 小数**;Excel 写入原值 + 单元格 `0.00%`,或文案 `(v*100).toFixed(2)+'%'` |
76
76
 
77
77
  **数据访问统一规则**(outline 头部注释已写明):
78
78
 
@@ -109,7 +109,7 @@ siluzan-tso google-analysis -a <id> --start <S> --end <E> --json-out ./snap-p4 \
109
109
 
110
110
  ## 交付前自检(P4 Excel 专用)
111
111
 
112
- 对照 `deliverable-preflight.md` 表 A/B/C,并额外确认:
112
+ 对照 `core/agent-conventions.md` §七 表 A/B/C,并额外确认:
113
113
 
114
114
  - [ ] `google-analysis` 的 `accountId`(stdout 摘要)= 用户要求的 `mediaCustomerId`
115
115
  - [ ] 每个 Sheet 列均能在对应 `*.outline.txt` 中找到字段源
@@ -11,16 +11,16 @@
11
11
 
12
12
  生成报告时,**默认包含**以下 8 个维度:
13
13
 
14
- | # | 维度 | CLI |
15
- | --- | ---------------------------------------------------- | ---------------------------------------------- |
16
- | 1 | 执行摘要(消耗/展示/点击/转化/CTR/CPC/CPA 本期概览) | `google-analysis --sections overview` |
17
- | 2 | 每日投放趋势(按日消耗/点击/转化曲线;金额/CPA **2 位小数**,转化/点击整数) | `google-analysis --sections daily-metrics` |
18
- | 3 | 月度汇总(全周期汇总数据) | `google-analysis --sections dimension-summary` |
19
- | 4 | 广告系列表现(预算/出价策略/各系列消耗与效果) | `google-analysis --sections campaigns` |
20
- | 5 | 设备分布(PC/移动/平板 消耗/点击/转化) | `google-analysis --sections devices` |
21
- | 6 | 地域分布(国家/地区 消耗占比) | `google-analysis --sections geographic` |
22
- | 7 | 关键词表现(词/消耗/CTR/CPC 排行) | `google-analysis --sections keywords`(这个命令获取的关键词数据会来自多个系列,不能合并去重)|
23
- | 8 | 优化建议(根据以上数据给出可执行改进建议) | 不额外拉数,基于已有数据撰写 |
14
+ | # | 维度 | CLI |
15
+ | --- | ---------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
16
+ | 1 | 执行摘要(消耗/展示/点击/转化/CTR/CPC/CPA 本期概览) | `google-analysis --sections overview` |
17
+ | 2 | 每日投放趋势(按日消耗/点击/转化曲线;金额/CPA **2 位小数**,转化/点击整数) | `google-analysis --sections daily-metrics` |
18
+ | 3 | 月度汇总(全周期汇总数据) | `google-analysis --sections dimension-summary` |
19
+ | 4 | 广告系列表现(预算/出价策略/各系列消耗与效果) | `google-analysis --sections campaigns` |
20
+ | 5 | 设备分布(PC/移动/平板 消耗/点击/转化) | `google-analysis --sections devices` |
21
+ | 6 | 地域分布(国家/地区 消耗占比) | `google-analysis --sections geographic` |
22
+ | 7 | 关键词表现(词/消耗/CTR/CPC 排行) | `google-analysis --sections keywords`(这个命令获取的关键词数据会来自多个系列,不能合并去重) |
23
+ | 8 | 优化建议(根据以上数据给出可执行改进建议) | 不额外拉数,基于已有数据撰写 |
24
24
 
25
25
  **在执行任何数据拉取之前**,先向用户展示以下可选维度,询问是否需要追加:
26
26
 
@@ -28,20 +28,20 @@
28
28
 
29
29
  ## 平台支持的全部可选维度
30
30
 
31
- | 维度 | CLI | 备注 |
32
- | ------------- | ----------------------------------------------- | ------------------------------------------------------------ |
33
- | 系列按小时 | `google-analysis --sections campaign-hour` | 行在 `items[]`,含 `date`/`hour`/消耗与效果 |
34
- | 受众分布 | `google-analysis --sections audience` | 可分 `SystemDefined` / `UserDefined` |
31
+ | 维度 | CLI | 备注 |
32
+ | ------------- | ----------------------------------------------- | ----------------------------------------------------------------- |
33
+ | 系列按小时 | `google-analysis --sections campaign-hour` | 行在 `items[]`,含 `date`/`hour`/消耗与效果 |
34
+ | 受众分布 | `google-analysis --sections audience` | 可分 `SystemDefined` / `UserDefined` |
35
35
  | 搜索词报告 | `google-analysis --sections search-terms` | 高消耗搜索词;`queryTargetingStatusZh` 列(已添加/已排除/都没有) |
36
- | 广告创意表现 | `google-analysis --sections ads` | 广告标题/类型/到达网址 |
37
- | 附加信息 | `google-analysis --sections extensions` | 附加链接/电话/宣传信息等状态 |
38
- | 图片/视频素材 | `google-analysis --sections materials` | 图片 + 视频合并视图 |
39
- | 账户落地页 | `google-analysis --sections final-urls` | 主投放域名/落地页(不传日期) |
40
- | 黄金账户评分 | `google-analysis --sections gold-account` | 健康度评分与各项达标状态 |
41
- | 广告质量指标 | `google-analysis --sections ads-index` | 质量得分汇总 |
42
- | 转化动作配置 | `google-analysis --sections conversion-actions` | 已配置的转化目标列表 |
43
- | 账户结构统计 | `google-analysis --sections resource-counts` | 系列/组/广告/词数量 |
44
- | 广告系列类型 | `google-analysis --sections campaign-types` | 系列类型分布(不传日期) |
36
+ | 广告创意表现 | `google-analysis --sections ads` | 广告标题/类型/到达网址 |
37
+ | 附加信息 | `google-analysis --sections extensions` | 附加链接/电话/宣传信息等状态 |
38
+ | 图片/视频素材 | `google-analysis --sections materials` | 图片 + 视频合并视图 |
39
+ | 账户落地页 | `google-analysis --sections final-urls` | 主投放域名/落地页(不传日期) |
40
+ | 黄金账户评分 | `google-analysis --sections gold-account` | 健康度评分与各项达标状态 |
41
+ | 广告质量指标 | `google-analysis --sections ads-index` | 质量得分汇总 |
42
+ | 转化动作配置 | `google-analysis --sections conversion-actions` | 已配置的转化目标列表 |
43
+ | 账户结构统计 | `google-analysis --sections resource-counts` | 系列/组/广告/词数量 |
44
+ | 广告系列类型 | `google-analysis --sections campaign-types` | 系列类型分布(不传日期) |
45
45
 
46
46
  ---
47
47
 
@@ -34,7 +34,7 @@ collect → Agent 按维度清单调研撰写 → market-report.json → render
34
34
 
35
35
  ### 呈现
36
36
 
37
- - [ ] Chart.js 图表 + Source 脚注
37
+ - [ ] ECharts 图表(`homeCDN/echarts.js`)+ Source 脚注
38
38
  - [ ] 已 `render` 成功(无「缺少 N 项必含内容」)
39
39
 
40
40
  **不通过** → 针对 CLI 列出的缺失维度补研扩写,勿交付简版。