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
@@ -1,18 +1,18 @@
1
1
  # 宿主编排:三类 Google 投放自控(详细步骤)
2
2
 
3
- > **主题索引**:[`hosted-automation-scenarios.md`](hosted-automation-scenarios.md)
3
+ > **主题索引**:[`operations/hosted-automation-scenarios.md`](operations/hosted-automation-scenarios.md)
4
4
  > **编排责任**:定时、多条件 IF、滑动时间窗、通知(含 P1 /「空耗熔断」文案)由 **OpenClaw / WorkBuddy / Cron** 等宿主实现。
5
5
  > **本页责任**:说明如何用 `siluzan-tso` **拉检查项**、**执行最终写操作**、**写后复核**。
6
6
 
7
7
  **必读交叉引用**:
8
8
 
9
- - 金额与展示:`SKILL.md`「金额与货币单位硬约束」;**`ad campaigns --json` 的 `budget` 已为元**;组级等 `*Display` 与原始分字段关系见 `references/google-ads.md`、`ad groups` 的 `--json` 说明。
10
- - `--json` 与 Node 过滤:`references/tips.md`
11
- - 写命令语法:`references/google-ads.md`(系列编辑、广告组编辑、启停等)
12
- - 账户/维度分析、时间窗:`references/account-analytics.md`
13
- - **异常监控**(余额、小时花费、落地页、拒审等 **`--json` 键名**):[`hosted-automation-monitoring-json.md`](hosted-automation-monitoring-json.md)
9
+ - 金额与展示:`SKILL.md`「金额与货币单位硬约束」;**`ad campaigns --json-out ./snap` 的 `budget` 已为元**;组级等 `*Display` 与原始分字段关系见 `references/google-ads/google-ads.md`、`ad groups` 的 `--json-out` 说明。
10
+ - `--json-out` 与 Node 过滤:`references/core/tips.md`
11
+ - 写命令语法:`references/google-ads/google-ads.md`(系列编辑、广告组编辑、启停等)
12
+ - 账户/维度分析、时间窗:`references/analytics/account-analytics.md`
13
+ - **异常监控**(余额、小时花费、落地页、拒审等 **`--json-out` 落盘 JSON 键名**):[`operations/hosted-automation-monitoring-json.md`](operations/hosted-automation-monitoring-json.md)
14
14
 
15
- **前置**:已 `siluzan-tso login`,并已用 `list-accounts -m Google -k <mediaCustomerId> --json` 确认账户与 `mediaCustomerId`。
15
+ **前置**:已 `siluzan-tso login`,并已用 `list-accounts -m Google -k <mediaCustomerId> --json-out ./snap` 确认账户与 `mediaCustomerId`。
16
16
 
17
17
  ---
18
18
 
@@ -22,17 +22,17 @@
22
22
 
23
23
  「今日累计」口径须与宿主配置一致。默认建议 **账户业务日 `Asia/Shanghai`** 的日历日;若宿主使用 UTC 或其他时区,须在配置中固定并在以下命令的 `--start` / `--end` 中显式换算为 **`YYYY-MM-DD`**,**不要**在文档未约定时自行假设。
24
24
 
25
- ### 检查项常用 JSON 字段(以当次 `siluzan-tso … --json` 为准)
25
+ ### 检查项常用 JSON 字段(以当次 `siluzan-tso … --json-out ./snap` 为准)
26
26
 
27
27
  | 检查意图 | 可关注的 JSON 字段(键名以实际 stdout 为准) |
28
28
  | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
29
29
  | 周期内费用 | 系列/组/创意列表中的 **`spend`**;报表类子命令中带费用的指标字段 |
30
- | 日预算与费用比 | **`ad campaigns --json`**:`**budget`**(CLI 已为元)与 **`spend`**;比较时须**统一货币与单位\*\*(见 `SKILL.md` 金额硬规范) |
30
+ | 日预算与费用比 | **`ad campaigns --json-out ./snap`**:`**budget`**(CLI 已为元)与 **`spend`**;比较时须**统一货币与单位\*\*(见 `SKILL.md` 金额硬规范) |
31
31
  | 转化次数 | **`conversions`**(或报表里等价字段名) |
32
32
  | 实际 CPA | 宿主侧 **`spend / conversions`**(`conversions` 为 0 时不做 CPA 判断) |
33
- | 目标 CPA(系列 / 组) | 系列列表 JSON 中的 **`targetCpa_BidingAmount`** 等;组列表 **`ad groups --json`** 中的 **`targetCpaAmount`**(写入口径见 `google-ads.md`「广告组编辑」) |
33
+ | 目标 CPA(系列 / 组) | 系列列表 JSON 中的 **`targetCpa_BidingAmount`** 等;组列表 **`ad groups --json-out ./snap`** 中的 **`targetCpaAmount`**(写入口径见 `google-ads/google-ads.md`「广告组编辑」) |
34
34
 
35
- 若某条检查所需字段在**当前** `--json` 中不存在,**禁止猜测**:先换用 `references/account-analytics.md` 中其它子命令拉数,或与维护方确认是否需扩展 `siluzan-tso`;宿主侧不得编造字段。
35
+ 若某条检查所需字段在**当前**落盘 JSON 中不存在,**禁止猜测**:先换用 `references/analytics/account-analytics.md` 中其它子命令拉数,或与维护方确认是否需扩展 `siluzan-tso`;宿主侧不得编造字段。
36
36
 
37
37
  ---
38
38
 
@@ -46,7 +46,7 @@
46
46
  2. 拉系列列表(**统计日 = 当日**,起止同为该日或业务日定义):
47
47
 
48
48
  ```bash
49
- siluzan-tso ad campaigns -a <mediaCustomerId> --start <YYYY-MM-DD> --end <YYYY-MM-DD> --json
49
+ siluzan-tso ad campaigns -a <mediaCustomerId> --start <YYYY-MM-DD> --end <YYYY-MM-DD> --json-out ./snap
50
50
  ```
51
51
 
52
52
  3. 对 `items[]` 中每条系列(`id` 为系列 ID):
@@ -63,7 +63,7 @@ siluzan-tso ad campaign-status -a <mediaCustomerId> --id <campaignId> --status P
63
63
  ### 写后复核
64
64
 
65
65
  ```bash
66
- siluzan-tso ad campaigns -a <mediaCustomerId> --start <当日> --end <当日> --json
66
+ siluzan-tso ad campaigns -a <mediaCustomerId> --start <当日> --end <当日> --json-out ./snap
67
67
  ```
68
68
 
69
69
  确认该 `id` 的 **`statusV2`**(或等价状态字段)为 **`Paused`**。
@@ -78,7 +78,7 @@ siluzan-tso ad campaign-status -a <mediaCustomerId> --id <campaignId> --status E
78
78
 
79
79
  | 状态 | 说明 |
80
80
  | ---- | --------------------------------------------------------------------------------------- |
81
- | 有 | 读:`ad campaigns --json`;写:`ad campaign-status`;复核:再次 `ad campaigns --json`。 |
81
+ | 有 | 读:`ad campaigns --json-out ./snap`;写:`ad campaign-status`;复核:再次 `ad campaigns --json-out ./snap`。 |
82
82
 
83
83
  ---
84
84
 
@@ -87,15 +87,15 @@ siluzan-tso ad campaign-status -a <mediaCustomerId> --id <campaignId> --status E
87
87
  **业务目标**:在过去 **X 小时**(或等价滑动窗口,由宿主定义)内 **`conversions ≥ 3`** 且 **实际 CPA > 目标 CPA × 飙升阈值**(如 **1.3**)时降价:
88
88
 
89
89
  - 系列为 **tCPA**:下调 **target_cpa** 约 **10%–15%**(具体比例配置在宿主)。
