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
@@ -1,175 +1,205 @@
1
- # Agent 执行规范
1
+ # Agent 执行规范(唯一规则真相源)
2
2
 
3
- > 本文件定义 siluzan-tso Skill 下 **AI 助手必须遵守** 的加载纪律、执行流程与硬规范。
4
- > CLI 参数细节见各功能 reference;标准任务步骤见 `references/core/playbooks.md`。
3
+ > 本文件是 siluzan-tso Skill 下 AI 助手的**全部通用纪律**:加载纪律、数据处理协议、时间/币种、批量约束、交付自检。
4
+ > 其他文档(SKILL.md、playbooks、workflows、各域 reference)**不再重复**这些规则,只在需要处单行指向本文件。
5
+ > CLI 参数细节见各域 reference;脚本示例见 `references/core/tips.md`(食谱,按需查)。
5
6
 
6
7
  ---
7
8
 
8
- ## 文档加载纪律
9
+ ## 一、文档加载纪律
9
10
 
10
11
  本 Skill 采用 **SKILL 路由 + references 按需加载**;**「按需」= 每个用户任务都要按需,不是整段对话只读一次**。
11
12
 
12
- ### 何时必须 Read references
13
+ | 触发 | 动作 |
14
+ | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
15
+ | **新的用户任务 / 同对话内换话题**(新需求、新账户、新媒体、新报告类型;例:刚查余额 → 改问建系列) | 按 `SKILL.md` 路由表 **重新 Read** 该任务的「必读文档」与工作流卡片后再执行 CLI;**禁止**沿用上一任务的参数记忆——对话会被压缩,「读过」≠ 当前上下文仍含正确字段名与 flags |
16
+ | **工作流编号不同**(P1→P3、P4→P5) | 即使刚做过 P1,仍须 Read 新卡片及其必读文档 |
17
+ | **专用 report-templates**(OKKI / 询盘分析 / 周期报告纲要) | Read `references/report-templates/<名>.md` **全文**(与 `report-templates/<名>.md` 同源);勿只凭 SKILL 摘要 |
18
+ | **上下文被压缩 / 记不清字段或命令** | 重读 `SKILL.md` 路由表 + 当次任务 references |
19
+ | **CLI 返回 400 / 字段对不上** | 回到对应 reference 核对参数名与口径,勿猜 |
20
+ | **JSON 契约模板**(建搜索系列、PMax 等) | **必须先 Read** `assets/*-template.json`(结构真相源),再 Read 同目录 `.md`(字段说明与踩坑);**禁止**只读 `.md` 凭印象拼 JSON |
13
21
 
14
- | 触发 | 动作 |
15
- | ---- | ---- |
16
- | **新的用户任务**(新需求、新账户、新媒体、新报告类型) | 用 `SKILL.md`「任务 → 文档」表确定路径,**Read 全部必读项**后再计划/执行 CLI |
17
- | **同一对话内换话题**(例:刚查余额 → 改问建系列 / 预警 / 发票) | **重新 Read** 新话题对应 references,**禁止**沿用上一任务的参数记忆 |
18
- | **Playbook 编号不同**(P1→P3、P4→P5) | 即使刚做过 P1,执行 P3 仍须 Read `accounts/accounts.md`(`accounts-digest`)等 P3 专属节 |
19
- | **专用 report-templates**(OKKI / 询盘分析) | Read 对应 `report-templates/*.md` **全文**,勿只凭 SKILL 摘要 |
20
- | **上下文被压缩 / 记不清字段或命令** | 重读 `SKILL.md` 路由表 + 当次任务 references |
21
- | **CLI 返回 400 / 字段对不上** | 回到对应 reference 核对参数名与口径,勿猜 |
22
+ 所有 ID、金额、命令 flags 以**当次 Read 的文档 + 当次 CLI 输出**为准;数值只来自本次 stdout 或脚本读盘结果,不引用对话记忆里的示例值。
22
23
 
23
- ### 应当遵循(及原因)
24
+ ### Skill 内 Read 路径约定
24
25
 
25
- | 应当怎么做 | 原因 |
26
- | -------- | ---- |
27
- | **每个新任务先 Read 当次必读 references,再执行 CLI** — 即使用户刚查过余额、对话里刚读过 `accounts/accounts.md` `google-ads/google-ads.md`,换话题(建系列、预警、报告等)仍按 `SKILL.md` 路由表 **重新 Read** 对应文档后再 `siluzan-tso …` | 不同任务的命令、参数口径、Playbook 编号各不相同;对话会被压缩,「读过」≠ 当前上下文仍含正确字段名与 flags |
28
- | **所有 ID、金额、命令 flags 以当次 Read 文档 + 当次 CLI 输出为准** — 计划与执行前对照 reference 确认 `-a`/`-m`/日期等参数;数值只来自本次 stdout 或脚本读盘结果 | Skill 文档与 CLI 会迭代,对话记忆里的示例 ID、占位金额易串户、串币种或触发 400 |
29
- | **数据转换严格按 outline → 脚本读 JSON 顺序** Read `references/core/tips.md` § 处理顺序;解析 stdout 得 `outlineFile` → Read outline → 编写并执行脚本读 `writtenFiles` | outline 是字段类型的唯一轻量索引;跳步会导致列名猜错(如 `keywordText` vs `keyword`)或把 MB 级 JSON 误读进对话 |
30
- | **大 JSON 只经脚本读盘,对话里只 Read 小文件** — Read 仅 `references/`、`*.outline.txt`、stdout 一行摘要;业务 `*.json`(`campaigns-*.json`、`list-accounts-*.json` 等)由 Node/Python `readFileSync` / `JSON.parse` 处理 | `--json-out` 落盘常为 MB 级,Read 整文件会撑爆上下文且无法可靠汇总;脚本可精确取所需字段并与落盘 JSON 复核 |
31
- | **报告 / Excel 走本 Skill 拉数 + outline + 脚本全流程** — 按 Playbook 与 `report-templates/*.md` 拉数、落盘、脚本转换后交付;不另加载宿主 xlsx / Excel 第三方 Skill 代劳 | 第三方 Skill 不知 TSO 字段口径、账户核验与 `deliverable-preflight`;易跳过 `-k` 核验或编造未落盘数据 |
32
- | **用户给出的 `mediaCustomerId` 必须 `-k` 核验,全链路同一 ID** — `list-accounts -m <媒体> -k <用户ID>`;无结果则告知用户并停止;拉数、脚本、报告文件名均用该 ID(以 stdout `accountId` 为准) | 列表第一页可能不含目标户;自行换 ID 会导致报告错户,属严重交付事故 |
33
- | 交付前自检产物,是否有为空的部分,是否有数据明显异常的部分,是否有字段使用错误的部分 | 如果不自检的话,出来的产物很可能无法使用 |
26
+ | 类型 | 正确路径(相对 Skill 根目录) | 说明 |
27
+ | ---- | ----------------------------- | ---- |
28
+ | 命令 reference | `references/<域>/<文件>.md` | `references/analytics/account-analytics.md` |
29
+ | 报告纲要 | `references/report-templates/<文件>.md` | `references/report-templates/google-period-report.md` |
30
+ | JSON 契约模板(结构) | `assets/*-template.json`、`assets/*.schema.json` | **先 Read**;如 `assets/campaign-create-template.json` |
31
+ | 契约说明 / 规则 | `assets/<文件>.md` | 与上表 JSON **成对** Read;如 `assets/campaign-create-template.md` |
32
+ | HTML 终稿模板 | `report-templates/*.html` | CLI `render` 使用,Agent 通常只 Read 对应 `.md` 纲要 |
34
33
 
