siluzan-tso-cli 1.1.55 → 1.1.56-beta.2
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 +2 -1
- package/dist/index.js +458 -253
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/references/accounts/accounts-list.md +1 -1
- package/dist/skill/references/accounts/accounts-permissions.md +2 -2
- package/dist/skill/references/accounts/finance.md +1 -1
- package/dist/skill/references/accounts/open-account-by-media.md +1 -1
- package/dist/skill/references/accounts/open-account-google-ui.md +1 -1
- package/dist/skill/references/analytics/rag.md +1 -1
- package/dist/skill/references/analytics/reporting.md +5 -5
- package/dist/skill/references/core/setup.md +5 -5
- package/dist/skill/references/misc/tso-home.md +2 -2
- package/dist/skill/references/report-templates/google-ads-diagnosis.md +14 -9
- package/dist/skill/report-templates/GoogleAdsDiagnosisReport.html +6 -2
- package/dist/skill/report-templates/google-ads-diagnosis.md +14 -9
- package/dist/skill/scripts/install.ps1 +3 -3
- package/dist/skill/scripts/install.sh +3 -3
- package/package.json +1 -1
package/dist/skill/_meta.json
CHANGED
|
@@ -170,7 +170,7 @@ siluzan-tso account-history --start 2026-03-01 --end 2026-03-31 --json-out ./sna
|
|
|
170
170
|
| 状态 | 含义 | 下一步操作 |
|
|
171
171
|
| ---------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
172
172
|
| `Pending` | 审核中 | 等待,可反复运行此命令轮询;审核周期因媒体而异 |
|
|
173
|
-
| `Approved` | 审核通过 | 运行 `list-accounts -m <媒体>` 确认账户已出现;引导用户充值激活(`config show` 取 `webUrl`,按 `finance.md` 打开对应媒体充值页;例如 Google 为 `https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google`;Yandex 当前没有对应充值界面) |
|
|
173
|
+
| `Approved` | 审核通过 | 运行 `list-accounts -m <媒体>` 确认账户已出现;引导用户充值激活(`config show` 取 `webUrl`,按 `finance.md` 打开对应媒体充值页;例如 Google 为 `https://www-ci.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google`;Yandex 当前没有对应充值界面) |
|
|
174
174
|
| `Rejected` | 被拒 | 查看 `--json-out` 落盘中的 `reason` 字段了解拒绝原因;修改资料后重新提交;若原因不明,引导用户联系丝路赞客服 |
|
|
175
175
|
|
|
176
176
|
---
|
|
@@ -490,7 +490,7 @@ siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --res
|
|
|
490
490
|
|
|
491
491
|
| 功能 | 媒体 | 网页路径 |
|
|
492
492
|
| --------------------------------------- | ------ | ------------------------------------------------- |
|
|
493
|
-
| **账户激活**(邀请他人激活 / 充值激活) | Google | `https://www.siluzan.com/v3/foreign_trade/tso/manageAccounts` |
|
|
493
|
+
| **账户激活**(邀请他人激活 / 充值激活) | Google | `https://www-ci.siluzan.com/v3/foreign_trade/tso/manageAccounts` |
|
|
494
494
|
|
|
495
495
|
**Agent 建议话术**:
|
|
496
496
|
|
|
@@ -499,5 +499,5 @@ siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --res
|
|
|
499
499
|
siluzan-tso config show # 查看 webUrl 字段
|
|
500
500
|
|
|
501
501
|
# 账户激活(Google)→ 引导至账户管理页
|
|
502
|
-
# https://www.siluzan.com/v3/foreign_trade/tso/manageAccounts
|
|
502
|
+
# https://www-ci.siluzan.com/v3/foreign_trade/tso/manageAccounts
|
|
503
503
|
```
|
|
@@ -126,7 +126,7 @@ siluzan-tso config show
|
|
|
126
126
|
|
|
127
127
|
### 充值页链接(按媒体 × 类型)
|
|
128
128
|
|
|
129
|
-
链接模式:`https://www.siluzan.com/v3/foreign_trade/tso/recharge/<page>?mediaType=<mediaType>`;丝路赞钱包:`https://www.siluzan.com/v3/foreign_trade/tso/recharge/siluzanWallet`(无媒体参数)。
|
|
129
|
+
链接模式:`https://www-ci.siluzan.com/v3/foreign_trade/tso/recharge/<page>?mediaType=<mediaType>`;丝路赞钱包:`https://www-ci.siluzan.com/v3/foreign_trade/tso/recharge/siluzanWallet`(无媒体参数)。
|
|
130
130
|
|
|
131
131
|
| 充值类型 | `<page>` | 支持媒体(`mediaType` 参数) |
|
|
132
132
|
| ------------------------- | --------------------- | ------------------------------------------- |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 各媒体开户
|
|
2
2
|
|
|
3
|
-
> 网页链接:`https://www.siluzan.com/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory`
|
|
3
|
+
> 网页链接:`https://www-ci.siluzan.com/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory`
|
|
4
4
|
> 多命令串联见 `references/core/workflows.md` § 流程一。
|
|
5
5
|
|
|
6
6
|
## Contents
|
|
@@ -65,7 +65,7 @@ siluzan-tso open-account google-wizard
|
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
67
|
siluzan-tso account-history -m Google
|
|
68
|
-
# 审核通过后:config show → https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
|
|
68
|
+
# 审核通过后:config show → https://www-ci.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
---
|
|
@@ -190,9 +190,9 @@ siluzan-tso report push receive-emails -m Google [--json-out ./snap]
|
|
|
190
190
|
|
|
191
191
|
| 媒体 | 报告类型 | URL 模板 |
|
|
192
192
|
| ------ | ---------------- | ----------------------------------------------------------- |
|
|
193
|
-
| Google | 日报(Daily) | `https://www.siluzan.com/media-report/publish/{entityId}?culture=zh-CN` |
|
|
194
|
-
| Google | 小时报(Hourly) | `https://www.siluzan.com/media-report/hour/{entityId}?culture=zh-CN` |
|
|
195
|
-
| TikTok | 日报 | `https://www.siluzan.com/media-report/publish/{entityId}?culture=zh-CN` |
|
|
193
|
+
| Google | 日报(Daily) | `https://www-ci.siluzan.com/media-report/publish/{entityId}?culture=zh-CN` |
|
|
194
|
+
| Google | 小时报(Hourly) | `https://www-ci.siluzan.com/media-report/hour/{entityId}?culture=zh-CN` |
|
|
195
|
+
| TikTok | 日报 | `https://www-ci.siluzan.com/media-report/publish/{entityId}?culture=zh-CN` |
|
|
196
196
|
|
|
197
197
|
`entityId` 来自 `siluzan-tso report list --json-out ./snap` 中每条记录的 `entityId` 字段。
|
|
198
198
|
|
|
@@ -205,8 +205,8 @@ siluzan-tso report list -m Google --json-out ./snap
|
|
|
205
205
|
|
|
206
206
|
# 第二步:查看 webUrl
|
|
207
207
|
siluzan-tso config show
|
|
208
|
-
# webUrl: https://www.siluzan.com
|
|
208
|
+
# webUrl: https://www-ci.siluzan.com
|
|
209
209
|
|
|
210
210
|
# 第三步:拼接链接(Google 日报)
|
|
211
|
-
# https://www.siluzan.com/media-report/publish/rpt_abc123?culture=zh-CN
|
|
211
|
+
# https://www-ci.siluzan.com/media-report/publish/rpt_abc123?culture=zh-CN
|
|
212
212
|
```
|
|
@@ -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@beta
|
|
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.siluzan.com/v3/foreign_trade/settings/apiKeyManagement`
|
|
67
|
+
API Key 获取入口:`https://www-ci.siluzan.com/v3/foreign_trade/settings/apiKeyManagement`
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
70
|
# 第 1 步:让用户报出手机号后,立刻发码(命令立即返回,不会等待输入)
|
|
@@ -127,9 +127,9 @@ siluzan-tso config show
|
|
|
127
127
|
|
|
128
128
|
```
|
|
129
129
|
构建环境 : production
|
|
130
|
-
apiBaseUrl : https://tso-api.siluzan.com
|
|
131
|
-
googleApiUrl : https://googleapi.mysiluzan.com
|
|
132
|
-
webUrl : https://www.siluzan.com
|
|
130
|
+
apiBaseUrl : https://tso-api-ci.siluzan.com
|
|
131
|
+
googleApiUrl : https://googleapi-ci.mysiluzan.com
|
|
132
|
+
webUrl : https://www-ci.siluzan.com
|
|
133
133
|
apiKey : abcd****1234
|
|
134
134
|
```
|
|
135
135
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
siluzan-tso config show # 取 webUrl
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
首页地址:`https://www.siluzan.com/v3/foreign_trade/tso/home`
|
|
9
|
+
首页地址:`https://www-ci.siluzan.com/v3/foreign_trade/tso/home`
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -25,7 +25,7 @@ siluzan-tso config show # 取 webUrl
|
|
|
25
25
|
|
|
26
26
|
## 推荐话术
|
|
27
27
|
|
|
28
|
-
1. **「和首页一样的总览」** → 打开 `https://www.siluzan.com/v3/foreign_trade/tso/home`。
|
|
28
|
+
1. **「和首页一样的总览」** → 打开 `https://www-ci.siluzan.com/v3/foreign_trade/tso/home`。
|
|
29
29
|
2. **「某个 Google 账户昨天花了多少」** → `list-accounts -m Google` + `stats -m Google -a <id>`。
|
|
30
30
|
3. **「有待充值账户」** → 说明聚合数据在首页;CLI 可 `list-accounts` + `balance` 逐户排查,或引导充值页。
|
|
31
31
|
|
|
@@ -86,7 +86,7 @@ siluzan-tso google-ads-diagnosis render \
|
|
|
86
86
|
- JSON 顶层结构须与 MarkAI `sectionData.js` / `fetchData` 输出一致(见下文各 `section-*` 数据对象)。
|
|
87
87
|
- `render` 默认校验(缺任一项则失败,除非 `--lenient`):
|
|
88
88
|
- 各模块 `*.analysis` 与 `*.suggestions`(含 `metrics`、`campaigns`、`geographic`、`keywords`、`conversionCost`、`fullGeographic`、`fullDevice`、`fullAudience`、`fullCustomAudience`、`fullKeywords`、`fullSearchTerms`、`broadKeywordsCount`、`biddingStrategy`、`adCreativeOptimization`、`newFeatures`、`landingPageAnalysis`——模块存在于 JSON 时均须非空)
|
|
89
|
-
- `diagnosisOverview.advantages` / `disadvantages
|
|
89
|
+
- `diagnosisOverview.advantages` / `disadvantages`(每条须有非空 `title` 与 `description`;纯字符串 render 会按第一个「:」拆开后再注入。拆完仍缺字段则 **exit 1**,避免 HTML 显示「未填写」)、`summary.keyIssues` / `optimizationRoadmap`
|
|
90
90
|
- `accountInfo.businessModel` / `industry`
|
|
91
91
|
- `budgetCompetitiveness[].strategy`、`newFeatures.items[].optimizerRecommendation`
|
|
92
92
|
- `adCreativeOptimization.items[].suggestion`(有创意行时每条须非空)
|
|
@@ -214,17 +214,18 @@ siluzan-tso google-ads-diagnosis render \
|
|
|
214
214
|
**区块 ID**:`section-diagnosis-overview`
|
|
215
215
|
**数据**:`diagnosisOverview`
|
|
216
216
|
|
|
217
|
-
### 优势
|
|
217
|
+
### 优势 / 不足
|
|
218
218
|
|
|
219
|
-
|
|
219
|
+
每条是对象,HTML 只读 `title` 与 `description`:
|
|
220
220
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"title": "转化效率环比明显改善",
|
|
224
|
+
"description": "CPA 由 ¥116.65 降至 ¥75.73(-35.07%)"
|
|
225
|
+
}
|
|
226
|
+
```
|
|
225
227
|
|
|
226
|
-
|
|
227
|
-
2. …
|
|
228
|
+
禁止把整句写成字符串。`render` 若收到「标题:说明」,会按第一个「:」拆成上面的对象再注入。
|
|
228
229
|
|
|
229
230
|
---
|
|
230
231
|
|
|
@@ -343,6 +344,10 @@ siluzan-tso google-ads-diagnosis render \
|
|
|
343
344
|
| 出价策略 | | |
|
|
344
345
|
|
|
345
346
|
> 黄金账户表**不含**「否定词添加」(`adsNegativeQualified`):collect 未拉取否词数据,render 会剥离该字段。
|
|
347
|
+
>
|
|
348
|
+
> 「文字广告」在 `responsiveSearchAdQualified` 或 `textAdQualified` 为 true 时视为达标。加大型文字广告已停用,禁止仅因 `expandedTextAdQualified: false` 写「请创建文字广告」。
|
|
349
|
+
>
|
|
350
|
+
> render 会用同目录快照改这几行:启用中的 `GoogleAnalytics4*` 转化 → GA 联结达标;启用中的 `CALLOUT` / `STRUCTURED_SNIPPET` → 宣传信息、结构化摘要达标;受众报表里已有用户列表或自定义受众 → 受众达标。自适应展示广告只挂在暂停系列上时保持未达标,建议改为「系列已暂停」,不要写「请使用」。
|
|
346
351
|
|
|
347
352
|
**得分**:`goldAccountScore`;**未达标项数**:若有 `goldAccountUnqualifiedCount` 可注明。
|
|
348
353
|
|
|
@@ -2122,7 +2122,7 @@
|
|
|
2122
2122
|
const suggestions = {
|
|
2123
2123
|
转化追踪设置: "请设置转化追踪,这是衡量广告效果的基础",
|
|
2124
2124
|
"G A与广告账户联结": "请将Google Analytics与Google Ads账户关联,以便更好地分析用户行为",
|
|
2125
|
-
文字广告: "
|
|
2125
|
+
文字广告: "请创建自适应搜索广告,这是当前的搜索文字广告",
|
|
2126
2126
|
自适应搜索广告: "请使用自适应搜索广告,能够自动优化广告展示",
|
|
2127
2127
|
自适应展示广告: "请使用自适应展示广告,提高展示网络的效果",
|
|
2128
2128
|
附加结构化信息摘要: "请添加结构化信息摘要,丰富广告信息",
|
|
@@ -5020,8 +5020,12 @@
|
|
|
5020
5020
|
? String(goldAccount.goldAccountScore)
|
|
5021
5021
|
: "--";
|
|
5022
5022
|
|
|
5023
|
+
const goldItemSuggestions = goldAccount.goldItemSuggestions || {};
|
|
5023
5024
|
const goldAccountRows = GOLD_ACCOUNT_ITEMS.map((item) => {
|
|
5024
5025
|
const isQualified = Boolean(goldAccount[item.key]);
|
|
5026
|
+
const suggestion =
|
|
5027
|
+
goldItemSuggestions[item.name] ||
|
|
5028
|
+
generateGoldAccountSuggestion(item.name, isQualified);
|
|
5025
5029
|
return `
|
|
5026
5030
|
<tr>
|
|
5027
5031
|
<td>${escapeHtml(item.name)}</td>
|
|
@@ -5030,7 +5034,7 @@
|
|
|
5030
5034
|
${isQualified ? "达标" : "未达标"}
|
|
5031
5035
|
</span>
|
|
5032
5036
|
</td>
|
|
5033
|
-
<td>${escapeHtml(
|
|
5037
|
+
<td>${escapeHtml(suggestion)}</td>
|
|
5034
5038
|
</tr>
|
|
5035
5039
|
`;
|
|
5036
5040
|
}).join("");
|
|
@@ -86,7 +86,7 @@ siluzan-tso google-ads-diagnosis render \
|
|
|
86
86
|
- JSON 顶层结构须与 MarkAI `sectionData.js` / `fetchData` 输出一致(见下文各 `section-*` 数据对象)。
|
|
87
87
|
- `render` 默认校验(缺任一项则失败,除非 `--lenient`):
|
|
88
88
|
- 各模块 `*.analysis` 与 `*.suggestions`(含 `metrics`、`campaigns`、`geographic`、`keywords`、`conversionCost`、`fullGeographic`、`fullDevice`、`fullAudience`、`fullCustomAudience`、`fullKeywords`、`fullSearchTerms`、`broadKeywordsCount`、`biddingStrategy`、`adCreativeOptimization`、`newFeatures`、`landingPageAnalysis`——模块存在于 JSON 时均须非空)
|
|
89
|
-
- `diagnosisOverview.advantages` / `disadvantages
|
|
89
|
+
- `diagnosisOverview.advantages` / `disadvantages`(每条须有非空 `title` 与 `description`;纯字符串 render 会按第一个「:」拆开后再注入。拆完仍缺字段则 **exit 1**,避免 HTML 显示「未填写」)、`summary.keyIssues` / `optimizationRoadmap`
|
|
90
90
|
- `accountInfo.businessModel` / `industry`
|
|
91
91
|
- `budgetCompetitiveness[].strategy`、`newFeatures.items[].optimizerRecommendation`
|
|
92
92
|
- `adCreativeOptimization.items[].suggestion`(有创意行时每条须非空)
|
|
@@ -214,17 +214,18 @@ siluzan-tso google-ads-diagnosis render \
|
|
|
214
214
|
**区块 ID**:`section-diagnosis-overview`
|
|
215
215
|
**数据**:`diagnosisOverview`
|
|
216
216
|
|
|
217
|
-
### 优势
|
|
217
|
+
### 优势 / 不足
|
|
218
218
|
|
|
219
|
-
|
|
219
|
+
每条是对象,HTML 只读 `title` 与 `description`:
|
|
220
220
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
221
|
+
```json
|
|
222
|
+
{
|
|
223
|
+
"title": "转化效率环比明显改善",
|
|
224
|
+
"description": "CPA 由 ¥116.65 降至 ¥75.73(-35.07%)"
|
|
225
|
+
}
|
|
226
|
+
```
|
|
225
227
|
|
|
226
|
-
|
|
227
|
-
2. …
|
|
228
|
+
禁止把整句写成字符串。`render` 若收到「标题:说明」,会按第一个「:」拆成上面的对象再注入。
|
|
228
229
|
|
|
229
230
|
---
|
|
230
231
|
|
|
@@ -343,6 +344,10 @@ siluzan-tso google-ads-diagnosis render \
|
|
|
343
344
|
| 出价策略 | | |
|
|
344
345
|
|
|
345
346
|
> 黄金账户表**不含**「否定词添加」(`adsNegativeQualified`):collect 未拉取否词数据,render 会剥离该字段。
|
|
347
|
+
>
|
|
348
|
+
> 「文字广告」在 `responsiveSearchAdQualified` 或 `textAdQualified` 为 true 时视为达标。加大型文字广告已停用,禁止仅因 `expandedTextAdQualified: false` 写「请创建文字广告」。
|
|
349
|
+
>
|
|
350
|
+
> render 会用同目录快照改这几行:启用中的 `GoogleAnalytics4*` 转化 → GA 联结达标;启用中的 `CALLOUT` / `STRUCTURED_SNIPPET` → 宣传信息、结构化摘要达标;受众报表里已有用户列表或自定义受众 → 受众达标。自适应展示广告只挂在暂停系列上时保持未达标,建议改为「系列已暂停」,不要写「请使用」。
|
|
346
351
|
|
|
347
352
|
**得分**:`goldAccountScore`;**未达标项数**:若有 `goldAccountUnqualifiedCount` 可注明。
|
|
348
353
|
|
|
@@ -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.
|
|
12
|
+
$PKG_VERSION = '1.1.56-beta.2'
|
|
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.
|
|
12
|
+
readonly PKG_VERSION="1.1.56-beta.2"
|
|
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
|