siluzan-tso-cli 1.1.44-beta.3 → 1.1.44

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 (143) hide show
  1. package/README.md +1 -2
  2. package/dist/index.js +209 -163
  3. package/dist/skill/AGENTS.md +16 -16
  4. package/dist/skill/_meta.json +2 -2
  5. package/dist/skill/assets/campaign-create-template.md +46 -46
  6. package/dist/skill/assets/market-analysis-rules.md +4 -4
  7. package/dist/skill/assets/pmax-create-template.md +17 -17
  8. package/dist/skill/assets/pmax-lead-form-template.md +12 -12
  9. package/dist/skill/assets/scripts/assemble-campaign-from-plan.mjs +3 -1
  10. package/dist/skill/references/README.md +31 -31
  11. package/dist/skill/references/accounts/accounts-balance-stats.md +38 -36
  12. package/dist/skill/references/accounts/accounts-list.md +21 -21
  13. package/dist/skill/references/accounts/accounts-permissions.md +29 -29
  14. package/dist/skill/references/accounts/accounts.md +9 -9
  15. package/dist/skill/references/accounts/finance.md +1 -2
  16. package/dist/skill/references/accounts/open-account-by-media.md +58 -59
  17. package/dist/skill/references/accounts/open-account-google-ui.md +19 -19
  18. package/dist/skill/references/analytics/account-analytics.md +33 -33
  19. package/dist/skill/references/analytics/google-analysis-batch.md +0 -1
  20. package/dist/skill/references/analytics/keyword-planner-workflows.md +15 -13
  21. package/dist/skill/references/analytics/market-analysis-guide.md +4 -1
  22. package/dist/skill/references/analytics/rag.md +8 -8
  23. package/dist/skill/references/analytics/reporting.md +5 -5
  24. package/dist/skill/references/analytics/website-diagnosis-guide.md +6 -6
  25. package/dist/skill/references/core/agent-conventions.md +54 -54
  26. package/dist/skill/references/core/intent-routing.md +107 -108
  27. package/dist/skill/references/core/setup.md +6 -5
  28. package/dist/skill/references/core/tips.md +0 -1
  29. package/dist/skill/references/core/workflows.md +15 -16
  30. package/dist/skill/references/google-ads/google-ads-campaign-plan.md +55 -55
  31. package/dist/skill/references/google-ads/google-ads-read.md +30 -12
  32. package/dist/skill/references/google-ads/google-ads-write.md +35 -18
  33. package/dist/skill/references/google-ads/google-ads.md +13 -14
  34. package/dist/skill/references/google-ads/rules/README.md +17 -17
  35. package/dist/skill/references/google-ads/rules/google-ads-account-audit.md +6 -8
  36. package/dist/skill/references/google-ads/rules/google-ads-compliance.md +5 -7
  37. package/dist/skill/references/google-ads/rules/google-ads-keyword-strategy.md +9 -9
  38. package/dist/skill/references/google-ads/rules/google-ads-launch-plan-template.md +16 -15
  39. package/dist/skill/references/google-ads/rules/google-ads-plan-source-fidelity.md +27 -27
  40. package/dist/skill/references/google-ads/rules/google-ads-pmax-launch-plan-template.md +41 -41
  41. package/dist/skill/references/misc/tso-home.md +2 -2
  42. package/dist/skill/references/operations/guard.md +24 -24
  43. package/dist/skill/references/operations/hosted-automation-self-control.md +15 -16
  44. package/dist/skill/references/operations/hosted-automation-user-catalog.md +18 -18
  45. package/dist/skill/references/report-templates/README.md +1 -1
  46. package/dist/skill/references/report-templates/bing-period-report.md +16 -16
  47. package/dist/skill/references/report-templates/google-ads-diagnosis.md +26 -23
  48. package/dist/skill/references/report-templates/google-inquiry-analysis.md +1 -1
  49. package/dist/skill/references/report-templates/google-period-report.md +5 -5
  50. package/dist/skill/references/report-templates/meta-account-diagnosis-report.md +2 -2
  51. package/dist/skill/references/report-templates/okki-weekly-google-client.md +0 -1
  52. package/dist/skill/references/report-templates/tiktok-period-report.md +6 -6
  53. package/dist/skill/report-templates/GoogleAdsDiagnosisReport.html +42 -13
  54. package/dist/skill/report-templates/README.md +1 -1
  55. package/dist/skill/report-templates/bing-period-report.html +10 -7
  56. package/dist/skill/report-templates/bing-period-report.md +16 -16
  57. package/dist/skill/report-templates/google-ads-diagnosis.md +26 -23
  58. package/dist/skill/report-templates/google-inquiry-analysis.md +1 -1
  59. package/dist/skill/report-templates/google-period-report.md +5 -5
  60. package/dist/skill/report-templates/meta-account-diagnosis-report.md +2 -2
  61. package/dist/skill/report-templates/okki-weekly-google-client.md +0 -1
  62. package/dist/skill/report-templates/tiktok-period-report.md +6 -6
  63. package/dist/skill/scripts/install.ps1 +3 -3
  64. package/dist/skill/scripts/install.sh +3 -3
  65. package/eval/cases/accounts-entityid-vs-mediaccustomerid.scenario.json +2 -14
  66. package/eval/cases/accounts-mcc-bind-inquiry.scenario.json +1 -3
  67. package/eval/cases/accounts-single-balance-not-bulk.scenario.json +3 -14
  68. package/eval/cases/budget-display-not-raw-micros.scenario.json +1 -8
  69. package/eval/cases/clue-meta-leads-json.scenario.json +2 -14
  70. package/eval/cases/clue-tiktok-leads-json.scenario.json +2 -11
  71. package/eval/cases/destructive-account-delink-needs-confirm.scenario.json +3 -9
  72. package/eval/cases/destructive-forewarning-delete-needs-confirm.scenario.json +3 -9
  73. package/eval/cases/destructive-invoice-apply-needs-confirm.scenario.json +3 -9
  74. package/eval/cases/facebook-analysis-google-section-aliases.scenario.json +2 -11
  75. package/eval/cases/facebook-analysis-not-google-keywords.scenario.json +3 -10
  76. package/eval/cases/facebook-analysis-period-default.scenario.json +2 -14
  77. package/eval/cases/finance-invoice-info-list.scenario.json +3 -11
  78. package/eval/cases/forewarning-list-google.scenario.json +3 -14
  79. package/eval/cases/google-ads-no-structural-without-confirm.scenario.json +2 -6
  80. package/eval/cases/google-analysis-keywords-route.scenario.json +2 -14
  81. package/eval/cases/guard-budget-circuit-all-google.scenario.json +2 -12
  82. package/eval/cases/guard-zero-conv-empty-spend.scenario.json +2 -12
  83. package/eval/cases/human-p1-multiturn.scenario.json +1 -5
  84. package/eval/cases/ir-p1-vs-p8-account-vs-url.scenario.json +5 -17
  85. package/eval/cases/ir-p3-cpa-monitor-not-p7.scenario.json +2 -19
  86. package/eval/cases/ir-p3-zero-inquiry-not-p7.scenario.json +3 -16
  87. package/eval/cases/ir-p4-period-not-diagnosis.scenario.json +3 -16
  88. package/eval/cases/ir-p8-meets-google-ads-requirements-with-url.scenario.json +3 -28
  89. package/eval/cases/ir-p8-network-diagnosis-with-url.scenario.json +3 -25
  90. package/eval/cases/ir-p8-website-monitor-report-with-url.scenario.json +3 -28
  91. package/eval/cases/ir-p8-website-test-report-no-url.scenario.json +3 -14
  92. package/eval/cases/ir-p9-industry-not-p8.scenario.json +3 -19
  93. package/eval/cases/ir-vague-report-clarify.scenario.json +3 -14
  94. package/eval/cases/ir-w3-vs-p8-from-website.scenario.json +2 -8
  95. package/eval/cases/ir-w5-keyword-planner-url-core-terms.scenario.json +2 -22
  96. package/eval/cases/meta-single-balance-not-bulk.scenario.json +3 -17
  97. package/eval/cases/no-legacy-json-flag.scenario.json +2 -6
  98. package/eval/cases/open-account-google-noninteractive.scenario.json +1 -3
  99. package/eval/cases/open-account-tiktok-license-file.scenario.json +1 -3
  100. package/eval/cases/optimize-list-by-account.scenario.json +3 -11
  101. package/eval/cases/p1-single-account-profile.scenario.json +1 -11
  102. package/eval/cases/p2-balance-scan-bulk.scenario.json +2 -9
  103. package/eval/cases/p3-accounts-digest.scenario.json +1 -5
  104. package/eval/cases/p3-cpa-scan-max-cpa.scenario.json +2 -14
  105. package/eval/cases/p4-fb-meta-period-report.scenario.json +2 -12
  106. package/eval/cases/p4-period-report-window.scenario.json +1 -8
  107. package/eval/cases/pmax-asset-group-create-with-bg.scenario.json +2 -13
  108. package/eval/cases/pmax-brand-edit-routing.scenario.json +3 -16
  109. package/eval/cases/pmax-edit-not-campaign-edit.scenario.json +2 -12
  110. package/eval/cases/pmax-enable-brand-guidelines.scenario.json +2 -12
  111. package/eval/cases/pmax-no-assets-update-brand-fields.scenario.json +3 -14
  112. package/eval/cases/rag-before-keyword-expand.scenario.json +1 -11
  113. package/eval/cases/rag-list-then-query.scenario.json +2 -14
  114. package/eval/cases/report-list-google.scenario.json +2 -11
  115. package/eval/cases/report-push-list-google.scenario.json +2 -11
  116. package/eval/cases/setup-login-or-env.scenario.json +1 -3
  117. package/eval/cases/setup-siluzan-data-permission-env.scenario.json +1 -3
  118. package/eval/cases/tiktok-bc-bind-inquiry.scenario.json +2 -6
  119. package/eval/cases/time-range-user-delegates-default.scenario.json +1 -8
  120. package/eval/cases/tips-json-out-filtering.scenario.json +1 -3
  121. package/eval/cases/tips-large-json-pagination.scenario.json +1 -3
  122. package/eval/cases/uj-ad-campaign-validate-before-create-stub.scenario.json +2 -11
  123. package/eval/cases/uj-ad-outdoor-campgear-search-plan.scenario.json +1 -3
  124. package/eval/cases/uj-ad-website-search-plan-table-format.scenario.json +1 -3
  125. package/eval/cases/uj-analytics-30d-pdf-campaign-device-geo.scenario.json +6 -18
  126. package/eval/cases/uj-analytics-compare-google-tiktok-last-month-roi.scenario.json +1 -8
  127. package/eval/cases/uj-analytics-ecommerce-industry-report.scenario.json +2 -14
  128. package/eval/cases/uj-analytics-google-weekly-trends-campaigns-keywords.scenario.json +2 -11
  129. package/eval/cases/uj-analytics-report-push-weekly-email.scenario.json +1 -3
  130. package/eval/cases/uj-finance-invoice-records-this-month.scenario.json +2 -11
  131. package/eval/cases/uj-life-newbie-siluzan-google-end-to-end.scenario.json +1 -4
  132. package/eval/cases/uj-ops-google-accounts-list-normal.scenario.json +2 -17
  133. package/eval/cases/uj-ops-google-yesterday-spend-conversions.scenario.json +2 -14
  134. package/eval/cases/uj-ops-pause-worst-adgroup-confirm.scenario.json +2 -6
  135. package/eval/cases/uj-ops-tiktok-leads-last-week.scenario.json +3 -17
  136. package/eval/cases/uj-patrol-cpc-spike-adgroups-over-15.scenario.json +1 -5
  137. package/eval/cases/uj-patrol-forewarning-create-daily-cap-3000.scenario.json +1 -3
  138. package/eval/cases/uj-patrol-forewarning-trigger-records.scenario.json +3 -17
  139. package/eval/cases/uj-patrol-google-balances-low.scenario.json +2 -11
  140. package/eval/cases/uj-roi-optimize-records-then-execute-cautiously.scenario.json +3 -14
  141. package/eval/cases/uj-roi-search-terms-add-negative-keywords.scenario.json +2 -14
  142. package/eval/cases/yandex-stats-use-porg-mediaccustomerid.scenario.json +3 -21
  143. package/package.json +1 -1