34
+ 路由表若写 `analytics/…` 或 `report-templates/…` 而无 `references/` 前缀,**Read 时仍须加上 `references/`**(`assets/`、`report-templates/*.html` 除外)。
35
35
 
36
- ## 执行流程
36
+ ---
37
+
38
+ ## 二、执行流程
37
39
 
38
40
  **计划 → 确认 → 执行 → 验证 → 推测下一步**:
39
41
 
40
- 1. **按加载纪律 Read 当次任务 references** → 用 `-h` 确认命令 → 向用户输出操作计划
41
- 2. 涉及写入/修改/删除的操作必须与用户确认
42
- 3. 按计划执行,说明每步意图
43
- 4. 用成对的读命令复核写入结果;异步任务每 5s 轮询直到完成
44
- 5. **交付前**(报告/Excel/含金额话术):Read `references/core/deliverable-preflight.md`,**Read 最终产物文件**并按自检表 A/B/C 逐项确认后再发给用户
45
- 6. 全部完成后预测用户下一步操作
42
+ 1. 按上表 Read 当次任务 references → 用 `-h` 确认命令 → 向用户输出操作计划。
43
+ 2. 涉及写入/修改/删除的操作必须与用户确认;多数破坏性操作还需 `--commit`。
44
+ 3. 按计划执行,说明每步意图。
45
+ 4. 用成对的读命令复核写入结果;异步任务每 5s 轮询直到完成。
46
+ 5. 报告/Excel/含金额话术交付前,按本文件 **§七 交付前自检** 审阅最终产物。
47
+ 6. 全部完成后预测用户下一步操作。
46
48
 
47
49
  ### 执行模式速查
48
50
 
49
- | 模式 | 说明 |
50
- | ---- | ---- |
51
- | **数据交付类** | `google-analysis` / `stats` / `ad campaigns` 等带 `--json-out`:必须脚本读盘转换,见下文「数据转换硬规范」 |
51
+ | 模式 | 说明 |
52
+ | ----------------- | ------------------------------------------------------------------------------------------------ |
53
+ | **数据交付类** | `google-analysis` / `stats` / `ad campaigns` 等带 `--json-out`:必须按 §三 协议脚本读盘转换 |
52
54
  | **客户/产品背景** | 拓词、方案、报告背景段:先 `rag list` + `rag query`,再衔接 `keyword` / `ad` / `google-analysis` |
53
- | **仅调接口** | 优化记录、线索表单、预警、财务命令:无需输出转换 |
55
+ | **仅调接口** | 优化记录、线索表单、预警、财务命令:无需输出转换 |
54
56
 
55
57
  ### Subagent(可选)
56
58
 
