siluzan-tso-cli 1.1.54-beta.4 → 1.1.55-beta.1

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.
package/README.md CHANGED
@@ -51,7 +51,7 @@ siluzan-tso init -d /path/to/skills # 写入自定义目录
51
51
  siluzan-tso init --force # 强制覆盖已存在文件
52
52
  ```
53
53
 
54
- > **注意**:当前为测试版(1.1.54-beta.4),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
54
+ > **注意**:当前为测试版(1.1.55-beta.1),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
55
55
 
56
56
  | 助手 | 建议 `--ai` |
57
57
  | ----------------------- | ------------------------------------ |
@@ -128,7 +128,7 @@ siluzan-tso -h
128
128
  | Yandex 账户分析 / 周期 / 月报 | **P4** | `report-templates/yandex-period-report.md` + `references/analytics/account-analytics.md`;Excel 加 `yandex-period-report-excel.md` |
129
129
  | 账户级按日 Excel | **P4-DAILY** | `report-templates/stats-daily-excel.md` |
130
130
  | 多账户 × 多维度批处理 | **P5** | `references/analytics/google-analysis-batch.md` + `references/analytics/account-analytics.md` |
131
- | OKKI 周报 / 表格形式(OKKI) | **P6** | `report-templates/okki-weekly-google-client.md`(写 `okki-weekly-report.json` → `google-analysis okki-render` 出 5 Sheet `.xlsx`;「表格形式」= Excel) |
131
+ | OKKI 周报 / 表格形式(OKKI) | **P6** | `report-templates/okki-weekly-google-client.md`(写 `okki-weekly-report.json` → `google-analysis okki-render` 出 5 Sheet `.xlsx`;客户话术默认 7 条、一条一行;「表格形式」= Excel) |
132
132
  | Google 询盘分析(**须 CRM 询盘资料**;口语零询盘/CPA → **P3**) | **P7** | `report-templates/google-inquiry-analysis.md` + `references/analytics/geo-continents.json` |
133
133
  | 网址/域名/官网 + 诊断·检测·监测·报告 / **是否符合广告投放要求** / 能不能投 | **P8** | `references/core/intent-routing.md` §零 + `references/analytics/website-diagnosis-guide.md` + `assets/website-diagnosis-rules.md`(**必** `website-diagnosis collect`;**≠ P9 ≠ W3**;禁纯 WebFetch) |
134
134
  | 市场/行业分析报告 / 战略市场 / KA 市场报告 | **P9** | `references/analytics/market-analysis-guide.md` + `assets/market-analysis-rules.md`(须 collect+render;**≠ P8**) |
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "slug": "siluzan-tso",
3
- "version": "1.1.54-beta.4",
4
- "publishedAt": 1791960108857
3
+ "version": "1.1.55-beta.1",
4
+ "publishedAt": 1792404042973
5
5
  }
@@ -224,7 +224,7 @@
224
224
 
225
225
  **A · 币种**:首行含 `统计区间:…(货币:CNY|USD)`;全文符号与 `currencyCode` 一致(CNY=¥、USD=$,未混用);与当次 `list-accounts -k` 结果相同;多账户分币种分表、无跨币种「总计」行。
226
226
 
227
- **B · 结构完整**(对照当次 `report-templates/*.md`):模板要求的每一章/Sheet 都存在;无整章空白(缺数据章节写 `[ 数据不可用:… ]`,禁止编造数字填坑);优化建议独立成节、引用当次数字(Meta 周期:四问 + 3 张建议卡 + 各章 analysis/advice;Google 诊断:每模块除表格外有「分析」+「建议」);Excel 的表头列须能在当次 `*.outline.txt` 找到对应字段、产物内账户 ID = 用户当轮给出的 `mediaCustomerId`;**Excel 内全部 ID 列为文本**(见上文「写 Excel 时所有 ID 必须是文本」)。**P6**:磁盘上必须已有 `google-analysis okki-render` 写出的 `.xlsx`(禁止 Agent 手写表)。**P7**:磁盘上必须已有 `.xlsx`。对话 Markdown 表、手写 HTML/PDF **不能**当作终稿通过自检(用户明确只要话术除外)。
227
+ **B · 结构完整**(对照当次 `report-templates/*.md`):模板要求的每一章/Sheet 都存在;无整章空白(缺数据章节写 `[ 数据不可用:… ]`,禁止编造数字填坑);优化建议独立成节、引用当次数字(Meta 周期:四问 + 3 张建议卡 + 各章 analysis/advice;Google 诊断:每模块除表格外有「分析」+「建议」);Excel 的表头列须能在当次 `*.outline.txt` 找到对应字段、产物内账户 ID = 用户当轮给出的 `mediaCustomerId`;**Excel 内全部 ID 列为文本**(见上文「写 Excel 时所有 ID 必须是文本」)。**P6**:磁盘上必须已有 `google-analysis okki-render` 写出的 `.xlsx`(禁止 Agent 手写表)。可复制话术为默认 7 条且一条一行;禁止改成「一、二、三、四」或合成一段。只有用户本轮粘贴骨架或点名增删某一条时才改被点名的行。**P7**:磁盘上必须已有 `.xlsx`。对话 Markdown 表、手写 HTML/PDF **不能**当作终稿通过自检(用户明确只要话术除外)。
228
228
 
229
229
  **C · 数字可信**(抽样,不读大 JSON):总消耗/CPA 数量级与生成过程中脚本 stdout 打印的汇总一致(若无,补跑一次极小 `node -e` 只打印 totals);账户 ID、区间与用户需求一致;无「示例账户」「占位 123456」等模板残留;表格行数符合预期(如 P3 每个 `-a` ID 占一行)。
230
230
 
@@ -327,6 +327,8 @@
327
327
  4. **行动建议**:1~3 条,点名对象并引用数据;若建议含「打开网页 / 去充值 / 去授权」,链接须遵守 §四「禁止编造平台网页地址」,**禁止**随口给一个未经验证的 URL。
328
328
  5. **下一步**:一句邀请。客户端 suggestion chips 另展示;**不要**在 skill 各任务文档维护 chips 全文清单。
329
329
 
330
+ **OKKI 周报例外**:上面 5 步只用于代码块**外面**的运营摘要(最多 3~5 行)。发给客户复制的正文按 `okki-weekly-google-client.md` 的默认 7 条填写,一条一行。禁止把摘要结构写进可复制块,禁止沿用上一轮或其他账户的话术。
331
+
330
332
  长任务(>30s):中间用进度短句,勿长时间沉默后突然扔大表。
331
333
 
332
334
  ### 14.3 先执行后解释
@@ -142,7 +142,7 @@
142
142
  3. 同一 `--json-out` 目录执行模板命令组合:`stats`、`balance`、`google-analysis --sections overview,campaigns,keywords,search-terms,campaign-device,campaign-geo-matched`。
143
143
  4. 脚本读盘 → 只写 `okki-weekly-report.json` 的 `meta` + `narrative`(5 Sheet 表末分析 + 账户 Sheet 固定 5 维数据复盘;表为空也须写)。`deviceType` 是 `Desktop`/`Mobile`,禁止 `.get("DESKTOP")`,按大小写不敏感分类累加后再写设备金额。
144
144
  5. `google-analysis okki-render --data ./okki-weekly-report.json --snapshot-dir ./snap-okki --out <xlsx>`。缺分析 / 缺 5 维复盘 / 缺 `campaign-device` 或 `campaign-geo-matched` 会拒绝出文件;按 stderr 补 JSON 后重跑。**禁止** Agent 手写 xlsx。
145
- 6. 按 `okki-weekly-google-client.md` **默认客户话术**填数交付(用户另有话术/增删条目时从其自定义);数值与 xlsx 一致。
145
+ 6. 按 `okki-weekly-google-client.md` **默认 7 条话术**填数,放进代码块,一条一行(第 6 条的 ①②③ 也各占一行)。禁止合成一段,禁止改成「一、二、三、四」。上一轮或其他账户的话术不算本轮骨架;只有用户**本轮**粘贴全文或点名增删某一条时才改被点名的条目。数值与 xlsx 一致。
146
146
  - **产物**:`okki-render` 写出的 `.xlsx` 路径(缺文件 = 未完成)+ 对话内客户话术;**不**按 P4 默认 9 章追加。仅用户明确「只要话术 / 不要文件」时才省略 xlsx。
147
147
 
148
148
  ---
@@ -107,7 +107,7 @@ summary: <1-3 句中文,无业务数字除非来自 manifest>
107
107
  1. 主 Agent:确认账户与日期区间。
108
108
  2. **决策**:拉数阶段若日志长 → Bash/Task + `handoff-p6-okki.md` §拉数;否则主会话执行模板 §拉数命令。
109
109
  3. **决策**:写叙事 JSON + `okki-render` → Task handoff(只读 `snapDir`,先 outline 后 JSON,见 `references/core/tips.md`);或主会话若上下文充足。**禁止** Agent 手写 xlsx。
110
- 4. 主 Agent:合并交付 **xlsx 路径**(须来自 `okki-render`)+ 客户话术;金额与 ID 与 manifest 一致。**没有 `.xlsx` 不得收口**(用户明确只要话术除外)。
110
+ 4. 主 Agent:合并交付 **xlsx 路径**(须来自 `okki-render`)+ 客户话术。话术用模板默认 7 条、一条一行,禁止另写「一、二、三、四」。**没有 `.xlsx` 不得收口**(用户明确只要话术除外)。
111
111
 
112
112
  ### P5 · 多账户多维度
113
113
 
@@ -35,7 +35,7 @@
35
35
  | `bing-period-report.md` / `.html` | **Bing(BingV2)分析报告(默认)**:四步流程 → `bing-analysis render` 出 HTML |
36
36
  | `yandex-period-report.md` / `.html` | **Yandex Direct 周期报告(默认)**:四步流程 → `yandex-analysis render` 出 HTML(样式对齐开发样例) |
37
37
  | `yandex-period-report-excel.md` | **仅用户要 Excel 时**:Agent 脚本写 xlsx;无 CLI excel 子命令 |
38
- | `okki-weekly-google-client.md` | **OKKI 周报**:写 `okki-weekly-report.json` → `google-analysis okki-render` 出 5 Sheet Excel + 客户话术,见 `references/core/playbooks.md` P6 |
38
+ | `okki-weekly-google-client.md` | **OKKI 周报**:写 `okki-weekly-report.json` → `google-analysis okki-render` 出 5 Sheet Excel + 客户话术(默认 7 条、一条一行),见 `references/core/playbooks.md` P6 |
39
39
  | `google-inquiry-analysis.md` | **Google 询盘分析**:严格 3 个月 + 用户询盘 + 8 Sheet xlsx,见 `references/core/playbooks.md` P7 |
40
40
  | `website-diagnosis-report.md` / `.html` | **网站诊断**:终稿为 **HTML**(对齐 TSO `WebsiteAnalysisReport/v3`);配合 `website-diagnosis collect`,见 P8 |
41
41
 
@@ -84,7 +84,7 @@
84
84
  - **TikTok 周期报告**:产出 `tiktok-period-report.json`(见 `tiktok-period-report.md`,`meta` 可由 `--snapshot-dir` 自动合并)。
85
85
  - **Bing 周期报告**:产出 `bing-period-report.json`(见 `bing-period-report.md`,`meta`/`kpis` 可由 `--snapshot-dir` 自动合并)。
86
86
  - **Yandex 周期报告**:产出 `yandex-period-report.json`(见 `yandex-period-report.md`,`meta`/`kpis`/`tables` 可由 `--snapshot-dir` 自动合并)。
87
- - **OKKI(P6)**:产出 `okki-weekly-report.json` 后走 `google-analysis okki-render` 出 **5 Sheet `.xlsx`**(必产);**询盘(P7)**仍由 Agent 脚本写 8 Sheet `.xlsx`。对话 Markdown 表 / 手写 HTML **不能**代替终稿。
87
+ - **OKKI(P6)**:产出 `okki-weekly-report.json` 后走 `google-analysis okki-render` 出 **5 Sheet `.xlsx`**(必产);客户话术按模板默认 7 条、一条一行,禁止另写「一、二、三、四」。**询盘(P7)**仍由 Agent 脚本写 8 Sheet `.xlsx`。对话 Markdown 表 / 手写 HTML **不能**代替终稿。
88
88
 
89
89
  ### 步骤 5b:生成终稿(按媒体与格式)
90
90
 
@@ -9,7 +9,7 @@
9
9
  > **默认交付(硬性,缺文件 = 任务未完成)**:磁盘上的 **5 Sheet `.xlsx`**(由 `google-analysis okki-render` 生成)+ 对话内客户话术。
10
10
  > 「表格形式 / 表格 / 各维度表格 / 表 / 做成表」= **Excel `.xlsx`**,**不是**对话 Markdown 表,**不是**手写 HTML/PDF。
11
11
  > 仅当用户明确「只要话术 / 不要文件 / 不要 Excel」时才省略 xlsx。
12
- > **禁止**:用对话 Markdown 表、手写 HTML、PDF 代替 `.xlsx`;**禁止** Agent 手写 / 脚本写 xlsx。
12
+ > **禁止**:用对话 Markdown 表、手写 HTML、PDF 代替 `.xlsx`;**禁止** Agent 手写 / 脚本写 xlsx。话术由 Agent 按下文「对外客户话术」填写,**不要**另写脚本生成话术。
13
13
 
14
14
  ## Contents
15
15
 
@@ -17,13 +17,13 @@
17
17
  - 标准四步流程(拉数 → 写 JSON → okki-render)
18
18
  - 拉数(一次目录)
19
19
  - xlsx 版式规范(由 CLI 锁死)
20
- - 对外客户话术(默认结构,填数来自 JSON)
20
+ - 对外客户话术(默认 7 条,一条一行)
21
21
  - 复盘小结(Excel「数据复盘」区块 / 对内补充)
22
22
  - 与 `google-period-report.md` 的差异
23
23
 
24
24
  ---
25
25
 
26
- 识别到上述意图时:**不要**再走 `google-period-report.md` 的「默认 9 章 + 追问追加」流程;按本文**固定维度 + 默认客户话术(可用户自定义)+ `okki-render` 出 5 Sheet `.xlsx`** 交付。**先 `okki-render` 再发话术**;没有 `.xlsx` 路径不得收口。
26
+ 识别到上述意图时:**不要**再走 `google-period-report.md` 的「默认 9 章 + 追问追加」流程;按本文**固定维度 + 默认客户话术(可用户自定义)+ `okki-render` 出 5 Sheet `.xlsx`** 交付。**先 `okki-render` 再发话术**;没有 `.xlsx` 路径不得收口。话术骨架见下文,禁止另起一套标题。
27
27
 
28
28
  ---
29
29
 
@@ -33,7 +33,7 @@
33
33
  2. **统计区间**:`--start` / `--end`(用户未给齐时按 SKILL 反问;授权默认时可用「上一完整自然周」白名单并写明)。
34
34
  3. **询盘口径**:默认使用区间内 `conversions`(转化次数,来自 `stats` 或 `overview`)。若运营定义为某类转化,须在首段脚注说明(必要时补拉 `google-analysis --sections conversion-actions` 仅作说明)。
35
35
  4. **日期写法**:`2026.4.1`、`2026/4/1` 等先规范为 `YYYY-MM-DD`(如 `2026-04-01`)再传 `--start` / `--end`。
36
- 5. **交付**:默认 **客户话术 + 5 Sheet `.xlsx`(必产,由 `okki-render` 写出)**。「表格形式」一律当 Excel。仅用户明确只要可复制话术、不要文件时,才省略 xlsx。
36
+ 5. **交付**:默认 **客户话术 + 5 Sheet `.xlsx`(xlsx 必产,由 `okki-render` 写出)**。「表格形式」一律当 Excel。仅用户明确只要可复制话术、不要文件时,才省略 xlsx。话术按下文默认 7 条填写。
37
37
 
38
38
  ---
39
39
 
@@ -241,53 +241,66 @@ function deviceKind(deviceType) {
241
241
 
242
242
  ## 对外客户话术(默认结构,填数来自 JSON)
243
243
 
244
- > **默认**:用户未指定话术样式时,使用下方**默认模板**输出终稿。
245
- > **用户自定义**:用户可(1)粘贴自有话术骨架;(2)要求增删改某几条(如「不要 5.1」「第 3 条改成…」);(3)指定 CTR 基准或币种展示方式。**自定义时仍须**:数值/百分比一律来自 CLI 落盘 JSON + 脚本计算,禁止编造;缺数据标 `[数据不可用:原因]`,不得留空占位符糊弄客户。
244
+ > 话术是给客户看的总结,**由 Agent 填写,不要写脚本生成**。骨架固定;只有措辞和数字随当次数据变。
246
245
 
247
- **日期写法(首行)**:`<S>` / `<E>` 转为中文可读,如 `4月1号-4月7号` 或 `2026年4月1日-4月7日`(与用户习惯一致即可,须与 `--start` / `--end` 对应)。
246
+ **默认就用下面这 7 条。** 放进代码块再发给用户,便于原样复制。换行是骨架的一部分:
248
247
 
249
- **默认模板**:
248
+ - `1`~`5`、`5.1`、`5.2`、`7` 各占一行,行末用分号
249
+ - 第 `6` 条先写「6、优化建议:」,下面 **3~5 条**建议各占一行,用 ①②③④⑤,禁止写进同一句
250
+ - 禁止把 1~7 合成一段
250
251
 
251
252
  ```
252
- 您好,同步一下谷歌<S>--<E>投放的情况:
253
+ 您好,同步一下谷歌<中文日期>投放的情况:
253
254
 
254
- 1、消耗:共消耗<金额+币种>,平均每天消耗<金额+币种>;
255
+ 1、消耗:共消耗<金额>,平均每天消耗<金额>;
255
256
  2、展示点击:带来<曝光>个曝光,<点击>个点击;
256
- 3、点击率:<CTR%>,处于<优秀/正常/偏低>水平(搜索正常水平 3%~5%,展示正常水平 1%~2%;按账户实际以搜索或展示为主选基准,无法区分时写「整体」并说明依据)
257
- 4、平均点击单价:<金额+币种>
258
- 5、转化:记录到网站表单+会话询盘<N>个;直接写邮件咨询和 WhatsApp 咨询无法记录,需贵司自行统计后反馈具体咨询产品和国家,方便广告及时调整
259
- 5.1 有转化的关键词:<据 keywords / search-terms JSON 填写;无转化则写「本周期暂无带转化关键词」>
260
- 5.2 有转化的国家:<据 campaign-geo-matched JSON 填写;无转化则写「本周期暂无带转化国家/地区」>
261
- 6、优化建议:<据 campaigns / keywords / search-terms / device / geo JSON 撰写 3~5 条可执行建议,禁止编造数据>
262
- 7、账户余额:<金额+币种>(截至查询时点)
257
+ 3、点击率:<CTR%>,处于<优秀/正常/偏低>水平(<按下方规则选一条基准>);
258
+ 4、平均点击单价:<金额>;
259
+ 5、转化:记录到网站表单+会话询盘<N>个;直接写邮件咨询和 WhatsApp 咨询无法记录,需贵司自行统计后反馈具体咨询产品和国家,方便广告及时调整;
260
+ 5.1 有转化的关键词:<词(N 个,CPA 金额)>;
261
+ 5.2 有转化的国家:<国家(N 个,CPA 金额)>;
262
+ 6、优化建议:
263
+ ① <一条可执行建议,点名对象并引用当次数字>
264
+ ② <同上>
265
+ ③ <同上>
266
+ 7、账户余额:<金额>(截至查询时点)。
263
267
  ```
264
268
 
269
+ 日期写成 `2026年4月1日-4月7日`(同年可省略结束年份),须与 `--start` / `--end` 对应。
270
+
271
+ **未获本轮用户改骨架时,禁止:**
272
+
273
+ - 改成「一、本周概览 / 二、本周发现 / 三、下周优化动作 / 四、需要您配合确认」,或任何另一套标题
274
+ - 把上一轮、另一个账户、对话里出现过的话术当成这次的骨架
275
+ - 用「结论先行」重写可复制块。运营摘要最多 3~5 行,放在代码块**外面**
276
+
277
+ **只有本轮用户**粘贴了全文骨架,或点名增删某一条(「不要 5.1」「第 3 条改成…」)时才偏离上面的结构。只改被点名的条目;用户删掉的条目不再输出。数字仍须来自当次 JSON,缺数写 `[数据不可用:原因]`。
278
+
265
279
  ### 填数规则
266
280
 
267
- | 条目 | 数据来源 / 计算 |
268
- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
269
- | 1 消耗 / 日均 | `stats` 或 `overview` 区间 `spend`;日均 = `总消耗 ÷ 区间日历天数`(含起止日),脚本计算 |
270
- | 2 曝光 / 点击 | `stats` / `overview` 的 `impressions`、`clicks` |
271
- | 3 点击率 | `overview.record.ctr` 或 `stats` 同级字段;已是 **0~1 小数**,话术 `(ctr * 100).toFixed(2) + "%"`,**禁止**直接打印得到 `0.10%` |
272
- | 3 水平判定 | **搜索为主**(Search 系列占消耗大头):`<3%` 偏低,`3%~5%` 正常,`>5%` 优秀;**展示为主**:`<1%` 偏低,`1%~2%` 正常,`>2%` 优秀;混合账户说明以哪类为准 |
273
- | 4 CPC | `stats` / `overview` 的 `averageCpc` 或 `cost / clicks` |
274
- | 5 转化数 | 默认 `conversions`(与「须先确认 §3 询盘口径」一致);括号说明若口径不同须在首段脚注 |
275
- | 5.1 / 5.2 | 从 `keywords` / `campaign-geo-matched` 筛 `conversions > 0`,列词或国家 + 转化数(可 TopN);用户自定义模板时仍可保留或合并为一条 |
276
- | 6 优化建议 | 同批 JSON,不额外拉数;用户若提供「只写预算/否词」等范围,按用户范围写 |
277
- | 7 余额 | `balance` 当前余额,标注截至查询时点 |
278
-
279
- - **所有金额、百分比** 一律 **2 位小数**(与 xlsx 规范一致)。
280
- - 用户自定义模板时:**保留用户条目顺序与措辞**,仅替换 `<…>` 占位或等价位置为 JSON 实数;用户删掉的条目不再输出。
281
-
282
- ### 用户自定义示例
283
-
284
- | 用户说法 | Agent 行为 |
285
- | ---------------------------------- | ---------------------------------------------------------- |
286
- | 「按默认 OKKI 话术发客户」 | 用上方默认模板 |
287
- | 「话术用我这份:…」(粘贴全文) | 以用户全文为骨架填数;缺项不擅自补回默认条目,除非用户要求 |
288
- | 「不要 5.1 / 5.2,其它不变」 | 输出默认模板但省略 5.1、5.2 |
289
- | 「第 3 条只写搜索点击率,基准 4%」 | 按用户基准改写判定话术,数值仍来自 JSON |
290
- | 「优化建议只要 3 条 bullet」 | 压缩第 6 条条数,内容仍须有据 |
281
+ | 条目 | 数据来源 / 计算 |
282
+ | --- | --- |
283
+ | 1 消耗 / 日均 | 区间 `spend`;日均 = `总消耗 ÷ 区间日历天数`(含起止日) |
284
+ | 2 曝光 / 点击 | `impressions`、`clicks` |
285
+ | 3 点击率 | 已是 **0~1 小数**时写 `(ctr * 100).toFixed(2) + "%"`,禁止直接打印成 `0.10%` |
286
+ | 3 水平判定 | **搜索消耗 ≥60%**:`<3%` 偏低,`3%~5%` 正常,`>5%` 优秀,括号写「搜索正常水平 3%~5%」。**展示消耗 ≥60%**:`<1%` 偏低,`1%~2%` 正常,`>2%` 优秀,括号写「展示正常水平 1%~2%」。其余写「整体」,并说明依据(如搜索消耗占比)。括号里只留这一句判定,不要把本表规则贴给客户 |
287
+ | 4 CPC | `averageCpc`,或 `cost / clicks` |
288
+ | 5 转化数 | 默认 `conversions` |
289
+ | 5.1 / 5.2 | `keywords` / `campaign-geo-matched` 中 `conversions > 0`,按词或国家合计,最多 5 个,写成「名称(N 个,CPA 金额)」;没有则写「本周期暂无带转化关键词」或「本周期暂无带转化国家/地区」 |
290
+ | 6 优化建议 | 同批 JSON,3~5 条,每条单独一行;不额外拉数。用户若限定「只写预算/否词」,按该范围写,条数仍各自成行 |
291
+ | 7 余额 | `balance` 当前余额,标注截至查询时点 |
292
+
293
+ 金额、百分比一律 2 位小数。CNY 用 `¥`,USD 用 `$`。
294
+
295
+ ### 用户本轮改骨架时
296
+
297
+ | 用户说法 | Agent 行为 |
298
+ | --- | --- |
299
+ | 未提话术样式 / 「按默认 OKKI 话术」 | 用上方 7 条,一条一行 |
300
+ | 「话术用我这份:…」(本轮粘贴全文) | 以这份全文为骨架填数;缺项不擅自补回默认条目 |
301
+ | 「不要 5.1 / 5.2,其它不变」 | 仍是默认 7 条,只删 5.1、5.2 |
302
+ | 「第 3 条只写搜索点击率,基准 4%」 | 只改第 3 条的判定句,数值仍来自 JSON |
303
+ | 「按上次那个账户的四段式」 | 仅当用户**本轮**这样说才换骨架;不要自己从历史里捡 |
291
304
 
292
305
  ---
293
306
 
@@ -304,5 +317,5 @@ function deviceKind(deviceType) {
304
317
  | 项 | `google-period-report.md` | 本文 OKKI 周报 |
305
318
  | -------- | ------------------------- | -------------------------------------------------------------------------------------------------------------- |
306
319
  | 默认维度 | 8 维 + 主动追问追加 | **固定** `overview,campaigns,keywords,search-terms,campaign-device,campaign-geo-matched` + `stats` + `balance` |
307
- | 输出形态 | 长文分析报告(默认 HTML,`google-analysis render`) | **必产** 5 Sheet `.xlsx`(`google-analysis okki-render`)+ 客户话术;「表格形式」= Excel;**禁止**对话 Markdown 表 / 手写 HTML / Agent 手写 xlsx |
320
+ | 输出形态 | 长文分析报告(默认 HTML,`google-analysis render`) | **必产** 5 Sheet `.xlsx`(`google-analysis okki-render`)+ 客户话术(默认 7 条、一条一行);「表格形式」= Excel;**禁止**对话 Markdown 表 / 手写 HTML / Agent 手写 xlsx / 另写一套话术标题 |
308
321
  | 典型用户 | 内部分析 | **发客户**的同步简报 |
@@ -35,7 +35,7 @@
35
35
  | `bing-period-report.md` / `.html` | **Bing(BingV2)分析报告(默认)**:四步流程 → `bing-analysis render` 出 HTML |
36
36
  | `yandex-period-report.md` / `.html` | **Yandex Direct 周期报告(默认)**:四步流程 → `yandex-analysis render` 出 HTML(样式对齐开发样例) |
37
37
  | `yandex-period-report-excel.md` | **仅用户要 Excel 时**:Agent 脚本写 xlsx;无 CLI excel 子命令 |
38
- | `okki-weekly-google-client.md` | **OKKI 周报**:写 `okki-weekly-report.json` → `google-analysis okki-render` 出 5 Sheet Excel + 客户话术,见 `references/core/playbooks.md` P6 |
38
+ | `okki-weekly-google-client.md` | **OKKI 周报**:写 `okki-weekly-report.json` → `google-analysis okki-render` 出 5 Sheet Excel + 客户话术(默认 7 条、一条一行),见 `references/core/playbooks.md` P6 |
39
39
  | `google-inquiry-analysis.md` | **Google 询盘分析**:严格 3 个月 + 用户询盘 + 8 Sheet xlsx,见 `references/core/playbooks.md` P7 |
40
40
  | `website-diagnosis-report.md` / `.html` | **网站诊断**:终稿为 **HTML**(对齐 TSO `WebsiteAnalysisReport/v3`);配合 `website-diagnosis collect`,见 P8 |
41
41
 
@@ -84,7 +84,7 @@
84
84
  - **TikTok 周期报告**:产出 `tiktok-period-report.json`(见 `tiktok-period-report.md`,`meta` 可由 `--snapshot-dir` 自动合并)。
85
85
  - **Bing 周期报告**:产出 `bing-period-report.json`(见 `bing-period-report.md`,`meta`/`kpis` 可由 `--snapshot-dir` 自动合并)。
86
86
  - **Yandex 周期报告**:产出 `yandex-period-report.json`(见 `yandex-period-report.md`,`meta`/`kpis`/`tables` 可由 `--snapshot-dir` 自动合并)。
87
- - **OKKI(P6)**:产出 `okki-weekly-report.json` 后走 `google-analysis okki-render` 出 **5 Sheet `.xlsx`**(必产);**询盘(P7)**仍由 Agent 脚本写 8 Sheet `.xlsx`。对话 Markdown 表 / 手写 HTML **不能**代替终稿。
87
+ - **OKKI(P6)**:产出 `okki-weekly-report.json` 后走 `google-analysis okki-render` 出 **5 Sheet `.xlsx`**(必产);客户话术按模板默认 7 条、一条一行,禁止另写「一、二、三、四」。**询盘(P7)**仍由 Agent 脚本写 8 Sheet `.xlsx`。对话 Markdown 表 / 手写 HTML **不能**代替终稿。
88
88
 
89
89
  ### 步骤 5b:生成终稿(按媒体与格式)
90
90
 
@@ -9,7 +9,7 @@
9
9
  > **默认交付(硬性,缺文件 = 任务未完成)**:磁盘上的 **5 Sheet `.xlsx`**(由 `google-analysis okki-render` 生成)+ 对话内客户话术。
10
10
  > 「表格形式 / 表格 / 各维度表格 / 表 / 做成表」= **Excel `.xlsx`**,**不是**对话 Markdown 表,**不是**手写 HTML/PDF。
11
11
  > 仅当用户明确「只要话术 / 不要文件 / 不要 Excel」时才省略 xlsx。
12
- > **禁止**:用对话 Markdown 表、手写 HTML、PDF 代替 `.xlsx`;**禁止** Agent 手写 / 脚本写 xlsx。
12
+ > **禁止**:用对话 Markdown 表、手写 HTML、PDF 代替 `.xlsx`;**禁止** Agent 手写 / 脚本写 xlsx。话术由 Agent 按下文「对外客户话术」填写,**不要**另写脚本生成话术。
13
13
 
14
14
  ## Contents
15
15
 
@@ -17,13 +17,13 @@
17
17
  - 标准四步流程(拉数 → 写 JSON → okki-render)
18
18
  - 拉数(一次目录)
19
19
  - xlsx 版式规范(由 CLI 锁死)
20
- - 对外客户话术(默认结构,填数来自 JSON)
20
+ - 对外客户话术(默认 7 条,一条一行)
21
21
  - 复盘小结(Excel「数据复盘」区块 / 对内补充)
22
22
  - 与 `google-period-report.md` 的差异
23
23
 
24
24
  ---
25
25
 
26
- 识别到上述意图时:**不要**再走 `google-period-report.md` 的「默认 9 章 + 追问追加」流程;按本文**固定维度 + 默认客户话术(可用户自定义)+ `okki-render` 出 5 Sheet `.xlsx`** 交付。**先 `okki-render` 再发话术**;没有 `.xlsx` 路径不得收口。
26
+ 识别到上述意图时:**不要**再走 `google-period-report.md` 的「默认 9 章 + 追问追加」流程;按本文**固定维度 + 默认客户话术(可用户自定义)+ `okki-render` 出 5 Sheet `.xlsx`** 交付。**先 `okki-render` 再发话术**;没有 `.xlsx` 路径不得收口。话术骨架见下文,禁止另起一套标题。
27
27
 
28
28
  ---
29
29
 
@@ -33,7 +33,7 @@
33
33
  2. **统计区间**:`--start` / `--end`(用户未给齐时按 SKILL 反问;授权默认时可用「上一完整自然周」白名单并写明)。
34
34
  3. **询盘口径**:默认使用区间内 `conversions`(转化次数,来自 `stats` 或 `overview`)。若运营定义为某类转化,须在首段脚注说明(必要时补拉 `google-analysis --sections conversion-actions` 仅作说明)。
35
35
  4. **日期写法**:`2026.4.1`、`2026/4/1` 等先规范为 `YYYY-MM-DD`(如 `2026-04-01`)再传 `--start` / `--end`。
36
- 5. **交付**:默认 **客户话术 + 5 Sheet `.xlsx`(必产,由 `okki-render` 写出)**。「表格形式」一律当 Excel。仅用户明确只要可复制话术、不要文件时,才省略 xlsx。
36
+ 5. **交付**:默认 **客户话术 + 5 Sheet `.xlsx`(xlsx 必产,由 `okki-render` 写出)**。「表格形式」一律当 Excel。仅用户明确只要可复制话术、不要文件时,才省略 xlsx。话术按下文默认 7 条填写。
37
37
 
38
38
  ---
39
39
 
@@ -241,53 +241,66 @@ function deviceKind(deviceType) {
241
241
 
242
242
  ## 对外客户话术(默认结构,填数来自 JSON)
243
243
 
244
- > **默认**:用户未指定话术样式时,使用下方**默认模板**输出终稿。
245
- > **用户自定义**:用户可(1)粘贴自有话术骨架;(2)要求增删改某几条(如「不要 5.1」「第 3 条改成…」);(3)指定 CTR 基准或币种展示方式。**自定义时仍须**:数值/百分比一律来自 CLI 落盘 JSON + 脚本计算,禁止编造;缺数据标 `[数据不可用:原因]`,不得留空占位符糊弄客户。
244
+ > 话术是给客户看的总结,**由 Agent 填写,不要写脚本生成**。骨架固定;只有措辞和数字随当次数据变。
246
245
 
247
- **日期写法(首行)**:`<S>` / `<E>` 转为中文可读,如 `4月1号-4月7号` 或 `2026年4月1日-4月7日`(与用户习惯一致即可,须与 `--start` / `--end` 对应)。
246
+ **默认就用下面这 7 条。** 放进代码块再发给用户,便于原样复制。换行是骨架的一部分:
248
247
 
249
- **默认模板**:
248
+ - `1`~`5`、`5.1`、`5.2`、`7` 各占一行,行末用分号
249
+ - 第 `6` 条先写「6、优化建议:」,下面 **3~5 条**建议各占一行,用 ①②③④⑤,禁止写进同一句
250
+ - 禁止把 1~7 合成一段
250
251
 
251
252
  ```
252
- 您好,同步一下谷歌<S>--<E>投放的情况:
253
+ 您好,同步一下谷歌<中文日期>投放的情况:
253
254
 
254
- 1、消耗:共消耗<金额+币种>,平均每天消耗<金额+币种>;
255
+ 1、消耗:共消耗<金额>,平均每天消耗<金额>;
255
256
  2、展示点击:带来<曝光>个曝光,<点击>个点击;
256
- 3、点击率:<CTR%>,处于<优秀/正常/偏低>水平(搜索正常水平 3%~5%,展示正常水平 1%~2%;按账户实际以搜索或展示为主选基准,无法区分时写「整体」并说明依据)
257
- 4、平均点击单价:<金额+币种>
258
- 5、转化:记录到网站表单+会话询盘<N>个;直接写邮件咨询和 WhatsApp 咨询无法记录,需贵司自行统计后反馈具体咨询产品和国家,方便广告及时调整
259
- 5.1 有转化的关键词:<据 keywords / search-terms JSON 填写;无转化则写「本周期暂无带转化关键词」>
260
- 5.2 有转化的国家:<据 campaign-geo-matched JSON 填写;无转化则写「本周期暂无带转化国家/地区」>
261
- 6、优化建议:<据 campaigns / keywords / search-terms / device / geo JSON 撰写 3~5 条可执行建议,禁止编造数据>
262
- 7、账户余额:<金额+币种>(截至查询时点)
257
+ 3、点击率:<CTR%>,处于<优秀/正常/偏低>水平(<按下方规则选一条基准>);
258
+ 4、平均点击单价:<金额>;
259
+ 5、转化:记录到网站表单+会话询盘<N>个;直接写邮件咨询和 WhatsApp 咨询无法记录,需贵司自行统计后反馈具体咨询产品和国家,方便广告及时调整;
260
+ 5.1 有转化的关键词:<词(N 个,CPA 金额)>;
261
+ 5.2 有转化的国家:<国家(N 个,CPA 金额)>;
262
+ 6、优化建议:
263
+ ① <一条可执行建议,点名对象并引用当次数字>
264
+ ② <同上>
265
+ ③ <同上>
266
+ 7、账户余额:<金额>(截至查询时点)。
263
267
  ```
264
268
 
269
+ 日期写成 `2026年4月1日-4月7日`(同年可省略结束年份),须与 `--start` / `--end` 对应。
270
+
271
+ **未获本轮用户改骨架时,禁止:**
272
+
273
+ - 改成「一、本周概览 / 二、本周发现 / 三、下周优化动作 / 四、需要您配合确认」,或任何另一套标题
274
+ - 把上一轮、另一个账户、对话里出现过的话术当成这次的骨架
275
+ - 用「结论先行」重写可复制块。运营摘要最多 3~5 行,放在代码块**外面**
276
+
277
+ **只有本轮用户**粘贴了全文骨架,或点名增删某一条(「不要 5.1」「第 3 条改成…」)时才偏离上面的结构。只改被点名的条目;用户删掉的条目不再输出。数字仍须来自当次 JSON,缺数写 `[数据不可用:原因]`。
278
+
265
279
  ### 填数规则
266
280
 
267
- | 条目 | 数据来源 / 计算 |
268
- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
269
- | 1 消耗 / 日均 | `stats` 或 `overview` 区间 `spend`;日均 = `总消耗 ÷ 区间日历天数`(含起止日),脚本计算 |
270
- | 2 曝光 / 点击 | `stats` / `overview` 的 `impressions`、`clicks` |
271
- | 3 点击率 | `overview.record.ctr` 或 `stats` 同级字段;已是 **0~1 小数**,话术 `(ctr * 100).toFixed(2) + "%"`,**禁止**直接打印得到 `0.10%` |
272
- | 3 水平判定 | **搜索为主**(Search 系列占消耗大头):`<3%` 偏低,`3%~5%` 正常,`>5%` 优秀;**展示为主**:`<1%` 偏低,`1%~2%` 正常,`>2%` 优秀;混合账户说明以哪类为准 |
273
- | 4 CPC | `stats` / `overview` 的 `averageCpc` 或 `cost / clicks` |
274
- | 5 转化数 | 默认 `conversions`(与「须先确认 §3 询盘口径」一致);括号说明若口径不同须在首段脚注 |
275
- | 5.1 / 5.2 | 从 `keywords` / `campaign-geo-matched` 筛 `conversions > 0`,列词或国家 + 转化数(可 TopN);用户自定义模板时仍可保留或合并为一条 |
276
- | 6 优化建议 | 同批 JSON,不额外拉数;用户若提供「只写预算/否词」等范围,按用户范围写 |
277
- | 7 余额 | `balance` 当前余额,标注截至查询时点 |
278
-
279
- - **所有金额、百分比** 一律 **2 位小数**(与 xlsx 规范一致)。
280
- - 用户自定义模板时:**保留用户条目顺序与措辞**,仅替换 `<…>` 占位或等价位置为 JSON 实数;用户删掉的条目不再输出。
281
-
282
- ### 用户自定义示例
283
-
284
- | 用户说法 | Agent 行为 |
285
- | ---------------------------------- | ---------------------------------------------------------- |
286
- | 「按默认 OKKI 话术发客户」 | 用上方默认模板 |
287
- | 「话术用我这份:…」(粘贴全文) | 以用户全文为骨架填数;缺项不擅自补回默认条目,除非用户要求 |
288
- | 「不要 5.1 / 5.2,其它不变」 | 输出默认模板但省略 5.1、5.2 |
289
- | 「第 3 条只写搜索点击率,基准 4%」 | 按用户基准改写判定话术,数值仍来自 JSON |
290
- | 「优化建议只要 3 条 bullet」 | 压缩第 6 条条数,内容仍须有据 |
281
+ | 条目 | 数据来源 / 计算 |
282
+ | --- | --- |
283
+ | 1 消耗 / 日均 | 区间 `spend`;日均 = `总消耗 ÷ 区间日历天数`(含起止日) |
284
+ | 2 曝光 / 点击 | `impressions`、`clicks` |
285
+ | 3 点击率 | 已是 **0~1 小数**时写 `(ctr * 100).toFixed(2) + "%"`,禁止直接打印成 `0.10%` |
286
+ | 3 水平判定 | **搜索消耗 ≥60%**:`<3%` 偏低,`3%~5%` 正常,`>5%` 优秀,括号写「搜索正常水平 3%~5%」。**展示消耗 ≥60%**:`<1%` 偏低,`1%~2%` 正常,`>2%` 优秀,括号写「展示正常水平 1%~2%」。其余写「整体」,并说明依据(如搜索消耗占比)。括号里只留这一句判定,不要把本表规则贴给客户 |
287
+ | 4 CPC | `averageCpc`,或 `cost / clicks` |
288
+ | 5 转化数 | 默认 `conversions` |
289
+ | 5.1 / 5.2 | `keywords` / `campaign-geo-matched` 中 `conversions > 0`,按词或国家合计,最多 5 个,写成「名称(N 个,CPA 金额)」;没有则写「本周期暂无带转化关键词」或「本周期暂无带转化国家/地区」 |
290
+ | 6 优化建议 | 同批 JSON,3~5 条,每条单独一行;不额外拉数。用户若限定「只写预算/否词」,按该范围写,条数仍各自成行 |
291
+ | 7 余额 | `balance` 当前余额,标注截至查询时点 |
292
+
293
+ 金额、百分比一律 2 位小数。CNY 用 `¥`,USD 用 `$`。
294
+
295
+ ### 用户本轮改骨架时
296
+
297
+ | 用户说法 | Agent 行为 |
298
+ | --- | --- |
299
+ | 未提话术样式 / 「按默认 OKKI 话术」 | 用上方 7 条,一条一行 |
300
+ | 「话术用我这份:…」(本轮粘贴全文) | 以这份全文为骨架填数;缺项不擅自补回默认条目 |
301
+ | 「不要 5.1 / 5.2,其它不变」 | 仍是默认 7 条,只删 5.1、5.2 |
302
+ | 「第 3 条只写搜索点击率,基准 4%」 | 只改第 3 条的判定句,数值仍来自 JSON |
303
+ | 「按上次那个账户的四段式」 | 仅当用户**本轮**这样说才换骨架;不要自己从历史里捡 |
291
304
 
292
305
  ---
293
306
 
@@ -304,5 +317,5 @@ function deviceKind(deviceType) {
304
317
  | 项 | `google-period-report.md` | 本文 OKKI 周报 |
305
318
  | -------- | ------------------------- | -------------------------------------------------------------------------------------------------------------- |
306
319
  | 默认维度 | 8 维 + 主动追问追加 | **固定** `overview,campaigns,keywords,search-terms,campaign-device,campaign-geo-matched` + `stats` + `balance` |
307
- | 输出形态 | 长文分析报告(默认 HTML,`google-analysis render`) | **必产** 5 Sheet `.xlsx`(`google-analysis okki-render`)+ 客户话术;「表格形式」= Excel;**禁止**对话 Markdown 表 / 手写 HTML / Agent 手写 xlsx |
320
+ | 输出形态 | 长文分析报告(默认 HTML,`google-analysis render`) | **必产** 5 Sheet `.xlsx`(`google-analysis okki-render`)+ 客户话术(默认 7 条、一条一行);「表格形式」= Excel;**禁止**对话 Markdown 表 / 手写 HTML / Agent 手写 xlsx / 另写一套话术标题 |
308
321
  | 典型用户 | 内部分析 | **发客户**的同步简报 |
@@ -9,7 +9,7 @@ $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.54-beta.4'
12
+ $PKG_VERSION = '1.1.55-beta.1'
13
13
  $CLI_BIN = 'siluzan-tso'
14
14
  $SKILL_LABEL = 'Siluzan TSO'
15
15
  $INSTALL_CMD = 'npm install -g siluzan-tso-cli@beta'
@@ -9,7 +9,7 @@ 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.54-beta.4"
12
+ readonly PKG_VERSION="1.1.55-beta.1"
13
13
  readonly CLI_BIN="siluzan-tso"
14
14
  readonly SKILL_LABEL="Siluzan TSO"
15
15
  readonly INSTALL_CMD="npm install -g siluzan-tso-cli@beta"
@@ -45,7 +45,7 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
45
45
 
46
46
  **任务**:
47
47
 
48
- 1. Read `report-templates/okki-weekly-google-client.md` 中 **§标准四步流程** 与 **§对外客户话术**(默认 7 条模板;主 Agent 若指定自定义话术则从其指示)。
48
+ 1. Read `report-templates/okki-weekly-google-client.md` 中 **§标准四步流程** 与 **§对外客户话术**(默认 7 条、一条一行;主 Agent 若说明用户本轮改了骨架则从其指示)。不要自己改成「一、二、三、四」。
49
49
  2. 按 `assets/okki-weekly-report.schema.json` 写 `okki-weekly-report.json`:只填 `meta` + `narrative.sheetAnalysis`(5 Sheet,各 summary≥1 / suggestions≥1)+ `narrative.review`(固定 5 维:账户/关键词/搜索字词/设备/国家,每维 overview+summary+suggestion)。表为空也须写分析。`campaign-device` 的 `deviceType` 是 `Desktop`/`Mobile`/`Tablet`(不是 `DESKTOP`/`MOBILE`);设备消耗按 `toLowerCase()` / `includes("desktop")` 分类累加,**禁止** `.get("DESKTOP")`。
50
50
  3. 执行:
51
51
  ```bash
@@ -57,4 +57,4 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
57
57
  失败则按 stderr 补 JSON 后重跑,不得改用手写表。
58
58
  4. 设备/国家必须来自 `campaign-device` / `campaign-geo-matched`(由 render 校验)。
59
59
 
60
- **returnSchema**: xlsx 路径 + `okki-render` exitCode + 客户话术文本;勿贴 xlsx 二进制。
60
+ **returnSchema**: xlsx 路径 + `okki-render` exitCode + 客户话术文本(默认 7 条、一条一行)。勿贴 xlsx 二进制。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siluzan-tso-cli",
3
- "version": "1.1.54-beta.4",
3
+ "version": "1.1.55-beta.1",
4
4
  "description": "Siluzan 广告账户管理 CLI — 查询账户、余额、消耗数据,管理绑定关系与充值。",
5
5
  "keywords": [
6
6
  "ad-account",