90
- - **eCPC**:下调 **cpc_bid_ceiling** 约 **15%**(系列侧多为 `ad campaign-edit --bid-ceiling` 等,见 `google-ads.md`;组侧手动上限可用 **`ad adgroup-edit --max-cpc`**,策略以实际账户为准)。
90
+ - **eCPC**:下调 **cpc_bid_ceiling** 约 **15%**(系列侧多为 `ad campaign-edit --bid-ceiling` 等,见 `google-ads/google-ads.md`;组侧手动上限可用 **`ad adgroup-edit --max-cpc`**,策略以实际账户为准)。
91
91
 
92
92
  ### 检查项(宿主每轮执行)
93
93
 
94
- 1. **时间窗**:由宿主将「过去 X 小时」映射为 **`--start` / `--end`**(或按小时粒度拆多次拉取再聚合,以 `account-analytics.md` 与接口能力为准)。
94
+ 1. **时间窗**:由宿主将「过去 X 小时」映射为 **`--start` / `--end`**(或按小时粒度拆多次拉取再聚合,以 `analytics/account-analytics.md` 与接口能力为准)。
95
95
  2. **拉数**(至少覆盖费用、转化;字段以实际 JSON 为准):
96
- - 系列维度:`ad campaigns … --json`
97
- - 组维度:`ad groups … --json`
98
- - 若列表不足以算「过去 X 小时」,使用 **`account-analytics`** 或报表子命令中可下到系列/组且带时间粒度的接口(见 `account-analytics.md`)。
96
+ - 系列维度:`ad campaigns … --json-out ./snap`
97
+ - 组维度:`ad groups … --json-out ./snap`
98
+ - 若列表不足以算「过去 X 小时」,使用 **`account-analytics`** 或报表子命令中可下到系列/组且带时间粒度的接口(见 `analytics/account-analytics.md`)。
99
99
  3. 对候选对象:
100
100
  - `conversions`(窗口内)**≥ 3**
101
101
  - `actual_cpa = spend / conversions`(`conversions > 0`)
@@ -113,7 +113,7 @@ siluzan-tso ad campaign-edit -a <mediaCustomerId> --id <campaignId> --target-cpa
113
113
  # siluzan-tso ad campaign-edit ... --bid-ceiling <主币种金额> --bidding TARGET_SPEND
114
114
  ```
115
115
 
116
- 参数与单位见 **`references/google-ads.md`**「ad campaign-edit」金额单位说明。
116
+ 参数与单位见 **`references/google-ads/google-ads.md`**「ad campaign-edit」金额单位说明。
117
117
 
118
118
  **广告组**:
119
119
 
@@ -123,14 +123,14 @@ siluzan-tso ad adgroup-edit -a <mediaCustomerId> --id <adGroupId> --target-cpa <
123
123
  siluzan-tso ad adgroup-edit -a <mediaCustomerId> --id <adGroupId> --max-cpc <主币种金额>
124
124
  ```
125
125
 
126
- 见 **`references/google-ads.md`**「广告组编辑」。
126
+ 见 **`references/google-ads/google-ads.md`**「广告组编辑」。
127
127
 
128
- 写前**必须**先 **`ad groups --json` / `ad campaigns --json`** 取当前值,**读取主币种金额**:组侧读 `maxCPCAmountYuan` / `targetCpaAmountYuan`(元);系列列表侧 `ad campaigns` 的 `budget` 也是元(与写参 `--budget` 一致);`google-analysis campaigns-*.json` 的 `budgetAmountYuan` 同。在宿主内按主币种算新值(如下调 12%:`newYuan = round(oldYuan * 0.88 * 100) / 100`),再以主币种金额作为 `--target-cpa` / `--max-cpc` / `--budget` 传回。
128
+ 写前**必须**先 **`ad groups --json-out ./snap` / `ad campaigns --json-out ./snap`** 取当前值,**读取主币种金额**:组侧读 `maxCPCAmountYuan` / `targetCpaAmountYuan`(元);系列列表侧 `ad campaigns` 的 `budget` 也是元(与写参 `--budget` 一致);`google-analysis campaigns-*.json` 的 `budgetAmountYuan` 同。在宿主内按主币种算新值(如下调 12%:`newYuan = round(oldYuan * 0.88 * 100) / 100`),再以主币种金额作为 `--target-cpa` / `--max-cpc` / `--budget` 传回。
129
129
  **严禁** 自己再做 `÷100` / `÷1_000_000` 换算——`*Yuan` 字段已经是元,再换算就是错的。
130
130
 
131
131
  ### 写后复核
132
132
 
133
- 再次 **`ad campaigns --json`** 或 **`ad groups --json`**:
133
+ 再次 **`ad campaigns --json-out ./snap`** 或 **`ad groups --json-out ./snap`**:
134
134
 
135
135
  - 优先比对 **`*Display` 字段**(主币种)与预期主币种金额一致;
136
136
  - 整数字段 `targetCpa_BidingAmount` / `targetCpaAmount` / `maxCPCAmount` / `budget` 应等于 `主币种 × 100` 后的整数。
@@ -153,7 +153,7 @@ siluzan-tso ad adgroup-edit -a <mediaCustomerId> --id <adGroupId> --max-cpc <主
153
153
  2. **广告组**:
154
154
 
155
155
  ```bash
156
- siluzan-tso ad groups -a <mediaCustomerId> --start <当日> --end <当日> --json
156
+ siluzan-tso ad groups -a <mediaCustomerId> --start <当日> --end <当日> --json-out ./snap
157
157
  ```
158
158
 
159
159
  对 `items[]`:读取 **`spend`**(费用)、**`conversions`**;目标 CPA 来自 **`targetCpaAmount`** 与 **`toDisplayMoney` 逆运算** 或宿主配置的「目标 CPA(主币种)」;计算 `limit = target_cpa_main_currency * N`(**N** 为配置)。
@@ -163,7 +163,7 @@ siluzan-tso ad groups -a <mediaCustomerId> --start <当日> --end <当日> --jso
163
163
  3. **广告(创意)**级:若策略在创意维熔断:
164
164
 
165
165
  ```bash
166
- siluzan-tso ad list -a <mediaCustomerId> --start <当日> --end <当日> --json
166
+ siluzan-tso ad list -a <mediaCustomerId> --start <当日> --end <当日> --json-out ./snap
167
167
  ```
168
168
 
169
169
  同样判断费用与转化;命中则 **`ad ad-status`**。
@@ -176,7 +176,7 @@ siluzan-tso ad adgroup-status -a <mediaCustomerId> --id <adGroupId> --status Pau
176
176
  siluzan-tso ad ad-status -a <mediaCustomerId> --id <adId> --status Paused
177
177
  ```
178
178
 
179
- (`ad-status` 若需 `--start`/`--end` 见 `google-ads.md`。)
179
+ (`ad-status` 若需 `--start`/`--end` 见 `google-ads/google-ads.md`。)
180
180
 
181
181
  ### 通知(宿主)
182
182
 
@@ -185,7 +185,7 @@ siluzan-tso ad ad-status -a <mediaCustomerId> --id <adId> --status Paused
185
185
  ### 写后复核
186
186
 
187
187
  ```bash
188
- siluzan-tso ad groups -a <mediaCustomerId> --start <当日> --end <当日> --json
188
+ siluzan-tso ad groups -a <mediaCustomerId> --start <当日> --end <当日> --json-out ./snap
189
189
  # 或 ad list …