57
- 宿主支持 Task / 子会话时:
59
+ 宿主支持 Task / 子会话时:**P5 / P6 / P7** 或预计 CLI 日志很长 → Read `references/core/subagent-orchestration.md`,按决策矩阵选择主会话或委派。子会话不替代 §一 加载纪律;handoff 只传路径与命令块。写入/修改/删除、`--commit`、对用户确认与最终交付始终留在**主 Agent**。
60
+
61
+ ---
62
+
63
+ ## 三、数据处理协议(最高优先级)
64
+
65
+ 所有业务数据以 CLI `--json-out`(或用户提供的同构 JSON)落盘为唯一真相源。每条 `--json-out` 命令成功后**必须按顺序**处理,不要跳步:
66
+
67
+ 1. **解析 stdout 一行摘要 JSON**:拿到 `outlineFile`、`writtenFiles[0]`、`manifestFile`、`agentHint`。摘要里**没有** `total` / `items` 等业务字段——**禁止**对 stdout 写翻页循环,业务数据只在 `writtenFiles[0]` 落盘文件里;**不要**硬编码 `<section>.json` 文件名。
68
+ 2. **【outline 门禁·先读完再动手】Read 当次产出的*每一个* `*.outline.txt`**(`*.outline.txt`,通常 <2KB,schema-only)确认字段树后**才可**写脚本。类型字面量是**最后一个不以 `//` 开头的行**(提取写法 `outlineRaw.trimEnd().split('\n').filter(l => !l.startsWith('//')).pop()`,勿用 `lines[lines.length-1]`)。outline 是结构描述,**不是数据**,勿当 JSON `require`、勿贴给用户。
69
+ - **多 section / 多账户必须逐一读全**:`google-analysis` 拉 N 个 `--sections`、`google-analysis-batch` 产出 N 维 × M 账户时,**每个维度至少 Read 一次它自己的 outline**(同结构的多账户文件读其一即可代表该维度);用**一批并行 Read** 把当次所有维度 outline 一次读完,再开始写脚本。
70
+ - **唯一字段真相源 = 当次 outline**:SKILL.md / playbooks / report-templates / 本文件里出现的字段名都是**说明性示例**,**不是**字段真相源;凡 outline 未确认的字段路径,**禁止**凭模板印象、凭上一任务记忆、凭"通用命名"直接写进脚本。
71
+ - **禁止边写边猜、用空值/全 0 当反馈**:不得"先按猜测写一版脚本跑出来,发现字段空了再回头读 outline 重写"。outline 没读全就开写 = 违规。
72
+ 3. **编写并执行脚本**(`node -e` / `.mjs` / `python`)`readFileSync` 读 `writtenFiles[0]` 做筛选、聚合、计算,字段路径**逐一对照第 2 步确认的 outline**;**永远不得**用宿主 Read / `cat` / `type` / `Get-Content` 打开落盘业务 `*.json`(常为 MB 级,会撑爆上下文)。
73
+ 4. **交付物用代码写出**(HTML / Excel / PDF / Markdown 等);向用户展示的数字须来自**脚本 stdout**,不在对话里手填、改数、心算汇总。**交付前**若某章/表为空或全 0,先怀疑"字段路径猜错(漏读该维度 outline)",回第 2 步核对,**不要**直接当作"接口无数据"交付。
74
+
75
+ | 允许 Read 的文件 | 必须用代码读取的文件 |
76
+ | -------------------------------------------------------------------------------- | ------------------------------------------ |
77
+ | `references/**/*.md`、`assets/**/*.md`(Skill 文档) | 所有 `--json-out` 落盘业务 `*.json`(常为 MB 级) |
78
+ | `assets/*-template.json`、`assets/*.schema.json`、`analytics/geo-continents.json` 等**小体积契约/映射** | manifest 中的路径索引(脚本 `JSON.parse`) |
79
+ | 当次 `*.outline.txt` | 用户提供的同构大 JSON |
80
+ | stdout 一行摘要、你刚写出的最终产物文件 | — |
81
+
82
+ **字面量纪律**:字段路径以 `outlineFile` + 当次 manifest 为准,禁止跳过 \*.outline.txt 猜字段名。常见踩坑(均因没逐维读 outline):
83
+
84
+ | 凭印象写错的 | 当次 outline 的真实字段 |
85
+ | ----------------------- | ---------------------------------------------- |
86
+ | `ov.spend` | `cp.spend`(消耗在 `record.currentPeriod` 下) |
87
+ | `g.countryName` | `g.countryOrRegion` |
88
+ | `s.searchTerm` | `s.searchTermText` |
89
+ | `ctRecord.typesSummary` | 记录本身即 `{ PerformanceMax: {…} }` 结构 |
90
+ | `ga.items[]` | `ga` 的键直接是布尔字段,无 `items` 数组 |
91
+ | `keywordText` | `keyword` |
92
+ | `query` | `searchTermText` |
93
+
94
+ 国家名、ID、金额、词表等**业务值**禁止写成源码字面量;映射表/模板契约运行时加载(`analytics/geo-continents.json`、`campaign-create-template.json`)。允许的字面量:输出目录、Sheet/列标题、技术格式、用户当轮明确给出的配置(建议落盘 `config.json` 再脚本读)。
95
+
96
+ **报告/Excel 全流程走本 Skill**:按工作流卡片与 `report-templates/*.md` 拉数、落盘、脚本转换;**禁止**加载宿主第三方 xlsx/Excel Skill 代劳(不知 TSO 字段口径与账户核验)。
58
97
 
59
- 1. **P5 / P6 / P7** 或预计 CLI 日志很长 → Read `references/core/subagent-orchestration.md`,按决策矩阵选择主会话或委派。
60
- 2. 子会话**不替代**本节「文档加载纪律」:主 Agent 仍须 Read 当次必读 references;handoff 只传路径与命令块,不传对话记忆。
61
- 3. 写入/修改/删除、`--commit`、对用户确认与最终交付 → **主 Agent**。
98
+ **中间结果一律落盘**:跨步骤数据不靠对话记忆;Windows 避免管道传 JSON,优先 `--json-out` + `node -e` 读文件。
62
99
 
63
100
  ---
64
101
 
65
- ## 硬规范
102
+ ## 四、硬规范
66
103
 
67
104
  - **账户状态 ≠ 系列状态**:`stats` / `balance` / `list-accounts` 的 `status` 只表示账户是否可用;系列状态必须来自 `ad campaigns`。
68
- - **数据时效性**:涉及「今天/当天/今日消耗」「实时消耗排行」前,必读 `references/analytics/account-analytics.md` 顶部「数据时效性」表。TikTok / Yandex / BingV2 / Kwai 仍是 `accountsoverview` 同步昨天数据,**不能查今天**。
69
- - **先查账户再操作**:`list-accounts -m [mediaType] -k [mediaCustomerId]`;涉及金额前必读 `references/accounts/currency.md`,从 `ma.currencyCode` 确定 CNY/USD,**禁止**默认 Google=美金。
70
- - **不猜测账户 ID**:`entityId` ≠ `mediaCustomerId`,两者均来自 `list-accounts`。
105
+ - **数据时效性**:涉及「今天/当天/今日消耗」「实时消耗排行」前,必读 `references/analytics/account-analytics.md` 顶部「数据时效性」表。TikTok / Yandex / BingV2 / Kwai `accountsoverview` 同步昨天数据,**不能查今天**。
106
+ - **先查账户再操作**:`list-accounts -m [mediaType] -k [mediaCustomerId]`;用户给出的 `mediaCustomerId` 必须 `-k` 核验,无结果则告知用户并停止,**禁止**翻页 grep 自行换 ID(会导致报告错户);拉数、脚本、报告文件名全链路用同一 ID(以 stdout `accountId` 为准)。
107
+ - **不猜测账户 ID**:`entityId` ≠ `mediaCustomerId`,两者均来自 `list-accounts`;**禁止**把 `entityId` 传给 `stats -a` / `balance -a`。
71
108
  - **媒体类型区分大小写**:`Google`、`TikTok`、`MetaAd`、`BingV2`、`Kwai`。
