siluzan-tso-cli 1.1.19-beta.15 → 1.1.19-beta.17
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 +1 -1
- package/dist/skill/SKILL.md +2 -2
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/references/geo-continents.json +1 -1
- package/dist/skill/report-templates/google-inquiry-analysis.md +61 -13
- package/dist/skill/report-templates/okki-weekly-google-client.md +1 -1
- package/package.json +1 -1
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.19-beta.
|
|
54
|
+
> **注意**:当前为测试版(1.1.19-beta.17),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
|
|
55
55
|
|
|
56
56
|
| 助手 | 建议 `--ai` |
|
|
57
57
|
| ----------------------- | ------------------------------------ |
|
package/dist/skill/SKILL.md
CHANGED
|
@@ -55,7 +55,7 @@ Windows 注意:部分 Agent 客户端通过 PowerShell / cmd 代执行命令
|
|
|
55
55
|
| `report-templates/report-template.html` | 默认 HTML 报告样式参考 |
|
|
56
56
|
| `report-templates/okki-weekly-google-client.md` | **OKKI 周报**:固定话术 + 精简维度 CLI 拉数;**Excel 由 Agent 脚本写**(见 P6),无 CLI 内置写表命令 |
|
|
57
57
|
| `report-templates/google-inquiry-analysis.md` | **Google 询盘分析**:固定话术(`Goog账户询盘分析` 等)→ 严格 3 个月窗口 + 用户上传询盘资料 + 8 Sheet xlsx(见 P7);国家→大洲映射见 `references/geo-continents.json` |
|
|
58
|
-
| `references/geo-continents.json` | 国家中文名 → 7 大洲映射(亚洲/中东/欧洲/北美/南美/非洲/大洋洲),供询盘分析 Sheet 3 / Sheet 4
|
|
58
|
+
| `references/geo-continents.json` | 国家中文名 → 7 大洲映射(亚洲/中东/欧洲/北美/南美/非洲/大洋洲),供询盘分析 Sheet 3 大洲透视 / Sheet 4 重点国切片(重点国可配置)使用 |
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
|
|
@@ -277,7 +277,7 @@ siluzan-tso accounts-digest -m Google -a id1,id2,... --start <S> --end <D> --jso
|
|
|
277
277
|
siluzan-tso google-analysis -a <mediaCustomerId> --start <M3S> --end <M3E> --sections geographic --json-out ./snap-inquiry/m3
|
|
278
278
|
```
|
|
279
279
|
4. **先 outline 后脚本**:与 P6 同纪律。读各 `*.outline.txt` 拿字段结构 → 写聚合脚本读 JSON → 计算 8 Sheet 数据。
|
|
280
|
-
5. **国家 → 大洲映射**:脚本里读 `references/geo-continents.json`,未命中标 `未知大洲` 不阻塞,结尾打印未命中清单。Sheet 4
|
|
280
|
+
5. **国家 → 大洲映射**:脚本里读 `references/geo-continents.json`,未命中标 `未知大洲` 不阻塞,结尾打印未命中清单。Sheet 4「重点国 vs 非重点国」切片:按 `focusCountries`(中文国家名数组,运营未指定时默认取分析月询盘 Top1 国家,详见 `report-templates/google-inquiry-analysis.md`「重点国家配置」节)判桶,无需走大洲表;**禁止**在脚本中硬编码任何具体国家名。
|
|
281
281
|
6. **必产 8 Sheet xlsx**:版式/Sheet 名/列定义/数值格式以 `report-templates/google-inquiry-analysis.md` 为准;**只能**由 Agent 在当前环境执行脚本(Node `xlsx`/`exceljs`,Python `openpyxl` 均可)生成,**禁止**假设 `siluzan-tso … excel` 这类 CLI 子命令存在。
|
|
282
282
|
7. 遵守 SKILL 硬规范:金额 `*Display`、`budgetAmount` 是分(÷100)、禁止手填业务数、禁止编造 ID。
|
|
283
283
|
|
package/dist/skill/_meta.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "国家中文名 → 大洲映射,用于 google-inquiry-analysis.md Sheet 3 国家维度透视的「所属大洲」列。",
|
|
4
4
|
"buckets": ["亚洲", "中东", "欧洲", "北美", "南美", "非洲", "大洋洲"],
|
|
5
5
|
"coverage": "覆盖 tso-cli/src/commands/google-analysis/geo-en2zh.json 的 105 个条目,外加运营样表中出现但未在字典里的常见国家(伊朗、津巴布韦、委内瑞拉、突尼斯、苏丹、阿塞拜疆、立陶宛等)。",
|
|
6
|
-
"secondary_merge_hint": "运营常用 5
|
|
6
|
+
"secondary_merge_hint": "运营常用 5 桶(<重点国> / 中东 / 非洲 / 欧美 / 亚洲(除重点国)):由 Agent 脚本在写表前对本字典做二次合并;重点国 focusCountries 由运营每次会议前配置(默认取分析月询盘 Top1 国家),伪代码与默认规则见 google-inquiry-analysis.md「国家 → 大洲映射」「重点国家配置」两节。",
|
|
7
7
|
"unmatched_policy": "未命中标 `未知大洲`,不阻塞;脚本结尾打印未命中清单,运营回流补字典。"
|
|
8
8
|
},
|
|
9
9
|
|
|
@@ -83,7 +83,7 @@ for month in <S月, S+1月, E月>:
|
|
|
83
83
|
- `campaigns`:Sheet 5 主表,含 `biddingStrategyTypeV2`(策略)、`startDate`(开始日期)、`budgetAmount`(**分**,÷100 为元)。
|
|
84
84
|
- `keywords` / `search-terms`:Sheet 7 / 8;默认 `limit=200`(TOP200)。
|
|
85
85
|
- `campaign-geo`:含 `campaignName`,用于 Sheet 6「暂停的系列」列辅助派生(若运营不需要可留空);也用于 Sheet 3 国家级消耗 join。
|
|
86
|
-
- `geographic`:账户级国家聚合;Sheet 6 月度循环主源;Sheet 4
|
|
86
|
+
- `geographic`:账户级国家聚合;Sheet 6 月度循环主源;Sheet 4 下半区「重点国家 vs 非重点国」按月切片(重点国默认取分析月询盘 Top1 国家,可由运营覆盖,详见下文 Sheet 4 节)。
|
|
87
87
|
- **`countryOrRegionZh`** 中文国家名在 `campaign-geo` / `geographic` 中**自动补字段**(见 `references/account-analytics.md`「中文化字段」);未命中字典时回落英文 `countryOrRegion`。
|
|
88
88
|
|
|
89
89
|
**写脚本前先读 `<section>-<id>.outline.txt`**(几百字节 TS 类型字面量),别直接 `Read` 几 MB 的 JSON。
|
|
@@ -121,11 +121,13 @@ for month in <S月, S+1月, E月>:
|
|
|
121
121
|
|
|
122
122
|
- **数据源**:`references/geo-continents.json`(中文国家名 → 7 大洲)。
|
|
123
123
|
- **默认 7 桶**:`亚洲` / `中东` / `欧洲` / `北美` / `南美` / `非洲` / `大洋洲`。
|
|
124
|
-
- **运营常用 5 桶合并**(与样表 Sheet 3
|
|
124
|
+
- **运营常用 5 桶合并**(与样表 Sheet 3 一致):`<重点国>` / `中东` / `非洲` / `欧美` / `亚洲(除重点国)`。**由脚本在写表前做二次合并**,伪代码:
|
|
125
125
|
|
|
126
126
|
```javascript
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
// focusCountries 由运营每次会议前确认(见下方「重点国家配置」节);
|
|
128
|
+
// 单国时桶名 = 国家名(如 "印度");多国时桶名 = 列表拼接(如 "印度+印度尼西亚")。
|
|
129
|
+
function bucketForSheet3(country, continents, focusCountries) {
|
|
130
|
+
if (focusCountries.includes(country)) return focusCountries.join("+");
|
|
129
131
|
const c = continents[country];
|
|
130
132
|
if (c === "欧洲" || c === "北美" || c === "南美") return "欧美";
|
|
131
133
|
return c || "未知";
|
|
@@ -151,7 +153,7 @@ for month in <S月, S+1月, E月>:
|
|
|
151
153
|
|
|
152
154
|
| 顺序 | Sheet 名 | 主源 |
|
|
153
155
|
| ---: | --- | --- |
|
|
154
|
-
| 1 |
|
|
156
|
+
| 1 | `会议讨论议题` | Agent 从 Sheet 2~8 提炼议题(不拉数);**含「会后补写区」由运营会后手填决策** |
|
|
155
157
|
| 2 | `询盘明细---<S月>-<E月>月份` | `inquiries.json` |
|
|
156
158
|
| 3 | `询盘分析-最近3个月` | `inquiries.json` + `campaign-geo-*.json` |
|
|
157
159
|
| 4 | `账号分析-最近3个月` | `daily-metrics-*.json`(按月聚合)+ `geographic-*.json` × 3 月 |
|
|
@@ -162,14 +164,30 @@ for month in <S月, S+1月, E月>:
|
|
|
162
164
|
|
|
163
165
|
---
|
|
164
166
|
|
|
165
|
-
### Sheet 1
|
|
167
|
+
### Sheet 1 `会议讨论议题`
|
|
168
|
+
|
|
169
|
+
> **语义**:Agent 产出的是**会议前数据分析**,**不可能**知道会上讨论了什么 / 决策了什么。本 Sheet 由 Agent 把其他 7 个 Sheet 的**数据异常与机会**提炼成**待讨论议题**,会后由运营手工把决策结论补到「会后补写区」。
|
|
170
|
+
>
|
|
171
|
+
> **口吻硬约束**:议题区**只用**「建议讨论…」「是否…」「Top X 是…,是否…」等开放语气,**禁止**出现「已暂停」「已新增」「决定切换」这类决策口吻;禁止编造未在数据中出现的国家/产品/渠道。
|
|
166
172
|
|
|
167
173
|
| 行 | 内容 |
|
|
168
174
|
| --- | --- |
|
|
169
|
-
| R1 |
|
|
170
|
-
| R2
|
|
175
|
+
| R1 | 一句话数据要点(Agent 基于本期 Sheet 2~8 的核心发现概括,例:`本期 3 个月共 {N} 条询盘,{E月} CPL ¥{x}(环比 {±%}),消耗 Top3 国家:{A/B/C},询盘 Top3 国家:{X/Y/Z}。`) |
|
|
176
|
+
| R2 | `议题分类` \| `数据要点(引用具体数字)` \| `候选讨论选项` \| `数据来源` |
|
|
177
|
+
| R3+ | 议题列表(**Agent 基于其他 7 个 Sheet 数据撰写,每条都要带具体数字**),4 大类,每类视数据出 1~3 条: |
|
|
178
|
+
| | ① **国家投放议题**:列出 (a) 消耗 Top + 询盘 Top (b) 高消耗 0 询盘国家 (c) 有询盘但消耗 ≈ 0 的国家;候选选项写「建议讨论:暂停 / 持平 / 加大」三选;数据来源标 `Sheet 3 / Sheet 6` |
|
|
179
|
+
| | ② **产品策略议题**:基于 Sheet 3 产品透视 + Sheet 5 系列;指出 CPL 显著高/低的产品系列;候选选项写「建议讨论:调匹配类型 / 切 Pmax / 暂停」;数据来源标 `Sheet 3 / Sheet 5` |
|
|
180
|
+
| | ③ **渠道与数据采集议题**:基于 Sheet 3 客户来源透视,列出占比 Top1/Top2 渠道;若多渠道字面无法区分(如 `AI Search` / `Info邮箱`),议题写「建议讨论:是否加追踪参数」;数据来源标 `Sheet 3` |
|
|
181
|
+
| | ④ **预算与节奏议题**:基于 Sheet 4 上区月趋势(CPL / CVR / 消耗环比)+ Sheet 5 系列消耗占比,列出预算保持/上调/下调 3 个候选方向,每个方向给出对应的「触发数据」;数据来源标 `Sheet 4 / Sheet 5` |
|
|
182
|
+
| 空 1 行 | — |
|
|
183
|
+
| 标题 | `会后补写区 · 由运营会议结束后手填` |
|
|
184
|
+
| 表头 | `#` \| `决策内容` \| `负责人` \| `截止日期` \| `所属议题(R3+ 行号)` |
|
|
185
|
+
| R… | **留 5~8 空行,Agent 不填**;运营开完会按议题手工补写 |
|
|
171
186
|
|
|
172
|
-
|
|
187
|
+
**禁造数硬规范**:
|
|
188
|
+
- 议题区每条结论必须能在其他 Sheet 里找到具体数据来源行(标注 Sheet 号),否则不写。
|
|
189
|
+
- **禁止**写「玻利维亚消耗高已暂停」这类肯定句;只能写「玻利维亚消耗 ¥XXX、0 询盘,建议讨论是否暂停」。
|
|
190
|
+
- 「会后补写区」**保持空白**,等运营手填;Agent **不**预填决策。
|
|
173
191
|
|
|
174
192
|
---
|
|
175
193
|
|
|
@@ -221,12 +239,14 @@ for month in <S月, S+1月, E月>:
|
|
|
221
239
|
| R2 | `时间` \| `点击次数` \| `展示次数` \| `点击率` \| `平均每次点击费用` \| `费用` \| `转化次数` \| `每次转化费用` \| `转化率` \| `询盘个数` \| `CPL` |
|
|
222
240
|
| R3..R5 | 倒序写 3 个月(**E 月在上**,S 月在下):脚本读 `daily-metrics-*.json` 按月(`date` 前 7 位 `YYYY-MM`)求和;`点击率` = sum(clicks)/sum(impressions);`转化率` = sum(conversions)/sum(clicks);`每次转化费用` = sum(spend)/sum(conversions),转化 0 填 `—`;`询盘个数` = `inquiries.json` 按月 count;`CPL` = sum(spend)/`询盘个数`(询盘 0 填 `—`) |
|
|
223
241
|
|
|
224
|
-
**下区**(B→G)3 月 ×
|
|
242
|
+
**下区**(B→G)3 月 × **重点国家 / 非重点国** 切片(共 6 行):
|
|
243
|
+
|
|
244
|
+
> **重点国家口径**(`focusCountries`):见下方「重点国家配置」节,**禁止**在模板里写死任何国家名。
|
|
225
245
|
|
|
226
246
|
| R | 内容 |
|
|
227
247
|
| --- | --- |
|
|
228
|
-
| R7 | `时间` \| `国家` \| `消费` \| `线索数` \| `成本` \|
|
|
229
|
-
| R8..R13 |
|
|
248
|
+
| R7 | `时间` \| `国家` \| `消费` \| `线索数` \| `成本` \| `备注`|
|
|
249
|
+
| R8..R13 | 每月一对(`<focusLabel>` / `非<focusLabel>`,其中 `focusLabel` = `focusCountries.join("+")`):脚本读 `./<YYYY-MM>/geographic-*.json`,按 `focusCountries.includes(countryOrRegionZh) \|\| focusCountries.includes(geoEn2Zh[countryOrRegion])` 二分;`消费` = 该桶 `spend` 求和;`线索数` = `inquiries.json` 同月同桶(按 `country` 字段匹配 `focusCountries`) count;`成本` = `消费 / 线索数`,线索 0 填 `—` |
|
|
230
250
|
|
|
231
251
|
---
|
|
232
252
|
|
|
@@ -292,6 +312,34 @@ for month in <S月, S+1月, E月>:
|
|
|
292
312
|
|
|
293
313
|
---
|
|
294
314
|
|
|
315
|
+
## 重点国家配置(Sheet 3 大洲桶 + Sheet 4 下半区切片共用)
|
|
316
|
+
|
|
317
|
+
`focusCountries` 是一个**中文国家名数组**,决定:
|
|
318
|
+
|
|
319
|
+
1. Sheet 3 国家透视「所属大洲」列的特殊桶名(如 `印度` / `印度+印度尼西亚` / `美国` …);
|
|
320
|
+
2. Sheet 4 下半区按月二分的「重点国 / 非重点国」分桶。
|
|
321
|
+
|
|
322
|
+
**取值规则**(按优先级):
|
|
323
|
+
|
|
324
|
+
1. **运营在会议前显式指定**(最高优先级),例如:
|
|
325
|
+
|
|
326
|
+
```json
|
|
327
|
+
{ "focusCountries": ["印度"] }
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
或多国(与样表 Sheet 3「印度+印尼」桶呼应):
|
|
331
|
+
|
|
332
|
+
```json
|
|
333
|
+
{ "focusCountries": ["印度", "印度尼西亚"] }
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
2. **默认值(运营未指定时)**:取**分析月(最后一个月 E 月)`inquiries.json` 询盘数 Top1 国家**。脚本在控制台打印一行:`[focusCountry auto-pick] {E月}询盘 Top1 = {国家}({count} 条),如需调整请回填运营配置`。
|
|
337
|
+
3. **空数组兜底**:若分析月询盘 0 条,`focusCountries = []`;Sheet 3 跳过「重点国」单桶(直接走默认 5 桶里的对应大洲),Sheet 4 下半区**整段省略**并在 Sheet 标题留脚注 `[ 本期无询盘,省略国家切片 ]`。
|
|
338
|
+
|
|
339
|
+
**禁止**:在脚本里硬编码 `"印度"`、`"India"` 等具体国家名作为业务逻辑(仅 `geo-en2zh.json` / `geo-continents.json` 这种字典数据除外)。
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
295
343
|
## 可选:产品 → 系列前缀映射
|
|
296
344
|
|
|
297
345
|
样表里产品(`滴灌带` / `打包带` / `预制孔水带`)与系列名前缀对应(`A-滴灌带-…` / `B-打包带-…` / `C-预制孔水带设备`)。若运营给出映射,脚本可补 Sheet 3 第 3 个透视的「消耗」「CPL」列;否则**留空 + 脚注**。
|
|
@@ -320,7 +368,7 @@ for month in <S月, S+1月, E月>:
|
|
|
320
368
|
| 输出形态 | 长文报告 | 客户话术 + 多 Sheet xlsx | **8 Sheet xlsx(不含客户话术)** |
|
|
321
369
|
| Excel 由谁写 | Agent 脚本(可选) | Agent 脚本 | **Agent 脚本(必需)** |
|
|
322
370
|
| 大洲映射 | 不涉及 | 不涉及 | **`references/geo-continents.json`** |
|
|
323
|
-
|
|
|
371
|
+
| 重点国家 vs 非重点国切片 | 否 | 否 | **是**(Sheet 4 下半区,重点国可配置) |
|
|
324
372
|
|
|
325
373
|
---
|
|
326
374
|
|
|
@@ -159,7 +159,7 @@ siluzan-tso google-analysis -a <mediaCustomerId> --start <S> --end <E> --json-ou
|
|
|
159
159
|
| R1 | `设备报告` |
|
|
160
160
|
| R2 | 统计区间 |
|
|
161
161
|
| R3(A→M,13 列) | `设备` \| `级别` \| `广告系列` \| `出价调整` \| `展示次数` \| `点击次数` \| `点击率` \| `平均每次点击费用` \| `费用` \| `所有转化次数` \| `转化次数` \| `每次转化费用` \| `转化率` |
|
|
162
|
-
| R4… | `campaign-device-*.json`(`devices[]`):`deviceType`→设备;`campaignName` / `adGroupName`→「广告系列」等;`allConversions`→「所有转化次数」;`conversions`→「转化次数」;`ctr` / `conversionRate`
|
|
162
|
+
| R4… | `campaign-device-*.json`(`devices[]`):`deviceType`→设备;`campaignName` / `adGroupName`→「广告系列」等;`allConversions`→「所有转化次数」;`conversions`→「转化次数」;`ctr` / `conversionRate` 直接写入;**出价调整**:bidModifier (0.5 表示 > 降低50%, 1.1表示提高10%,在表格中分别为-50%,+10%);**级别**列按运营约定(如填 `广告系列` 或 `账户`,全文一致) |
|
|
163
163
|
|
|
164
164
|
---
|
|
165
165
|
|