190
190
  ```
191
191
 
@@ -204,7 +204,7 @@ siluzan-tso ad groups -a <mediaCustomerId> --start <当日> --end <当日> --jso
204
204
  | 步骤 | 说明 |
205
205
  | ---- | ------------------------------------------------------------ |
206
206
  | 1 | 配置:账户列表、系数、N、X 小时、白名单、是否自动写、通知 |
207
- | 2 | 每轮:`list-accounts` 或固定 `mediaCustomerId` → 拉 `--json` |
207
+ | 2 | 每轮:`list-accounts` 或固定 `mediaCustomerId` → 拉 `--json-out` |
208
208
  | 3 | 宿主内算 IF(本页公式) |
209
209
  | 4 | 命中则调用写命令(可批量,注意 API 限速) |
210
210
  | 5 | 每写一条即复核读;失败重试与告警由宿主处理 |
@@ -8,31 +8,31 @@
8
8
 
9
9
  | 提醒名称 | 系统在后台默默帮你做什么?(自动动作) | 文档(references) |
10
10
  | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
11
- | 1. 单日预算熔断 | 当日系列 **花费**相对**日预算**达到设定比例(如 ≥110%,可配 110%–120% 抗延迟)时,**暂停 Campaign**;恢复需人工加预算后再启用。 | [场景 1 · 单日预算熔断](hosted-automation-self-control.md) · [`google-ads.md`](google-ads.md)(`ad campaigns`、`ad campaign-status`、预算口径) · [`tips.md`](tips.md)(`--json`) |
12
- | 2. CPA 飙升自动降价 | 滑动时间窗内 **转化数**达置信阈值且 **实际 CPA** 高于 **目标 CPA×飙升比例** 时,在 **Campaign / Ad Group** 上**下调** tCPA 或 eCPC 等**出价上限**(具体策略依账户)。 | [场景 2 · CPA 飙升自动降价](hosted-automation-self-control.md) · [`hosted-automation-optimize-weak-downbid.md`](hosted-automation-optimize-weak-downbid.md)(组/创意侧降价关停,可与宿主组合) · [`google-ads.md`](google-ads.md)(`campaign-edit`、`adgroup-edit`) · [`account-analytics.md`](account-analytics.md)(窗口粒度不足时的报表拉数) |
13
- | 3. 连续空耗自动暂停 | **当日**累计 **花费 ≥ 目标 CPA×N** 且 **转化为 0** 时,**暂停**广告组或创意;宿主发 **P1** 且文案含 **「空耗熔断」**。 | [场景 3 · 连续空耗自动暂停](hosted-automation-self-control.md) · [`google-ads.md`](google-ads.md)(`ad groups`、`ad list`、`adgroup-status`、`ad-status`) · [`hosted-automation-monitoring-json.md`](hosted-automation-monitoring-json.md)(JSON 键名勿套用 Google Ads API 官方名) |
11
+ | 1. 单日预算熔断 | 当日系列 **花费**相对**日预算**达到设定比例(如 ≥110%,可配 110%–120% 抗延迟)时,**暂停 Campaign**;恢复需人工加预算后再启用。 | [场景 1 · 单日预算熔断](operations/hosted-automation-self-control.md) · [`google-ads/google-ads.md`](google-ads/google-ads.md)(`ad campaigns`、`ad campaign-status`、预算口径) · [`core/tips.md`](core/tips.md)(`--json-out`) |
12
+ | 2. CPA 飙升自动降价 | 滑动时间窗内 **转化数**达置信阈值且 **实际 CPA** 高于 **目标 CPA×飙升比例** 时,在 **Campaign / Ad Group** 上**下调** tCPA 或 eCPC 等**出价上限**(具体策略依账户)。 | [场景 2 · CPA 飙升自动降价](operations/hosted-automation-self-control.md) · [`operations/hosted-automation-optimize-weak-downbid.md`](operations/hosted-automation-optimize-weak-downbid.md)(组/创意侧降价关停,可与宿主组合) · [`google-ads/google-ads.md`](google-ads/google-ads.md)(`campaign-edit`、`adgroup-edit`) · [`analytics/account-analytics.md`](analytics/account-analytics.md)(窗口粒度不足时的报表拉数) |
13
+ | 3. 连续空耗自动暂停 | **当日**累计 **花费 ≥ 目标 CPA×N** 且 **转化为 0** 时,**暂停**广告组或创意;宿主发 **P1** 且文案含 **「空耗熔断」**。 | [场景 3 · 连续空耗自动暂停](operations/hosted-automation-self-control.md) · [`google-ads/google-ads.md`](google-ads/google-ads.md)(`ad groups`、`ad list`、`adgroup-status`、`ad-status`) · [`operations/hosted-automation-monitoring-json.md`](operations/hosted-automation-monitoring-json.md)(JSON 键名勿套用 Google Ads API 官方名) |
14
14
 
15
- **总索引**:[`hosted-automation-scenarios.md`](hosted-automation-scenarios.md) · **自控全文**:[`hosted-automation-self-control.md`](hosted-automation-self-control.md) · **金额硬规范**(展示用 `*Display` 等):[`SKILL.md`](../SKILL.md)「金额与货币单位硬约束」。
15
+ **总索引**:[`operations/hosted-automation-scenarios.md`](operations/hosted-automation-scenarios.md) · **自控全文**:[`operations/hosted-automation-self-control.md`](operations/hosted-automation-self-control.md) · **金额硬规范**(展示用 `*Display` 等):[`SKILL.md`](../SKILL.md)「金额与货币单位硬约束」。
16
16
 
17
17
  ## 异常监控与报警系统
18
18
 
19
- 编排(定时、HTTP 探活、通知)在宿主;**读哪些 JSON 字段、用什么命令** 以 **[`hosted-automation-monitoring-json.md`](hosted-automation-monitoring-json.md)** 为准(键名以当次 `--json` 为准,勿套用 Google Ads API 官方字段名解析本 CLI 输出)。
19
+ 编排(定时、HTTP 探活、通知)在宿主;**读哪些 JSON 字段、用什么命令** 以 **[`operations/hosted-automation-monitoring-json.md`](operations/hosted-automation-monitoring-json.md)** 为准(键名以当次 `--json-out` 落盘 JSON 为准,勿套用 Google Ads API 官方字段名解析本 CLI 输出)。
20
20
 
21
- | 功能名称 | 监控层级 / 说明 | CLI 检查入口(`--json`) |
21
+ | 功能名称 | 监控层级 / 说明 | CLI 检查入口(`--json-out`) |
22
22
  | ----------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
23
- | 1. 账户被封禁 | 账户级;与 Google `CustomerStatus` 及 `list-accounts` 的字段映射**暂不写进本 skill**,由宿主约定。 | `list-accounts`、`balance` 等见 [`accounts.md`](accounts.md) |
23
+ | 1. 账户被封禁 | 账户级;与 Google `CustomerStatus` 及 `list-accounts` 的字段映射**暂不写进本 skill**,由宿主约定。 | `list-accounts`、`balance` 等见 [`accounts/accounts.md`](accounts/accounts.md) |
24
24
  | 2. 落地页死链强停 | URL 不可用或跳错页时暂停关联创意,避免无效消耗。 | **`google-analysis --sections final-urls`**;或 **`ad list`** / **`google-analysis --sections ads`** 取落地页字段后由宿主 HTTP 校验 |
25
- | 3. 广告素材拒审 | 创意政策状态异常时告警或配合工单。 | **`ad list`** / **`google-analysis --sections ads`**:`policyApprovalStatusV2`、`approvalStatusDetails` 等(见 **[`google-ads.md`](google-ads.md)**) |
25
+ | 3. 广告素材拒审 | 创意政策状态异常时告警或配合工单。 | **`ad list`** / **`google-analysis --sections ads`**:`policyApprovalStatusV2`、`approvalStatusDetails` 等(见 **[`google-ads/google-ads.md`](google-ads/google-ads.md)**) |
26
26
  | 4. 花费异动监控 | 系列或账户维度花费相对历史异常波动。 | **`google-analysis --sections campaign-hour`**:按 `campaignId` + `date` + `hour` 看 **`spend`** |
27
27
  | 5. 余额枯竭预警 | 余额过低或按日均推算续航不足。 | **`balance-scan`**(`balance`、`remainingDays`、`hitReason`、`meta`)或 **`balance`** / **`google-analysis --sections overview`**(`remainingAccountBudget`、`averageDailyCost` 等) |
28
28
 
29
29
  ## 自动优化
30
30
 
31
- 编排与阈值在宿主;**命令、JSON 键名、聚合与写后复核** 见 **[`hosted-automation-optimize-index.md`](hosted-automation-optimize-index.md)**(及链出的三份 SOP)。
31
+ 编排与阈值在宿主;**命令、JSON 键名、聚合与写后复核** 见 **[`operations/hosted-automation-optimize-index.md`](operations/hosted-automation-optimize-index.md)**(及链出的三份 SOP)。
32
32
 
33
33
  | 功能名称 | 说明 | SOP |
34
34
  | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------ |
35
- | 1. 表现差广告降价/关停 | 组/创意:CTR、CPA、转化等触达后 **下调 `targetCpa` 或 `Paused`**。 | [`hosted-automation-optimize-weak-downbid.md`](hosted-automation-optimize-weak-downbid.md) |
36
- | 2. 高转化广告提价扩量 | 系列/组:ROAS 代理、预算丢失份额等触达后 **提预算 / 上调目标 CPA**。 | [`hosted-automation-optimize-scale.md`](hosted-automation-optimize-scale.md) |
37
- | 3. A/B 测试自动决出胜者 | 同组多创意:聚合后比 **CVPI / all conv** 等,**停输家**。 | [`hosted-automation-optimize-ab-winner.md`](hosted-automation-optimize-ab-winner.md) |
38
- | 4. 异动根因自动排查建议 | 诊断报告与归因:用 `account-analytics`、报告模板等,见 [`account-analytics.md`](account-analytics.md) 与 `report-templates/`。 | (未单独拆 SOP,沿用分析文档) |
35
+ | 1. 表现差广告降价/关停 | 组/创意:CTR、CPA、转化等触达后 **下调 `targetCpa` 或 `Paused`**。 | [`operations/hosted-automation-optimize-weak-downbid.md`](operations/hosted-automation-optimize-weak-downbid.md) |
36
+ | 2. 高转化广告提价扩量 | 系列/组:ROAS 代理、预算丢失份额等触达后 **提预算 / 上调目标 CPA**。 | [`operations/hosted-automation-optimize-scale.md`](operations/hosted-automation-optimize-scale.md) |
37
+ | 3. A/B 测试自动决出胜者 | 同组多创意:聚合后比 **CVPI / all conv** 等,**停输家**。 | [`operations/hosted-automation-optimize-ab-winner.md`](operations/hosted-automation-optimize-ab-winner.md) |
38
+ | 4. 异动根因自动排查建议 | 诊断报告与归因:用 `account-analytics`、报告模板等,见 [`analytics/account-analytics.md`](analytics/account-analytics.md) 与 `report-templates/`。 | (未单独拆 SOP,沿用分析文档) |
@@ -16,15 +16,15 @@ siluzan-tso optimize children --parent-id <id> # 广告系列级明细
16
16
  | `-a, --account <id>` | 账户 `mediaCustomerId`(走接口筛选;**已脱管账户可能为空**) |
17
17
  | `--match-media-customer-id <id>` | **仅 `list`**:不按接口筛账户,拉全量后自动翻页、客户端匹配 `mediaCustomerId`(适合已不在 Siluzan 托管、但历史上仍有优化批次的 Google 客户号) |
18
18
  | `--start / --end <date>` | 日期范围(YYYY-MM-DD,所有日期按北京时间(UTC+8)解释,调用时自动附加 `+08:00` 时区偏移) |
19
- | `--id <id>` | `optimize get` 专用:UUID。常见来源——**账户批次**:`optimize list --json` 的 `items[].id` / `entityId`;**系列级记录**:`optimize records --json` 的 `items[].id` |
19
+ | `--id <id>` | `optimize get` 专用:UUID。常见来源——**账户批次**:`optimize list --json-out ./snap` 的 `items[].id` / `entityId`;**系列级记录**:`optimize records --json-out ./snap` 的 `items[].id` |
20
20
  | `--parent-id <id>` | 父级 ID(`children` 专用;与账户批次 `list` 里 `items[].id` 一致) |
21
- | `--json` | 输出原始 JSON(`list` / `records` / `children`) |
21
+ | `--json-out` | 输出原始 JSON(`list` / `records` / `children`) |
22
22
 
23
23
  ## 已脱管 / 非当前托管账户:怎么查历史优化?
24
24
 
25
25
  1. **不要用** `optimize list -a <客户号>`(后端常按当前可管账户过滤,脱管后可能 0 条)。
26
26
  2. **也不要依赖** `optimize records -a <客户号>`(列表项往往没有 `mediaCustomerId`,接口侧筛选也可能无效)。
27
- 3. **应使用**:`optimize list --match-media-customer-id <Google 客户号> [--start … --end …] --json`,在结果里取每条批次的 **`id`**(与 **`entityId`** 相同)。
27
+ 3. **应使用**:`optimize list --match-media-customer-id <Google 客户号> [--start … --end …] --json-out ./snap`,在结果里取每条批次的 **`id`**(与 **`entityId`** 相同)。
28
28
  4. 用该 **`id`**:`optimize get --id <id>` 看详情;`optimize children --parent-id <id>` 看该批次下各广告系列级明细。
29
29
 
30
30
  **示例:**
@@ -34,7 +34,7 @@ siluzan-tso optimize children --parent-id <id> # 广告系列级明细
34
34
  siluzan-tso optimize list -a 6326027735
35
35
 
36
36
  # 已脱管:从全量历史里筛出该 Google 客户号(自动翻页)
37
- siluzan-tso optimize list --match-media-customer-id 3013981480 --start 2025-05-01 --json
37
+ siluzan-tso optimize list --match-media-customer-id 3013981480 --start 2025-05-01 --json-out ./snap
38
38
 
39
39
  # 查询所有账户本月优化记录(系列级列表)
40
40
  siluzan-tso optimize records --start 2026-03-01 --end 2026-03-31
@@ -46,7 +46,7 @@ siluzan-tso optimize children --parent-id 4ced1f51-da71-4aac-84f9-4e2c4a25675f
46
46
  siluzan-tso optimize get --id 4ced1f51-da71-4aac-84f9-4e2c4a25675f
47
47
 
48
48
  # JSON 输出
49
- siluzan-tso optimize list -a 6326027735 --json
49
+ siluzan-tso optimize list -a 6326027735 --json-out ./snap
50
50
  ```