72
109
  - **CLI 输出忠实**:数值与 ID 须与本次落盘 JSON / stdout 一致,不编造示例 ID;`data` 为空时只说「当前返回无记录」并附 JSON 路径。
73
110
  - **破坏性操作必须确认 + `--commit`**:账户解绑/关闭/取消分享、BC/MCC 解绑、删除预警/报告/广告/关键词、发票申请、广告发布等。
74
111
  - **不确定时读文档**:先读对应 references 或用 `-h`,不要猜参数。
75
- - **Google 新建搜索系列**:流程仅在 `references/google-ads/google-ads-campaign-plan.md` 维护。
76
- - **开户首次响应**:用户第一次提出开户(或对话内首次进入开户话题)时,**必须先**按 `references/accounts/open-account-by-media.md` §「首次响应硬规范」输出**完整必填清单**(未指明媒体则列全平台六表),再收集资料;**禁止**未列清单就执行 `open-account` 或只零散追问个别字段。
112
+ - **跨账号 / 企业管家手机号**:用户消息中出现**中国大陆 11 位手机号**(常见语境:「企业管家」「管家账户」「账号 xxx」)且意图是查**该手机号名下**的账户数据时,**必须先**执行 `siluzan-tso account me --check-phone <手机号> --json-out ./snap-me`。**禁止**在未校验通过前用当前凭据拉他户数据。
113
+ - `matched: true`(或 CLI exit 0)→ 按原工作流继续(如 P3 `accounts-digest` TOP 消耗)。
114
+ - `matched: false`(CLI exit 1)→ **停止拉数**,告知用户并询问是否切换登录,话术示例:
115
+ > 暂时不支持查询其他丝路赞账号下的数据。您指定的是 **{phone}**,当前登录的是 **{currentPhone}**。
116
+ > 如需查询该账号,请使用该手机号重新登录:`send-login-code --phone {phone}` → `login --phone {phone} --code <验证码>`。
117
+ > 需要我帮您切换登录吗?
118
+ - 用户**未指定手机号** → 不校验,按当前凭据正常执行。
119
+ - 当前凭据未返回手机号且用户指定了手机号 → 视同未校验通过,引导重新用手机号登录。
120
+ - **Google 新建搜索系列**:流程在 `references/google-ads/google-ads-campaign-plan.md`;填 JSON 前**必须先 Read** `assets/campaign-create-template.json`,再 Read `assets/campaign-create-template.md`。**禁止**只读 `.md` 手写 JSON。
121
+ - **开户首次响应**:对话内首次进入开户话题时,**必须先**按 `references/accounts/open-account-by-media.md` §「首次响应硬规范」输出**完整必填清单**(未指明媒体则列全平台六表),再收集资料;**禁止**未列清单就执行 `open-account` 或零散追问。
77
122
  - **Google 开户**:`open-account google-wizard` 仅限真实 TTY;Agent/自动化用非交互 `open-account google ...`,审核进度用 `account-history`。
78
123
  - **主动更新**:详见 `references/core/setup.md`。
79
124
 
80
125
  ---
81
126
 
82
- ## 数据转换硬规范
127
+ ## 五、时间范围
83
128
 
84
- Skill 下**所有**业务数据均以 CLI `--json-out`(或用户提供的同构 JSON)落盘为唯一真相源。Agent **不得**在对话或脚本里「代替」磁盘数据。
85
-
86
- ### 禁止 Read 完整业务 JSON(最高优先级)
129
+ 涉及「投放数据 / 消耗 / 报告 / 周报 / 月报 / 优化建议」且用户未给明确起止日期时**必须反问**(示例:A) 最近完整自然周 B) 本月 1 号到昨天 C) 自定义 YYYY-MM-DD)。给出范围后,报告首行标注 `统计区间:YYYY-MM-DD ~ YYYY-MM-DD(货币:XXX)`。
87
130
 
88
- `--json-out` 落盘的 `writtenFiles[0]`(及同目录 `campaigns-*.json`、`keywords-*.json` 等)往往为 **MB 级**。Agent **永远不得**用宿主 **Read** 工具、`cat`、`type`、`Get-Content` 等方式把整文件读进对话上下文。
131
+ **例外**(不反问):
89
132
 
90
- | 允许 Read 的文件 | 必须用代码读取的文件 |
91
- | ---------------- | -------------------- |
92
- | `references/**/*.md`、`assets/**/*.md`(Skill 文档) | 所有 `--json-out` 业务 `*.json` |
93
- | 当次 `*.outline.txt`(通常小于 2KB,仅 schema) | `cli-manifest*.json` / `manifest-*.json` 中的路径索引(应用脚本 `JSON.parse` 读,勿 Read 整份 manifest 若很大) |
94
- | stdout **一行**摘要 JSON(命令回显,体积小) | 用户提供的同构大 JSON 文件 |
133
+ - `list-accounts` 列全部 / 数个数:一次 `list-accounts -m <媒体> --page-size 999 --json-out <dir>`,脚本读落盘 `total` / `items[]`;**禁止**默认 page-size 20 再翻页(详见 `accounts/accounts.md` § Agent 意图速查)。
134
+ - 「昨天」单日 stats:默认 `Asia/Shanghai` 日历日;先 `list-accounts` 再 `stats`。
135
+ - `forewarning records`、`invoice list`「本月」、TikTok `clue`「最近一周」:见对应 references。
95
136
 