@@ -23,14 +23,14 @@
23
23
  └─ 通过 → 确认摘要 → ad campaign-create
24
24
  ```
25
25
 
26
- | 步 | 谁做 | 动作 |
27
- | -- | ---- | ---- |
28
- | 1 | Agent + 脚本 | 读全 Sheet,按语义抽出预算/组/词+匹配类型/RSA/否词/国家等,写出 `campaign.json`(**先忠实落盘,勿静默改用户方案**) |
29
- | 2 | CLI | 国家列表 → `ad geo resolve -a <id> --from-file … --json-out …`,把返回的 `locations` / `targetedLocations` 写入 JSON(**禁止**编造 id) |
30
- | 3 | CLI | `ad campaign-validate --config-file ./campaign.json` |
31
- | 3b | Agent → 用户 | **若有不合规**:列出问题清单 → **询问**「您自己改方案/文件,还是我帮您改?」→ 按用户选择处理后再 validate(见下节) |
32
- | 4 | Agent → 用户 | 摘要确认:国家↔id、Exact/Phrase/Broad 条数(可抽样几条),**勿**贴整份 JSON |
33
- | 5 | CLI | 用户确认后 `ad campaign-create` → `batch get` / `batch diff` |
26
+ | 步 | 谁做 | 动作 |
27
+ | --- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
28
+ | 1 | Agent + 脚本 | 读全 Sheet,按语义抽出预算/组/词+匹配类型/RSA/否词/国家等,写出 `campaign.json`(**先忠实落盘,勿静默改用户方案**) |
29
+ | 2 | CLI | 国家列表 → `ad geo resolve -a <id> --from-file … --json-out …`,把返回的 `locations` / `targetedLocations` 写入 JSON(**禁止**编造 id) |
30
+ | 3 | CLI | `ad campaign-validate --config-file ./campaign.json` |
31
+ | 3b | Agent → 用户 | **若有不合规**:列出问题清单 → **询问**「您自己改方案/文件,还是我帮您改?」→ 按用户选择处理后再 validate(见下节) |
32
+ | 4 | Agent → 用户 | 摘要确认:国家↔id、Exact/Phrase/Broad 条数(可抽样几条),**勿**贴整份 JSON |
33
+ | 5 | CLI | 用户确认后 `ad campaign-create` → `batch get` / `batch diff` |
34
34
 
35
35
  ---
36
36
 
@@ -38,11 +38,11 @@
38
38
 
39
39
  **适用**:计划来源是用户提供的(Excel / 表格 / 粘贴方案 / 用户自写的 JSON),且出现下列任一情况:
40
40
 
41
- | 类型 | 示例 |
42
- | ---- | ---- |
41
+ | 类型 | 示例 |
42
+ | ----------------------------------- | -------------------------------------------------------------------------------------------- |
43
43
  | `campaign-validate` error / warning | 词面非法字符、嵌套引号、RSA 跨组标题重复、超长、匹配类型与符号不一致、locations 数量不一致等 |
44
- | 政策 / 合规明显风险 | 违禁宣称、落地页与文案严重不符等(见 `google-ads-compliance.md`) |
45
- | 转换时发现方案自相矛盾 | 同组同词多匹配类型冲突、必填块缺失等 |
44
+ | 政策 / 合规明显风险 | 违禁宣称、落地页与文案严重不符等(见 `google-ads-compliance.md`) |
45
+ | 转换时发现方案自相矛盾 | 同组同词多匹配类型冲突、必填块缺失等 |
46
46
 
47
47
  **禁止**:未询问就替用户改方案内容(改词面、改标题消重、截断、删词、改匹配类型等)然后直接 create。
48
48
  **禁止**:只丢一句「校验失败」就停住,不给选项。
@@ -72,12 +72,12 @@
72
72
 
73
73
  落盘建议:`./snap-campaign/plan-edits.json`(或同目录 Markdown)。每条至少:
74
74
 
75
- | 字段 | 说明 |
76
- | ---- | ---- |
77
- | `path` | JSON 路径或业务位置(如组名 + 关键词 / RSA 标题序号) |
78
- | `from` | 用户原方案中的值(改前) |
79
- | `to` | 实际写入并创建的值(改后) |
80
- | `reason` | 修改原因(对应哪条 validate/合规规则,一句话) |
75
+ | 字段 | 说明 |
76
+ | -------- | ----------------------------------------------------- |
77
+ | `path` | JSON 路径或业务位置(如组名 + 关键词 / RSA 标题序号) |
78
+ | `from` | 用户原方案中的值(改前) |
79
+ | `to` | 实际写入并创建的值(改后) |
80
+ | `reason` | 修改原因(对应哪条 validate/合规规则,一句话) |
81
81
 
82
82
  **禁止**:创建结束后凭印象写「改了一些标题」;必须以账本为准。
83
83
 
@@ -89,8 +89,8 @@
89
89
  **直接发送** `ad batch diff` 生成的 **`reportMarkdown` 全文**(Markdown;亦见 `reportMarkdownFile`)。报告已含账户/系列/`campaignId`、数量汇总、按组展开的关键词与 RSA 文案状态、仍未创建项。若有自动补建可在文末补一句。**禁止**只汇总条数或不发 Markdown。
90
90
 
91
91
  2. **修改了哪些(相对您的原方案)**——**仅代改时必出**
92
- 表格逐条:**位置 | 从(原值) | 改成(新值) | 原因**。
93
- - `from` / `to` 写清原文,勿只写「已优化」。
92
+ 表格逐条:**位置 | 从(原值) | 改成(新值) | 原因**。
93
+ - `from` / `to` 写清原文,勿只写「已优化」。
94
94
  - 无业务修改则写「相对您的原方案无业务内容修改」(仅 geo id 解析等不写进此表)。
95
95
 
96
96
  3. **未改动的说明(可选一句)**
@@ -113,10 +113,10 @@
113
113
 
114
114
  ## CLI 硬校验(兜底)
115
115
 
116
- | 条件 | `campaign-validate` |
117
- | ---- | ------------------- |
118
- | `locations` 非空且与 `targetedLocations` 数量不一致 | error |
119
- | location `id` 非数字 | error |
116
+ | 条件 | `campaign-validate` |
117
+ | --------------------------------------------------- | ------------------- |
118
+ | `locations` 非空且与 `targetedLocations` 数量不一致 | error |
119
+ | location `id` 非数字 | error |
120
120
 
121
121
  匹配类型是否与方案一致,靠 Agent 转换脚本 + 确认摘要;validate 负责契约与词面/`MatchTypeV2` 对齐。
122
122
 
@@ -124,6 +124,6 @@
124
124
 
125
125
  ## 相关文档
126
126
 
127
- - `google-ads-campaign-plan.md` — W3 总流程
128
- - `assets/campaign-create-template.json` — JSON 结构真相源
129
- - `google-ads.md` — `ad geo resolve` / `campaign-create` 命令
127
+ - `google-ads-campaign-plan.md` — W3 总流程
128
+ - `assets/campaign-create-template.json` — JSON 结构真相源
129
+ - `google-ads.md` — `ad geo resolve` / `campaign-create` 命令
@@ -23,26 +23,26 @@
23
23
 
24
24
  ## Markdown ↔ JSON 映射
25
25
 
26
- | 计划正文 | `pmax-create` JSON(camelCase) |
27
- | -------- | ------------------------------- |
28
- | 账户 | `account` |
29
- | 系列名称 | `name` |
30
- | 日预算(元) | `budget` |
31
- | 预算/资产组名 | `budgetName`、`assetGroupName` |
32
- | 落地页 | `finalUrls[]` |
33
- | 商家名 | `businessName` |
34
- | 短标题 ×15 | `headlines[]` |
35
- | 长标题 ×5 | `longHeadlines[]` |
36
- | 描述 ×5 | `descriptions[]` |
37
- | 地域 / 语言 | `targetedLocations[].id`、`targetedLanguages[].id` |
38
- | 出价 | `biddingStrategyTypeV2`、`targetCpa_BidingAmount`、`targetRoas` |
39
- | 图片 | `imagePaths.marketing` / `square` / `logo`(或对应 assetId) |
40
- | 视频 | `videoPath` 或 `youtubeUrlOrId` |
41
- | 宣传信息 | `campaignExtensions.callouts[]` |
42
- | 结构化摘要 | `campaignExtensions.structuredSnippets[]` |
43
- | 站内链接 | `campaignExtensions.sitelinks[]` |
44
- | 潜在客户表单 | `campaignExtensions.leadForm`(须单独成节) |
45
- | WhatsApp | `campaignExtensions.businessMessage` |
26
+ | 计划正文 | `pmax-create` JSON(camelCase) |
27
+ | ------------- | --------------------------------------------------------------- |
28
+ | 账户 | `account` |
29
+ | 系列名称 | `name` |
30
+ | 日预算(元) | `budget` |
31
+ | 预算/资产组名 | `budgetName`、`assetGroupName` |
32
+ | 落地页 | `finalUrls[]` |
33
+ | 商家名 | `businessName` |
34
+ | 短标题 ×15 | `headlines[]` |
35
+ | 长标题 ×5 | `longHeadlines[]` |
36
+ | 描述 ×5 | `descriptions[]` |
37
+ | 地域 / 语言 | `targetedLocations[].id`、`targetedLanguages[].id` |
38
+ | 出价 | `biddingStrategyTypeV2`、`targetCpa_BidingAmount`、`targetRoas` |
39
+ | 图片 | `imagePaths.marketing` / `square` / `logo`(或对应 assetId) |
40
+ | 视频 | `videoPath` 或 `youtubeUrlOrId` |
41
+ | 宣传信息 | `campaignExtensions.callouts[]` |
42
+ | 结构化摘要 | `campaignExtensions.structuredSnippets[]` |
43
+ | 站内链接 | `campaignExtensions.sitelinks[]` |
44
+ | 潜在客户表单 | `campaignExtensions.leadForm`(须单独成节) |
45
+ | WhatsApp | `campaignExtensions.businessMessage` |
46
46
 
47
47
  ---
48
48
 
@@ -59,25 +59,25 @@
59
59
 
60
60
  ## 一、方案总览
61
61
 
62
- | 项目 | 内容 |
63
- | ---- | ---- |
64
- | 系列名称 | {{name}} |
65
- | 日预算(元) | {{budget}} |
66
- | 出价策略 | {{biddingStrategyTypeV2}} |
62
+ | 项目 | 内容 |
63
+ | --------------- | ------------------------------------------- |
64
+ | 系列名称 | {{name}} |
65
+ | 日预算(元) | {{budget}} |
66
+ | 出价策略 | {{biddingStrategyTypeV2}} |
67
67
  | 目标 CPA / ROAS | {{targetCpa_BidingAmount}} / {{targetRoas}} |
68
- | 地域 ID | {{targetedLocations}} |
69
- | 语言 ID | {{targetedLanguages}} |
70
- | 落地页 | {{finalUrls}} |
71
- | 商家名 | {{businessName}} |
68
+ | 地域 ID | {{targetedLocations}} |
69
+ | 语言 ID | {{targetedLanguages}} |
70
+ | 落地页 | {{finalUrls}} |
71
+ | 商家名 | {{businessName}} |
72
72
 
73
73
  ## 二、资产组文案(全量)
74
74
 
75
- | 资产类型 | 文案 | 字符数 |
76
- | -------- | ---- | ------ |
77
- | Business Name | {{businessName}} | … |
78
- | Headline 1…15 | {{headlines[i]}} | … |
79
- | Long Headline 1…5 | {{longHeadlines[i]}} | … |
80
- | Description 1…5 | {{descriptions[i]}} | … |
75
+ | 资产类型 | 文案 | 字符数 |
76
+ | ----------------- | -------------------- | ------ |
77
+ | Business Name | {{businessName}} | … |
78
+ | Headline 1…15 | {{headlines[i]}} | … |
79
+ | Long Headline 1…5 | {{longHeadlines[i]}} | … |
80
+ | Description 1…5 | {{descriptions[i]}} | … |
81
81
 
82
82
  ## 三、附加资产(全量)
83
83
 
@@ -87,12 +87,12 @@
87
87
 
88
88
  ## 四、潜在客户表单
89
89
 
90
- | 项目 | 内容 |
91
- | ---- | ---- |
92
- | 标题 / 描述 | {{leadForm.headline}} / {{leadForm.description}} |
93
- | 收集字段 | {{leadForm.fields}} |
94
- | 隐私政策 URL | {{leadForm.privacyPolicyUrl}} |
95
- | 落地页 | {{leadForm.finalUrl}} |
90
+ | 项目 | 内容 |
91
+ | ------------ | ------------------------------------------------ |
92
+ | 标题 / 描述 | {{leadForm.headline}} / {{leadForm.description}} |
93
+ | 收集字段 | {{leadForm.fields}} |
94
+ | 隐私政策 URL | {{leadForm.privacyPolicyUrl}} |
95
+ | 落地页 | {{leadForm.finalUrl}} |
96
96
 
97
97
  (JSON 无 leadForm 且为 Lead Gen/B2B 时:须说明省略原因,或补回后再审查。)
98
98
 
@@ -6,7 +6,7 @@
6
6
  siluzan-tso config show # 取 webUrl
7
7
  ```
