siluzan-tso-cli 1.1.27-beta.2 → 1.1.27
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 +3 -3
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/assets/pmax-assets-update-template.json +34 -3
- package/dist/skill/assets/pmax-create-template.md +1 -1
- package/dist/skill/references/accounts/accounts.md +3 -3
- package/dist/skill/references/accounts/finance.md +32 -32
- package/dist/skill/references/accounts/open-account-google-ui.md +1 -1
- package/dist/skill/references/analytics/account-analytics.md +1 -0
- package/dist/skill/references/analytics/facebook-analysis-guide.md +23 -3
- 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/core/skill-authoring.md +1 -1
- package/dist/skill/references/core/workflows.md +4 -4
- package/dist/skill/references/google-ads/google-ads.md +2 -2
- package/dist/skill/references/google-ads/pmax-api.md +42 -5
- package/dist/skill/references/misc/tso-home.md +2 -2
- package/dist/skill/report-templates/meta-account-diagnosis-report.md +1 -0
- package/dist/skill/report-templates/meta-period-report.md +7 -4
- 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.27-beta.2),供内部测试使用。正式发布后安装命令将改为 `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
|
|
|
@@ -116848,7 +116848,7 @@ function register20(program2) {
|
|
|
116848
116848
|
);
|
|
116849
116849
|
addPmaxJsonOptions(
|
|
116850
116850
|
adCmd.command("pmax-youtube-link").description(
|
|
116851
|
-
"\u4E3A\u8D44\u4EA7\u7EC4\
|
|
116851
|
+
"\u4E3A\u8D44\u4EA7\u7EC4\u8FFD\u52A0\u5355\u6761 YouTube \u89C6\u9891\uFF08POST .../youtube\uFF1B\u9ED8\u8BA4\u4E0D\u66FF\u6362\u5DF2\u6709\u89C6\u9891\uFF0C\u6BCF\u8D44\u4EA7\u7EC4 \u226415 \u6761\uFF09\n --youtube\uFF1A\u5DF2\u6709 URL/ID\uFF1B--video-path\uFF1A\u672C\u5730\u6587\u4EF6\u7ECF PyAPI \u4E0A\u4F20\u540E\u94FE\u63A5\uFF1B\u6279\u91CF\u8FFD\u52A0\u7528 pmax-assets-update"
|
|
116852
116852
|
).requiredOption("-a, --account <id>", "Google \u5A92\u4F53\u5BA2\u6237 ID").requiredOption("--asset-group-id <id>", "\u8D44\u4EA7\u7EC4 ID").option("--campaign-id <id>", "\u6240\u5C5E\u6D3B\u52A8 ID\uFF08\u5EFA\u8BAE\u4F20\uFF09").option("--youtube <urlOrId>", "YouTube URL \u6216 11 \u4F4D\u89C6\u9891 ID\uFF08\u4E0E --video-path \u4E8C\u9009\u4E00\uFF09").option("--video-path <path>", "\u672C\u5730\u89C6\u9891\u8DEF\u5F84\uFF08PyAPI \u4E0A\u4F20\uFF1B\u4E0E --youtube \u4E8C\u9009\u4E00\uFF09").option("--video-title <title>", "PyAPI \u4E0A\u4F20\u6807\u9898\uFF08\u9ED8\u8BA4\u6587\u4EF6\u540D\uFF09").option("--video-description <text>", "PyAPI \u4E0A\u4F20\u63CF\u8FF0").option("--asset-name <name>", "\u8D44\u4EA7\u663E\u793A\u540D").option("--body-file <path>", "\u5B8C\u6574 JSON body\uFF08\u542B youtubeUrlOrId\uFF1B\u8986\u76D6 --youtube/--video-path\uFF09").option("-t, --token <token>", "Auth Token")
|
|
116853
116853
|
).action(
|
|
116854
116854
|
async (opts) => {
|
|
@@ -122389,7 +122389,7 @@ var FACEBOOK_SECTIONS = [
|
|
|
122389
122389
|
},
|
|
122390
122390
|
{
|
|
122391
122391
|
name: "platform",
|
|
122392
|
-
description: "\u6295\u653E\u5E73\u53F0 PlatformSectionData\
|
|
122392
|
+
description: "\u6295\u653E\u5E73\u53F0\xD7\u7248\u4F4D PlatformSectionData\uFF08publisherPlatform + platformPosition\uFF1Bnetwork \u517C\u5BB9\u65E7\u7248\uFF09",
|
|
122393
122393
|
segment: "PlatformSectionData"
|
|
122394
122394
|
},
|
|
122395
122395
|
{
|
package/dist/skill/_meta.json
CHANGED
|
@@ -1,14 +1,45 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_comment": "PUT .../asset-group/{assetGroupId}/assets;campaignId
|
|
2
|
+
"_comment": "PUT .../asset-group/{assetGroupId}/assets;campaignId 必填。YOUTUBE_VIDEO 默认追加(≤15/资产组);替换全部视频时设 replaceFieldTypes: [\"YOUTUBE_VIDEO\"]",
|
|
3
3
|
"account": "6326027735",
|
|
4
4
|
"campaignId": "12345678901",
|
|
5
5
|
"assetGroupId": "98765432101",
|
|
6
6
|
"assetsToLink": [
|
|
7
7
|
{
|
|
8
|
-
"fieldType":
|
|
8
|
+
"fieldType": "HEADLINE",
|
|
9
9
|
"text": "Extra headline from CLI"
|
|
10
10
|
}
|
|
11
11
|
],
|
|
12
12
|
"assetGroupAssetResourceNamesToRemove": [],
|
|
13
|
-
"replaceFieldTypes": []
|
|
13
|
+
"replaceFieldTypes": [],
|
|
14
|
+
"_examples": {
|
|
15
|
+
"appendYoutubeVideos": {
|
|
16
|
+
"assetsToLink": [
|
|
17
|
+
{
|
|
18
|
+
"fieldType": "YOUTUBE_VIDEO",
|
|
19
|
+
"youtubeVideoId": "dQw4w9WgXcQ",
|
|
20
|
+
"assetName": "Promo1"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"fieldType": "YOUTUBE_VIDEO",
|
|
24
|
+
"youtubeVideoId": "https://youtu.be/jNQXAC9IVRw",
|
|
25
|
+
"assetName": "Promo2"
|
|
26
|
+
}
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
"replaceAllYoutubeVideos": {
|
|
30
|
+
"replaceFieldTypes": ["YOUTUBE_VIDEO"],
|
|
31
|
+
"assetsToLink": [
|
|
32
|
+
{
|
|
33
|
+
"fieldType": "YOUTUBE_VIDEO",
|
|
34
|
+
"youtubeVideoId": "9bZkp7q19f0",
|
|
35
|
+
"assetName": "NewPromo"
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
"unlinkYoutube": {
|
|
40
|
+
"assetGroupAssetResourceNamesToRemove": [
|
|
41
|
+
"customers/6326027735/assetGroupAssets/98765432101~7~12345"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
14
45
|
}
|
|
@@ -62,7 +62,7 @@ siluzan-tso ad campaigns -a <accountId> --json-out ./snap
|
|
|
62
62
|
| `biddingStrategyTypeV2` | string | | 默认 `MAXIMIZE_CONVERSIONS` |
|
|
63
63
|
| `targetCpa_BidingAmount` | number | | `TARGET_CPA` 或带目标 CPA 的 `MAXIMIZE_CONVERSIONS` 时必填(**元**) |
|
|
64
64
|
| `targetRoas` | number | | `TARGET_ROAS` 时必填(如 `2.5` = 250%) |
|
|
65
|
-
| `videoPath` | string | | YOUTUBE_VIDEO(可选):本地视频 ≥10s;与 `youtubeUrlOrId` 二选一,创建时最多 1
|
|
65
|
+
| `videoPath` | string | | YOUTUBE_VIDEO(可选):本地视频 ≥10s;与 `youtubeUrlOrId` 二选一,创建时最多 1 条;更多视频创建后用 `pmax-youtube-link` / `pmax-assets-update` 追加 |
|
|
66
66
|
| `videoTitle` | string | | PyAPI 上传标题(默认文件名) |
|
|
67
67
|
| `videoDescription` | string | | PyAPI 上传描述(可选) |
|
|
68
68
|
| `youtubeUrlOrId` | string | | 已有 YouTube URL 或 11 位 ID;`pmax-create` 后自动链接 |
|
|
@@ -271,7 +271,7 @@ siluzan-tso account-history --start 2026-03-01 --end 2026-03-31 --json-out ./sna
|
|
|
271
271
|
| 状态 | 含义 | 下一步操作 |
|
|
272
272
|
| ---------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
273
273
|
| `Pending` | 审核中 | 等待,可反复运行此命令轮询;审核周期因媒体而异 |
|
|
274
|
-
| `Approved` | 审核通过 | 运行 `list-accounts -m <媒体>` 确认账户已出现;引导用户充值激活(`config show` 取 `webUrl`,按 `finance.md` 打开对应媒体充值页;例如 Google 为 `https://www
|
|
274
|
+
| `Approved` | 审核通过 | 运行 `list-accounts -m <媒体>` 确认账户已出现;引导用户充值激活(`config show` 取 `webUrl`,按 `finance.md` 打开对应媒体充值页;例如 Google 为 `https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google`;Kwai、Yandex 当前没有对应充值界面) |
|
|
275
275
|
| `Rejected` | 被拒 | 查看 `--json-out` 落盘中的 `reason` 字段了解拒绝原因;修改资料后重新提交;若原因不明,引导用户联系丝路赞客服 |
|
|
276
276
|
|
|
277
277
|
---
|
|
@@ -824,7 +824,7 @@ siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --res
|
|
|
824
824
|
|
|
825
825
|
| 功能 | 媒体 | 网页路径 |
|
|
826
826
|
| --------------------------------------- | ------ | ---------------------------------------------- |
|
|
827
|
-
| **账户激活**(邀请他人激活 / 充值激活) | Google | `https://www
|
|
827
|
+
| **账户激活**(邀请他人激活 / 充值激活) | Google | `https://www.siluzan.com/v3/foreign_trade/tso/manageAccounts` |
|
|
828
828
|
|
|
829
829
|
**Agent 建议话术**:
|
|
830
830
|
|
|
@@ -833,5 +833,5 @@ siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --res
|
|
|
833
833
|
siluzan-tso config show # 查看 webUrl 字段
|
|
834
834
|
|
|
835
835
|
# 账户激活(Google)→ 引导至账户管理页
|
|
836
|
-
# https://www
|
|
836
|
+
# https://www.siluzan.com/v3/foreign_trade/tso/manageAccounts
|
|
837
837
|
```
|
|
@@ -121,10 +121,10 @@ siluzan-tso config show
|
|
|
121
121
|
|
|
122
122
|
| 媒体 | `mediaType` 参数 | 传统充值/现金充值链接 |
|
|
123
123
|
| ---- | ---------------- | ------------ |
|
|
124
|
-
| Google | `Google` | `https://www
|
|
125
|
-
| TikTok | `TikTok` | `https://www
|
|
126
|
-
| Meta / Facebook | `MetaAd` | `https://www
|
|
127
|
-
| Microsoft / Bing | `MicrosoftAd` | `https://www
|
|
124
|
+
| Google | `Google` | `https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google` |
|
|
125
|
+
| TikTok | `TikTok` | `https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=TikTok` |
|
|
126
|
+
| Meta / Facebook | `MetaAd` | `https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=MetaAd` |
|
|
127
|
+
| Microsoft / Bing | `MicrosoftAd` | `https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=MicrosoftAd` |
|
|
128
128
|
|
|
129
129
|
> Yandex、Kwai 当前没有传统充值/现金充值界面;用户询问这些媒体充值时,不要拼接充值页链接,应说明当前网页不提供对应充值入口,并建议联系丝路赞客服或业务负责人确认处理方式。
|
|
130
130
|
|
|
@@ -132,8 +132,8 @@ siluzan-tso config show
|
|
|
132
132
|
|
|
133
133
|
| 媒体 | 批量充值链接 |
|
|
134
134
|
| ---- | ------------ |
|
|
135
|
-
| Google | `https://www
|
|
136
|
-
| TikTok | `https://www
|
|
135
|
+
| Google | `https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay_batch?mediaType=Google` |
|
|
136
|
+
| TikTok | `https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay_batch?mediaType=TikTok` |
|
|
137
137
|
|
|
138
138
|
> Meta、Microsoft/Bing、Yandex、Kwai 当前不要引导到批量充值页。
|
|
139
139
|
|
|
@@ -141,10 +141,10 @@ siluzan-tso config show
|
|
|
141
141
|
|
|
142
142
|
| 媒体 | 月结充值链接 |
|
|
143
143
|
| ---- | ------------ |
|
|
144
|
-
| Google | `https://www
|
|
145
|
-
| TikTok | `https://www
|
|
146
|
-
| Meta / Facebook | `https://www
|
|
147
|
-
| Microsoft / Bing | `https://www
|
|
144
|
+
| Google | `https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=Google` |
|
|
145
|
+
| TikTok | `https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=TikTok` |
|
|
146
|
+
| Meta / Facebook | `https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=MetaAd` |
|
|
147
|
+
| Microsoft / Bing | `https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=MicrosoftAd` |
|
|
148
148
|
|
|
149
149
|
> Yandex、Kwai 当前不要引导到月结充值页。
|
|
150
150
|
|
|
@@ -155,17 +155,17 @@ siluzan-tso config show
|
|
|
155
155
|
```
|
|
156
156
|
需要进行充值,请访问丝路赞平台对应页面完成操作:
|
|
157
157
|
|
|
158
|
-
- Google 充值: https://www
|
|
159
|
-
- TikTok 充值: https://www
|
|
160
|
-
- Meta 充值: https://www
|
|
161
|
-
- Microsoft/Bing 充值:https://www
|
|
162
|
-
- Google 批量充值: https://www
|
|
163
|
-
- TikTok 批量充值: https://www
|
|
164
|
-
- Google 月结充值: https://www
|
|
165
|
-
- TikTok 月结充值: https://www
|
|
166
|
-
- Meta 月结充值: https://www
|
|
167
|
-
- Microsoft/Bing 月结充值:https://www
|
|
168
|
-
- 丝路赞钱包: https://www
|
|
158
|
+
- Google 充值: https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
|
|
159
|
+
- TikTok 充值: https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=TikTok
|
|
160
|
+
- Meta 充值: https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=MetaAd
|
|
161
|
+
- Microsoft/Bing 充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=MicrosoftAd
|
|
162
|
+
- Google 批量充值: https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay_batch?mediaType=Google
|
|
163
|
+
- TikTok 批量充值: https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay_batch?mediaType=TikTok
|
|
164
|
+
- Google 月结充值: https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=Google
|
|
165
|
+
- TikTok 月结充值: https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=TikTok
|
|
166
|
+
- Meta 月结充值: https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=MetaAd
|
|
167
|
+
- Microsoft/Bing 月结充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=MicrosoftAd
|
|
168
|
+
- 丝路赞钱包: https://www.siluzan.com/v3/foreign_trade/tso/recharge/siluzanWallet
|
|
169
169
|
|
|
170
170
|
Yandex、Kwai 当前没有传统充值/现金充值和月结充值界面,需联系丝路赞客服或业务负责人确认处理方式。
|
|
171
171
|
批量充值当前仅支持 Google 和 TikTok;Meta、Microsoft/Bing、Yandex、Kwai 不要引导到批量充值页。
|
|
@@ -174,17 +174,17 @@ Yandex、Kwai 当前没有传统充值/现金充值和月结充值界面,需
|
|
|
174
174
|
**示例:**
|
|
175
175
|
|
|
176
176
|
```
|
|
177
|
-
- Google 充值:https://www
|
|
178
|
-
- TikTok 充值:https://www
|
|
179
|
-
- Meta 充值:https://www
|
|
180
|
-
- Microsoft/Bing 充值:https://www
|
|
181
|
-
- Google 批量充值:https://www
|
|
182
|
-
- TikTok 批量充值:https://www
|
|
183
|
-
- Google 月结充值:https://www
|
|
184
|
-
- TikTok 月结充值:https://www
|
|
185
|
-
- Meta 月结充值:https://www
|
|
186
|
-
- Microsoft/Bing 月结充值:https://www
|
|
187
|
-
- 丝路赞钱包:https://www
|
|
177
|
+
- Google 充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
|
|
178
|
+
- TikTok 充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=TikTok
|
|
179
|
+
- Meta 充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=MetaAd
|
|
180
|
+
- Microsoft/Bing 充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=MicrosoftAd
|
|
181
|
+
- Google 批量充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay_batch?mediaType=Google
|
|
182
|
+
- TikTok 批量充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay_batch?mediaType=TikTok
|
|
183
|
+
- Google 月结充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=Google
|
|
184
|
+
- TikTok 月结充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=TikTok
|
|
185
|
+
- Meta 月结充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=MetaAd
|
|
186
|
+
- Microsoft/Bing 月结充值:https://www.siluzan.com/v3/foreign_trade/tso/recharge/accountBillingQuota?mediaType=MicrosoftAd
|
|
187
|
+
- 丝路赞钱包:https://www.siluzan.com/v3/foreign_trade/tso/recharge/siluzanWallet
|
|
188
188
|
```
|
|
189
189
|
|
|
190
190
|
---
|
|
@@ -60,7 +60,7 @@ siluzan-tso open-account google-wizard
|
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
62
|
siluzan-tso account-history -m Google
|
|
63
|
-
# 审核通过后:config show → https://www
|
|
63
|
+
# 审核通过后:config show → https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
---
|
|
@@ -280,6 +280,7 @@ siluzan-tso facebook-analysis -a <mediaCustomerId> --start YYYY-MM-DD --end YYYY
|
|
|
280
280
|
| `-a, --account` | 数字 `mediaCustomerId` 或 `act_<数字>` |
|
|
281
281
|
| `--json-out` | 必填;`report-manifest-<id>.json` + `<section>-<id>.json` |
|
|
282
282
|
| `--sections` / `--exclude` | `overview` `ad-sets` `platform` `country` `audience` `creative` `material`;**别名**:`campaigns`→`ad-sets`,`geographic`→`country`,`devices`→`platform`,`ads`→`creative`,`materials`→`material` |
|
|
283
|
+
| `platform` 响应字段 | `networks[]` 含 `publisherPlatform`(投放平台)+ `platformPosition`(版位);`network` 与 `platformPosition` 同值,详见 `facebook-analysis-guide.md` |
|
|
283
284
|
| `--limit` | 仅 `country`:按 spend 降序前 N 条 |
|
|
284
285
|
| `--start` / `--end` | 同传或同省略;省略=近 7 天截至昨天 |
|
|
285
286
|
| `--concurrency` | 默认 5,上限 16 |
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
| 每日趋势 `daily-metrics` | ❌ 无接口 | — | 报告中注明「Meta 报告无按日 Section」 |
|
|
13
13
|
| 月度汇总 `dimension-summary` | ⚠️ 用 `overview` 单周期汇总代替 | `overview` | 仅 currentPeriod 即全区间汇总 |
|
|
14
14
|
| 系列 `campaigns` | ⚠️ 广告组 + 行上 `campaignName` | `ad-sets` | 无独立 Campaign Section;可按 `campaignName` 聚合撰写 |
|
|
15
|
-
| 设备 `devices` | ⚠️ 投放平台 | `platform` | `facebook
|
|
15
|
+
| 设备 `devices` | ⚠️ 投放平台 × 版位 | `platform` | `publisherPlatform`(facebook / instagram 等)+ `platformPosition`(feed / facebook_reels 等) |
|
|
16
16
|
| 地域 `geographic` | ✅ 国家 | `country` | 可选 `--limit N` |
|
|
17
17
|
| 关键词 `keywords` | ❌ 无 | — | 非搜索广告;章节写「不适用」 |
|
|
18
18
|
| 受众 `audience` | ⚠️ 年龄×性别 | `audience` | 无兴趣/自定义受众列表 |
|
|
@@ -59,13 +59,33 @@
|
|
|
59
59
|
|
|
60
60
|
---
|
|
61
61
|
|
|
62
|
+
## PlatformSectionData 字段(平台 / 版位)
|
|
63
|
+
|
|
64
|
+
后端按 Meta `publisher_platform,platform_position` breakdown 拆分(2026-06 起)。`networks[]` 每行:
|
|
65
|
+
|
|
66
|
+
| 字段 | 含义 | 示例 |
|
|
67
|
+
| ---- | ---- | ---- |
|
|
68
|
+
| `publisherPlatform` | 投放平台(Meta `publisher_platform`) | `facebook`、`instagram`、`audience_network` |
|
|
69
|
+
| `platformPosition` | 版位(Meta `platform_position`) | `feed`、`facebook_reels`、`instagram_stories`、`instream_video` |
|
|
70
|
+
| `network` | 兼容旧前端,**等于 `platformPosition`** | 勿单独当作「平台」列使用 |
|
|
71
|
+
|
|
72
|
+
**撰写表格建议列**:投放平台 | 版位 | 展示 | 花费 | 结果 | 单次成效费用。
|
|
73
|
+
|
|
74
|
+
**汇总规则**:
|
|
75
|
+
|
|
76
|
+
- 按**平台**占比:对 `publisherPlatform` 聚合 `spend` / `results`。
|
|
77
|
+
- 按**版位**占比:对 `platformPosition` 聚合(跨平台合并同名版位时须注明)。
|
|
78
|
+
- 精细诊断:保留 `publisherPlatform` + `platformPosition` 组合行(如 `instagram` + `feed` vs `facebook` + `feed`)。
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
62
82
|
## 各 Section 文件与章节要点
|
|
63
83
|
|
|
64
84
|
| section | 落盘文件 | 根字段 | 报告章节要点 |
|
|
65
85
|
| ------- | -------- | ------ | ------------ |
|
|
66
86
|
| `overview` | `overview-<id>.json` | `currentPeriod`, `previousPeriod` | 环比表:消耗、展示、点击、CTR、CPC、转化、CPA、结果、单次成效、reach、frequency;注明 `resultType` / `attributionSetting` |
|
|
67
87
|
| `ad-sets` | `ad-sets-<id>.json` | `adGroups[]` | Top 组 by spend;`spendPercentage`;按 `campaignName` 归并;高消耗低结果组 |
|
|
68
|
-
| `platform` | `platform-<id>.json` | `networks[]` |
|
|
88
|
+
| `platform` | `platform-<id>.json` | `networks[]` | **两列维度**:`publisherPlatform`(投放平台)+ `platformPosition`(版位);`network` 与 `platformPosition` 同值(兼容旧版)。同版位名可能跨平台出现(如 facebook/instagram 均有 `feed`),**禁止**仅用 `network` 当平台汇总 |
|
|
69
89
|
| `country` | `country-<id>.json` | `countries[]` | Top 国家;`countryOrRegion` 为展示名 |
|
|
70
90
|
| `audience` | `audience-<id>.json` | `audiences[]` | 年龄×性别矩阵;高/低效人群段 |
|
|
71
91
|
| `creative` | `creative-<id>.json` | `creatives[]` | 按 `creativeType` 汇总;Top 创意表(adName、title、spend、results、costPerResult) |
|
|
@@ -93,7 +113,7 @@ siluzan-tso facebook-analysis -a <id> --start <s> --end <e> --json-out ./snap-fb
|
|
|
93
113
|
结合已拉维度,至少覆盖:
|
|
94
114
|
|
|
95
115
|
1. **预算**:高 `spendPercentage` 但 `costPerResult` 差的 Ad Set → 降预算/暂停。
|
|
96
|
-
2.
|
|
116
|
+
2. **平台/版位**:按 `publisherPlatform` + `platformPosition` 定位高消耗低 `costPerResult` 组合(勿只读 `network`);可分别按平台或版位汇总后给减投建议。
|
|
97
117
|
3. **地域**:高消耗国家转化差 → 收窄/geo 排除。
|
|
98
118
|
4. **受众**:低效 age×gender → 收窄定向。
|
|
99
119
|
5. **创意**:关停高消耗低 `results` 的 ad;复制 winner 的 `creativeType`/文案结构。
|
|
@@ -192,9 +192,9 @@ siluzan-tso report push receive-emails -m Google [--json-out ./snap]
|
|
|
192
192
|
|
|
193
193
|
| 媒体 | 报告类型 | URL 模板 |
|
|
194
194
|
| ------ | ---------------- | -------------------------------------------------------- |
|
|
195
|
-
| Google | 日报(Daily) | `https://www
|
|
196
|
-
| Google | 小时报(Hourly) | `https://www
|
|
197
|
-
| TikTok | 日报 | `https://www
|
|
195
|
+
| Google | 日报(Daily) | `https://www.siluzan.com/media-report/publish/{entityId}?culture=zh-CN` |
|
|
196
|
+
| Google | 小时报(Hourly) | `https://www.siluzan.com/media-report/hour/{entityId}?culture=zh-CN` |
|
|
197
|
+
| TikTok | 日报 | `https://www.siluzan.com/media-report/publish/{entityId}?culture=zh-CN` |
|
|
198
198
|
|
|
199
199
|
`entityId` 来自 `siluzan-tso report list --json-out ./snap` 中每条记录的 `entityId` 字段。
|
|
200
200
|
|
|
@@ -207,8 +207,8 @@ siluzan-tso report list -m Google --json-out ./snap
|
|
|
207
207
|
|
|
208
208
|
# 第二步:查看 webUrl
|
|
209
209
|
siluzan-tso config show
|
|
210
|
-
# webUrl: https://www
|
|
210
|
+
# webUrl: https://www.siluzan.com
|
|
211
211
|
|
|
212
212
|
# 第三步:拼接链接(Google 日报)
|
|
213
|
-
# https://www
|
|
213
|
+
# https://www.siluzan.com/media-report/publish/rpt_abc123?culture=zh-CN
|
|
214
214
|
```
|
|
@@ -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
|
|
|
@@ -53,7 +53,7 @@ siluzan-tso/ # 安装后目录名
|
|
|
53
53
|
|
|
54
54
|
- 从 SKILL.md **只链接一层**(`references/foo.md`),避免 A→B→C 链式引用。
|
|
55
55
|
- 路径用正斜杠,不用 Windows 反斜杠。
|
|
56
|
-
- 占位符 `https://www
|
|
56
|
+
- 占位符 `https://www.siluzan.com`、`https://tso-api.siluzan.com`、`npm install -g siluzan-tso-cli` 由构建脚本替换,文档中禁止硬编码环境 URL。
|
|
57
57
|
|
|
58
58
|
---
|
|
59
59
|
|
|
@@ -70,7 +70,7 @@ siluzan-tso account-history -m Google
|
|
|
70
70
|
siluzan-tso list-accounts -m Google
|
|
71
71
|
|
|
72
72
|
# 第四步:充值激活(必须网页完成)
|
|
73
|
-
# siluzan-tso config show 取 webUrl,打开:https://www
|
|
73
|
+
# siluzan-tso config show 取 webUrl,打开:https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
|
|
74
74
|
# 美元账户最低约 100 USD,人民币账户约 700 CNY
|
|
75
75
|
```
|
|
76
76
|
|
|
@@ -790,7 +790,7 @@ siluzan-tso balance -m Google -a <mediaCustomerId>
|
|
|
790
790
|
siluzan-tso config show # 取 webUrl
|
|
791
791
|
|
|
792
792
|
# 诊断入口(网页 AICreation 向导内嵌):
|
|
793
|
-
# https://www
|
|
793
|
+
# https://www.siluzan.com/v3/foreign_trade/tso/advertising/AICreation
|
|
794
794
|
# → 输入推广链接时,系统会自动触发网站诊断
|
|
795
795
|
```
|
|
796
796
|
|
|
@@ -851,7 +851,7 @@ siluzan-tso account bm-bind \
|
|
|
851
851
|
--bm-id <businessManagerId>
|
|
852
852
|
|
|
853
853
|
# 第三步:确认绑定状态(在网页确认)
|
|
854
|
-
# https://www
|
|
854
|
+
# https://www.siluzan.com/v3/foreign_trade/tso/manageAccounts → 找到对应账户查看 BM 状态
|
|
855
855
|
```
|
|
856
856
|
|
|
857
857
|
### 场景 C:TikTok BC 绑定 / 解绑
|
|
@@ -875,7 +875,7 @@ siluzan-tso account bc-unbind --customers <mediaCustomerId> --bc-id <bcId>
|
|
|
875
875
|
siluzan-tso config show # 取 webUrl
|
|
876
876
|
|
|
877
877
|
# 打开账户管理页:
|
|
878
|
-
# https://www
|
|
878
|
+
# https://www.siluzan.com/v3/foreign_trade/tso/manageAccounts
|
|
879
879
|
# → 选中 Google 账户 → 点击「激活账户」→ 选择激活方式
|
|
880
880
|
```
|
|
881
881
|
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
|
|
49
49
|
**图片**:配置 `imagePaths`(相对 JSON 文件目录)或 `marketingImageBase64` / `squareMarketingImageBase64` / `logoImageBase64`。`pmax-validate` 会自动校验图片尺寸(最小值 / 推荐值 / 宽高比 ±2% / 文件大小 ≤5120 KB)。如需将任意图片转为合规素材,用 `ad pmax-image-convert`(`marketing` / `square` / `logo` 三种格式,sharp 处理,居中裁切)。
|
|
50
50
|
|
|
51
|
-
**视频**:`videoPath`(本地文件,经 `{googleApiUrl}/pyapi` 上传并轮询 `video_id` 后自动链接)与 `youtubeUrlOrId`
|
|
51
|
+
**视频**:`videoPath`(本地文件,经 `{googleApiUrl}/pyapi` 上传并轮询 `video_id` 后自动链接)与 `youtubeUrlOrId` **二选一**(创建时最多 1 条);创建后追加更多视频用 `ad pmax-youtube-link`(单条)或 `ad pmax-assets-update`(批量,每资产组 ≤15 条)。
|
|
52
52
|
|
|
53
53
|
**禁止**:对已创建的 PMax 系列使用 `ad campaign-edit`(旧 PUT 会 **400**)。
|
|
54
54
|
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
| 改资产组 | `ad pmax-asset-group-edit` |
|
|
63
63
|
| 删资产组 | `ad pmax-asset-group-edit --status REMOVED`(软删;网关无 DELETE 端点) |
|
|
64
64
|
| 改资产 | `ad pmax-assets-update --config-file …` |
|
|
65
|
-
| YouTube
|
|
65
|
+
| YouTube 追加 | `ad pmax-youtube-link`(单条 `--youtube` / `--video-path`);批量见 `ad pmax-assets-update` |
|
|
66
66
|
| 信号 | `ad pmax-signals-get` / `ad pmax-signals-set`;受众下拉 `ad pmax-audiences` |
|
|
67
67
|
| 图片库 | `ad pmax-image-upload` |
|
|
68
68
|
| 报表 | `ad pmax-report-asset-groups` / `ad pmax-report-geo` |
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
| `ad pmax-asset-group-create` | 新建资产组 |
|
|
24
24
|
| `ad pmax-asset-group-edit` | 编辑资产组 |
|
|
25
25
|
| `ad pmax-assets-update` | 更新资产 |
|
|
26
|
-
| `ad pmax-youtube-link` |
|
|
26
|
+
| `ad pmax-youtube-link` | **追加**单条 YouTube 视频(不替换已有视频) |
|
|
27
27
|
| `ad pmax-signals-get` / `ad pmax-signals-set` | 读/写信号(**全量** PUT) |
|
|
28
28
|
| `ad pmax-audiences` | 受众列表 |
|
|
29
29
|
| `ad pmax-image-upload` | 单张图片上传 |
|
|
@@ -38,13 +38,50 @@
|
|
|
38
38
|
2. `ad pmax-validate` → 用户确认 → `ad pmax-create`:CLI **自动上传**三张图并写入 `*ImageAssetId`(Body 不含 Base64)。
|
|
39
39
|
3. 可选预上传:`ad pmax-image-upload -a <id> --image-path ./x.png`,将返回 `id` 写入 JSON。
|
|
40
40
|
|
|
41
|
-
###
|
|
41
|
+
### 视频(YouTube)
|
|
42
|
+
|
|
43
|
+
**语义(与后端 `pmax-frontend-api.md` §5.3 / §5.4 一致)**:`YOUTUBE_VIDEO` 默认 **追加**,每个资产组最多 **15** 条;不可重复链接同一 `videoId`。仅当 `pmax-assets-update` 显式传 `replaceFieldTypes: ["YOUTUBE_VIDEO"]` 时才会先删后增(替换全部视频)。
|
|
44
|
+
|
|
45
|
+
| 场景 | 命令 / 接口 |
|
|
46
|
+
|------|-------------|
|
|
47
|
+
| 创建时挂 1 条 | `pmax-create` JSON:`videoPath` 或 `youtubeUrlOrId`(二选一,单次最多 1 条) |
|
|
48
|
+
| 追加 1 条 | `ad pmax-youtube-link` → `POST .../asset-group/{id}/youtube` |
|
|
49
|
+
| 批量追加多条 | `ad pmax-assets-update` → `PUT .../assets`,`assetsToLink` 中多条 `YOUTUBE_VIDEO` |
|
|
50
|
+
| 取消链接 | `ad pmax-assets-update`,`assetGroupAssetResourceNamesToRemove`(取自 `pmax-get` 的 `assets[].assetResourceName`) |
|
|
51
|
+
| 替换全部视频 | `ad pmax-assets-update`,`replaceFieldTypes: ["YOUTUBE_VIDEO"]` + 新的 `assetsToLink` |
|
|
52
|
+
|
|
53
|
+
**创建时自动链接**
|
|
42
54
|
|
|
43
55
|
- **`videoPath`**:本地 `.mp4` 等;`pmax-create` 经 **GoogleAdsPyAPI** `POST {googleApiUrl}/pyapi/video/upload` 上传,轮询 `GET .../upload/status` 得 `video_id`,再 `POST .../asset-group/{id}/youtube` 链接(与 `youtubeUrlOrId` 二选一)。
|
|
44
56
|
- **`youtubeUrlOrId`**:已有 YouTube URL 或 11 位 ID;创建成功后自动链接。
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
57
|
+
|
|
58
|
+
**已创建系列追加视频**(`ad pmax-youtube-link`):
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# 已有 YouTube URL / ID
|
|
62
|
+
siluzan-tso ad pmax-youtube-link -a <id> --asset-group-id <agId> --campaign-id <cid> \
|
|
63
|
+
--youtube "https://www.youtube.com/watch?v=xxxxx"
|
|
64
|
+
|
|
65
|
+
# 本地视频(PyAPI 上传后追加)
|
|
66
|
+
siluzan-tso ad pmax-youtube-link -a <id> --asset-group-id <agId> --campaign-id <cid> \
|
|
67
|
+
--video-path ./promo-v2.mp4 --video-title "宣传视频 2"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**批量追加**(`ad pmax-assets-update --config-file ./pmax-videos.json`):
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"account": "6326027735",
|
|
75
|
+
"campaignId": "12345678901",
|
|
76
|
+
"assetGroupId": "98765432101",
|
|
77
|
+
"assetsToLink": [
|
|
78
|
+
{ "fieldType": "YOUTUBE_VIDEO", "youtubeVideoId": "dQw4w9WgXcQ", "assetName": "Promo1" },
|
|
79
|
+
{ "fieldType": "YOUTUBE_VIDEO", "youtubeVideoId": "https://youtu.be/jNQXAC9IVRw", "assetName": "Promo2" }
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
`youtubeVideoId` 接受 11 位 ID 或完整 URL。模板见 `assets/pmax-assets-update-template.json`。
|
|
48
85
|
|
|
49
86
|
---
|
|
50
87
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
siluzan-tso config show # 取 webUrl
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
首页地址:`https://www
|
|
9
|
+
首页地址:`https://www.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
|
|
28
|
+
1. **「和首页一样的总览」** → 打开 `https://www.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
|
|
|
@@ -47,6 +47,7 @@ siluzan-tso facebook-analysis -a <id> --start <s> --end <e> --json-out ./snap-fb
|
|
|
47
47
|
## 8. 平台、地域、受众
|
|
48
48
|
|
|
49
49
|
- **CLI**:`platform`、`country`、`audience`
|
|
50
|
+
- `platform` → `networks[]`:用 **`publisherPlatform`**(投放平台)+ **`platformPosition`**(版位);`network` 仅等于 `platformPosition`(兼容旧版,勿当平台列)。
|
|
50
51
|
- 全表或 Top 表;与 Google `devices` / `geographic` / `audience` 对应说明。
|
|
51
52
|
|
|
52
53
|
## 9. 创意(替代搜索词+搜索广告)
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
| --- | --- | --- | --- | --- |
|
|
14
14
|
| 1 | 执行摘要 | overview | `overview` | OverviewSectionData |
|
|
15
15
|
| 2 | 投放结构(广告组 / 系列归并) | campaigns | `ad-sets`(别名 `campaigns`) | AdSetSectionData |
|
|
16
|
-
| 3 |
|
|
16
|
+
| 3 | 投放平台 × 版位分布 | devices(版位) | `platform`(别名 `devices`) | PlatformSectionData |
|
|
17
17
|
| 4 | 国家/地区分布 | geographic | `country`(别名 `geographic`) | CountrySectionData |
|
|
18
18
|
| 5 | 受众(年龄×性别) | audience(子集) | `audience` | AudienceSectionData |
|
|
19
19
|
| 6 | 广告创意表现 | ads + materials(子集) | `creative`(别名 `ads`) | CreativeSectionData |
|
|
@@ -60,10 +60,13 @@ siluzan-tso facebook-analysis -a <mediaCustomerId> --start <s> --end <e> --json-
|
|
|
60
60
|
- Top 5~10 广告组表;可按 `campaignName` 小计 spend 占比。
|
|
61
61
|
- 指出:高消耗 + 高 `costPerResult` 或低 `results` 的组。
|
|
62
62
|
|
|
63
|
-
### 3. 投放平台
|
|
63
|
+
### 3. 投放平台 × 版位
|
|
64
64
|
|
|
65
|
-
- 数据源:`networks[]
|
|
66
|
-
-
|
|
65
|
+
- 数据源:`networks[]`。
|
|
66
|
+
- **必用字段**:`publisherPlatform`(投放平台,如 facebook / instagram)+ `platformPosition`(版位,如 feed / facebook_reels)。`network` 与 `platformPosition` 同值,仅兼容旧版,**勿**单独当「平台」列。
|
|
67
|
+
- 表格建议列:投放平台 | 版位 | 花费 | 花费占比 | 结果 | 单次成效费用。
|
|
68
|
+
- 先给 **按 `publisherPlatform` 汇总** 的花费占比;再列 Top 版位组合(含跨平台同名版位,如 instagram/feed 与 facebook/feed 须分行)。
|
|
69
|
+
- 指出:高花费 + 高 `costPerResult` 的平台或版位组合。
|
|
67
70
|
|
|
68
71
|
### 4. 国家/地区
|
|
69
72
|
|
|
@@ -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.27
|
|
12
|
+
$PKG_VERSION = '1.1.27'
|
|
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.27
|
|
12
|
+
readonly PKG_VERSION="1.1.27"
|
|
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
|