96
- **正确流程**:解析 stdout 摘要 → Read **仅** `outlineFile` 了解字段类型 → **编写并执行** `node -e` / `node script.mjs` / `python`:`require` 或 `readFileSync` 读 JSON → `console.log` / 写 xlsx/html **只输出所需字段** → 用脚本打印结果回答用户。
137
+ **默认值白名单**(仅用户明确授权「你决定」时使用):
97
138
 
98
- | 必须 | 禁止 |
99
- | ---- | ---- |
100
- | 编写并**执行** Node/Python 脚本读落盘 JSON 计算 写出 | 用 **Read** 打开 `writtenFiles` 业务 JSON;在回复里手填、改数、心算汇总 |
101
- | **先 outline 后脚本读 JSON**:`outlineFile` → 代码读 `writtenFiles[0]` | 跳过 outline 猜字段名;把 outline 当数据贴给用户 |
102
- | 字段路径以 `outlineFile` + 当次 `writtenFiles` / manifest 为准 | 把国家名、ID、金额、词表等**业务值**写成源码字面量 |
103
- | 映射表 / 模板契约在运行时加载(`analytics/geo-continents.json`、`campaign-create-template.json`) | 复制配置条目进源码常量 |
104
- | 脚本输出与落盘 JSON 可复核 | 用「上次对话记住的数」「占位数」写入交付物 |
139
+ | 场景 | 默认窗口 |
140
+ | ---------------------- | ------------------------------- |
141
+ | 日常巡检 / 余额扫描 | `now - 7d` ~ `now - 1d` |
142
+ | 周报 | 上一个完整自然周(周一 ~ 周日) |
143
+ | 月报 | 上一个完整自然月 |
144
+ | Google 关键词/系列分析 | `now - 30d` ~ `now - 1d` |
145
+ | MetaAd 账户分析 | 不得默认,必须问 |
105
146
 
106
- **允许的字面量**:输出目录、Sheet/列标题、技术格式、`focusCountries` 等**用户当轮明确给出**的配置(建议落盘为 `config.json` 再**用脚本**读)。
147
+ ---
107
148
 
108
- 完整协议见 `references/core/tips.md` § 处理顺序、§ 已有 JSON 时。
149
+ ## 六、币种与金额
109
150
 
110
- ---
151
+ 完整字段来源与符号表见 `references/accounts/currency.md`。三条硬规则:
111
152
 
112
- ## 时间范围
153
+ 1. **币种只认接口字段** `currencyCode`(首选 `list-accounts` → `items[].ma.currencyCode`);同媒体可同时有 CNY 与 USD,**禁止**默认 Google=美金。`CNY` → **¥**、`USD` → **$**。
154
+ 2. **禁止跨币种求和**:多账户按 `currencyCode` 分表或分币种小计。
155
+ 3. **金额单位统一为「元」**(CLI 出口已换算,`budgetAmountYuan`、`spend` 等直接展示),报告保留 2 位小数。
113
156
 
114
- 涉及「投放数据 / 消耗 / 报告 / 周报 / 月报 / 优化建议」且用户未给明确起止日期时**必须反问**(示例:A) 最近完整自然周 B) 本月 1 号到昨天 C) 自定义 YYYY-MM-DD)。给出范围后,报告首行标注 `统计区间:YYYY-MM-DD ~ YYYY-MM-DD(货币:XXX)`。
157
+ **品牌名优先级**:(1) 用户明确提供 (2) `list-accounts.mag.advertiserName` (3) 网址域名占位 `[待确认品牌名]`。**严禁**把英文域名翻译为虚构中文品牌。
115
158
 
116
- **例外**(不反问):
159
+ ---
117
160
 
118
- - `list-accounts` 列全部 / 数个数:一次 `list-accounts -m <媒体> --page-size 999 --json-out <dir>`,脚本读落盘 `list-accounts-*.json` 的 `total` / `items[]`;**禁止**默认 page-size 20 再翻页;**禁止**对 stdout 摘要解析 `total`/`items`(见 `accounts/accounts.md` § Agent 意图速查);**默认无 `--detail` 时 JSON 不含余额/消耗**;要看余额/消耗加 `--detail` 或另跑 `balance`/`stats`
119
- - 「昨天」单日 stats:默认 `Asia/Shanghai` 日历日;先 `list-accounts` 再 `stats`
120
- - 仅持有 `entityId`:先 `list-accounts` 解出 `mediaCustomerId`,**禁止**把 `entityId` 传给 `stats -a` / `balance -a`
121
- - `forewarning records`、`invoice list`「本月」、TikTok `clue`「最近一周」:见对应 references
161
+ ## 七、交付前自检(报告 / Excel / 含金额话术)
122
162
 
123
- **默认值白名单**(仅用户明确授权「你决定」时使用):
163
+ > 在产物文件已写入磁盘**之后、发给用户之前**执行;不靠外部校验脚本,由 Agent **亲自 Read 最终产物文件**(HTML / Markdown 等;二进制 xlsx 无法 Read 时在对话贴自检表逐条勾选,依据为生成脚本的 stdout 摘要)。审阅阶段只看最终产物 + 已掌握的账户元数据,**不**回头 Read 落盘业务 JSON。
124
164
 