51
51
 
52
52
  **接口说明(`optimize get`)**:`GET {apiBaseUrl}/Smart-Ads-Optimize/v2/{id}`。请求带 Datapermission(CLI 自动 `ensureDataPermission`)。响应体字段以后端为准,通常为格式化 JSON 打印到 stdout。
@@ -21,7 +21,8 @@
21
21
  | `meta-period-report.md` | Meta(Facebook)账户周期报告 |
22
22
  | `tiktok-period-report.md` | TikTok 广告主周期报告 |
23
23
  | `bing-period-report.md` | Bing(BingV2)分析报告 |
24
- | `okki-weekly-google-client.md` | **OKKI 周报**:Google 发客户固定话术 + 精简维度 CLI;**Excel 仅 Agent 脚本**(无 CLI 写表子命令),见 SKILL P6 |
24
+ | `okki-weekly-google-client.md` | **OKKI 周报**:Google 发客户固定话术 + 精简维度 CLI;**Excel 仅 Agent 脚本**,见 `references/core/playbooks.md` P6 |
25
+ | `google-inquiry-analysis.md` | **Google 询盘分析**:严格 3 个月 + 用户询盘 + 8 Sheet xlsx,见 `references/core/playbooks.md` P7 |
25
26
 
26
27
  ---
27
28
 
@@ -44,8 +44,8 @@
44
44
 
45
45
  ### 步骤 4:拉取数据
46
46
 
