siluzan-tso-cli 1.1.21 → 1.1.22-beta.10

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 (130) hide show
  1. package/README.md +3 -2
  2. package/dist/index.js +542 -533
  3. package/dist/skill/AGENTS.md +45 -0
  4. package/dist/skill/SKILL.md +55 -347
  5. package/dist/skill/_meta.json +2 -2
  6. package/dist/skill/assets/campaign-create-template.json +1 -1
  7. package/dist/skill/assets/campaign-create-template.md +5 -5
  8. package/dist/skill/assets/pmax-create-template.md +6 -5
  9. package/dist/skill/docs/skill-guide.md +44 -0
  10. package/dist/skill/references/README.md +73 -0
  11. package/dist/skill/references/{accounts.md → accounts/accounts.md} +37 -37
  12. package/dist/skill/references/{currency.md → accounts/currency.md} +7 -7
  13. package/dist/skill/references/{finance.md → accounts/finance.md} +18 -18
  14. package/dist/skill/references/accounts/open-account-by-media.md +153 -0
  15. package/dist/skill/references/{open-account-google-ui.md → accounts/open-account-google-ui.md} +2 -2
  16. package/dist/skill/references/{write-audit-restore.md → accounts/write-audit-restore.md} +4 -4
  17. package/dist/skill/references/{account-analytics.md → analytics/account-analytics.md} +37 -32
  18. package/dist/skill/references/{google-analysis-batch.md → analytics/google-analysis-batch.md} +2 -2
  19. package/dist/skill/references/{keyword-planner-workflows.md → analytics/keyword-planner-workflows.md} +15 -15
  20. package/dist/skill/references/{rag.md → analytics/rag.md} +11 -11
  21. package/dist/skill/references/{reporting.md → analytics/reporting.md} +16 -16
  22. package/dist/skill/references/core/agent-conventions.md +180 -0
  23. package/dist/skill/references/core/playbooks.md +141 -0
  24. package/dist/skill/references/{setup.md → core/setup.md} +5 -5
  25. package/dist/skill/references/core/skill-authoring.md +192 -0
  26. package/dist/skill/references/{tips.md → core/tips.md} +5 -6
  27. package/dist/skill/references/{workflows.md → core/workflows.md} +63 -65
  28. package/dist/skill/references/{google-ads-campaign-plan.md → google-ads/google-ads-campaign-plan.md} +25 -25
  29. package/dist/skill/references/{google-ads.md → google-ads/google-ads.md} +63 -67
  30. package/dist/skill/references/{pmax-api.md → google-ads/pmax-api.md} +0 -2
  31. package/dist/skill/references/google-ads/rules/README.md +21 -0
  32. package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-account-audit.md +19 -19
  33. package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-campaign-optimization.md +1 -1
  34. package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-keyword-optimization.md +1 -1
  35. package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-keyword-strategy.md +3 -3
  36. package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-keyword-taxonomy.md +2 -2
  37. package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-launch-plan-template.md +8 -8
  38. package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-pmax-guide.md +2 -2
  39. package/dist/skill/references/{tso-home.md → misc/tso-home.md} +5 -5
  40. package/dist/skill/references/{clue.md → operations/clue.md} +7 -7
  41. package/dist/skill/references/{forewarning.md → operations/forewarning.md} +6 -6
  42. package/dist/skill/references/{hosted-automation-monitoring-json.md → operations/hosted-automation-monitoring-json.md} +14 -14
  43. package/dist/skill/references/{hosted-automation-optimize-ab-winner.md → operations/hosted-automation-optimize-ab-winner.md} +4 -4
  44. package/dist/skill/references/{hosted-automation-optimize-index.md → operations/hosted-automation-optimize-index.md} +6 -6
  45. package/dist/skill/references/{hosted-automation-optimize-scale.md → operations/hosted-automation-optimize-scale.md} +8 -8
  46. package/dist/skill/references/{hosted-automation-optimize-weak-downbid.md → operations/hosted-automation-optimize-weak-downbid.md} +9 -9
  47. package/dist/skill/references/operations/hosted-automation-scenarios.md +23 -0
  48. package/dist/skill/references/{hosted-automation-self-control.md → operations/hosted-automation-self-control.md} +28 -28
  49. package/{assets/siluzan-ads/references → dist/skill/references/operations}/hosted-automation-user-catalog.md +13 -13
  50. package/dist/skill/references/{optimize.md → operations/optimize.md} +5 -5
  51. package/dist/skill/report-templates/README.md +2 -1
  52. package/dist/skill/report-templates/REPORT-WORKFLOW.md +2 -2
  53. package/dist/skill/report-templates/google-ads-diagnosis.md +2 -2
  54. package/dist/skill/report-templates/google-inquiry-analysis.md +11 -12
  55. package/dist/skill/report-templates/google-period-report.md +2 -2
  56. package/dist/skill/report-templates/okki-weekly-google-client.md +12 -12
  57. package/dist/skill/scripts/install.ps1 +3 -3
  58. package/dist/skill/scripts/install.sh +3 -3
  59. package/eval/cases/accounts-entityid-vs-mediaccustomerid.scenario.json +4 -4
  60. package/eval/cases/accounts-mcc-bind-inquiry.scenario.json +3 -3
  61. package/eval/cases/accounts-single-balance-not-bulk.scenario.json +3 -3
  62. package/eval/cases/budget-display-not-raw-micros.scenario.json +3 -3
  63. package/eval/cases/clue-meta-leads-json.scenario.json +4 -4
  64. package/eval/cases/clue-tiktok-leads-json.scenario.json +3 -3
  65. package/eval/cases/destructive-account-delink-needs-confirm.scenario.json +1 -1
  66. package/eval/cases/destructive-forewarning-delete-needs-confirm.scenario.json +1 -1
  67. package/eval/cases/destructive-invoice-apply-needs-confirm.scenario.json +1 -1
  68. package/eval/cases/finance-invoice-info-list.scenario.json +3 -3
  69. package/eval/cases/forewarning-list-google.scenario.json +3 -3
  70. package/eval/cases/google-ads-no-structural-without-confirm.scenario.json +3 -3
  71. package/eval/cases/google-analysis-keywords-route.scenario.json +2 -2
  72. package/eval/cases/hosted-sop-cpa-spike-downbid.scenario.json +6 -6
  73. package/eval/cases/hosted-sop-daily-budget-circuit-breaker.scenario.json +4 -4
  74. package/eval/cases/hosted-sop-empty-spend-pause-p1.scenario.json +5 -5
  75. package/eval/cases/human-p1-multiturn.scenario.json +1 -1
  76. package/eval/cases/meta-single-balance-not-bulk.scenario.json +4 -4
  77. package/eval/cases/no-legacy-json-flag.scenario.json +12 -0
  78. package/eval/cases/open-account-bing-noninteractive.scenario.json +3 -3
  79. package/eval/cases/open-account-google-noninteractive.scenario.json +2 -2
  80. package/eval/cases/open-account-tiktok-license-file.scenario.json +2 -2
  81. package/eval/cases/optimize-list-by-account.scenario.json +3 -3
  82. package/eval/cases/p1-single-account-profile.scenario.json +2 -2
  83. package/eval/cases/p2-balance-scan-bulk.scenario.json +1 -1
  84. package/eval/cases/p4-period-report-window.scenario.json +1 -1
  85. package/eval/cases/rag-before-keyword-expand.scenario.json +3 -3
  86. package/eval/cases/rag-list-then-query.scenario.json +5 -5
  87. package/eval/cases/report-list-google.scenario.json +3 -3
  88. package/eval/cases/report-push-list-google.scenario.json +3 -3
  89. package/eval/cases/reporting-vs-account-analytics-routing.scenario.json +4 -4
  90. package/eval/cases/setup-login-or-env.scenario.json +2 -2
  91. package/eval/cases/setup-siluzan-data-permission-env.scenario.json +2 -2
  92. package/eval/cases/skill-optimize-vs-google-ads-distinction.scenario.json +4 -4
  93. package/eval/cases/tiktok-bc-bind-inquiry.scenario.json +2 -2
  94. package/eval/cases/time-range-user-delegates-default.scenario.json +2 -2
  95. package/eval/cases/tips-json-out-filtering.scenario.json +12 -0
  96. package/eval/cases/tips-large-json-pagination.scenario.json +3 -3
  97. package/eval/cases/uj-ad-bluetooth-keywords-exclude-cheap-free.scenario.json +1 -1
  98. package/eval/cases/uj-ad-campaign-validate-before-create-stub.scenario.json +3 -3
  99. package/eval/cases/uj-ad-keywords-camping-tent-outdoor-plan.scenario.json +1 -1
  100. package/eval/cases/uj-ad-outdoor-campgear-search-plan.scenario.json +3 -3
  101. package/eval/cases/uj-analytics-30d-pdf-campaign-device-geo.scenario.json +2 -2
  102. package/eval/cases/uj-analytics-compare-google-tiktok-last-month-roi.scenario.json +3 -3
  103. package/eval/cases/uj-analytics-google-weekly-trends-campaigns-keywords.scenario.json +4 -4
  104. package/eval/cases/uj-analytics-report-push-weekly-email.scenario.json +3 -3
  105. package/eval/cases/uj-finance-invoice-records-this-month.scenario.json +4 -4
  106. package/eval/cases/uj-life-newbie-siluzan-google-end-to-end.scenario.json +2 -2
  107. package/eval/cases/uj-ops-google-accounts-list-normal.scenario.json +4 -4
  108. package/eval/cases/uj-ops-google-yesterday-spend-conversions.scenario.json +5 -5
  109. package/eval/cases/uj-ops-open-google-b2c-usd-shenzhen.scenario.json +3 -3
  110. package/eval/cases/uj-ops-pause-worst-adgroup-confirm.scenario.json +2 -2
  111. package/eval/cases/uj-ops-tiktok-leads-last-week.scenario.json +4 -4
  112. package/eval/cases/uj-patrol-cpc-spike-adgroups-over-15.scenario.json +3 -3
  113. package/eval/cases/uj-patrol-forewarning-create-daily-cap-3000.scenario.json +3 -3
  114. package/eval/cases/uj-patrol-forewarning-trigger-records.scenario.json +4 -4
  115. package/eval/cases/uj-patrol-google-balances-low.scenario.json +3 -3
  116. package/eval/cases/uj-roi-full-google-account-diagnosis.scenario.json +1 -1
  117. package/eval/cases/uj-roi-keywords-high-cpa-low-cvr-triage.scenario.json +1 -1
  118. package/eval/cases/uj-roi-optimize-records-then-execute-cautiously.scenario.json +4 -4
  119. package/eval/cases/uj-roi-search-terms-add-negative-keywords.scenario.json +2 -2
  120. package/package.json +4 -3
  121. package/dist/skill/references/hosted-automation-scenarios.md +0 -23
  122. package/dist/skill/references/hosted-automation-user-catalog.md +0 -38
  123. package/eval/cases/tips-json-filtering.scenario.json +0 -12
  124. /package/dist/skill/references/{geo-continents.json → analytics/geo-continents.json} +0 -0
  125. /package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-audience-strategy.md +0 -0
  126. /package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-compliance.md +0 -0
  127. /package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-conversion-architecture.md +0 -0
  128. /package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-creative-optimization.md +0 -0
  129. /package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-landing-page-discovery-via-webfetch.md +0 -0
  130. /package/dist/skill/references/{google-ads-rules → google-ads/rules}/sensitive-industries.md +0 -0