125
- | 场景 | 默认窗口 |
126
- | ---- | -------- |
127
- | 日常巡检 / 余额扫描 | `now - 7d` ~ `now - 1d` |
128
- | 周报 | 上一个完整自然周(周一 ~ 周日) |
129
- | 月报 | 上一个完整自然月 |
130
- | Google 关键词/系列分析 | `now - 30d` ~ `now - 1d` |
131
- | MetaAd 账户分析 | 不得默认,必须问 |
165
+ **A · 币种**:首行含 `统计区间:…(货币:CNY|USD)`;全文符号与 `currencyCode` 一致(CNY=¥、USD=$,未混用);与当次 `list-accounts -k` 结果相同;多账户分币种分表、无跨币种「总计」行。
132
166
 
133
- ---
167
+ **B · 结构完整**(对照当次 `report-templates/*.md`):模板要求的每一章/Sheet 都存在;无整章空白(缺数据章节写 `[ 数据不可用:… ]`,禁止编造数字填坑);优化建议独立成节、引用当次数字(Meta:4 条建议各 ≥150 字 + 7 维补充;Google 诊断:每模块除表格外有「分析」+「建议」);Excel 的表头列须能在当次 `*.outline.txt` 找到对应字段、产物内账户 ID = 用户当轮给出的 `mediaCustomerId`。
134
168
 
135
- ## 币种与金额(速查)
169
+ **C · 数字可信**(抽样,不读大 JSON):总消耗/CPA 数量级与生成过程中脚本 stdout 打印的汇总一致(若无,补跑一次极小 `node -e` 只打印 totals);账户 ID、区间与用户需求一致;无「示例账户」「占位 123456」等模板残留;表格行数符合预期(如 P3 每个 `-a` ID 占一行)。
136
170
 
137
- 完整字段表见 `references/accounts/currency.md`。
171
+ 任一项不通过 → 修正产物后**重新 Read 再审**,不得交付、不得手改数字糊弄。通过后,交付消息附简短自检结论:
138
172
 
139
- - **币种只认接口字段**:`list-accounts` → `items[].ma.currencyCode`;同媒体可同时有 CNY 与 USD,不得凭媒体猜币种。
140
- - **符号**:`CNY` → **¥**;`USD` → **$**。多账户按 `currencyCode` 分表,**禁止**跨币种求和。
141
- - **金额单位统一为「元」**:报告保留 2 位小数。
142
- - **Google 广告诊断报告**:`report-templates/google-ads-diagnosis.md` § 撰写硬约束 — 每日趋势金额/CPA 必须 2 位小数;每个模块除表格外须有「分析」+「建议」,禁止只贴数据。
143
- - **交付前审阅产物**:报告/Excel 交付前 Agent **Read 最终文件**并对照 `deliverable-preflight.md` 自检表;未审阅禁止交付。
144
- - **品牌名优先级**:(1) 用户明确提供 → (2) `list-accounts.mag.advertiserName` → (3) 网址域名占位 `[待确认品牌名]`。**严禁**把英文域名翻译为虚构中文品牌。
173
+ ```text
174
+ 交付前自检(已通过):
175
+ - 产物:./out/report-xxx.html
176
+ - 币种:CNY(来自 list-accounts,与报告首行一致)
177
+ - 章节:8/8 默认维度齐全;关键词章 [ 数据不可用:接口超时 ] 已标注
178
+ - 区间:2026-04-01 ~ 2026-04-30
179
+ ```
145
180
 
146
181
  ---
147
182
 
148
- ## 批量任务硬约束
183
+ ## 八、批量任务硬约束
149
184
 
150
- | 任务 | 推荐命令 | 禁止 |
151
- | ---- | -------- | ---- |
152
- | 多账户余额 / 预算不足预警 | `balance-scan -m <媒体> --threshold-days 7` | 逐账户 `balance --accounts ...` |
153
- | 多账户投放画像 | `accounts-digest -m <媒体> [-a ...] --start --end --json-out` | 逐账户 `stats` |
185
+ | 任务 | 推荐命令 | 禁止 |
186
+ | --------------------------- | -------------------------------------------------------------------------------------- | -------------------------------- |
187
+ | 多账户余额 / 预算不足预警 | `balance-scan -m <媒体> --threshold-days 7` | 逐账户 `balance --accounts ...` |
188
+ | 多账户投放画像 | `accounts-digest -m <媒体> [-a ...] --start --end --json-out` | 逐账户 `stats` |
154
189
  | 多账户 × 多维度 Google 数据 | 全量:`google-analysis-batch run`(省略 `-a`);2~10:`google-analysis -a id1,id2,...` | 外层 for-loop;先 list 再拼 `-a` |
155
- | 多系列诊断 | `ad campaigns --json-out` + node 读文件过滤 | 逐系列 `ad campaign-get` |
156
-
157
- **`google-analysis-batch` 纪律**(详见 `references/analytics/google-analysis-batch.md`):
190
+ | 多系列诊断 | `ad campaigns --json-out` + node 读文件过滤 | 逐系列 `ad campaign-get` |
158
191
 
159
- 1. 拉全量时**省略** `-a`;中断后**必须** `resume --run-id <id>`,**禁止**重新 `run`。
160
- 2. stdout 始终是单行 JSON(`kind=siluzan-tso-batch-summary`)。
161
- 3. 退出码:`0` 全成功 / `2` 部分成功 / `3` 全失败或 Token 失效 / `4` 用法错误。
162
- 4. 401 → 整批终止;按 `references/core/setup.md` 重登录后 `resume`。
192
+ **`google-analysis-batch` 纪律**(详见 `references/analytics/google-analysis-batch.md`):拉全量时省略 `-a`;中断后**必须** `resume --run-id <id>`,**禁止**重新 `run`;stdout 始终单行 JSON(`kind=siluzan-tso-batch-summary`);退出码 `0` 全成功 / `2` 部分成功 / `3` 全失败或 Token 失效 / `4` 用法错误;401 → 整批终止,按 `references/core/setup.md` 重登录后 `resume`。
163
193
 
164
194
  ---
165
195
 
166
- ## 运行时长与进度
196
+ ## 九、运行时长与进度
167
197
 