47
- - **`google-analysis` / `report …` 账户分析子命令**:统一 **`--json-out <目录>`** 落盘,再由脚本读 **`manifest-<accountId>.json` / `report-manifest-<accountId>.json`**(清单文件名见 stdout 摘要的 `manifestFile`)与各 **`<section>-<accountId>.json`**(见 `references/account-analytics.md`)。
48
- - **`stats`、`ad campaigns` 等辅助命令**:按 `references/tips.md` 与各命令文档做结构化拉数。
47
+ - **`google-analysis` / `report …` 账户分析子命令**:统一 **`--json-out <目录>`** 落盘,再由脚本读 **`manifest-<accountId>.json` / `report-manifest-<accountId>.json`**(清单文件名见 stdout 摘要的 `manifestFile`)与各 **`<section>-<accountId>.json`**(见 `references/analytics/account-analytics.md`)。
48
+ - **`stats`、`ad campaigns` 等辅助命令**:按 `references/core/tips.md` 与各命令文档做结构化拉数。
49
49
  - 仅执行与**本次报告维度**对应的命令(默认 + 用户追加)。
50
50
  - 数据失败/缺失:在对应章节写 `[ 数据不可用:{原因} ]`,不写推测。
51
51
 
@@ -247,7 +247,7 @@
247
247
 
248
248
  ### 8.3 搜索词洞察
249
249
 
250
- 列:搜索词、展示、点击、点击率、转化、转化率、每次转化费用
250
+ 列:搜索词、**已添加/已排除**(`queryTargetingStatusZh`)、展示、点击、点击率、转化、转化率、每次转化费用
251
251
 
252
252
  - **数据分析** / **优化建议**:`fullSearchTerms.analysis`、`fullSearchTerms.suggestions`
253
253
 
@@ -326,4 +326,4 @@
326
326
  | 按日 CPA | `daily-metrics` |
327
327
  | 预算竞争力(展示份额等) | `dimension-summary` + `campaigns` 等组合计算 |
328
328
 
329
- 详见 `references/account-analytics.md`。
329
+ 详见 `references/analytics/account-analytics.md`。
@@ -7,7 +7,7 @@
7
7
  > - `我给你询盘信息分析Google账号XXX效果`(附询盘资料 + 账户 ID)
8
8
  > - 含「询盘 + 账户 + Google」三要素的近义表述
9
9
 
10
- 命中以上触发词时:**不要**按 `google-period-report.md` 的「8 维 + 追问」流程;按本文**固定字段 + 固定话术 + 固定时间窗**交付(数据全部来自 CLI 落盘 JSON,见 `references/account-analytics.md`)。
10
+ 命中以上触发词时:**不要**按 `google-period-report.md` 的「8 维 + 追问」流程;按本文**固定字段 + 固定话术 + 固定时间窗**交付(数据全部来自 CLI 落盘 JSON,见 `references/analytics/account-analytics.md`)。
11
11
 
12
12
  ---
13
13
 
@@ -66,8 +66,7 @@ siluzan-tso list-accounts -m Google -k <mediaCustomerId> --json-out ./snap-inqui
66
66
 
67
67
  # 2) 区间维度(Sheet 5/7/8;系列为整段 S~E 汇总)
68
68
  siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-out ./snap-inquiry \
69
- --sections campaigns,keywords,search-terms,campaign-geo \
70
- --limit 200
69
+ --sections campaigns,keywords,search-terms,campaign-geo
71
70
 
72
71
  # 3) 按月循环(Sheet 4 上区 + Sheet 4 下区 + Sheet 6)
73
72
  for month in <S月, S+1月, E月>:
@@ -83,10 +82,10 @@ for month in <S月, S+1月, E月>:
83
82
  - **Sheet 4 上区(账户月汇总)**:读 `./<YYYY-MM>/campaigns-*.json`,对 `campaigns[]` **全系列求和**得到当月账户级点击/展示/费用/转化,再算 CTR/CPC/CPA/CVR(公式见下文 Sheet 4);与 Google「广告系列」页同区间加总口径一致。
84
83
  - `./snap-inquiry/campaigns-<accountId>_<S>-<E>.json`(步骤 2,整段 S~E):仅用于 **Sheet 5** 系列明细;**不得**用它按月拆行填 Sheet 4。
85
84
  - `geographic`:账户级国家聚合;Sheet 6 与 Sheet 4 **下区**(重点国切片)按月目录读取。
86
- - `keywords` / `search-terms`:Sheet 7 / 8;默认 `limit=200`(TOP200)。
85
+ - `keywords` / `search-terms`:Sheet 7 / 8;默认拉取**全部有消耗**行(`keywords` 网关 `costGreater=0`,`limit=0` 不封顶);需 TOP N 时加 `--limit <n>`。
87
86
  - `campaign-geo`:含 `campaignName`,用于 Sheet 6「暂停的系列」列辅助派生(若运营不需要可留空);也用于 Sheet 3 国家级消耗 join。
88
87
  - `geographic`:账户级国家聚合;Sheet 6 月度循环主源;Sheet 4 下半区「重点国家 vs 非重点国」按月切片(重点国默认取分析月询盘 Top1 国家,可由运营覆盖,详见下文 Sheet 4 节)。
89
- - **地理字段自动补齐**(由 `translate-fields.ts` 在 `campaign-geo` / `geographic` 行上自动补,未命中字典则不补,详见 `references/account-analytics.md`「中文化字段」):
88
+ - **地理字段自动补齐**(由 `translate-fields.ts` 在 `campaign-geo` / `geographic` 行上自动补,未命中字典则不补,详见 `references/analytics/account-analytics.md`「中文化字段」):
90
89
  - `countryOrRegionZh`:与 `countryOrRegion` **同粒度**的中文翻译(`Mumbai → 孟买` / `India → 印度` / `Davao Region → 达沃地区`)
91
90
  - `countryCode`:归并到的 ISO alpha-2 国家代码(`Mumbai → "IN"` / `Davao Region → "PH"` / `India → "IN"`),数据源 Google Ads 官方 geotargets CSV(约 9.5 万条目)
92
91
  - `countryNameZh`:归并后的**国家级中文名**(`Mumbai → "印度"` / `Davao Region → "菲律宾"`)。**Sheet 3 国家透视、Sheet 6 国家维度均应按 `countryNameZh` 聚合**,自动把城市/地区行归并到所属国家,不再出现"未知大洲"。
@@ -150,7 +149,7 @@ Sheet 5 整段系列明细读:`./snap-inquiry/campaigns-<accountId>_<S>-<E>.js
150
149
 
151
150
  ## 国家 → 大洲映射
152
151
 
153
- - **数据源**:`references/geo-continents.json`(中文国家名 → 7 大洲,覆盖 200+ 主权国家 + 港澳台/巴勒斯坦/马恩岛/波多黎各等领土,由 `tso-cli/scripts/generate-geo-dictionaries.mjs` 与 `geo-en2zh.json` 同步生成;新增国家请加 `ISO_TO_CONTINENT` 映射后跑 `pnpm --filter siluzan-tso-cli run geo:generate`,**不要**手改 JSON)。
152
+ - **数据源**:`references/analytics/geo-continents.json`(中文国家名 → 7 大洲,覆盖 200+ 主权国家 + 港澳台/巴勒斯坦/马恩岛/波多黎各等领土,由 `tso-cli/scripts/generate-geo-dictionaries.mjs` 与 `geo-en2zh.json` 同步生成;新增国家请加 `ISO_TO_CONTINENT` 映射后跑 `pnpm --filter siluzan-tso-cli run geo:generate`,**不要**手改 JSON)。
154
153
  - **默认 7 桶**:`亚洲` / `中东` / `欧洲` / `北美` / `南美` / `非洲` / `大洋洲`。
155
154
  - **运营常用 5 桶合并**(与样表 Sheet 3 一致):`<重点国>` / `中东` / `非洲` / `欧美` / `亚洲(除重点国)`。**由脚本在写表前做二次合并**,伪代码:
156
155
 
@@ -293,7 +292,7 @@ Sheet 5 整段系列明细读:`./snap-inquiry/campaigns-<accountId>_<S>-<E>.js
293
292
  | 3 | **客户来源集中度**(透视 2) | Top1 渠道占 `{p1}%`、Top3 合计 `{p3}%`;> 70% 高亮"渠道高度集中,风险敞口大" |