@@ -9,37 +9,35 @@
9
9
 
10
10
  宿主编排相关文档(**入口** + 两份子页):
11
11
 
12
- - **`references/hosted-automation-scenarios.md`** — 索引与导航
13
- - **`references/hosted-automation-self-control.md`** — 三类场景(**单日预算熔断**、**CPA 飙升降价**、**连续空耗暂停**)的逐步命令、字段对照、系数与复核
14
- - **`references/hosted-automation-monitoring-json.md`** — 异常监控(余额/`campaign-hour`/落地页/拒审等 **`--json` 键名与命令**)
15
- - **`references/hosted-automation-optimize-index.md`** — 自动优化(差素材降价/关停、高转化扩量、A/B 决胜负)**分文件 SOP**
12
+ - **`references/operations/hosted-automation-scenarios.md`** — 索引与导航
13
+ - **`references/operations/hosted-automation-self-control.md`** — 三类场景(**单日预算熔断**、**CPA 飙升降价**、**连续空耗暂停**)的逐步命令、字段对照、系数与复核
14
+ - **`references/operations/hosted-automation-monitoring-json.md`** — 异常监控(余额/`campaign-hour`/落地页/拒审等 **`--json-out` 落盘 JSON 键名与命令**)
15
+ - **`references/operations/hosted-automation-optimize-index.md`** — 自动优化(差素材降价/关停、高转化扩量、A/B 决胜负)**分文件 SOP**
16
16
 