168
198
  预估超 2 分钟的任务先告知预计耗时;超 5 分钟未完成时主动检查并告知用户。长任务中断后用对应 `resume` 入口续跑,**禁止**直接重跑 `run`。
169
199
 
170
200
  ---
171
201
 
172
- ## 账户 ID 示例
202
+ ## 十、账户 ID 示例
173
203
 
174
204
  先用位数判断类型,不确定再 `list-accounts -m [mediaType] -k [id]`:
175
205
 
@@ -182,7 +212,7 @@
182
212
 
183
213
  ---
184
214
 
185
- ## 常见 HTTP 状态码
215
+ ## 十一、常见 HTTP 状态码
186
216
 
187
217
  - **400**:参数错误,查看对应 reference 或 `-h`
188
218
  - **401**:平台方返回则需用户重新授权;**我方凭据失效**则优先 `send-login-code` + `login --phone --code`,见 `references/core/setup.md`
@@ -190,7 +220,7 @@
190
220
 
191
221
  ---
192
222
 
193
- ## 风险预警与自动化(主动介绍)
223
+ ## 十二、风险预警与自动化(主动介绍)
194
224
 
195
225
  加载本 skill 时须向用户介绍 `references/operations/hosted-automation-user-catalog.md` 中的能力:
196
226
 
@@ -200,7 +230,7 @@
200
230
 
201
231
  ---
202
232
 
203
- ## 消息平台语法
233
+ ## 十三、消息平台语法
204
234
 
205
235
  需 webhook 发送消息时,先阅读对应平台文档:
206
236
 
@@ -6,58 +6,51 @@
6
6
 
7
7
  ### 媒体类型 `-m` / `--media`(多数命令)
8
8
 
9
- | 命令 | 选项 | 合法值 |
10
- | ---- | ---- | ------ |
9
+ | 命令 | 选项 | 合法值 |
10
+ | ------------------------------------------------------------------------- | ----------- | ------------------------------------------------------ |
11
11
  | list-accounts, stats, balance, account-history, open-account, transfer, … | -m, --media | Google \| TikTok \| Yandex \| MetaAd \| BingV2 \| Kwai |
12
12
 
13
-
14
13
  > 区分大小写;Meta 广告账户用 MetaAd,不是 Facebook。
15
14
 
16
15
  ### 媒体类型(仅 forewarning)
17
16
 
18
- | 命令 | 选项 | 合法值 |
19
- | ---- | ---- | ------ |
17
+ | 命令 | 选项 | 合法值 |
18
+ | ------------------------------------ | ----------- | ---------------- |
20
19
  | forewarning list, create, records, … | -m, --media | Google \| TikTok |
21
20
 
22
-
23
21
  ### `google-analysis --sections` 维度(25)
24
22
 
25
- | 命令 | 选项 | 合法值 |
26
- | ---- | ---- | ------ |
23
+ | 命令 | 选项 | 合法值 |
24
+ | ------------------------------------------ | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
27
25
  | google-analysis, google-analysis-batch run | --sections | overview \| keywords \| search-terms \| campaigns \| campaign-hour \| ads \| extensions \| devices \| geographic \| geo-matched \| campaign-geo \| campaign-geo-matched \| campaign-device \| audience \| asset-images \| videos \| materials \| resource-counts \| conversion-actions \| daily-metrics \| gold-account \| ads-index \| final-urls \| dimension-summary \| campaign-types |
28
26
 
29
-
30
27
  > 逗号分隔;省略=全部。`final-urls`、`campaign-types` 不传日期。
31
28
 
32
29
  ### `google-analysis --level`(extensions 维度)
33
30
 
34
- | 命令 | 选项 | 合法值 |
35
- | ---- | ---- | ------ |
31
+ | 命令 | 选项 | 合法值 |
32
+ | ------------------------------------- | ------- | ------------------------------- |
36
33
  | google-analysis --sections extensions | --level | Account \| Campaign \| Ad Group |
37
34
 
38
-
39
35
  ### `google-analysis --audience-type`(audience 维度)
40
36
 
41
- | 命令 | 选项 | 合法值 |
42
- | ---- | ---- | ------ |
37
+ | 命令 | 选项 | 合法值 |
38
+ | ----------------------------------- | --------------- | ---------------------------- |
43
39
  | google-analysis --sections audience | --audience-type | SystemDefined \| UserDefined |
44
40
 
45
-
46
41
  ### `facebook-analysis --sections` 维度(7)
47
42
 
48
- | 命令 | 选项 | 合法值 |
49
- | ---- | ---- | ------ |
43
+ | 命令 | 选项 | 合法值 |
44
+ | ----------------- | ---------- | ------------------------------------------------------------------------------ |
50
45
  | facebook-analysis | --sections | overview \| ad-sets \| platform \| country \| audience \| creative \| material |
51
46
 
52
-
53
47
  > 默认周期报告:overview,ad-sets,platform,country,audience,creative。
54
48
 
55
49
  ### `facebook-analysis --sections` Google 别名
56
50
 
57
- | 命令 | 选项 | 合法值 |
58
- | ---- | ---- | ------ |
59
- | facebook-analysis | --sections(别名) | — |
60
-
51
+ | 命令 | 选项 | 合法值 |
52
+ | ----------------- | ------------------ | ------ |
53
+ | facebook-analysis | --sections(别名) | — |
61
54
 
62
55
  > 解析后映射到左侧 canonical 名。
63
56
 
@@ -65,74 +58,75 @@
65
58
 
66
59
  ### `ad extension * --level`
67
60
 