294
293
  | 4 | **长尾渠道**(透视 2) | 占比 < 5% 的渠道数量与合计占比;用于会议讨论"是否归并/精简" |
295
294
  | 5 | **产品 CPL 偏差**(透视 3,仅当产品→系列映射已配置) | 列出 CPL > 整体均值 × 1.5 的产品(拖累),CPL < 整体均值 × 0.5 的产品(明星) |
296
- | 6 | **大洲映射缺漏** | 透视 1 中"所属大洲 = 未知大洲"的国家清单(提示运营回流 `geo-continents.json`) |
295
+ | 6 | **大洲映射缺漏** | 透视 1 中"所属大洲 = 未知大洲"的国家清单(提示运营回流 `analytics/geo-continents.json`) |
297
296
 
298
297
  **条数**:上表 6 条为**完整模板**;若某条数据为空(如未配置产品映射、无大洲缺漏),可省略该行,但其余必出。
299
298
 
@@ -444,7 +443,7 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
444
443
  | R1 | `搜索字词--TOP100` |
445
444
  | R2 | `<S> - <E>`(如 `2026年4月1日 - 2026年4月30日` 等中文区间) |
446
445
  | R3(A→Q,17 列) | `搜索字词` \| `搜索字词匹配类型` \| `已添加/已排除` \| `广告系列` \| `广告组` \| `搜索广告关键字` \| `点击次数` \| `展示次数` \| `点击率` \| `货币代码` \| `平均每次点击费用` \| `费用` \| `绝对页首展示次数百分比` \| `页首展示次数百分比` \| `转化次数` \| `每次转化费用` \| `转化率` |
447
- | R4… | 读 `search-terms-*.json`(`data[]`):`searchTermText` / `matchTypeZh` / **`已添加/已排除`**(若 JSON 字段不存在则填 `—`,**禁止**臆造)/ `campaignName` / `adGroupName` / `keywordText`(关键字)/ 数值字段;`货币代码` 来自 `list-accounts` 同账户 `currencyCode` |
446
+ | R4… | 读 `search-terms-*.json`(`data[]`):`searchTermText` / `matchTypeZh` / **`queryTargetingStatusZh`**(已添加/已排除/都没有;网关字段 `queryTargetingStatus`)/ `campaignName` / `adGroupName` / `keywordText` / 数值字段;`货币代码` 来自 `list-accounts` 同账户 `currencyCode` |
448
447
 
449
448
  按 `费用` 降序前 100。
450
449
 
@@ -454,8 +453,8 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
454
453
 
455
454
  | # | 洞察类别 | 内容(每条引用本 Sheet 具体数字) |
456
455
  | --- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
457
- | 1 | **未添加但高转化搜索词**(候选加为关键词) | `已添加/已排除` "已添加" 且 `转化次数` ≥ `{阈值}` 的搜索词,按转化降序前 10;阈值取本期搜索词转化中位数 |
458
- | 2 | **已添加但 0 转化高消耗搜索词**(候选加为否定关键词) | `已添加/已排除` = "已添加" 且 `转化次数` = 0 且 `费用` > `¥{阈值}` 的搜索词,按消耗降序前 10;阈值取本期搜索词消耗 P75 |
456
+ | 1 | **未添加但高转化搜索词**(候选加为关键词) | `queryTargetingStatusZh` = "都没有" 且 `转化次数` ≥ `{阈值}`,按转化降序前 10;阈值取本期搜索词转化中位数 |
457
+ | 2 | **已添加但 0 转化高消耗搜索词**(候选加为否定关键词) | `queryTargetingStatusZh` = "已添加" 且 `转化次数` = 0 且 `费用` > `¥{阈值}`,按消耗降序前 10;阈值取本期搜索词消耗 P75 |
459
458
  | 3 | **无关搜索词**(意图偏离候选) | 基于 `搜索字词` 文本扫描,标出与广告组 / 关键字 主题明显不符的词(如"工厂"系列出现"价格便宜""免费""教程"等),前 5;**仅展示**,**不**自动判定,由运营会上拍板 |
460
459
  | 4 | **匹配方式分布** | `Broad`:`{n_b}` 个、占消耗 `{p_b}%`;`Phrase`:`{n_p}` 个、占消耗 `{p_p}%`;`Exact`:`{n_e}` 个、占消耗 `{p_e}%` |
461
460
  | 5 | **页首展示低 / 高消耗搜索词**(仅当 `页首展示次数百分比` 字段可用) | 列 `费用` Top20 中 `页首展示次数百分比` < 50% 的搜索词,前 5;提示"花了钱但很少展示到页首,出价/质量得分待优化" |
@@ -488,7 +487,7 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
488
487
  2. **默认值(运营未指定时)**:取**分析月(最后一个月 E 月)`inquiries.json` 询盘数 Top1 国家**。脚本在控制台打印一行:`[focusCountry auto-pick] {E月}询盘 Top1 = {国家}({count} 条),如需调整请回填运营配置`。
489
488
  3. **空数组兜底**:若分析月询盘 0 条,`focusCountries = []`;Sheet 3 跳过「重点国」单桶(直接走默认 5 桶里的对应大洲),Sheet 4 下半区**整段省略**并在 Sheet 标题留脚注 `[ 本期无询盘,省略国家切片 ]`。
490
489
 
491
- **禁止**:在脚本里硬编码 `"印度"`、`"India"` 等具体国家名作为业务逻辑(仅 `geo-en2zh.json` / `geo-continents.json` 这种字典数据除外)。
490
+ **禁止**:在脚本里硬编码 `"印度"`、`"India"` 等具体国家名作为业务逻辑(仅 `geo-en2zh.json` / `analytics/geo-continents.json` 这种字典数据除外)。
492
491
 
493
492
  ---
494
493
 
@@ -519,7 +518,7 @@ CPL = 询盘个数 > 0 ? spend / 询盘个数 : —
519
518
  | 是否需要询盘原始数据 | 否 | 否 | **是**(用户上传 / 反问索要) |
520
519
  | 输出形态 | 长文报告 | 客户话术 + 多 Sheet xlsx | **8 Sheet xlsx(不含客户话术)** |
521
520
  | Excel 由谁写 | Agent 脚本(可选) | Agent 脚本 | **Agent 脚本(必需)** |
522
- | 大洲映射 | 不涉及 | 不涉及 | **`references/geo-continents.json`** |
521
+ | 大洲映射 | 不涉及 | 不涉及 | **`references/analytics/geo-continents.json`** |
523
522
  | 重点国家 vs 非重点国切片 | 否 | 否 | **是**(Sheet 4 下半区,重点国可配置) |
524
523
 
525
524
  ---
@@ -30,7 +30,7 @@
30
30
  | ------------- | ----------------------------------------------- | ------------------------------------------------------------ |
31
31
  | 系列按小时 | `google-analysis --sections campaign-hour` | `campaign-hour`;根为 JSON 数组,含 `date`/`hour`/消耗与效果 |
32
32
  | 受众分布 | `google-analysis --sections audience` | 可分 `SystemDefined` / `UserDefined` |
33
- | 搜索词报告 | `google-analysis --sections search-terms` | 高消耗搜索词与关键词匹配关系 |
33
+ | 搜索词报告 | `google-analysis --sections search-terms` | 高消耗搜索词;`queryTargetingStatusZh` 列(已添加/已排除/都没有) |
34
34
  | 广告创意表现 | `google-analysis --sections ads` | 广告标题/类型/到达网址 |
35
35
  | 附加信息 | `google-analysis --sections extensions` | 附加链接/电话/宣传信息等状态 |