17
- 本文件其余章节仍为其他业务流程;实现上述自控、监控或自动优化时按需打开子页,并配合 `references/tips.md`(`--json`)、`references/google-ads.md`(写命令与拒审字段)、`references/account-analytics.md`(时间窗与报表)、`references/accounts.md`(`balance` / `balance-scan`)。
17
+ 本文件其余章节仍为其他业务流程;实现上述自控、监控或自动优化时按需打开子页,并配合 `references/core/tips.md`(`--json-out`)、`references/google-ads/google-ads.md`(写命令与拒审字段)、`references/analytics/account-analytics.md`(时间窗与报表)、`references/accounts/accounts.md`(`balance` / `balance-scan`)。
18
18
 
19
19
  ---
20
20
 
21
21
  ## 关键词规划师(拓词 / 词包)
22
22
 
23
- **`references/keyword-planner-workflows.md`**:`keyword` / `google-analysis` 拓词编排;**不含**建户 JSON(见下节)。
23
+ **`references/analytics/keyword-planner-workflows.md`**:`keyword` / `google-analysis` 拓词编排;**不含**建户 JSON(见下节)。
24
24
 
25
25
  ## Google 搜索系列方案 + 创建(Agent)
26
26
 
27
- **`references/google-ads-campaign-plan.md`**:双轨入口、7 步流水线、`campaign-validate` 门禁、`campaign-create` + batch。字段契约见 `assets/campaign-create-template.md`;命令参数见 `references/google-ads.md`。
27
+ **`references/google-ads/google-ads-campaign-plan.md`**:双轨入口、7 步流水线、`campaign-validate` 门禁、`campaign-create` + batch。字段契约见 `assets/campaign-create-template.md`;命令参数见 `references/google-ads/google-ads.md`。
28
28
 
29
29
  ---
30
30
 
31
31
  ## 流程一:新账户开通(Google / TikTok / Yandex / Bing / Kwai)
32
32
 
33
- 对应页面:`/accountOpeningHistory`
33
+ **主文档**:`references/accounts/open-account-by-media.md`(各媒体命令与参数)。Google 网页对照见 `accounts/open-account-google-ui.md`。
34
34
 
35
- > **网页完整链接(微前端)**:`{webUrl}/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory`(与 CLI `account-history` 同源数据)。开户提交后若需用户在网页确认,应打开此「开户记录」页,**不要**误链到「媒体账户」`manageAccounts`。
36
-
37
- ### 业务背景
38
-
39
- 用户在丝路赞上还没有某媒体账户时,需要提交开户申请并跟踪审核进度。**各媒体所需资料和命令参数完全不同,不要混用。**
35
+ 对应页面:`/accountOpeningHistory`。网页链接:`{webUrl}/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory`。
40
36
 
41
37
  > **AI Agent 注意**:`open-account google-wizard` 需要真实 TTY,Agent 环境无法使用,始终用非交互命令。
42
38
 
39
+ 以下保留完整示例供 workflows 内联阅读;维护时以 `accounts/open-account-by-media.md` 为准。
40
+
43
41
  ---
44
42
 
45
43
  ### Google 开户
@@ -200,13 +198,13 @@ siluzan-tso account-history -m Google
200
198
  | ---------- | -------- | --------------------------------------------------------------------------------------------------------------------- |
201
199
  | `Pending` | 审核中 | 等待,可反复轮询 |
202
200
  | `Approved` | 审核通过 | `list-accounts` 确认账户出现;引导用户充值激活(见各媒体第四步) |
203
- | `Rejected` | 被拒 | 查看拒绝原因(`account-history --json` 的 `reason` 字段);修改资料后重新提交;如无法确定原因,引导用户联系丝路赞客服 |
201
+ | `Rejected` | 被拒 | 查看拒绝原因(`account-history --json-out ./snap` 的 `reason` 字段);修改资料后重新提交;如无法确定原因,引导用户联系丝路赞客服 |
204
202
 
205
203
  ---
206
204
 
207
205
  ## 流程二:AI 智投创建 → 审核 → 发布
208
206
 
209
- 对应页面:`/advertising/AICreation`(创建向导)、`/advertising/AICreationList`(记录列表)。`ad batch` 命令见 **`references/google-ads.md`** § ad batch。
207
+ 对应页面:`/advertising/AICreation`(创建向导)、`/advertising/AICreationList`(记录列表)。`ad batch` 命令见 **`references/google-ads/google-ads.md`** § ad batch。
210
208
 
211
209
  ### 业务背景
212
210
 
