siluzan-tso-cli 1.1.21-beta.5 → 1.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -2
- package/dist/index.js +28 -1
- package/dist/skill/SKILL.md +62 -5
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/references/finance.md +5 -5
- package/dist/skill/references/google-ads-campaign-plan.md +3 -3
- package/dist/skill/references/google-ads.md +4 -0
- package/dist/skill/references/pmax-api.md +2 -0
- package/dist/skill/references/rag.md +1 -1
- package/dist/skill/references/reporting.md +2 -2
- package/dist/skill/references/setup.md +5 -5
- package/dist/skill/references/tips.md +2 -0
- package/dist/skill/references/tso-home.md +1 -1
- package/dist/skill/scripts/install.ps1 +3 -3
- package/dist/skill/scripts/install.sh +3 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -43,7 +43,7 @@ HTML 报告模板引用以下 CDN:`cdn.tailwindcss.com`、`cdnjs.cloudflare.co
|
|
|
43
43
|
在**用户的目标项目根目录**执行(根据用户使用的助手选择 `--ai`):
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
npm install -g siluzan-tso-cli
|
|
46
|
+
npm install -g siluzan-tso-cli
|
|
47
47
|
siluzan-tso init --ai cursor # 写入 Cursor(默认)
|
|
48
48
|
siluzan-tso init --ai cursor,claude # 同时写入多个平台
|
|
49
49
|
siluzan-tso init --ai all # 写入所有支持的平台
|
|
@@ -51,7 +51,6 @@ siluzan-tso init -d /path/to/skills # 写入自定义目录
|
|
|
51
51
|
siluzan-tso init --force # 强制覆盖已存在文件
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
> **注意**:当前为测试版(1.1.21-beta.5),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
|
|
55
54
|
|
|
56
55
|
| 助手 | 建议 `--ai` |
|
|
57
56
|
| ----------------------- | ------------------------------------ |
|
package/dist/index.js
CHANGED
|
@@ -3328,7 +3328,7 @@ var DEFAULT_API_BASE;
|
|
|
3328
3328
|
var init_defaults = __esm({
|
|
3329
3329
|
"src/config/defaults.ts"() {
|
|
3330
3330
|
"use strict";
|
|
3331
|
-
DEFAULT_API_BASE = "https://tso-api
|
|
3331
|
+
DEFAULT_API_BASE = "https://tso-api.siluzan.com";
|
|
3332
3332
|
}
|
|
3333
3333
|
});
|
|
3334
3334
|
|
|
@@ -114340,8 +114340,26 @@ function buildPmaxCreateUrl(googleApiUrl, accountId) {
|
|
|
114340
114340
|
return `${base}/accounts/${accountId}/campaign/pmax`;
|
|
114341
114341
|
}
|
|
114342
114342
|
|
|
114343
|
+
// src/commands/ad/pmax-feature-guard.ts
|
|
114344
|
+
var ENV_KEY = "SILUZAN_PMAX_SETUP";
|
|
114345
|
+
function isPmaxSetupEnabled() {
|
|
114346
|
+
const v = process.env[ENV_KEY]?.trim();
|
|
114347
|
+
return v === "1" || v?.toLowerCase() === "true";
|
|
114348
|
+
}
|
|
114349
|
+
function assertPmaxSetupEnabled(feature) {
|
|
114350
|
+
if (isPmaxSetupEnabled()) return;
|
|
114351
|
+
console.error(
|
|
114352
|
+
`
|
|
114353
|
+
\u274C PMax\u300C${feature}\u300D\u6682\u672A\u5728\u751F\u4EA7\u73AF\u5883\u5F00\u653E\uFF08\u642D\u5EFA\u80FD\u529B\u4ECD\u5728\u6D4B\u8BD5\uFF09\u3002
|
|
114354
|
+
\u8BF7\u5728 Google Ads UI \u64CD\u4F5C\uFF0C\u6216\u672C\u5730\u8054\u8C03\u65F6\u8BBE\u7F6E ${ENV_KEY}=1 \u540E\u91CD\u8BD5\u3002
|
|
114355
|
+
`
|
|
114356
|
+
);
|
|
114357
|
+
process.exit(1);
|
|
114358
|
+
}
|
|
114359
|
+
|
|
114343
114360
|
// src/commands/ad/pmax-create.ts
|
|
114344
114361
|
async function runAdPmaxCreate(opts) {
|
|
114362
|
+
assertPmaxSetupEnabled("pmax-create");
|
|
114345
114363
|
const cfg = loadPmaxCreateConfig(opts.configFile);
|
|
114346
114364
|
const { errors: cfgErrors, warnings: cfgWarnings } = runPmaxCreateValidation(cfg);
|
|
114347
114365
|
const { errors: imgErrors, warnings: imgWarnings } = await runPmaxImageValidation(
|
|
@@ -114431,6 +114449,7 @@ async function runAdPmaxCreate(opts) {
|
|
|
114431
114449
|
import { writeFileSync as writeFileSync3 } from "fs";
|
|
114432
114450
|
init_cli_json_snapshot();
|
|
114433
114451
|
async function runAdPmaxValidate(opts) {
|
|
114452
|
+
assertPmaxSetupEnabled("pmax-validate");
|
|
114434
114453
|
const cfg = loadPmaxCreateConfig(opts.configFile);
|
|
114435
114454
|
const { errors: cfgErrors, warnings: cfgWarnings } = runPmaxCreateValidation(cfg);
|
|
114436
114455
|
const { errors: imgErrors, warnings: imgWarnings } = await runPmaxImageValidation(
|
|
@@ -114672,6 +114691,7 @@ async function runAdPmaxGet(opts) {
|
|
|
114672
114691
|
});
|
|
114673
114692
|
}
|
|
114674
114693
|
async function runAdPmaxEdit(opts) {
|
|
114694
|
+
assertPmaxSetupEnabled("pmax-edit");
|
|
114675
114695
|
const accountId = requireAccountId(opts.account);
|
|
114676
114696
|
const campaignId = opts.campaignId.trim();
|
|
114677
114697
|
let body;
|
|
@@ -114733,6 +114753,7 @@ async function runAdPmaxEdit(opts) {
|
|
|
114733
114753
|
});
|
|
114734
114754
|
}
|
|
114735
114755
|
async function runAdPmaxAssetGroupCreate(opts) {
|
|
114756
|
+
assertPmaxSetupEnabled("pmax-asset-group-create");
|
|
114736
114757
|
const cfg = loadPmaxJsonFile(opts.configFile);
|
|
114737
114758
|
const accountId = requireAccountId(String(cfg["account"] ?? ""));
|
|
114738
114759
|
const campaignId = String(cfg["campaignId"] ?? "").trim();
|
|
@@ -114818,6 +114839,7 @@ async function runAdPmaxAssetGroupCreate(opts) {
|
|
|
114818
114839
|
});
|
|
114819
114840
|
}
|
|
114820
114841
|
async function runAdPmaxAssetGroupEdit(opts) {
|
|
114842
|
+
assertPmaxSetupEnabled("pmax-asset-group-edit");
|
|
114821
114843
|
const accountId = requireAccountId(opts.account);
|
|
114822
114844
|
const assetGroupId = opts.assetGroupId.trim();
|
|
114823
114845
|
let body;
|
|
@@ -114869,6 +114891,7 @@ async function runAdPmaxAssetGroupEdit(opts) {
|
|
|
114869
114891
|
});
|
|
114870
114892
|
}
|
|
114871
114893
|
async function runAdPmaxAssetsUpdate(opts) {
|
|
114894
|
+
assertPmaxSetupEnabled("pmax-assets-update");
|
|
114872
114895
|
const cfg = loadPmaxJsonFile(opts.configFile);
|
|
114873
114896
|
const accountId = requireAccountId(String(cfg["account"] ?? ""));
|
|
114874
114897
|
const assetGroupId = String(cfg["assetGroupId"] ?? "").trim();
|
|
@@ -114929,6 +114952,7 @@ async function runAdPmaxAssetsUpdate(opts) {
|
|
|
114929
114952
|
});
|
|
114930
114953
|
}
|
|
114931
114954
|
async function runAdPmaxYoutubeLink(opts) {
|
|
114955
|
+
assertPmaxSetupEnabled("pmax-youtube-link");
|
|
114932
114956
|
const accountId = requireAccountId(opts.account);
|
|
114933
114957
|
const assetGroupId = opts.assetGroupId.trim();
|
|
114934
114958
|
let body;
|
|
@@ -115018,6 +115042,7 @@ async function runAdPmaxSignalsGet(opts) {
|
|
|
115018
115042
|
});
|
|
115019
115043
|
}
|
|
115020
115044
|
async function runAdPmaxSignalsSet(opts) {
|
|
115045
|
+
assertPmaxSetupEnabled("pmax-signals-set");
|
|
115021
115046
|
const cfg = loadPmaxJsonFile(opts.configFile);
|
|
115022
115047
|
const accountId = requireAccountId(String(cfg["account"] ?? ""));
|
|
115023
115048
|
const assetGroupId = String(cfg["assetGroupId"] ?? "").trim();
|
|
@@ -115137,6 +115162,7 @@ PMax \u53D7\u4F17\u6570\u636E\u6E90\uFF08\u8D26\u6237 ${accountId}\uFF09
|
|
|
115137
115162
|
});
|
|
115138
115163
|
}
|
|
115139
115164
|
async function runAdPmaxImageUpload(opts) {
|
|
115165
|
+
assertPmaxSetupEnabled("pmax-image-upload");
|
|
115140
115166
|
const accountId = requireAccountId(opts.account);
|
|
115141
115167
|
await withGoogleApi(opts, async (config, googleApiUrl) => {
|
|
115142
115168
|
let data;
|
|
@@ -115366,6 +115392,7 @@ async function convertOne(sharpFn, inputPath, outputPath, spec, quality) {
|
|
|
115366
115392
|
await pipeline.toFile(outputPath);
|
|
115367
115393
|
}
|
|
115368
115394
|
async function runAdPmaxImageConvert(opts) {
|
|
115395
|
+
assertPmaxSetupEnabled("pmax-image-convert");
|
|
115369
115396
|
const { input, inputMarketing, inputSquare, inputLogo } = opts;
|
|
115370
115397
|
if (!input && !inputMarketing && !inputSquare && !inputLogo) {
|
|
115371
115398
|
console.error("\n\u274C \u8BF7\u81F3\u5C11\u6307\u5B9A --input \u6216 --input-marketing / --input-square / --input-logo\n");
|
package/dist/skill/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: siluzan-tso
|
|
3
3
|
description: >-
|
|
4
|
-
Siluzan TSO 广告 skill(siluzan-tso-cli):Google/Bing/Yandex/TikTok/Kwai 账户开户与管理、Google Ads CRUD、数据分析、优化报告、智能预警、TikTok/Meta 线索、发票财务,并提供 RAG 知识库查询,google
|
|
4
|
+
Siluzan TSO 广告 skill(siluzan-tso-cli):Google/Bing/Yandex/TikTok/Kwai 账户开户与管理、Google Ads CRUD、数据分析、优化报告、智能预警、TikTok/Meta 线索、发票财务,并提供 RAG 知识库查询,google广告关键词推荐。**每个新的用户任务/话题切换时**,必须先 Read 本 Skill 路由表指向的 references(勿凭上一轮记忆直接跑 CLI);上下文被压缩后须重读 SKILL + 当次任务相关 references。
|
|
5
5
|
license: MIT
|
|
6
6
|
metadata:
|
|
7
7
|
requires: nodejs,siluzan-tso-cli
|
|
@@ -42,9 +42,7 @@ Windows 注意:部分 Agent 客户端通过 PowerShell / cmd 代执行命令
|
|
|
42
42
|
| `references/currency.md` | 账户币种 CNY/USD:字段来源、符号、跨币种禁止求和 |
|
|
43
43
|
| `references/open-account-by-media.md` | 各媒体开户、参数与资料要求 |
|
|
44
44
|
| `references/google-ads-campaign-plan.md` | Google 新建搜索系列:双轨入口、7 步流水线、`campaign-validate/create` |
|
|
45
|
-
| `
|
|
46
|
-
| `references/pmax-api.md` | PMax 网关路径、金额口径、与 Search API 边界 |
|
|
47
|
-
| `references/google-ads.md` | Google Ads 命令:CRUD、batch、PMax 创建、拒审字段 |
|
|
45
|
+
| `references/google-ads.md` | Google Ads 命令:CRUD、batch、拒审字段(**PMax 搭建暂未开放**,见硬规范) |
|
|
48
46
|
| `references/keyword-planner-workflows.md` | `keyword` / `google-analysis` 拓词编排(不含建户 JSON 流程) |
|
|
49
47
|
| `references/rag.md` | 知识库检索(`rag list` + `rag query`):客户产品/行业事实 |
|
|
50
48
|
| `references/reporting.md` | TSO 优化报告(Google/TikTok)生成、推送、查看 |
|
|
@@ -76,13 +74,55 @@ Windows 注意:部分 Agent 客户端通过 PowerShell / cmd 代执行命令
|
|
|
76
74
|
|
|
77
75
|
---
|
|
78
76
|
|
|
77
|
+
## 文档加载纪律(Agent 必读)
|
|
78
|
+
|
|
79
|
+
本 Skill 采用 **SKILL 路由 + references 按需加载** 以控制体积;**「按需」= 每个用户任务都要按需,不是整段对话只读一次**。
|
|
80
|
+
|
|
81
|
+
### 何时必须 Read references
|
|
82
|
+
|
|
83
|
+
| 触发 | 动作 |
|
|
84
|
+
| ---- | ---- |
|
|
85
|
+
| **新的用户任务**(新需求、新账户、新媒体、新报告类型) | 用下方「任务 → 文档」表确定路径,**Read 全部必读项**后再计划/执行 CLI |
|
|
86
|
+
| **同一对话内换话题**(例:刚查余额 → 用户改问建系列 / 预警 / 发票) | **重新 Read** 新话题对应 references,**禁止**沿用上一任务的参数记忆 |
|
|
87
|
+
| **Playbook 编号不同**(P1→P3、P4→P5) | 即使刚做过 P1,执行 P3 仍须 Read `accounts.md`(`accounts-digest`)等 P3 专属节 |
|
|
88
|
+
| **专用 report-templates**(OKKI / 询盘分析) | Read 对应 `report-templates/*.md` **全文**,勿只凭 SKILL 摘要 |
|
|
89
|
+
| **上下文被压缩 / 记不清字段或命令** | 重读 `SKILL.md` 路由表 + 当次任务 references |
|
|
90
|
+
| **CLI 返回 400 / 字段对不上** | 回到对应 reference 核对参数名与口径,勿猜 |
|
|
91
|
+
|
|
92
|
+
### 禁止
|
|
93
|
+
|
|
94
|
+
- **禁止**「上次已经读过 `accounts.md` / `google-ads.md`,本任务直接 `siluzan-tso …`」
|
|
95
|
+
- **禁止**用对话记忆中的示例 ID、金额、命令 flags 代替当次 Read 文档
|
|
96
|
+
- **禁止**跳过 `references/tips.md` 里的 outline→JSON 顺序(与是否读过无关,**每次** `--json-out` 落盘都要遵守)
|
|
97
|
+
|
|
98
|
+
### 任务 → 必读 references(执行 CLI 前)
|
|
99
|
+
|
|
100
|
+
| 用户意图(关键词) | 必读(Read 后再 `-h` / 执行) |
|
|
101
|
+
| ------------------ | ----------------------------- |
|
|
102
|
+
| 账户列表 / 余额 / 消耗 / 分享 / MCC / BC / 多账户汇总 | `references/accounts.md`;金额加 `currency.md`;`accounts-digest` 见 accounts § accounts-digest |
|
|
103
|
+
| 拉数 / 报告 / 周报 / 分析 / `google-analysis` | `references/account-analytics.md` + `references/tips.md`;多账户批处理加 `google-analysis-batch.md` |
|
|
104
|
+
| Google 新建搜索系列 | `references/google-ads-campaign-plan.md`(再按需 `google-ads.md`、模板 JSON) |
|
|
105
|
+
| Google 广告 CRUD / 拒审 / 系列组关键词 | `references/google-ads.md` |
|
|
106
|
+
| PMax 搭建 / 管理 | **暂未开放** — 勿调用 `ad pmax-*` 写入命令;见下方硬规范 |
|
|
107
|
+
| 拓词 / keyword | `references/keyword-planner-workflows.md`;要客户背景先 `rag.md` |
|
|
108
|
+
| 优化报告(TSO 平台) | `references/reporting.md` |
|
|
109
|
+
| 预警 | `references/forewarning.md` |
|
|
110
|
+
| 发票 / 转账 / 充值 | `references/finance.md` |
|
|
111
|
+
| 开户 | `references/open-account-by-media.md`(Google 另见 `open-account-google-ui.md`) |
|
|
112
|
+
| OKKI 周报 | `report-templates/okki-weekly-google-client.md` |
|
|
113
|
+
| Google 询盘分析 | `report-templates/google-inquiry-analysis.md` |
|
|
114
|
+
|
|
115
|
+
> 表未覆盖时:先查上方「功能路由」表 → Read 对应 reference → 再执行 CLI。
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
79
119
|
## AI 行为规范
|
|
80
120
|
|
|
81
121
|
### 执行流程
|
|
82
122
|
|
|
83
123
|
**计划 → 确认 → 执行 → 验证 → 推测下一步**:
|
|
84
124
|
|
|
85
|
-
1.
|
|
125
|
+
1. **按「文档加载纪律」Read 当次任务 references**(新任务/换话题必做,勿复用上一轮)→ 用 `-h` 确认命令 → 向用户输出操作计划
|
|
86
126
|
2. 涉及写入/修改/删除的操作必须与用户确认
|
|
87
127
|
3. 按计划执行,说明每步意图
|
|
88
128
|
4. 用成对的读命令复核写入结果;异步任务每 5s 轮询直到完成
|
|
@@ -105,6 +145,7 @@ Windows 注意:部分 Agent 客户端通过 PowerShell / cmd 代执行命令
|
|
|
105
145
|
- **破坏性操作必须确认 + `--commit`**:账户解绑/关闭/取消分享、BC/MCC 解绑、删除预警/报告/广告/关键词、发票申请、广告发布等。所有写/修改命令的 `--commit` 字段填写修改前后的值,便于排查或恢复。
|
|
106
146
|
- **不确定时读文档**:先读对应 references 或用 `-h` 查看帮助,不要猜参数。
|
|
107
147
|
- **Google 新建搜索系列**:流程仅在 `references/google-ads-campaign-plan.md` 维护。
|
|
148
|
+
- **PMax 暂未开放**:**禁止**调用任何 `ad pmax-*` 搭建/写入命令(含 `pmax-create`、`pmax-validate`、`pmax-edit`、`pmax-asset-group-*`、`pmax-assets-update` 等)。用户要新建或改 PMax 时,说明 CLI 能力仍在测试,请在 **Google Ads UI** 操作;数据分析可用 `google-analysis` / `ad campaigns`(读 `channelTypeV2=PERFORMANCE_MAX`),运营建议可读 `references/google-ads-rules/google-ads-pmax-guide.md`(只读参考,不含 CLI 搭建步骤)。
|
|
108
149
|
- **Google 开户**:`open-account google-wizard` 仅限真实 TTY;Agent/自动化用非交互 `open-account google ...`,审核进度用 `account-history`。
|
|
109
150
|
- **主动更新**:详见 `references/setup.md`。
|
|
110
151
|
|
|
@@ -186,8 +227,12 @@ Windows 注意:部分 Agent 客户端通过 PowerShell / cmd 代执行命令
|
|
|
186
227
|
|
|
187
228
|
## Playbook:高频任务标准动作
|
|
188
229
|
|
|
230
|
+
> **每个 Playbook 开始前**:按「文档加载纪律」Read 该 Playbook 列出的 references(**不因同对话内刚做过其他 Playbook 而跳过**)。
|
|
231
|
+
|
|
189
232
|
### P1 · 单账户投放画像
|
|
190
233
|
|
|
234
|
+
**必读**:`references/account-analytics.md`、`references/currency.md`、`references/tips.md`。
|
|
235
|
+
|
|
191
236
|
1. 反问时间范围(已授权默认时按白名单并写明区间)。
|
|
192
237
|
2. `list-accounts -m Google -k <mediaCustomerId> --json-out ./snap-p1`
|
|
193
238
|
3. `stats -m Google -a <mediaCustomerId> --start <S> --end <D> --json-out ./snap-p1`
|
|
@@ -196,6 +241,8 @@ Windows 注意:部分 Agent 客户端通过 PowerShell / cmd 代执行命令
|
|
|
196
241
|
|
|
197
242
|
### P2 · 多账户余额扫描
|
|
198
243
|
|
|
244
|
+
**必读**:`references/accounts.md`(`balance-scan`)、`references/currency.md`。
|
|
245
|
+
|
|
199
246
|
**全量巡检**:
|
|
200
247
|
|
|
201
248
|
```bash
|
|
@@ -215,6 +262,8 @@ siluzan-tso balance-scan -m Google -a id1,id2,id3 --json-out ./snap-p2-subset
|
|
|
215
262
|
|
|
216
263
|
### P3 · 多账户投放画像汇总
|
|
217
264
|
|
|
265
|
+
**必读**:`references/accounts.md` § `accounts-digest`、`references/currency.md`、`references/tips.md`。
|
|
266
|
+
|
|
218
267
|
```bash
|
|
219
268
|
siluzan-tso accounts-digest -m Google -a id1,id2,... --start <S> --end <D> --json-out ./snap-p3
|
|
220
269
|
```
|
|
@@ -226,6 +275,8 @@ siluzan-tso accounts-digest -m Google -a id1,id2,... --start <S> --end <D> --jso
|
|
|
226
275
|
|
|
227
276
|
### P4 · Google 账户周期报告
|
|
228
277
|
|
|
278
|
+
**必读**:`report-templates/google-period-report.md`、`references/account-analytics.md`、`references/tips.md`。
|
|
279
|
+
|
|
229
280
|
1. 确认时间范围;区间 > 3 个月时分段(季度/月)。
|
|
230
281
|
2. 按 P1 步骤拿数据,用 `report-templates/google-period-report.md` 模板输出,首行标注统计区间和货币。
|
|
231
282
|
3. 报告须含:账户概览、投放趋势、Top 关键词/系列/地区分布、优化建议。
|
|
@@ -234,6 +285,8 @@ siluzan-tso accounts-digest -m Google -a id1,id2,... --start <S> --end <D> --jso
|
|
|
234
285
|
|
|
235
286
|
> 适用:账户数 ≥ 2 且需拉取 ≥ 2 个 google-analysis 维度。**禁止**外层 for-loop。
|
|
236
287
|
|
|
288
|
+
**必读**:`references/google-analysis-batch.md`、`references/account-analytics.md`、`references/tips.md`。
|
|
289
|
+
|
|
237
290
|
**入口选择**:全量 → 省略 `-a`;2~10 子集 → `google-analysis -a id1,id2,...`(自动转发 batch);≥10 子集或需 resume → `google-analysis-batch run -a id1,id2,...`
|
|
238
291
|
|
|
239
292
|
1. 反问时间范围 + 维度(默认 `campaigns,geographic,keywords`,可按需追加)。
|
|
@@ -264,6 +317,8 @@ siluzan-tso accounts-digest -m Google -a id1,id2,... --start <S> --end <D> --jso
|
|
|
264
317
|
|
|
265
318
|
> **触发**:用户话术含 `使用okki周报模板` / `OKKI 周报` / `okki 周报` 等,且指向 Google 账户 + 日期区间。
|
|
266
319
|
|
|
320
|
+
**必读**:`report-templates/okki-weekly-google-client.md`(全文)、`references/account-analytics.md`、`references/tips.md`。
|
|
321
|
+
|
|
267
322
|
1. **不要**按 `google-period-report.md` 展开默认 8 维;改读 `report-templates/okki-weekly-google-client.md` 全文并按其结构交付。
|
|
268
323
|
2. 确认 `mediaCustomerId` 与 `--start` / `--end`(未给齐按「时间范围强制反问」)。
|
|
269
324
|
3. 同一 `--json-out` 目录执行模板中的命令组合:`list-accounts`(可选但推荐)、`stats`、`balance`、`google-analysis --sections overview,campaigns,keywords,search-terms,campaign-device,campaign-geo`。
|
|
@@ -276,6 +331,8 @@ siluzan-tso accounts-digest -m Google -a id1,id2,... --start <S> --end <D> --jso
|
|
|
276
331
|
>
|
|
277
332
|
> **不要**按 `google-period-report.md` 默认 8 维流程;改读 `report-templates/google-inquiry-analysis.md` 全文。
|
|
278
333
|
|
|
334
|
+
**必读**:`report-templates/google-inquiry-analysis.md`(全文)、`references/account-analytics.md`、`references/tips.md`、`references/geo-continents.json`(脚本映射用)。
|
|
335
|
+
|
|
279
336
|
1. **时间窗口强约束**:**严格 3 个月** = 分析月份 + 向前 2 个完整自然月。**禁止**扩展到 7 个月(即使样表是 7 个月);样表 4~7 列旧数据在 Sheet 4/6 跨 7 月写时**留空或不写**,仅写当前 3 月。
|
|
280
337
|
2. **询盘资料入场**:
|
|
281
338
|
- **流程 A**(用户已附文件):宿主 Agent 解析任意载体(xlsx/csv/pdf/截图/文本表格)→ 抽取询盘行 → 落盘 `./snap-inquiry/inquiries.json`(字段见模板「询盘字段清单」)。
|
package/dist/skill/_meta.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
## invoice-info — 发票抬头管理
|
|
9
9
|
|
|
10
|
-
对应页面:`https://www
|
|
10
|
+
对应页面:`https://www.siluzan.com/v3/foreign_trade/settings/invoiceInformation`
|
|
11
11
|
|
|
12
12
|
发票抬头是开票申请时使用的公司/企业信息模板,支持三种类型:
|
|
13
13
|
|
|
@@ -133,10 +133,10 @@ siluzan-tso config show
|
|
|
133
133
|
**示例:**
|
|
134
134
|
|
|
135
135
|
```
|
|
136
|
-
- 现金充值(单笔):https://www
|
|
137
|
-
- 现金充值(批量):https://www
|
|
138
|
-
- 月结充值: https://www
|
|
139
|
-
- 丝路赞钱包: https://www
|
|
136
|
+
- 现金充值(单笔):https://www.siluzan.com/recharge/pay
|
|
137
|
+
- 现金充值(批量):https://www.siluzan.com/recharge/pay_batch
|
|
138
|
+
- 月结充值: https://www.siluzan.com/recharge/accountBillingQuota
|
|
139
|
+
- 丝路赞钱包: https://www.siluzan.com/recharge/siluzanWallet
|
|
140
140
|
```
|
|
141
141
|
|
|
142
142
|
---
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
- 可执行真相只有 **JSON**(`assets/campaign-create-template.json` 同构);Markdown 只读投影。
|
|
15
15
|
- 改需求 **只改 JSON**,再 `campaign-validate`,再刷新 Markdown。
|
|
16
|
-
- **PMax
|
|
16
|
+
- **PMax 系列创建暂未开放**:勿用 `ad pmax-*` 搭建命令;请在 Google Ads UI 操作。运营诊断(只读)见 `google-ads-rules/google-ads-pmax-guide.md`。
|
|
17
17
|
- 搜索网络:仅 Google 搜索(`TargetSearchNetwork`/`TargetContentNetwork`/`TargetPartnerSearchNetwork` 均为 false)。
|
|
18
18
|
|
|
19
19
|
---
|
|
@@ -63,8 +63,8 @@
|
|
|
63
63
|
| `google-ads-rules/google-ads-keyword-optimization.md` | 上线后优化,非首建 |
|
|
64
64
|
| `google-ads-rules/google-ads-account-audit.md` | 账户诊断,非首建 |
|
|
65
65
|
| `google-ads-rules/google-ads-audience-strategy.md` | 受众/RLSA |
|
|
66
|
-
| `google-ads-rules/google-ads-pmax-guide.md` | PMax
|
|
67
|
-
| `references/pmax-api.md` | PMax
|
|
66
|
+
| `google-ads-rules/google-ads-pmax-guide.md` | PMax 运营/诊断(只读参考;**CLI 搭建暂未开放**) |
|
|
67
|
+
| `references/pmax-api.md` | PMax 网关路径(开发参考;生产勿调用搭建命令) |
|
|
68
68
|
|
|
69
69
|
复述给用户:**3–5 条**与本次任务相关的合规/策略要点即可,无需罗列全部文件名。
|
|
70
70
|
|
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
|
|
32
32
|
## 新建 Performance Max(PMax)
|
|
33
33
|
|
|
34
|
+
> **⛔ 暂未开放(生产)**:PMax CLI 搭建/写入能力仍在测试,**禁止** Agent 或用户通过 `ad pmax-create` / `pmax-validate` / `pmax-edit` 等命令操作。请在 **Google Ads UI** 新建与管理 PMax。本地联调可设环境变量 `SILUZAN_PMAX_SETUP=1` 后使用 CLI(开发专用)。
|
|
35
|
+
>
|
|
36
|
+
> 下列命令文档保留供后续上线参考,**当前勿执行**。
|
|
37
|
+
|
|
34
38
|
> **与 Search 隔离**:勿用 `campaign-create` 或 `campaign-create-template.json`。网关摘录见 `references/pmax-api.md`。
|
|
35
39
|
|
|
36
40
|
| 步骤 | 命令 |
|
|
@@ -214,8 +214,8 @@ siluzan-tso report list -m Google --json
|
|
|
214
214
|
|
|
215
215
|
# 第二步:查看 webUrl
|
|
216
216
|
siluzan-tso config show
|
|
217
|
-
# webUrl: https://www
|
|
217
|
+
# webUrl: https://www.siluzan.com
|
|
218
218
|
|
|
219
219
|
# 第三步:拼接链接(Google 日报)
|
|
220
|
-
# https://www
|
|
220
|
+
# https://www.siluzan.com/media-report/publish/rpt_abc123?culture=zh-CN
|
|
221
221
|
```
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
## 安装 CLI
|
|
11
11
|
|
|
12
12
|
```bash
|
|
13
|
-
npm install -g siluzan-tso-cli
|
|
13
|
+
npm install -g siluzan-tso-cli
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
---
|
|
@@ -64,7 +64,7 @@ siluzan-tso config set --api-key <Key> # 或 config 直接写入
|
|
|
64
64
|
siluzan-tso config set --token <Token> # 备用:设置 JWT Token
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
API Key 获取入口:`https://www
|
|
67
|
+
API Key 获取入口:`https://www.siluzan.com/v3/foreign_trade/settings/apiKeyManagement`
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
70
|
# 第 1 步:让用户报出手机号后,立刻发码(命令立即返回,不会等待输入)
|
|
@@ -129,9 +129,9 @@ siluzan-tso config show
|
|
|
129
129
|
|
|
130
130
|
```
|
|
131
131
|
构建环境 : production
|
|
132
|
-
apiBaseUrl : https://tso-api
|
|
133
|
-
googleApiUrl : https://googleapi
|
|
134
|
-
webUrl : https://www
|
|
132
|
+
apiBaseUrl : https://tso-api.siluzan.com
|
|
133
|
+
googleApiUrl : https://googleapi.mysiluzan.com
|
|
134
|
+
webUrl : https://www.siluzan.com
|
|
135
135
|
apiKey : abcd****1234
|
|
136
136
|
```
|
|
137
137
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# CLI 使用技巧:`--json-out` 落盘 + Node.js 精准查询
|
|
2
2
|
|
|
3
|
+
> **文档重读(与落盘无关,但同样硬)**:**每个新的用户任务**或**同对话内换话题**时,须按 `SKILL.md`「文档加载纪律」**重新 Read** 当次任务对应的 `references/*.md` / `report-templates/*.md`,再执行 CLI。**禁止**因上一轮已读过某 reference 而跳过(参数、批量命令、Playbook 编号会随任务变化)。
|
|
4
|
+
|
|
3
5
|
> **AI 助手(本 Skill)**:凡需结构化数据,一律使用 **`--json-out <路径>`**(**目录** 或 **`*.json` 具体文件**)将 JSON 写入磁盘(并更新 **`cli-manifest[-<查询id>].json`**,与 `google-analysis` 的 **`manifest-<accountId>.json`**、`report …` 的 **`report-manifest[-<accountId>].json`** 并存于各自目录),再用 **脚本读文件**(`fs.readFileSync` / `require`)做筛选与聚合;**不要**依赖对话里粘贴的 stdout 整包 JSON。命令成功时 **stdout 仅一行摘要 JSON**(体积小),其中 **`outlineFile`** 指向与当次 `*.json` **同 stem** 的 **`*.outline.txt`**(纯文本单行,接近 **TypeScript 类型字面量**:`{ a: number; b: string }`、`(T | U)[]` 等;数组由**前 8 项**去重推断并集;环 / 同对象再出现为 `any`)。完整数据仍以落盘 `*.json` 为准,类型扫一眼读 outline 文件即可。
|
|
4
6
|
>
|
|
5
7
|
> **文件命名规则(重要)**:当一条命令具备明确的"查询 id"(mediaCustomerId / entityId / ruleId / auditId 等)时,目录模式落盘的 `*.json`、`*.outline.txt` 与对应 manifest **都会带上 `-<查询id>` 后缀**:
|
|
@@ -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.21'
|
|
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
|
|
15
|
+
$INSTALL_CMD = 'npm install -g siluzan-tso-cli'
|
|
16
|
+
$WEB_BASE = 'https://www.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.21"
|
|
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
|
|
15
|
+
readonly INSTALL_CMD="npm install -g siluzan-tso-cli"
|
|
16
|
+
readonly WEB_BASE="https://www.siluzan.com"
|
|
17
17
|
|
|
18
18
|
# -- Constants ----------------------------------------------------------------
|
|
19
19
|
readonly NODE_MAJOR_MIN=18
|