8
8
 
9
- 首页地址:`https://www-ci.siluzan.com/v3/foreign_trade/tso/home`
9
+ 首页地址:`https://www.siluzan.com/v3/foreign_trade/tso/home`
10
10
 
11
11
  ---
12
12
 
@@ -25,7 +25,7 @@ siluzan-tso config show # 取 webUrl
25
25
 
26
26
  ## 推荐话术
27
27
 
28
- 1. **「和首页一样的总览」** → 打开 `https://www-ci.siluzan.com/v3/foreign_trade/tso/home`。
28
+ 1. **「和首页一样的总览」** → 打开 `https://www.siluzan.com/v3/foreign_trade/tso/home`。
29
29
  2. **「某个 Google 账户昨天花了多少」** → `list-accounts -m Google` + `stats -m Google -a <id>`。
30
30
  3. **「有待充值账户」** → 说明聚合数据在首页;CLI 可 `list-accounts` + `balance` 逐户排查,或引导充值页。
31
31
 
@@ -15,11 +15,11 @@
15
15
 
16
16
  ## 何时用
17
17
 
18
- | 用户话术 | 命令 |
19
- | -------- | ---- |
20
- | 所有账户系列当日花费 ≥ 日预算 110% → 暂停 | `guard budget-circuit` |
21
- | 空耗熔断:花 ≥ 目标 CPA × N 且转化 0 → 暂停组/创意 | `guard zero-conv` |
22
- | 只查某一户 / 改预算后复核单系列 | 仍用 `ad campaigns -a … --start=--end` |
18
+ | 用户话术 | 命令 |
19
+ | -------------------------------------------------- | -------------------------------------- |
20
+ | 所有账户系列当日花费 ≥ 日预算 110% → 暂停 | `guard budget-circuit` |
21
+ | 空耗熔断:花 ≥ 目标 CPA × N 且转化 0 → 暂停组/创意 | `guard zero-conv` |
22
+ | 只查某一户 / 改预算后复核单系列 | 仍用 `ad campaigns -a … --start=--end` |
23
23
 