@@ -223,7 +221,7 @@ AI 智投会生成一份 Google 广告草稿(包含系列/组/关键词/广告
223
221
  siluzan-tso ad batch list --customer-id <mediaCustomerId>
224
222
 
225
223
  # 过滤只看未发布草稿
226
- siluzan-tso ad batch list --state Unpublished --json
224
+ siluzan-tso ad batch list --state Unpublished --json-out ./snap
227
225
 
228
226
  # 第二步:查看草稿详情(包含完整的广告系列/关键词/预算等配置)
229
227
  siluzan-tso ad batch get --id <recordId>
@@ -281,14 +279,14 @@ Failed / HasFailed(部分或全部失败)
281
279
  ├─ 有已保存的 AI 智投草稿(网页向导填写的)?
282
280
  │ └─ 是 → 流程二(ad batch update/publish)
283
281
  ├─ 需先出投放方案(口述/官网/拓词)?
284
- │ └─ 是 → references/google-ads-campaign-plan.md → campaign-validate → campaign-create
282
+ │ └─ 是 → references/google-ads/google-ads-campaign-plan.md → campaign-validate → campaign-create
285
283
  └─ 已有完整 JSON 或结构化计划?
286
284
  └─ 是 → 本流程(campaign-validate → campaign-create)
287
285
  ```
288
286
 
289
287
  ### 场景 A:一体化创建(系列 + 关键词 + 广告,推荐)
290
288
 
291
- **方案阶段**:按 **`references/google-ads-campaign-plan.md`**(JSON → `campaign-validate` → Markdown → 用户确认 → create)。下文为命令串联速查。
289
+ **方案阶段**:按 **`references/google-ads/google-ads-campaign-plan.md`**(JSON → `campaign-validate` → Markdown → 用户确认 → create)。下文为命令串联速查。
292
290
 
293
291
  ```bash
294
292
  # 前置:地域 ID 写入 JSON(campaign.targetedLocations[].id)
@@ -304,7 +302,7 @@ siluzan-tso ad campaign-create --config-file ./campaign.json
304
302
  siluzan-tso ad batch get --id <taskId>
305
303
 
306
304
  # 创建完成后确认系列已出现,并获取 campaignId 供后续精细操作
307
- siluzan-tso ad campaigns -a <mediaCustomerId> --json
305
+ siluzan-tso ad campaigns -a <mediaCustomerId> --json-out ./snap
308
306
  ```
309
307
 
310
308
  **关键词格式说明**:
@@ -327,8 +325,8 @@ siluzan-tso ad batch get --id <taskId>
327
325
  # 等 status → Successfully
328
326
 
329
327
  # 第三步:查询广告系列,获取 campaignId 和 adGroupId
330
- siluzan-tso ad campaigns -a <mediaCustomerId> --json
331
- siluzan-tso ad groups -a <mediaCustomerId> --json
328
+ siluzan-tso ad campaigns -a <mediaCustomerId> --json-out ./snap
329
+ siluzan-tso ad groups -a <mediaCustomerId> --json-out ./snap
332
330
 
333
331
  # 第四步(可选):关键词推荐辅助选词
334
332
  siluzan-tso keyword -k "跑步鞋,running shoes" --exclude "cheap,kids"
@@ -380,7 +378,7 @@ siluzan-tso ad campaign-status -a <mediaCustomerId> --id <campaignId> --status P
380
378
  siluzan-tso ad ad-delete -a <mediaCustomerId> --id <adId>
381
379
 
382
380
  # 查看并清理否定关键词
383
- siluzan-tso ad keywords -a <mediaCustomerId> --negative --json
381
+ siluzan-tso ad keywords -a <mediaCustomerId> --negative --json-out ./snap
384
382
  siluzan-tso ad keyword-negative-delete -a <mediaCustomerId> --id <negKwId>
385
383
  ```
386
384
 
@@ -388,7 +386,7 @@ siluzan-tso ad keyword-negative-delete -a <mediaCustomerId> --id <negKwId>
388
386
 
389
387
  ## 流程四:AI 广告优化建议查看与执行
390
388
 
391
- 对应页面:`/advertising/intelligentOptimization`(v2)。`optimize` 命令与脱管账户说明见 **`references/optimize.md`**。
389
+ 对应页面:`/advertising/intelligentOptimization`(v2)。`optimize` 命令与脱管账户说明见 **`references/operations/optimize.md`**。
392
390
 
393
391
  ### 业务背景
394
392
 
@@ -399,7 +397,7 @@ AI 优化模块会分析账户的投放数据,给出优化建议(如调整
399
397
  siluzan-tso optimize list -a <mediaCustomerId>
400
398
 
401
399
  # 已不在 Siluzan 托管:勿用 -a(接口常 0 条)。用全量翻页 + 客户端筛 Google 客户号,再取 items[].id
402
- # siluzan-tso optimize list --match-media-customer-id <mediaCustomerId> [--start YYYY-MM-DD] --json
400
+ # siluzan-tso optimize list --match-media-customer-id <mediaCustomerId> [--start YYYY-MM-DD] --json-out ./snap
403
401
 
404
402
  # 第二步:系列级优化记录(可选日期;脱管账户勿依赖 -a)
405
403
  siluzan-tso optimize records --start 2026-03-01
@@ -407,7 +405,7 @@ siluzan-tso optimize records --start 2026-03-01
407
405
  # 第三步:广告系列级明细(parentId = 上一步 list 里某批次的 id / entityId)
408
406
  siluzan-tso optimize children --parent-id <parentId>
409
407
 
410
- # 单条详情:id 可为 list 批次 id,或 records --json 的 items[].id
408
+ # 单条详情:id 可为 list 批次 id,或 records --json-out ./snap 的 items[].id
411
409
  siluzan-tso optimize get --id <recordUuid>
412
410
 
413
411
  # 根据建议执行操作(以"暂停低效广告组"为例)
@@ -483,7 +481,7 @@ siluzan-tso forewarning delete -m Google --id <ruleId>
483
481
 
484
482
  ```bash
485
483
  # 查看触发了预警的账户
486
- siluzan-tso forewarning records -m Google --start 2026-03-20 --json
484
+ siluzan-tso forewarning records -m Google --start 2026-03-20 --json-out ./snap
487
485
 
488
486
  # 确认对应账户的实际消耗
489
487
  siluzan-tso stats -m Google -a <entityId> --start 2026-03-20
@@ -496,7 +494,7 @@ siluzan-tso ad campaign-status -a <mediaCustomerId> --id <campaignId> --status P
496
494
 
497
495
  ## 流程六:优化报告生成 → 推送管理
498
496
 
499
- 对应页面:`/dataReport/optimizationReport`、`/dataReport/pushRecord`。命令与接口详解见 **`references/reporting.md`**。
497
+ 对应页面:`/dataReport/optimizationReport`、`/dataReport/pushRecord`。命令与接口详解见 **`references/analytics/reporting.md`**。
500
498
 
501
499
  ### 业务背景
502
500
 
@@ -504,7 +502,7 @@ siluzan-tso ad campaign-status -a <mediaCustomerId> --id <campaignId> --status P
504
502
 
505
503
  ```bash
506
504
  # 第一步:查询可生成报告的账户列表
507
- siluzan-tso list-accounts -m Google --json
505
+ siluzan-tso list-accounts -m Google --json-out ./snap
508
506
 
509
507
  # 第二步:批量生成上月日报(-a 传 mediaCustomerId,不是 entityId)
510
508
  siluzan-tso report create \
@@ -519,15 +517,15 @@ siluzan-tso report list -m Google --status true
519
517
 
520
518
  # 第四步:获取报告查看链接(viewUrl 字段已直接包含在输出中,无需手动拼接)
521
519
  siluzan-tso report list -m Google
522
- # 表格中 viewUrl 列即为可点击的网页链接;--json 输出时每条记录含 viewUrl 字段
520
+ # 表格中 viewUrl 列即为可点击的网页链接;--json-out 落盘时每条记录含 viewUrl 字段
523
521
 
524
522
  # 第五步:查看推送配置列表(是否已开启自动推送;接口同 GET .../query/report-push/settings/Google)
525
523
  siluzan-tso report push list -m Google
526
- # siluzan-tso report push list -m Google --json # items[].entityId / id 用于启停删、history、update
527
- # siluzan-tso report push receive-emails -m Google [--json] # 历史收件邮箱,与网页推送配置下拉同源
524
+ # siluzan-tso report push list -m Google --json-out ./snap # items[].entityId / id 用于启停删、history、update
525
+ # siluzan-tso report push receive-emails -m Google [--json-out ./snap] # 历史收件邮箱,与网页推送配置下拉同源
528
526
 
529
527
  # 推送记录(网页 /dataReport/pushRecord?entityId=...)
530
- # siluzan-tso report push history -m Google --setting-id <推送规则entityId> --json
528
+ # siluzan-tso report push history -m Google --setting-id <推送规则entityId> --json-out ./snap
531
529
 
532
530
  # 新建 / 编辑(网页弹窗;--media-accounts 为 ma.entityId)
533
531
  # siluzan-tso report push create -m Google --name "..." --media-accounts <id,...> --emails a@b.com --types Daily
@@ -545,7 +543,7 @@ siluzan-tso report delete --ids <id1>,<id2>
545
543
 
546
544
  ## 流程六点五:账户分析报告(CLI 拉数 + Agent 撰稿)
547
545
 
548
- 对应能力:`google-analysis`、`report meta-overview`、`report tiktok-*`、`report bing-*` 与 `report-templates/*.md`。子命令与模板索引见 **`references/account-analytics.md`**。
546
+ 对应能力:`google-analysis`、`report meta-overview`、`report tiktok-*`、`report bing-*` 与 `report-templates/*.md`。子命令与模板索引见 **`references/analytics/account-analytics.md`**。
549
547
 
550
548
  ### 与流程六的区别
551
549
 
@@ -573,11 +571,11 @@ siluzan-tso report delete --ids <id1>,<id2>
573
571
 
574
572
  ```bash
575
573
  # 第一步:查询可开票订单(按媒体和币种筛选)
576
- siluzan-tso invoice billable -m Google -c USD --json
574
+ siluzan-tso invoice billable -m Google -c USD --json-out ./snap
577
575
  # 记录目标订单的 entityId(字段名 entityId,不是过时的 billId)
578
576
 
579
577
  # 若需要查询钱包充值的可开票金额
580
- siluzan-tso invoice billable --wallet --json
578
+ siluzan-tso invoice billable --wallet --json-out ./snap
581
579
 
582
580
  # 第二步:提交开票申请(USD 订单示例:仅 PI + 英文抬头与地址)
583
581
  siluzan-tso invoice apply \
@@ -590,7 +588,7 @@ siluzan-tso invoice apply \
590
588
  --recipient-name "张三" \
591
589
  --recipient-phone 13800138000
592
590
 
593
- # 人民币订单请使用 --invoice-type VATI 或 VATSI,并填写 --company-name、--tax-id、--title、--company-phone 等(见 finance.md)
591
+ # 人民币订单请使用 --invoice-type VATI 或 VATSI,并填写 --company-name、--tax-id、--title、--company-phone 等(见 accounts/finance.md)
594
592
 
595
593
  # 第三步:查询开票申请状态
596
594
  siluzan-tso invoice list --start 2026-03-01
@@ -600,7 +598,7 @@ siluzan-tso invoice list --start 2026-03-01
600
598
 
601
599
  ## 流程八:广告线索数据提取与跟进
602
600
 
603
- 对应页面:`/clue-form`。`clue` 命令参数见 **`references/clue.md`**。
601
+ 对应页面:`/clue-form`。`clue` 命令参数见 **`references/operations/clue.md`**。
604
602
 
605
603
  ### 业务背景
606
604
 
@@ -609,7 +607,7 @@ siluzan-tso invoice list --start 2026-03-01
609
607
  ```bash
610
608
  # 第一步:确认有哪些 TikTok/Meta 账户
611
609
  siluzan-tso list-accounts -m TikTok
612
- siluzan-tso list-accounts --json | Select-String "MetaAd" # 或用 --json 过滤
610
+ siluzan-tso list-accounts --json-out ./snap | Select-String "MetaAd" # 或用 --json-out ./snap 过滤
613
611
 
614
612
  # 第二步:拉取 TikTok 线索(按区域分类查看)
615
613
  # 全部区域
@@ -619,28 +617,28 @@ siluzan-tso clue -m TikTok -a <advertiserId>
619
617
  siluzan-tso clue -m TikTok -a <advertiserId> --region eu
620
618
 
621
619
  # 导出为 JSON 供后续处理
622
- siluzan-tso clue -m TikTok -a <advertiserId> --json > tiktok-leads.json
620
+ siluzan-tso clue -m TikTok -a <advertiserId> --json-out ./snap > tiktok-leads.json
623
621
 
624
622
  # 第三步:拉取 Meta 线索(指定日期范围)
625
623
  siluzan-tso clue -m Meta -a <pageId> \
626
624
  --start 2026-03-01 \
627
625
  --end 2026-03-31 \
628
- --json > meta-leads.json
626
+ --json-out ./snap > meta-leads.json
629
627
  ```
630
628
 
631
629
  **定期线索提取(建议每日/每周执行)**:
632
630
 
633
631
  ```bash
634
632
  # TikTok 全账户线索(如有多个 advertiserId,逐个执行)
635
- siluzan-tso list-accounts -m TikTok --json
633
+ siluzan-tso list-accounts -m TikTok --json-out ./snap
636
634
  # 对每个账户:
637
- siluzan-tso clue -m TikTok -a <advertiserId> --json
635
+ siluzan-tso clue -m TikTok -a <advertiserId> --json-out ./snap
638
636
 
639
637
  # Meta 线索(本周)
640
638
  siluzan-tso clue -m Meta -a <pageId> \
641
639
  --start 2026-03-17 \
642
640
  --end 2026-03-20 \
643
- --json
641
+ --json-out ./snap
644
642
  ```
645
643
 
646
644
  ---
@@ -657,7 +655,7 @@ siluzan-tso clue -m Meta -a <pageId> \
657
655
  # ─── 场景A:将账户分享给团队成员 ───
658
656
 
659
657
  # 第一步:确认要分享的账户 entityId
660
- siluzan-tso list-accounts -m Google --json
658
+ siluzan-tso list-accounts -m Google --json-out ./snap
661
659
  # 找到目标账户的 entityId(不是 mediaCustomerId!)
662
660
 
663
661
  # 第二步:分享给指定手机号(手机号需已在丝路赞注册)
@@ -673,7 +671,7 @@ siluzan-tso account unshare --id <entityId> --account-id <userId>
673
671
  # ─── 场景B:OAuth Token 过期,重新授权 ───
674
672
 
675
673
  # 检查账户状态(invalidOAuthToken = true 表示需要重新授权)
676
- siluzan-tso list-accounts -m Google --json
674
+ siluzan-tso list-accounts -m Google --json-out ./snap
677
675
 
678
676
  # 重新触发 OAuth 授权流程(会在浏览器打开授权页)
679
677
  siluzan-tso account auth -m Google
@@ -685,7 +683,7 @@ siluzan-tso list-accounts -m Google
685
683
  # ─── 场景C:从平台解绑账户 ───
686
684
 
687
685
  # 先查出 entityId
688
- siluzan-tso list-accounts -m Google --json
686
+ siluzan-tso list-accounts -m Google --json-out ./snap
689
687
 
690
688
  # 断开单个账户(操作前确认账户名/ID 正确)
691
689
  siluzan-tso account delink --id <entityId>
@@ -703,7 +701,7 @@ siluzan-tso list-accounts -m Google
703
701
  siluzan-tso config show
704
702
 
705
703
  # 从列表中取子账户的 mediaCustomerId(数字 ID),不是 entityId
706
- siluzan-tso list-accounts -m Google --json
704
+ siluzan-tso list-accounts -m Google --json-out ./snap
707
705
 
708
706
  # 将一个或多个子账户绑定到指定 MCC(多个 MCC ID 可用逗号或分号分隔)
709
707
  siluzan-tso account mcc-bind --customers <mediaCustomerId1>,<mediaCustomerId2> --mcc <MCC客户ID>
@@ -711,8 +709,8 @@ siluzan-tso account mcc-bind --customers <mediaCustomerId1>,<mediaCustomerId2> -
711
709
  # 解绑:从子账户上移除与某 MCC 的关联
712
710
  siluzan-tso account mcc-unbind --customers <mediaCustomerId> --mcc <MCC客户ID>
713
711
 
714
- # 需要排查接口返回时加 --json
715
- siluzan-tso account mcc-bind --customers <mediaCustomerId> --mcc <MCC客户ID> --json
712
+ # 需要排查接口返回时加 --json-out ./snap
713
+ siluzan-tso account mcc-bind --customers <mediaCustomerId> --mcc <MCC客户ID> --json-out ./snap
716
714
  ```
717
715
 
718
716
  ---
@@ -728,7 +726,7 @@ siluzan-tso account mcc-bind --customers <mediaCustomerId> --mcc <MCC客户ID> -
728
726
 
729
727
  # 查看各媒体账户余额(确保余额充足)
730
728
  # 注意:balance -a 传 mediaCustomerId(数字ID),不是 entityId
731
- siluzan-tso list-accounts -m Google --json
729
+ siluzan-tso list-accounts -m Google --json-out ./snap
732
730
  siluzan-tso balance -m Google -a <mediaCustomerId1>,<mediaCustomerId2>
733
731
  siluzan-tso balance -m TikTok -a <mediaCustomerId3>
734
732
 
@@ -753,12 +751,12 @@ siluzan-tso ad batch list --state Failed
753
751
  siluzan-tso ad batch list --state HasFailed
754
752
 
755
753
  # 检查线索数据
756
- siluzan-tso clue -m TikTok -a <advertiserId> --json
757
- siluzan-tso clue -m Meta -a <pageId> --start 2026-03-11 --end 2026-03-17 --json
754
+ siluzan-tso clue -m TikTok -a <advertiserId> --json-out ./snap
755
+ siluzan-tso clue -m Meta -a <pageId> --start 2026-03-11 --end 2026-03-17 --json-out ./snap
758
756
 
759
757
  # 查看本周优化建议(托管中)
760
758
  siluzan-tso optimize list -a <mediaCustomerId>
761
- # 已脱管:optimize list --match-media-customer-id <mediaCustomerId> --json → items[].id
759
+ # 已脱管:optimize list --match-media-customer-id <mediaCustomerId> --json-out ./snap → items[].id
762
760
  # siluzan-tso optimize get --id <id>
763
761
  # siluzan-tso optimize children --parent-id <id>
764
762
  ```
@@ -781,7 +779,7 @@ siluzan-tso transfer list -m Google
781
779
  siluzan-tso transfer list -m TikTok --start 2026-03-01 --end 2026-03-31
782
780
 
783
781
  # JSON 输出供对账使用
784
- siluzan-tso transfer list -m Google --json
782
+ siluzan-tso transfer list -m Google --json-out ./snap
785
783
 
786
784
  # 对账:转账到账后查询账户余额(传 mediaCustomerId)
787
785
  siluzan-tso balance -m Google -a <mediaCustomerId>
@@ -814,7 +812,7 @@ siluzan-tso config show # 取 webUrl
814
812
 
815
813
  ```bash
816
814
  # 如果链接或落地页异常,先确认账户 OAuth 正常
817
- siluzan-tso list-accounts -m Google --json
815
+ siluzan-tso list-accounts -m Google --json-out ./snap
818
816
  # 检查 invalidOAuthToken 字段,若为 true 则先重新授权
819
817
  siluzan-tso account auth -m Google
820
818
  ```
@@ -823,7 +821,7 @@ siluzan-tso account auth -m Google
823
821
 
824
822
  | 诊断评级 | 建议操作 |
825
823
  | ---------------- | ---------------------------------------------------- |
826
- | 优秀(85分以上) | 可直接投放;CLI 方案轨见 `google-ads-campaign-plan.md` |
824
+ | 优秀(85分以上) | 可直接投放;CLI 方案轨见 `google-ads/google-ads-campaign-plan.md` |
827
825
  | 良好(70-84分) | 建议优化后投放,可先小预算测试 |
828
826
  | 一般(60-69分) | 重点改善转化代码和页面速度后再投 |
829
827
  | 较差(60分以下) | 需先修复关键问题(参考诊断报告),否则广告效果会很差 |
@@ -842,7 +840,7 @@ siluzan-tso account auth -m Google
842
840
 
843
841
  ```bash
844
842
  # 第一步:确认要关闭的 TikTok 账户
845
- siluzan-tso list-accounts -m TikTok --json
843
+ siluzan-tso list-accounts -m TikTok --json-out ./snap
846
844
  # 记录目标账户的 mediaCustomerId
847
845
 
848
846
  # 第二步:关闭账户(操作不可恢复,请再次确认)
@@ -861,7 +859,7 @@ siluzan-tso list-accounts -m TikTok
861
859
 
862
860
  ```bash
863
861
  # 第一步:查出 Meta 账户 mediaCustomerId
864
- siluzan-tso list-accounts --json # 找到 MetaAd 类型账户的 mediaCustomerId
862
+ siluzan-tso list-accounts --json-out ./snap # 找到 MetaAd 类型账户的 mediaCustomerId
865
863
 
866
864
  # 第二步:绑定到指定 Business Manager
867
865
  siluzan-tso account bm-bind \
@@ -897,13 +895,13 @@ siluzan-tso config show # 取 webUrl
897
895
  # → 选中 Google 账户 → 点击「激活账户」→ 选择激活方式
898
896
  ```
899
897
 
900
- 激活/充值产生的账单明细可用 CLI 查询(`entityId` 来自 `list-accounts -m Google --json`):
898
+ 激活/充值产生的账单明细可用 CLI 查询(`entityId` 来自 `list-accounts -m Google --json-out ./snap`):
901
899
 
902
900
  ```bash
903
- siluzan-tso account-active-bills -m Google --id <entityId> [--json]
901
+ siluzan-tso account-active-bills -m Google --id <entityId> [--json-out ./snap]
904
902
  ```
905
903
 
906
- 详见 `references/accounts.md` 中 **account-active-bills**。
904
+ 详见 `references/accounts/accounts.md` 中 **account-active-bills**。
907
905
 
908
906
  ### 场景 E:Google 邮箱授权管理
909
907
 
@@ -917,7 +915,7 @@ siluzan-tso account email-auth -c <mediaCustomerId> --email user@gmail.com
917
915
  # 只读权限
918
916
  siluzan-tso account email-auth -c <mediaCustomerId> --email user@gmail.com --access-role ReadOnly
919
917
 
920
- # 撤销邀请(先从 email-auth-list --json 取 invitationId 和 resourceName)
918
+ # 撤销邀请(先从 email-auth-list --json-out ./snap 取 invitationId 和 resourceName)
921
919
  siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --resource-name <name>
922
920
  # 若邀请尚未被接受,追加 --pending
923
921
  siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --resource-name <name> --pending
@@ -942,13 +940,13 @@ siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --res
942
940
  → 与 **流程十** 相同思路:
943
941
 
944
942
  ```bash
945
- siluzan-tso list-accounts -m Google --json
943
+ siluzan-tso list-accounts -m Google --json-out ./snap
946
944
  siluzan-tso balance -m Google -a <mediaCustomerId>
947
945
  siluzan-tso stats -m Google -a <mediaCustomerId>
948
946
  siluzan-tso account-history -m Google
949
947
  ```
950
948
 
951
949
  3. **首页「服务推荐」跳转 AI / 建站 / 内容等**
952
- → 属其他产品线,见 **`references/tso-home.md`** 中的外链说明,勿用 `siluzan-tso` 冒充。
950
+ → 属其他产品线,见 **`references/misc/misc/tso-home.md`** 中的外链说明,勿用 `siluzan-tso` 冒充。
953
951
 
954
- **详细模块与接口对照** → **`references/tso-home.md`**。
952
+ **详细模块与接口对照** → **`references/misc/misc/tso-home.md`**。
@@ -1,6 +1,6 @@
1
1
  # Google 搜索广告:方案生成与系列创建
2
2
 
3
- > 所属 skill:`siluzan-tso`。**新建/规划搜索系列时 Read 本文件**,再按需打开下表子文档。命令参数与 CRUD 见 `references/google-ads.md`。
3
+ > 所属 skill:`siluzan-tso`。**新建/规划搜索系列时 Read 本文件**,再按需打开下表子文档。命令参数与 CRUD 见 `references/google-ads/google-ads.md`。
4
4
 
5
5
  ---
6
6
 
@@ -13,7 +13,7 @@
13
13
 
14
14
  - 可执行真相只有 **JSON**(`assets/campaign-create-template.json` 同构);Markdown 只读投影。
15
15
  - 改需求 **只改 JSON**,再 `campaign-validate`,再刷新 Markdown。
16
- - **PMax 系列创建暂未开放**:勿用 `ad pmax-*` 搭建命令;请在 Google Ads UI 操作。运营诊断(只读)见 `google-ads-rules/google-ads-pmax-guide.md`。
16
+ - **PMax 系列创建**走独立流水线(勿用本文件 JSON 模板):`assets/pmax-create-template.md` + `ad pmax-validate` / `ad pmax-create`;运营诊断见 `google-ads/rules/google-ads-pmax-guide.md`。
17
17
  - 搜索网络:仅 Google 搜索(`TargetSearchNetwork`/`TargetContentNetwork`/`TargetPartnerSearchNetwork` 均为 false)。
18
18
 
19
19
  ---
@@ -22,16 +22,16 @@
22
22
 
23
23
  | 步 | 动作 | 文档/命令 |
24
24
  |----|------|-----------|
25
- | 1 | `list-accounts` 锁定 `account` / `customerName` / 币种 | `references/currency.md` |
26
- | 2 | 可选 `rag query`;`keyword` / `keyword geo-list` 拓词 | `references/keyword-planner-workflows.md` |
27
- | 3 | 按分层规则写入 `KeywordsForBatchJob`(Exact/Phrase/Broad) | `google-ads-rules/google-ads-keyword-taxonomy.md`(参考,非 CLI 强制) |
25
+ | 1 | `list-accounts` 锁定 `account` / `customerName` / 币种 | `references/accounts/currency.md` |
26
+ | 2 | 可选 `rag query`;`keyword` / `keyword geo-list` 拓词 | `references/analytics/keyword-planner-workflows.md` |
27
+ | 3 | 按分层规则写入 `KeywordsForBatchJob`(Exact/Phrase/Broad) | `google-ads/rules/google-ads-keyword-taxonomy.md`(参考,非 CLI 强制) |
28
28
  | 4 | 填 `campaign`(预算/出价/地域/否词≥20/RSA/附加信息) | `assets/campaign-create-template.md` |
29
29
  | 5 | **`ad campaign-validate --config-file <json>`**(失败只改 JSON;超长见下文「超长人工确认」) | 下文「校验」 |
30
30
  | 6 | 输出:**JSON 代码块** → **Markdown**(`google-ads-launch-plan-template.md` 正文)→ 待确认 | — |
31
- | 7 | 用户确认后 **`ad campaign-create`** | `google-ads.md`|
31
+ | 7 | 用户确认后 **`ad campaign-create`** | `google-ads/google-ads.md`|
32
32
  | 8 | 每隔5s 获取创建结果| `ad batch get --id <taskId> --config-file ./campaign.json` |
33
33
  | 9 | 创建失败根据失败原因修改json重新走创建流程,部分成功/成功/部分失败:都调用来做最后一步调整 `ad batch diff --batch-id <taskId> --config-file ./campaign.json` | |
34
- | 10 | 输出所有失败的内容与原因,并询问用户是否需要修改后单独添加到系列中如果用户要求是则读取 `references\google-ads.md` 来获取对应缺失部分的创建命令 |
34
+ | 10 | 输出所有失败的内容与原因,并询问用户是否需要修改后单独添加到系列中如果用户要求是则读取 `references\google-ads/google-ads.md` 来获取对应缺失部分的创建命令 |
35
35
 
36
36
 
37
37
 
@@ -45,26 +45,26 @@
45
45
 
46
46
  | 文档 | 用途 |
47
47
  |------|------|
48
- | `google-ads-rules/google-ads-keyword-taxonomy.md` | 核心/长尾与匹配块**建议**(Agent 参考,CLI 不强制) |
49
- | `google-ads-rules/google-ads-compliance.md` | 词与文案合规 |
50
- | `google-ads-rules/sensitive-industries.md` | 敏感行业(若相关) |
51
- | `google-ads-rules/google-ads-launch-plan-template.md` | 用户可见 Markdown 结构与 RSA/否词表 |
52
- | `google-ads-rules/google-ads-creative-optimization.md` | RSA 12–15 条、Callout/Sitelink |
48
+ | `google-ads/rules/google-ads-keyword-taxonomy.md` | 核心/长尾与匹配块**建议**(Agent 参考,CLI 不强制) |
49
+ | `google-ads/rules/google-ads-compliance.md` | 词与文案合规 |
50
+ | `google-ads/rules/sensitive-industries.md` | 敏感行业(若相关) |
51
+ | `google-ads/rules/google-ads-launch-plan-template.md` | 用户可见 Markdown 结构与 RSA/否词表 |
52
+ | `google-ads/rules/google-ads-creative-optimization.md` | RSA 12–15 条、Callout/Sitelink |
53
53
  | `assets/campaign-create-template.md` | JSON 字段契约 |
54
54
 
55
55
  ### 按需(触及时再读)
56
56
 
57
57
  | 文档 | 何时 |
58
58
  |------|------|
59
- | `google-ads-rules/google-ads-keyword-strategy.md` | 分组/匹配/否定词策略争议 |
60
- | `google-ads-rules/google-ads-campaign-optimization.md` | 出价策略、预算、学习期 |
61
- | `google-ads-rules/google-ads-landing-page-discovery-via-webfetch.md` | 仅首页、需推断 PDP/PLP |
62
- | `google-ads-rules/google-ads-conversion-architecture.md` | 转化/EC/归因说明 |
63
- | `google-ads-rules/google-ads-keyword-optimization.md` | 上线后优化,非首建 |
64
- | `google-ads-rules/google-ads-account-audit.md` | 账户诊断,非首建 |
65
- | `google-ads-rules/google-ads-audience-strategy.md` | 受众/RLSA |
66
- | `google-ads-rules/google-ads-pmax-guide.md` | PMax 运营/诊断(只读参考;**CLI 搭建暂未开放**) |
67
- | `references/pmax-api.md` | PMax 网关路径(开发参考;生产勿调用搭建命令) |
59
+ | `google-ads/rules/google-ads-keyword-strategy.md` | 分组/匹配/否定词策略争议 |
60
+ | `google-ads/rules/google-ads-campaign-optimization.md` | 出价策略、预算、学习期 |
61
+ | `google-ads/rules/google-ads-landing-page-discovery-via-webfetch.md` | 仅首页、需推断 PDP/PLP |
62
+ | `google-ads/rules/google-ads-conversion-architecture.md` | 转化/EC/归因说明 |
63
+ | `google-ads/rules/google-ads-keyword-optimization.md` | 上线后优化,非首建 |
64
+ | `google-ads/rules/google-ads-account-audit.md` | 账户诊断,非首建 |
65
+ | `google-ads/rules/google-ads-audience-strategy.md` | 受众/RLSA |
66
+ | `google-ads/rules/google-ads-pmax-guide.md` | PMax 运营/诊断;**创建**见 `assets/pmax-create-template.md` |
67
+ | `references/google-ads/pmax-api.md` | PMax 网关路径与 Search API 边界 |
68
68
 
69
69
  复述给用户:**3–5 条**与本次任务相关的合规/策略要点即可,无需罗列全部文件名。
70
70
 
@@ -74,7 +74,7 @@
74
74
 
75
75
  ```bash
76
76
  siluzan-tso ad campaign-validate --config-file ./campaign.json --json-out ./snap-campaign
77
- siluzan-tso ad campaign-validate --config-file ./campaign.json [--json] [--write-normalized <path>]
77
+ siluzan-tso ad campaign-validate --config-file ./campaign.json [--json-out ./snap] [--write-normalized <path>]
78
78
  siluzan-tso ad campaign-create --config-file ./campaign.json
79
79
  siluzan-tso ad batch get --id <taskId> --config-file ./campaign.json
80
80
  siluzan-tso ad batch diff --batch-id <taskId> --config-file ./campaign.json
@@ -87,16 +87,16 @@ validate 与 create **共用** `runCampaignCreateValidation`:词面规范化 +
87
87
 
88
88
  标题/描述/Path/关键词/Sitelink 超限时 CLI **报错阻断**,不会在 JSON 里静默改短。
89
89
 
90
- 1. 使用 **`ad campaign-validate --config-file <json> --json-out <dir>`**(与 create/batch 同一落盘目录),读落盘文件中的 `lengthViolations`(每项含 `path`、`limit`、`actual`、**完整** `text`)。小文件可用 `--json` 代替。
90
+ 1. 使用 **`ad campaign-validate --config-file <json> --json-out <dir>`**(与 create/batch 同一落盘目录),读落盘文件中的 `lengthViolations`(每项含 `path`、`limit`、`actual`、**完整** `text`)。
91
91
  2. Agent 将 **全部** 超长条目整理成表(路径、原文、上限、超出量),并为每条给出 **1–2 个改写方案**(保留卖点、符合字符计数;CJK 按 2 计见 `google-ads-compliance.md` §3.2.1)。
92
92
  3. **用户确认**选用方案后,Agent **只改 JSON 对应字段**,再执行 `campaign-validate`;通过后再 `campaign-create`。
93
93
  4. **禁止**:未确认前 `slice`/省略号截断、仅改 `--write-normalized` 而不经用户确认。
94
94
 
95
- 人读模式失败时 CLI 会额外打印「📏 超长内容清单」;`--json-out` / `--json` 时见 `lengthViolations` + `agentHint`。
95
+ 人读模式失败时 CLI 会额外打印「📏 超长内容清单」;`--json-out` 时见 `lengthViolations` + `agentHint`。
96
96
 
97
97
  ---
98
98
 
99
99
  ## 已上线后的修改
100
100
 
101
- - **勿**用 `campaign-create` 覆盖已有系列;用 `ad campaign-edit` / `adgroup-*` / `keyword-*` / `ad-edit` 等(见 `google-ads.md`)。
101
+ - **勿**用 `campaign-create` 覆盖已有系列;用 `ad campaign-edit` / `adgroup-*` / `keyword-*` / `ad-edit` 等(见 `google-ads/google-ads.md`)。
102
102
  - 若属「推倒重建」:更新 JSON → validate → 新系列 `campaign-create` 或删系列后重提。