36
36
  | 图片/视频素材 | `google-analysis --sections materials` | 图片 + 视频合并视图 |
@@ -45,7 +45,7 @@
45
45
 
46
46
  ## 拉数顺序(默认 7 个维度)
47
47
 
48
- **首选:用 `google-analysis --sections` 一次拉齐**(单进程复用 keep-alive,比逐个 spawn 快 3-7×;详见 `references/account-analytics.md` 的 `all` 子命令说明):
48
+ **首选:用 `google-analysis --sections` 一次拉齐**(单进程复用 keep-alive,比逐个 spawn 快 3-7×;详见 `references/analytics/account-analytics.md` 的 `all` 子命令说明):
49
49
 
50
50
  ```bash
51
51
  mkdir -p ./snap-google
@@ -6,7 +6,7 @@
6
6
  > **媒体**:当前模板仅规范 **Google**(`mediaCustomerId`)。其他媒体用各自 `*-period-report.md`。
7
7
  > **Excel 版式基准**:与运营样表《**数据复盘分析**》类 xlsx 对齐(如 `2025.12数据复盘分析.xlsx`);工作簿 5 个 Sheet、顺序与表头以下文规范为准。
8
8
 
9
- 识别到上述意图时:**不要**再走 `google-period-report.md` 的「默认 8 维 + 追问追加」流程;按本文**固定维度 + 固定客户话术**交付(数据全部来自 CLI 落盘 JSON,见 `references/account-analytics.md`)。
9
+ 识别到上述意图时:**不要**再走 `google-period-report.md` 的「默认 8 维 + 追问追加」流程;按本文**固定维度 + 固定客户话术**交付(数据全部来自 CLI 落盘 JSON,见 `references/analytics/account-analytics.md`)。
10
10
 
11
11
  ---
12
12
 
@@ -41,15 +41,15 @@ siluzan-tso stats -m Google -a <mediaCustomerId> --start <S> --end <E> --json-ou
41
41
  siluzan-tso balance -m Google -a <mediaCustomerId> --json-out ./snap-okki
42
42
 
43
43
  siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-out ./snap-okki \
44
- --sections overview,campaigns,keywords,search-terms,campaign-device,campaign-geo
44
+ --sections overview,campaigns,keywords,search-terms,campaign-device,campaign-geo-matched
45
45
  ```
46
46
 
47
47
  **说明**:
48
48
 
49
49
  - `stats`:区间消耗 / 曝光 / 点击 / 转化 / CTR / CPC,与账户级周报摘要对齐;金额用 `*Display` 或文档规定的展示字段。
50
50
  - `balance`:**当前**余额(非历史快照),话术写「截至查询时点」。
51
- - 「设备」「国家」两 Sheet **必须**用 **`campaign-device` / `campaign-geo`**(按系列/组拆行),**不要**用账户级 `devices` / `geographic`。落盘文件名为 `campaign-device-<id>.json`、`campaign-geo-<id>.json`。跨系列汇总在脚本中做。
52
- - 可选:`campaign-geo` 支持 `--cost-greater` / `--click-greater` / `--conversions-greater`(见 `references/account-analytics.md`)。
51
+ - 「设备」「国家」两 Sheet **必须**用 **`campaign-device` / `campaign-geo-matched`**(按系列/组拆行),**不要**用账户级 `devices` / `geographic`,也**不要**用 `campaign-geo`(定向地理位置,与 OKKI「地理位置报告」口径不一致)。落盘文件名为 `campaign-device-<id>.json`、`campaign-geo-matched-<id>.json`。跨系列汇总在脚本中做。
52
+ - 可选:`campaign-geo-matched` 支持 `--cost-greater` / `--click-greater` / `--conversions-greater`(见 `references/analytics/account-analytics.md`)。
53
53
  - TopN、排序、汇总均在脚本内对 JSON 完成,禁止心算。
54
54
  - 写脚本前先读各 `<section>-<id>.outline.txt` 再读 `.json`。
55
55
 
@@ -66,7 +66,7 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
66
66
 
67
67
  ### 点击率 / 转化率 / 互动率
68
68
 
69
- > **2026-05 起 CLI 已统一归一**(manifest `schemaVersion: 2`):所有 `<section>-*.json` 中的 `ctr` / `conversionRate` 一律为 **0~1 小数**(如 `0.10` = 10.00%)。详见 `references/account-analytics.md`「指标字段对照」。
69
+ > **2026-05 起 CLI 已统一归一**(manifest `schemaVersion: 2`):所有 `<section>-*.json` 中的 `ctr` / `conversionRate` 一律为 **0~1 小数**(如 `0.10` = 10.00%)。详见 `references/analytics/account-analytics.md`「指标字段对照」。
70
70
 
71
71
  | 场景 | 处理 |
72
72
  | ------------------------------------------------- | -------------------------------------------------------------------------- |
@@ -83,7 +83,7 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
83
83
  | 2 | `关键词` | `keywords` |
84
84
  | 3 | `搜索词` | `search-terms` |
85
85
  | 4 | `设备` | **`campaign-device-*.json`**(按系列/组拆行) |
86
- | 5 | `国家` | **`campaign-geo-*.json`**(按系列/地域拆行) |
86
+ | 5 | `国家` | **`campaign-geo-matched-*.json`**(相符地理位置 Matched locations,按系列/地域拆行) |
87
87
 
88
88
  ### 各 Sheet 共同版式
89
89
 
@@ -92,7 +92,7 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
92
92
  - **R3**:表头(列名、顺序须与下表一致)。
93
93
  - **R4 起**:数据行;列宽、自动筛选、首行冻结、降序排序为可选,**不得**因此改数。
94
94
  - **百分比列**:样表为 0~1 小数(如 7.95% 存 `0.08`);与运营约定二选一,**禁止**同一文件混用。
95
- - **金额**:与 `references/account-analytics.md` 一致;`campaigns.budgetAmountYuan`、`spend`、`averageCpc`、`costPerConversion` 均为元,可直接写入。
95
+ - **金额**:与 `references/analytics/account-analytics.md` 一致;`campaigns.budgetAmountYuan`、`spend`、`averageCpc`、`costPerConversion` 均为元,可直接写入。
96
96
 
97
97
  ---
98
98
 
@@ -122,7 +122,7 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
122
122
  4. **设备层级**(基于 `campaign-device`):各设备在系列上的消耗/转化分布;可点出高消耗系列×设备组合。
123
123
  总结:
124
124
  建议:
125
- 5. **国家层级**(基于 `campaign-geo`):各国家/地区在系列上的消耗/转化;高消耗低转化地域与降权/调价建议。
125
+ 5. **国家层级**(基于 `campaign-geo-matched`):各国家/地区在系列上的消耗/转化;高消耗低转化地域与降权/调价建议。
126
126
  总结:
127
127
  建议:
128
128
 
@@ -148,7 +148,7 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
148
148
  | R1 | `搜索字词报告` |
149
149
  | R2 | 统计区间 |
150
150
  | R3(A→N,14 列) | `搜索字词` \| `匹配类型` \| `已添加/已排除` \| `广告系列` \| `广告组` \| `关键字` \| `展示次数` \| `点击次数` \| `点击率` \| `平均每次点击费用` \| `费用` \| `转化次数` \| `每次转化费用` \| `转化率` |
151
- | R4… | `search-terms-*.json`:`已添加/已排除` JSON 无此枚举则留空或填「—」,禁止臆造;`ctr` / `conversionRate` 已归一,直接写入 |
151
+ | R4… | `search-terms-*.json`:`queryTargetingStatusZh`(`Added`→已添加、`Excluded`→已排除、`None`→都没有);无该字段时读 `queryTargetingStatus` 按上表映射,仍无则「—」;`ctr` / `conversionRate` 已归一,直接写入 |
152
152
 
153
153
  ---
154
154
 
@@ -170,7 +170,7 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
170
170
  | R1 | `地理位置报告` |
171
171
  | R2 | 统计区间 |