24
24
  **禁止**外层 for-loop:`list-accounts` × 多媒体再逐户 `ad campaigns` 做全户熔断。
25
25
 
@@ -37,15 +37,15 @@ siluzan-tso guard budget-circuit -m Google --date 2026-07-28 --ratio 1.1 \
37
37
  --apply --json-out ./snap-guard --commit "budget-circuit 2026-07-28"
38
38
  ```
39
39
 
40
- | 选项 | 说明 |
41
- | ---- | ---- |
42
- | `-m Google` | 必填;其它媒体 exit 1 |
43
- | `-a` | 子集 mediaCustomerId;省略则扫名下全部 Google 户 |
44
- | `--date` | 统计日;默认 Asia/Shanghai 今天;**强制当日 spend**(start=end) |
45
- | `--ratio` | 默认 `1.1`(建议 1.10–1.20) |
46
- | `--status` | 默认只查 `Enabled`;传 `*` 不过滤 |
47
- | `--apply` | 默认 dry-run;加此旗才 `Paused` |
48
- | `--json-out` | Agent 必带 |
40
+ | 选项 | 说明 |
41
+ | ------------ | ---------------------------------------------------------------- |
42
+ | `-m Google` | 必填;其它媒体 exit 1 |
43
+ | `-a` | 子集 mediaCustomerId;省略则扫名下全部 Google 户 |
44
+ | `--date` | 统计日;默认 Asia/Shanghai 今天;**强制当日 spend**(start=end) |
45
+ | `--ratio` | 默认 `1.1`(建议 1.10–1.20) |
46
+ | `--status` | 默认只查 `Enabled`;传 `*` 不过滤 |
47
+ | `--apply` | 默认 dry-run;加此旗才 `Paused` |
48
+ | `--json-out` | Agent 必带 |
49
49
 
50
50
  命中条件:`budget > 0` 且 `spend >= budget * ratio`(`budget`/`spend` 均为元;`spend` 为该日合计)。
51
51
 
@@ -63,12 +63,12 @@ siluzan-tso guard zero-conv -m Google --cpa-multiple 3 --apply \
63
63
  --json-out ./snap-guard --commit "zero-conv 空耗熔断"
64
64
  ```