68
- | 命令 | 选项 | 合法值 |
69
- | ---- | ---- | ------ |
70
- | ad extension sitelink, callout, snippet, … | --level | Account \| Campaign \| AdGroup |
71
-
61
+ | 命令 | 选项 | 合法值 |
62
+ | ------------------------------------------ | ------------- | ---------------------------------------------------------------------------------- |
63
+ | ad extension sitelink, callout, snippet, … | --level | Account \| Campaign \| AdGroup |
64
+ | ad extension list | --type | SITELINK \| CALL \| CALLOUT \| STRUCTURED_SNIPPET \| LEAD_FORM \| BUSINESS_MESSAGE |
65
+ | ad extension lead-form / update | --config-file | JSON(见 `assets/pmax-lead-form-template.json`) |
66
+ | ad extension whatsapp / update | --config-file | JSON(见 `assets/pmax-whatsapp-template.json`) |
72
67
 
73
68
  ### 搜索系列 `BiddingStrategyTypeV2`
74
69
 
75
- | 命令 | 选项 | 合法值 |
76
- | ---- | ---- | ------ |
70
+ | 命令 | 选项 | 合法值 |
71
+ | ---------------------------------------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------ |
77
72
  | ad campaign-create, campaign-validate(config JSON) | campaign.BiddingStrategyTypeV2 | TARGET_SPEND \| MANUAL_CPC \| TARGET_CPA \| TARGET_ROAS \| MAXIMIZE_CONVERSIONS \| MAXIMIZE_CONVERSION_VALUE |
78
73
 
79
-
80
74
  ### 系列 `ChannelTypeV2`
81
75
 
82
- | 命令 | 选项 | 合法值 |
83
- | ---- | ---- | ------ |
76
+ | 命令 | 选项 | 合法值 |
77
+ | ------------------------------------- | ---------------------- | ------------------------------------------------------- |
84
78
  | ad campaign-create, campaign-validate | campaign.ChannelTypeV2 | SEARCH \| DISPLAY \| VIDEO \| SHOPPING \| MULTI_CHANNEL |
85
79
 
86
-
87
80
  ### 系列 `StatusV2`
88
81
 
89
- | 命令 | 选项 | 合法值 |
90
- | ---- | ---- | ------ |
82
+ | 命令 | 选项 | 合法值 |
83
+ | ------------------------------------- | ----------------- | ----------------- |
91
84
  | ad campaign-create, campaign-validate | campaign.StatusV2 | Enabled \| Paused |
92
85
 
93
-
94
86
  ### 预算投放 `BudgetBudgetDeliveryMethodV2`
95
87
 
96
- | 命令 | 选项 | 合法值 |
97
- | ---- | ---- | ------ |
88
+ | 命令 | 选项 | 合法值 |
89
+ | ------------------------------------- | ------------------------------------- | ------------------------------------------------- |
98
90
  | ad campaign-create, campaign-validate | campaign.BudgetBudgetDeliveryMethodV2 | STANDARD \| ACCELERATED \| UNSPECIFIED \| UNKNOWN |
99
91
 
100
-
101
92
  ### PMax `BiddingStrategyTypeV2`
102
93
 
103
- | 命令 | 选项 | 合法值 |
104
- | ---- | ---- | ------ |
94
+ | 命令 | 选项 | 合法值 |
95
+ | ----------------------------- | ------------------------------ | ------------------------------------------------------------------------------ |
105
96
  | ad pmax-create, pmax-validate | campaign.BiddingStrategyTypeV2 | MAXIMIZE_CONVERSIONS \| MAXIMIZE_CONVERSION_VALUE \| TARGET_CPA \| TARGET_ROAS |
106
97
 
107
-
108
98
  ### 预警比较运算符
109
99
 
110
- | 命令 | 选项 | 合法值 |
111
- | ---- | ---- | ------ |
100
+ | 命令 | 选项 | 合法值 |
101
+ | ------------------ | ---------- | ---------------------------------------------------------- |
112
102
  | forewarning create | --operator | GREATER_EQUALS \| GREATER \| LESS_EQUALS \| LESS \| EQUALS |
113
103
 
114
-
115
104
  ### 开户历史状态筛选
116
105
 
117
- | 命令 | 选项 | 合法值 |
118
- | ---- | ---- | ------ |
106
+ | 命令 | 选项 | 合法值 |
107
+ | --------------- | ----------------------------- | ----------------------------------------- |
119
108
  | account-history | --status(mediaAccountState) | Created \| Approved \| Denied \| Inactive |
120
109
 
121
-
122
110
  > Google 默认含 Inactive;其他媒体默认 Created,Approved,Denied。
123
111
 
124
112
  ### 线索表单媒体
125
113
 
126
- | 命令 | 选项 | 合法值 |
127
- | ---- | ---- | ------ |
114
+ | 命令 | 选项 | 合法值 |
115
+ | ---- | ----------- | -------------- |
128
116
  | clue | -m, --media | TikTok \| Meta |
129
117
 
130
-
131
118
  ### 网站诊断模块 status
132
119
 
133
- | 命令 | 选项 | 合法值 |
134
- | ---- | ---- | ------ |
120
+ | 命令 | 选项 | 合法值 |
121
+ | ------------------------------------- | ---------------- | -------------------------------------------------------------------- |
135
122
  | website-diagnosis collect(响应字段) | modules[].status | Excellent \| Good \| Normal \| Poor \| Full \| NeedImprove \| Absent |
136
123
 
137
-
138
124
  > 撰写报告时转中文展示;细则见 assets/website-diagnosis-rules.md。
125
+
126
+ ### Kwai 开户 `--licence-id-type`(`open-account kwai`)
127
+
128
+ | 命令 | 选项 | 合法值 |
129
+ | ----------------- | ----------------- | -------------------------------------------- |
130
+ | open-account kwai | --licence-id-type | `1` 统一社会信用代码 \| `2` DUNS \| `3` CNPJ |
131
+
132
+ > 与网页 `KwaiOpenAnAccount.vue` 的 `licenseCodeTypeOptions` **value** 一致(数字字符串)。**勿用** `ENTERPRISE` / `INDIVIDUAL`(旧文档误写;传入 `ENTERPRISE` 时 CLI 会警告并映射为 `1`)。