172
172
  | R3(A→M,13 列) | `地理位置` \| `广告系列` \| `展示次数` \| `互动次数` \| `互动率` \| `费用` \| `平均费用` \| `点击次数` \| `点击率` \| `所有转化次数` \| `转化次数` \| `每次转化费用` \| `转化率` |
173
- | R4… | `campaign-geo-*.json`(`countries[]`):`countryOrRegion`→地理位置;`campaignName`→「广告系列」;`allConversions`→「所有转化次数」;`conversions`→「转化次数」;**互动次数**→`interactions`;**互动率**→`interactionRate`(字符串须解析)或 `interactions/impressions`,`interactions` 为 0 时填 `—`;**平均费用 必须** = `spend / interactions`,`interactions` 为 0 / null / undefined 时填 `—`;`ctr` / `conversionRate` 直接写入;其余列按 outline 映射 |
173
+ | R4… | `campaign-geo-matched-*.json`(`countries[]`):`countryOrRegion`→地理位置;`campaignName`→「广告系列」;`allConversions`→「所有转化次数」;`conversions`→「转化次数」;**互动次数**→`interactions`;**互动率**→`interactionRate`(字符串须解析)或 `interactions/impressions`,`interactions` 为 0 时填 `—`;**平均费用 必须** = `spend / interactions`,`interactions` 为 0 / null / undefined 时填 `—`;`ctr` / `conversionRate` 直接写入;其余列按 outline 映射 |
174
174
 
175
175
  ---
176
176
 
@@ -201,7 +201,7 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
201
201
 
202
202
  ## 复盘小结 + 优化建议(对内 / 邮件末段)
203
203
 
204
- 基于同一批 JSON(`campaigns`、`keywords`、`search-terms`、`campaign-device`、`campaign-geo`、`overview`):
204
+ 基于同一批 JSON(`campaigns`、`keywords`、`search-terms`、`campaign-device`、`campaign-geo-matched`、`overview`):
205
205
 
206
206
  - **复盘**:3~6 条 bullet:消耗集中度、高消耗系列/词、地域与设备差异、CTR/CPC 相对水平。
207
207
  - **优化建议**:3~5 条可执行项(预算、否词、落地页、系列状态等),**不额外拉数**;缺数据则标 `[数据不可用:原因]`。
@@ -212,6 +212,6 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
212
212
 
213
213
  | 项 | `google-period-report.md` | 本文 OKKI 周报 |
214
214
  | -------- | ------------------------- | ------------------------------------------------------------------------------------------------------ |
215
- | 默认维度 | 8 维 + 主动追问追加 | **固定** `overview,campaigns,keywords,search-terms,campaign-device,campaign-geo` + `stats` + `balance` |
215
+ | 默认维度 | 8 维 + 主动追问追加 | **固定** `overview,campaigns,keywords,search-terms,campaign-device,campaign-geo-matched` + `stats` + `balance` |
216
216
  | 输出形态 | 长文分析报告 | **固定话术** + 短复盘 + **多 Sheet Excel(Agent 脚本写)** |
217
217
  | 典型用户 | 内部分析 | **发客户**的同步简报 |
@@ -9,11 +9,11 @@ $ErrorActionPreference = 'Stop'
9
9
  # -- Package info (injected at build time) ------------------------------------
10
10
  $PKG_NAME = 'siluzan-tso-cli'
11
11
  # PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
12
- $PKG_VERSION = '1.1.21'
12
+ $PKG_VERSION = '1.1.22-beta.10'
13
13
  $CLI_BIN = 'siluzan-tso'
14
14
  $SKILL_LABEL = 'Siluzan TSO'
15
- $INSTALL_CMD = 'npm install -g siluzan-tso-cli'
16
- $WEB_BASE = 'https://www.siluzan.com'
15
+ $INSTALL_CMD = 'npm install -g siluzan-tso-cli@beta'
16
+ $WEB_BASE = 'https://www-ci.siluzan.com'
17
17
 
18
18
  # -- Constants ----------------------------------------------------------------
19
19
  $NODE_MAJOR_MIN = 18
@@ -9,11 +9,11 @@ set -euo pipefail
9
9
  # -- Package info (injected at build time) ------------------------------------
10
10
  readonly PKG_NAME="siluzan-tso-cli"
11
11
  # PKG_VERSION 锁定到与本脚本同批构建产物一致的版本,避免与 dist/skill 错位
12
- readonly PKG_VERSION="1.1.21"
12
+ readonly PKG_VERSION="1.1.22-beta.10"
13
13
  readonly CLI_BIN="siluzan-tso"
14
14
  readonly SKILL_LABEL="Siluzan TSO"
15
- readonly INSTALL_CMD="npm install -g siluzan-tso-cli"
16
- readonly WEB_BASE="https://www.siluzan.com"
15
+ readonly INSTALL_CMD="npm install -g siluzan-tso-cli@beta"
16
+ readonly WEB_BASE="https://www-ci.siluzan.com"
17
17
 
18
18
  # -- Constants ----------------------------------------------------------------
19
19
  readonly NODE_MAJOR_MIN=18
@@ -4,10 +4,10 @@
4
4
  "turns": [
5
5
  "丝路赞后台复制了一个 Google 账户的 entityId:f2a5ca16-cff9-4a9e-9aea-f7429c3e2696。\n我要查它在 2026-04-01 至 2026-04-15 的 stats,请用 siluzan-tso,需要 JSON。不要编造 mediaCustomerId。"
6
6
  ],
7
- "judgeExpectation": "路径:用户只提供 entityId 时,应先 list-accounts(可加 --json)核对 mediaCustomerId,再对 stats 等传媒体账户 ID;不得把 entityId 当作 mediaCustomerId 直接传给 stats。\n输出:说明映射关系;stub 数据即可。",
8
- "skillMapping": "SKILL.md「不要猜测账户 ID」;references/accounts.md",
7
+ "judgeExpectation": "路径:用户只提供 entityId 时,应先 list-accounts(可加 --json-out)核对 mediaCustomerId,再对 stats 等传媒体账户 ID;不得把 entityId 当作 mediaCustomerId 直接传给 stats。\n输出:说明映射关系;stub 数据即可。",
8
+ "skillMapping": "SKILL.md「不要猜测账户 ID」;references/accounts/accounts.md",
9
9
  "judgeReferencePaths": [
10
- "references/accounts.md"
10
+ "references/accounts/accounts.md"
11
11
  ],
12
12
  "commandMustInclude": [
13
13
  [
@@ -17,7 +17,7 @@
17
17
  "stats"
18
18
  ],
19
19
  [
20
- "--json"
20
+ "--json-out"
21
21
  ]
22
22
  ]
23
23
  }
@@ -4,9 +4,9 @@
4
4
  "turns": [
5
5
  "我们想把丝路赞里的 Google 户挂到公司 MCC 上,该怎么操作?有哪些命令?先说明白再执行,别直接改账户。"
6
6
  ],
7
- "judgeExpectation": "路径:用户问如何把账户绑到 MCC/经理账户时,应先 read_skill_reference 查阅 accounts.md 中相关命令与注意点,再给出步骤;**未获确认前不应执行解绑/破坏性 CLI**。\n输出:步骤与风险提示;不要求真实绑定。",
8
- "skillMapping": "references/accounts.md · MCC/Google 绑定类",
7
+ "judgeExpectation": "路径:用户问如何把账户绑到 MCC/经理账户时,应先 read_skill_reference 查阅 accounts/accounts.md 中相关命令与注意点,再给出步骤;**未获确认前不应执行解绑/破坏性 CLI**。\n输出:步骤与风险提示;不要求真实绑定。",
8
+ "skillMapping": "references/accounts/accounts.md · MCC/Google 绑定类",
9
9
  "judgeReferencePaths": [
10
- "references/accounts.md"
10
+ "references/accounts/accounts.md"
11
11
  ]
12
12
  }