65
65
 
66
- | 选项 | 说明 |
67
- | ---- | ---- |
68
- | `--cpa-multiple` | 默认 `3` |
69
- | `--level` | 默认 `adgroup`;`ad`/`both` 需 `--fallback-target-cpa`(创意无组级 CPA 字段) |
70
- | `--fallback-target-cpa` | 组无 `targetCpaAmountYuan` 时回退;缺失则进 `skipped[]` |
71
- | `--apply` / `--json-out` | 同 budget-circuit |
66
+ | 选项 | 说明 |
67
+ | ------------------------ | ----------------------------------------------------------------------------- |
68
+ | `--cpa-multiple` | 默认 `3` |
69
+ | `--level` | 默认 `adgroup`;`ad`/`both` 需 `--fallback-target-cpa`(创意无组级 CPA 字段) |
70
+ | `--fallback-target-cpa` | 组无 `targetCpaAmountYuan` 时回退;缺失则进 `skipped[]` |
71
+ | `--apply` / `--json-out` | 同 budget-circuit |
72
72
 
73
73
  命中:`conversions === 0` 且 `spend >= targetCpaYuan * N`。`summary.label` 固定为 **「空耗熔断」**(宿主发 P1 时用此文案;CLI 不代发通知)。
74
74
 
@@ -87,8 +87,8 @@ siluzan-tso guard zero-conv -m Google --cpa-multiple 3 --apply \
87
87
 
88
88
  ## 与旧编排对照
89
89
 
90
- | 旧(易失败) | 新 |
91
- | ------------ | -- |
90
+ | 旧(易失败) | 新 |
91
+ | -------------------------------------------------------- | -------------------------------- |
92
92
  | 6 媒体 list-accounts → 逐户 ad campaigns → 脚本比 budget | `guard budget-circuit -m Google` |
93
- | 逐户 ad groups + 手写阈值 | `guard zero-conv -m Google` |
94
- | `ad campaigns -m Google`(非法) | 单户用 `-a`;全户熔断用 `guard` |
93
+ | 逐户 ad groups + 手写阈值 | `guard zero-conv -m Google` |
94
+ | `ad campaigns -m Google`(非法) | 单户用 `-a`;全户熔断用 `guard` |
@@ -4,7 +4,6 @@
4
4
  > **编排责任**:定时、多条件 IF、滑动时间窗、通知(含 P1 /「空耗熔断」文案)由 **OpenClaw / WorkBuddy / Cron** 等宿主实现。
5
5
  > **本页责任**:说明如何用 `siluzan-tso` **拉检查项**、**执行最终写操作**、**写后复核**。
6
6
 
7
-
8
7
  ## Contents
9
8
 
10
9
  - 通用约定
@@ -36,15 +35,15 @@
36
35
 
37
36
  ### 检查项常用 JSON 字段(以当次 `siluzan-tso … --json-out ./snap` 为准)
38
37
 
39
- | 检查意图 | 可关注的 JSON 字段(键名以实际 stdout 为准) |
40
- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
41
- | **区间合计费用** | 系列/组/创意列表中的 **`spend`** = **`--start`~`--end` 整段合计**(**不是**「一天的消耗」;窗口 7 天则约为 7 日之和) |
42
- | **日预算** | **`ad campaigns --json-out ./snap`** 的 **`budget`**(CLI 已为元)= **每日预算上限**,与 `spend` **量纲不同** |
43
- | 日预算与「当日」费用比 | **仅当** `--start` 与 `--end` 为**同一统计日**时,才可用 `spend` 对比 `budget`;**禁止**用多日 `spend` 去除以或对比日预算(会把周/月合计误当成「一天花了这么多」) |
44
- | 转化次数 | **`conversions`**(窗口内合计) |
45
- | 实际 CPA | 宿主侧 **`spend / conversions`**(同窗口合计;`conversions` 为 0 时不做 CPA 判断) |
46
- | 目标 CPA(系列 / 组) | 系列列表 JSON 中的 **`targetCpa_BidingAmount`** 等;组列表 **`ad groups --json-out ./snap`** 中的 **`targetCpaAmount`**(写入口径见 `references/google-ads/google-ads-write.md`「广告组编辑」) |
47
- | 日均消耗(续航用) | 用 `balance-scan` 的 **`dailySpend`**(近 7 日合计/7),或自算 `spend / 活跃天数`;**禁止**把多日 `spend` 直接当「日消耗」 |
38
+ | 检查意图 | 可关注的 JSON 字段(键名以实际 stdout 为准) |
39
+ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
40
+ | **区间合计费用** | 系列/组/创意列表中的 **`spend`** = **`--start`~`--end` 整段合计**(**不是**「一天的消耗」;窗口 7 天则约为 7 日之和) |
41
+ | **日预算** | **`ad campaigns --json-out ./snap`** 的 **`budget`**(CLI 已为元)= **每日预算上限**,与 `spend` **量纲不同** |
42
+ | 日预算与「当日」费用比 | **仅当** `--start` 与 `--end` 为**同一统计日**时,才可用 `spend` 对比 `budget`;**禁止**用多日 `spend` 去除以或对比日预算(会把周/月合计误当成「一天花了这么多」) |
43
+ | 转化次数 | **`conversions`**(窗口内合计) |
44
+ | 实际 CPA | 宿主侧 **`spend / conversions`**(同窗口合计;`conversions` 为 0 时不做 CPA 判断) |
45
+ | 目标 CPA(系列 / 组) | 系列列表 JSON 中的 **`targetCpa_BidingAmount`** 等;组列表 **`ad groups --json-out ./snap`** 中的 **`targetCpaAmount`**(写入口径见 `references/google-ads/google-ads-write.md`「广告组编辑」) |
46
+ | 日均消耗(续航用) | 用 `balance-scan` 的 **`dailySpend`**(近 7 日合计/7),或自算 `spend / 活跃天数`;**禁止**把多日 `spend` 直接当「日消耗」 |
48
47
 
49
48
  > **硬约束(自动化 / 预警必读)**:凡带 `--start` / `--end` 的读命令,返回的 `spend` / `impressions` / `clicks` / `conversions` 均为**该闭区间合计**。要「一天的消耗」必须 `start=end=该日`,或显式 `合计 ÷ 天数`;要「日均」用 `balance-scan.dailySpend` / `overview.averageDailyCost`。
50
49
 
@@ -105,9 +104,9 @@ siluzan-tso ad campaign-status -a <mediaCustomerId> --id <campaignId> --status E
105
104
 
106
105
  ### CLI 能力摘要
107
106
 
108
- | 状态 | 说明 |
109
- | ---- | ---- |
110
- | 首选 | `guard budget-circuit -m Google`(全户扫描 + 可选 `--apply`) |
107
+ | 状态 | 说明 |
108
+ | ---- | ---------------------------------------------------------------------------------- |
109
+ | 首选 | `guard budget-circuit -m Google`(全户扫描 + 可选 `--apply`) |
111
110
  | 单户 | 读:`ad campaigns --json-out`;写:`ad campaign-status`;复核:再次 `ad campaigns` |
112
111
 
113
112
  ---
@@ -229,9 +228,9 @@ siluzan-tso ad groups -a <mediaCustomerId> --start <当日> --end <当日> --jso
229
228
 
230
229
  ### CLI 能力摘要
231
230
 
232
- | 状态 | 说明 |
233
- | ---- | ---- |
234
- | 首选 | `guard zero-conv -m Google` |
231
+ | 状态 | 说明 |
232
+ | ---- | --------------------------------------------------------------------------- |
233
+ | 首选 | `guard zero-conv -m Google` |
235
234
  | 单户 | 读:`ad groups` / `ad list`;写:`adgroup-status` / `ad-status`;通知:宿主 |
236
235
 
237
236
  ---
@@ -14,11 +14,11 @@
14
14
 
15
15
  ## 预算与 ROI 自控
16
16
 
17
- | 场景 | 自动动作(摘要) | 首选 CLI / SOP(只读一份) |
18
- | ---- | ---------------- | -------------------------- |
19
- | 单日预算熔断 | 当日花费相对日预算达阈值 → 暂停系列 | **首选** `references/operations/guard.md`(`guard budget-circuit`);细节/单户排障见 `hosted-automation-self-control.md` |
20
- | CPA 飙升自动降价 | 窗内 CPA 超目标 → 下调出价上限 | `references/operations/hosted-automation-optimize-weak-downbid.md` |
21
- | 连续空耗自动暂停 | 当日花费达阈值且 0 转化 → 暂停组/创意;宿主发 **告警P1**「空耗熔断」 | **首选** `references/operations/guard.md`(`guard zero-conv`);细节见 `hosted-automation-self-control.md` |
17
+ | 场景 | 自动动作(摘要) | 首选 CLI / SOP(只读一份) |
18
+ | ---------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
19
+ | 单日预算熔断 | 当日花费相对日预算达阈值 → 暂停系列 | **首选** `references/operations/guard.md`(`guard budget-circuit`);细节/单户排障见 `hosted-automation-self-control.md` |
20
+ | CPA 飙升自动降价 | 窗内 CPA 超目标 → 下调出价上限 | `references/operations/hosted-automation-optimize-weak-downbid.md` |
21
+ | 连续空耗自动暂停 | 当日花费达阈值且 0 转化 → 暂停组/创意;宿主发 **告警P1**「空耗熔断」 | **首选** `references/operations/guard.md`(`guard zero-conv`);细节见 `hosted-automation-self-control.md` |
22
22
 
23
23
  > **消耗 ≠ 日消耗**:`spend` 为 `--start`~`--end` 合计。`guard` 命令已强制 `--date` 单日;手写 `ad campaigns` 时须 `start=end=当日`。续航日均用 `balance-scan.dailySpend`。
24
24
 
@@ -26,21 +26,21 @@
26
26
 
27
27
  字段键名以当次 `--json-out` 为准,细则只读:`references/operations/hosted-automation-monitoring-json.md`。
28
28
 
29
- | 场景 | CLI 入口(摘要) |
30
- | ---- | ---------------- |
31
- | 账户封禁 | `list-accounts` / `balance`(见 `references/accounts/accounts.md` 索引) |
32
- | 落地页死链 | `google-analysis --sections final-urls` 或 `ad list` |
33
- | 素材拒审 | `ad list` / `google-analysis --sections ads` |
34
- | 花费异动 | `google-analysis --sections campaign-hour` |
35
- | 余额枯竭 | `balance-scan`(P2) |
29
+ | 场景 | CLI 入口(摘要) |
30
+ | ---------- | ------------------------------------------------------------------------ |
31
+ | 账户封禁 | `list-accounts` / `balance`(见 `references/accounts/accounts.md` 索引) |
32
+ | 落地页死链 | `google-analysis --sections final-urls` 或 `ad list` |
33
+ | 素材拒审 | `ad list` / `google-analysis --sections ads` |
34
+ | 花费异动 | `google-analysis --sections campaign-hour` |
35
+ | 余额枯竭 | `balance-scan`(P2) |
36
36
 
37
37
  ## 自动优化
38
38
 
39
39
  索引(可选):`references/operations/hosted-automation-optimize-index.md`。执行时直接读 SOP:
40
40
 
41
- | 场景 | SOP |
42
- | ---- | --- |
43
- | 差广告降价/关停 | `references/operations/hosted-automation-optimize-weak-downbid.md` |
44
- | 高转化提价扩量 | `references/operations/hosted-automation-optimize-scale.md` |
45
- | A/B 决出胜者 | `references/operations/hosted-automation-optimize-ab-winner.md` |
46
- | 异动根因排查 | `references/analytics/account-analytics.md` + 对应 `report-templates/*.md` |
41
+ | 场景 | SOP |
42
+ | --------------- | -------------------------------------------------------------------------- |
43
+ | 差广告降价/关停 | `references/operations/hosted-automation-optimize-weak-downbid.md` |
44
+ | 高转化提价扩量 | `references/operations/hosted-automation-optimize-scale.md` |
45
+ | A/B 决出胜者 | `references/operations/hosted-automation-optimize-ab-winner.md` |
46
+ | 异动根因排查 | `references/analytics/account-analytics.md` + 对应 `report-templates/*.md` |
@@ -21,7 +21,7 @@
21
21
  | -------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
22
22
  | `google-period-report.md` | **Google 周期分析报告(默认)**:终稿=HTML,四步流程 → `google-analysis render` 出 HTML |
23
23
  | `google-period-report-excel.md` | **仅用户要 Excel 时**(P4 定制 Sheet):先 `*.outline.txt` 后脚本写 xlsx;账户须 `-k` 核验,无 CLI excel 子命令 |
24
- | `stats-daily-excel.md` | **P4-DAILY**:账户级按日 Excel(`stats --by-day`) |
24
+ | `stats-daily-excel.md` | **P4-DAILY**:账户级按日 Excel(`stats --by-day`) |
25
25
  | `google-account-diagnosis-report.md` | Google 账户深度诊断(健康度/转化/结构等) |
26
26
  | `google-ads-diagnosis.md` | Google **广告诊断**完整纲要(HTML 区块、**每日趋势 2 位小数**、**每模块必填分析/建议**) |
27
27
  | `meta-period-report.md` / `.html` | **Meta(Facebook)周期报告(默认)**:四步流程 → `facebook-analysis render` 出 HTML,见 P4-FB |
@@ -8,17 +8,17 @@
8
8
 
9
9
  数据块(Bing 实际支持的 9 类业务维度 + 总览):总览、设备、地域、受众(年龄/性别)、系列、广告组、广告、关键词、搜索字词。
10
10
 
11
- | CLI `--sections` | 落盘形状(生产实测) | 报告 `tables.*` / KPI |
12
- | --- | --- | --- |
13
- | `overview` | 对象:`currentPeriod` / `previousPeriod` / `balance` / `averageDailyCost` … | → `meta` + `kpis`(环比、余额、日均) |
14
- | `device` | `{ devices: Row[] }` | → `tables.devices[]` |
15
- | `geographic` | `{ countries: Row[] }` | → `tables.geographic[]` |
16
- | `audience-merged`(或 `age-audience`/`gender-audience`) | `{ data: { ageAudience.audience[], genderAudience.audience[] } }` | → `tables.audienceAge[]` / `audienceGender[]` |
17
- | `campaigns` | **根节点数组** | → `tables.campaigns[]`;**本期 KPI 优先由此累加** |
18
- | `ad-groups` | **根节点数组** | → `tables.adGroups[]`(含 `qualityScore`) |
19
- | `ads` | **根节点数组** | → `tables.ads[]` |
20
- | `keywords` | **根节点数组**(默认 limit=100) | → `tables.keywords[]` |
21
- | `search-terms` | **根节点数组**(默认 limit=100) | → `tables.searchTerms[]` |
11
+ | CLI `--sections` | 落盘形状(生产实测) | 报告 `tables.*` / KPI |
12
+ | -------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------------------------------- |
13
+ | `overview` | 对象:`currentPeriod` / `previousPeriod` / `balance` / `averageDailyCost` … | → `meta` + `kpis`(环比、余额、日均) |
14
+ | `device` | `{ devices: Row[] }` | → `tables.devices[]` |
15
+ | `geographic` | `{ countries: Row[] }` | → `tables.geographic[]` |
16
+ | `audience-merged`(或 `age-audience`/`gender-audience`) | `{ data: { ageAudience.audience[], genderAudience.audience[] } }` | → `tables.audienceAge[]` / `audienceGender[]` |
17
+ | `campaigns` | **根节点数组** | → `tables.campaigns[]`;**本期 KPI 优先由此累加** |
18
+ | `ad-groups` | **根节点数组** | → `tables.adGroups[]`(含 `qualityScore`) |
19
+ | `ads` | **根节点数组** | → `tables.ads[]` |
20
+ | `keywords` | **根节点数组**(默认 limit=100) | → `tables.keywords[]` |
21
+ | `search-terms` | **根节点数组**(默认 limit=100) | → `tables.searchTerms[]` |
22
22
 
23
23
  > Bing **没有** Google 的 `daily-metrics` / `dimension-summary`;报告模板也不渲染这两章。
24
24
 
@@ -26,12 +26,12 @@
26
26
 
27
27
  ## 标准四步流程(默认 · 交付 HTML)
28
28
 
29
- | 步骤 | 执行者 | 动作 |
30
- | ---------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
31
- | **1. 拉数** | Agent 调 CLI | `bing-analysis -a <id> --start <s> --end <e> --json-out ./snap-bing`(见下方「日期规则」,全 11 维或 `--sections` 指定子集) |
32
- | **2. 分析** | Agent | 用 **node/python 脚本**读落盘 JSON(勿用 Read 打开业务 `*.json`),把网关原始字段映射为下方 `tables.*` 契约,完成聚合与洞察 |
29
+ | 步骤 | 执行者 | 动作 |
30
+ | ---------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
31
+ | **1. 拉数** | Agent 调 CLI | `bing-analysis -a <id> --start <s> --end <e> --json-out ./snap-bing`(见下方「日期规则」,全 11 维或 `--sections` 指定子集) |
32
+ | **2. 分析** | Agent | 用 **node/python 脚本**读落盘 JSON(勿用 Read 打开业务 `*.json`),把网关原始字段映射为下方 `tables.*` 契约,完成聚合与洞察 |
33
33
  | **3. 写 JSON** | Agent | 撰写 `bing-period-report.json`:仅 `meta.accountId` + `narrative`(9 个分析小节)为必填;`kpis`/`tables` 可省略由 `--snapshot-dir` 自动合并 |
34
- | **4. 渲染 HTML** | CLI | `bing-analysis render` — **校验 narrative 9 个分析小节必含字段**,缺项报错不生成 HTML;**禁止** Agent 手写/拼接 HTML |
34
+ | **4. 渲染 HTML** | CLI | `bing-analysis render` — **校验 narrative 9 个分析小节必含字段**,缺项报错不生成 HTML;**禁止** Agent 手写/拼接 HTML |
35
35
 
36
36
  ```bash
37
37
  # 步骤 1
@@ -1,4 +1,5 @@
1
1
  # Go
2
+
2
3
  ## Contents
3
4
 
4
5
  - CLI 工作流(collect → Agent → render)
@@ -19,6 +20,7 @@
19
20
  - 附录:与 CLI 拉数对照(可选)
20
21
 
21
22
  ---
23
+
22
24
  ogle Ads 账户诊断报告
23
25
 
24
26
  > 账户诊断报告纲要:配合 `google-analysis` CLI 拉数后填充。
@@ -49,17 +51,17 @@ siluzan-tso google-ads-diagnosis render \
49
51
  --out ./snap-p1/google-ads-diagnosis-report.html
50
52
  ```
51
53
 
52
- | 子命令 | 说明 |
53
- | -------- | -------------------------------------------------------------------- |
54
+ | 子命令 | 说明 |
55
+ | --------- | -------------------------------------------------------------------------------------------------------------------------- |
54
56
  | `collect` | 拉 google-analysis + 对比周期 + 着陆页(先 TSO Lighthouse,失败则 CLI 简易诊断);输出 `google-ads-diagnosis-collect.json` |
55
- | `render` | 读取 Agent 产出的 `google-ads-diagnosis.json`,注入 `GoogleAdsDiagnosisReport.html` |
57
+ | `render` | 读取 Agent 产出的 `google-ads-diagnosis.json`,注入 `GoogleAdsDiagnosisReport.html` |
56
58
 
57
59
  **collect 选项**:
58
60
 
59
- | 选项 | 说明 |
60
- | ---- | ---- |
61
+ | 选项 | 说明 |
62
+ | ---------------------------- | ------------------------------------------------------------------- |
61
63
  | `--no-fetch-previous-period` | 不拉上一周期 campaigns/geographic/keywords 对比数据(环比列将为空) |
62
- | `--skip-landing-page` | 不拉取着陆页(跳过 TSO Lighthouse + CLI 简易诊断) |
64
+ | `--skip-landing-page` | 不拉取着陆页(跳过 TSO Lighthouse + CLI 简易诊断) |
63
65
 
64
66
  **collect 行为约束**:
65
67
 
@@ -349,19 +351,19 @@ siluzan-tso google-ads-diagnosis render \
349
351
 
350
352
  ### 竞争力表
351
353
 
352
- | 指标 (Metric) | 报告值 (Report Value) | 健康标准 (Health Benchmark) | 优化策略 (Optimization Strategy) |
353
- | ------------- | --------------------- | --------------------------- | -------------------------------- |
354
+ | 指标 (Metric) | 报告值 (Report Value) | 健康标准 (Health Benchmark) | 优化策略 (Optimization Strategy) |
355
+ | ------------- | --------------------- | --------------------------- | --------------------------------------- |
354
356
  | | | | **按行填写 `strategy`,禁止整列同一句** |
355
357
 
356
358
  示例差异化方向(须代入本账户数字,勿照抄):
357
359
 
358
- | metric | 策略侧重点 |
359
- | ------ | ---------- |
360
- | `budgetUtilizationRate` | 日预算是否打满、是否需调日预算/排期 |
361
- | `searchImpressionShare` | 份额偏低时优先查预算丢失 vs 排名丢失占比 |
362
- | `searchBudgetLostImpressionShare` | 预算丢失高 → 加预算/拆核心系列预算 |
363
- | `searchRankLostImpressionShare` | 排名丢失高 → 出价/质量分/落地页,而非只加预算 |
364
- | 核心系列 IS 目标 | 对照公式与目标差距,列可执行的系列级动作 |
360
+ | metric | 策略侧重点 |
361
+ | --------------------------------- | --------------------------------------------- |
362
+ | `budgetUtilizationRate` | 日预算是否打满、是否需调日预算/排期 |
363
+ | `searchImpressionShare` | 份额偏低时优先查预算丢失 vs 排名丢失占比 |
364
+ | `searchBudgetLostImpressionShare` | 预算丢失高 → 加预算/拆核心系列预算 |
365
+ | `searchRankLostImpressionShare` | 排名丢失高 → 出价/质量分/落地页,而非只加预算 |
366
+ | 核心系列 IS 目标 | 对照公式与目标差距,列可执行的系列级动作 |
365
367
 
366
368
  ---
367
369
 
@@ -465,8 +467,8 @@ siluzan-tso google-ads-diagnosis render \
465
467
 
466
468
  ### 创意表
467
469
 
468
- | 广告 | Headlines | Descriptions | 优化建议 |
469
- | ---- | --------- | ------------ | -------- |
470
+ | 广告 | Headlines | Descriptions | 优化建议 |
471
+ | ----------------- | ------------------------------------ | ------------------------------------------ | --------------------------------------------------------- |
470
472
  | `items[].adTitle` | `headlinesCount` / `headlinesStatus` | `descriptionsCount` / `descriptionsStatus` | **`items[].suggestion`**(逐条,HTML 表格「优化建议」列) |
471
473
 
472
474
  - **模块级**分析 / 建议:`adCreativeOptimization.analysis`、`adCreativeOptimization.suggestions`(区块下方段落)
@@ -480,6 +482,7 @@ siluzan-tso google-ads-diagnosis render \
480
482
  **数据**:`newFeatures.items`(collect 来自 campaign-types;过滤 `strategy === "AiMax"` 的行)
481
483
 
482
484
  **items 行字段**:
485
+
483
486
  - collect 事实(勿改):`strategy`(如 `PerformanceMax`)、`strategyName`(如 `效果最大化`)、`accountStatus`(**boolean**,`true`=已启用)
484
487
  - Agent 只填:`optimizerRecommendation`
485
488
  - **禁止**用 `feature` 替代 `strategyName`(render 模板会兜底读 `feature`,但 collect 合并校验会告警)
@@ -517,12 +520,12 @@ siluzan-tso google-ads-diagnosis render \
517
520
  }
518
521
  ```
519
522
 
520
- | 字段 | 说明 |
521
- | ---- | ---- |
522
- | `priority` | P0/P1/P2… 或「P0(立即)」等可读标签 |
523
- | `focusArea` | 优化重点(表格「优化重点」列) |
524
- | `actionItems` | 字符串数组,关键行动列表 |
525
- | `expectedOutcome` | 预期效果 |
523
+ | 字段 | 说明 |
524
+ | ----------------- | ------------------------------------ |
525
+ | `priority` | P0/P1/P2… 或「P0(立即)」等可读标签 |
526
+ | `focusArea` | 优化重点(表格「优化重点」列) |
527
+ | `actionItems` | 字符串数组,关键行动列表 |
528
+ | `expectedOutcome` | 预期效果 |
526
529
 
527
530
  > 若 Agent 暂写 `"第 1 周:…"` 字符串,render 会尽力拆成 focusArea + actionItems,但**仍须补全 `expectedOutcome` 对象格式**以获得完整表格。
528
531
 
@@ -1,12 +1,12 @@
1
1
  # Google 账户询盘分析(运营固定触发模板)
2
2
 
3
3
  > **触发话术**(等价即可,命中即走本模板)
4
+ >
4
5
  > - `Goog账户询盘分析` / `Google 账户询盘分析`
5
6
  > - `分析XXX Google账号的询盘效果`
6
7
  > - `我给你询盘信息分析Google账号XXX效果`(附询盘资料 + 账户 ID)
7
8
  > - 含「询盘 + 账户 + Google」三要素的近义表述
8
9
 
9
-
10
10
  ## Contents
11
11
 
12
12
  - 用户两种入场流程