siluzan-tso-cli 1.1.40-beta.6 → 1.1.41
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 +66 -62
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/references/accounts/accounts-list.md +2 -2
- 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/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 报告模板外部资源:**ECharts** 统一使用 `https://staticpn.siluz
|
|
|
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.40-beta.6),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
|
|
55
54
|
|
|
56
55
|
| 助手 | 建议 `--ai` |
|
|
57
56
|
| ----------------------- | ------------------------------------ |
|
package/dist/index.js
CHANGED
|
@@ -2300,7 +2300,8 @@ function buildSiluzanClientIdentityHeaders() {
|
|
|
2300
2300
|
"X-Siluzan-Client": client,
|
|
2301
2301
|
"X-Siluzan-Runtime": runtime,
|
|
2302
2302
|
"X-Siluzan-Skill-Version": version,
|
|
2303
|
-
|
|
2303
|
+
// 暂时不发送 X-Company-Source-Type:本次发版临时需求,待后端确认后恢复
|
|
2304
|
+
// "X-Company-Source-Type": SILUZAN_AGENT_COMPANY_SOURCE_TYPE,
|
|
2304
2305
|
"User-Agent": `${client}/${version}`
|
|
2305
2306
|
};
|
|
2306
2307
|
}
|
|
@@ -3887,7 +3888,7 @@ async function issueApiKeyWithPhoneCode(opts) {
|
|
|
3887
3888
|
});
|
|
3888
3889
|
return apiKey;
|
|
3889
3890
|
}
|
|
3890
|
-
var import_semver, SILUZAN_DIR, CONFIG_FILE, inProcessLockChain, ALLOWED_HOSTNAME_SUFFIXES, EXACT_ID_FIELD_NAMES,
|
|
3891
|
+
var import_semver, SILUZAN_DIR, CONFIG_FILE, inProcessLockChain, ALLOWED_HOSTNAME_SUFFIXES, EXACT_ID_FIELD_NAMES, _clientProduct, _resolveVersion, DEFAULT_TIMEOUT_MS, MAX_RESPONSE_BYTES, httpsAgent, httpAgent, PERF_PREFIX, DEFAULT_DETAIL_MAX, VERBOSE_DETAIL_MAX, ASCII_TABLE_CHARS, CLI_SNAPSHOT_MANIFEST_FILE, SCHEMA_VERSION, FALLBACK_FIELD_GUIDE_REFS, _cliPackage, _resolveCliVersion, _fieldGuideRefs, OUTLINE_AGENT_HINT, TS_LIKE_ARRAY_SAMPLE_MAX, MAX_INVOCATION_CHARS, currentInvocation, MAX_COMMIT_CHARS, WRITE_AUDIT_AGENT_AUTO_COMMIT, cliCommitOverride, WRITE_AUDIT_SCHEMA_VERSION, MUTATING, BEIJING_TZ, AUDIT_LOG_FILENAME_RE, DEFAULT_MAX_FILE_MB, MIN_SEGMENT_BYTES, MAX_SEGMENT_BYTES, DEFAULT_RETENTION_DAYS, MIN_RETENTION_DAYS, MAX_RETENTION_DAYS, PRUNE_THROTTLE_MS, lastPruneAtMs, MAX_BODY_CHARS, MAX_ERROR_CHARS, DEFAULT_FIND_AUDIT_MAX_DAYS, MAX_SNAPSHOT_FILE_BYTES, API_KEY_SERVICE_VALUES;
|
|
3891
3892
|
var init_dist = __esm({
|
|
3892
3893
|
"../common/dist/index.js"() {
|
|
3893
3894
|
"use strict";
|
|
@@ -3933,7 +3934,6 @@ var init_dist = __esm({
|
|
|
3933
3934
|
"lastChangedBy",
|
|
3934
3935
|
"userId"
|
|
3935
3936
|
]);
|
|
3936
|
-
SILUZAN_AGENT_COMPANY_SOURCE_TYPE = "Ctaiad";
|
|
3937
3937
|
_clientProduct = "siluzan-cli";
|
|
3938
3938
|
DEFAULT_TIMEOUT_MS = 10 * 60 * 1e3;
|
|
3939
3939
|
MAX_RESPONSE_BYTES = 50 * 1024 * 1024;
|
|
@@ -4011,7 +4011,7 @@ var DEFAULT_API_BASE;
|
|
|
4011
4011
|
var init_defaults = __esm({
|
|
4012
4012
|
"src/config/defaults.ts"() {
|
|
4013
4013
|
"use strict";
|
|
4014
|
-
DEFAULT_API_BASE = "https://tso-api
|
|
4014
|
+
DEFAULT_API_BASE = "https://tso-api.siluzan.com";
|
|
4015
4015
|
}
|
|
4016
4016
|
});
|
|
4017
4017
|
|
|
@@ -4484,6 +4484,56 @@ var init_currency_display = __esm({
|
|
|
4484
4484
|
}
|
|
4485
4485
|
});
|
|
4486
4486
|
|
|
4487
|
+
// src/utils/media-customer-id.ts
|
|
4488
|
+
function stripMediaCustomerIdDecorators(raw) {
|
|
4489
|
+
return raw.trim().replace(/[\s-]+/g, "");
|
|
4490
|
+
}
|
|
4491
|
+
function looksLikeNumericMediaCustomerId(raw) {
|
|
4492
|
+
return /^\d+$/.test(stripMediaCustomerIdDecorators(raw));
|
|
4493
|
+
}
|
|
4494
|
+
function normalizeNumericMediaCustomerId(raw) {
|
|
4495
|
+
if (!looksLikeNumericMediaCustomerId(raw)) return null;
|
|
4496
|
+
return stripMediaCustomerIdDecorators(raw);
|
|
4497
|
+
}
|
|
4498
|
+
function looksLikeEntityIdUuid(raw) {
|
|
4499
|
+
return ENTITY_ID_UUID_RE.test(raw.trim());
|
|
4500
|
+
}
|
|
4501
|
+
function warnIfAccountIdsLookLikeEntityId(ids, command) {
|
|
4502
|
+
const bad = ids.map((id) => id.trim()).filter((id) => id && looksLikeEntityIdUuid(id));
|
|
4503
|
+
if (bad.length === 0) return;
|
|
4504
|
+
console.error(
|
|
4505
|
+
`
|
|
4506
|
+
\u26A0\uFE0F ${command} \u7684 -a/--accounts \u6536\u5230\u7591\u4F3C entityId/UUID\uFF1A${bad.join(", ")}
|
|
4507
|
+
\u672C\u547D\u4EE4\u9700\u8981 mediaCustomerId\uFF08list-accounts \u7684 ma.mediaCustomerId\uFF1BYandex \u5F62\u5982 porg-\u2026\uFF09\u3002
|
|
4508
|
+
\u8BF7\u5148 list-accounts -m <\u5A92\u4F53> -k <\u5A92\u4F53\u8D26\u6237\u53F7> \u6838\u5BF9\u540E\u518D\u91CD\u8BD5\uFF1B\u52FF\u636E\u6B64\u76F4\u63A5 reauth\u3002
|
|
4509
|
+
`
|
|
4510
|
+
);
|
|
4511
|
+
}
|
|
4512
|
+
function parseNumericMediaCustomerIds(input) {
|
|
4513
|
+
if (!input || !input.trim()) return [];
|
|
4514
|
+
const seen = /* @__PURE__ */ new Set();
|
|
4515
|
+
const out = [];
|
|
4516
|
+
for (const raw of input.split(",")) {
|
|
4517
|
+
const piece = raw.trim();
|
|
4518
|
+
if (!piece) continue;
|
|
4519
|
+
const id = normalizeNumericMediaCustomerId(piece);
|
|
4520
|
+
if (!id) {
|
|
4521
|
+
throw new Error(`mediaCustomerId \u5FC5\u987B\u4E3A\u7EAF\u6570\u5B57\uFF08\u53EF\u542B\u8FDE\u5B57\u7B26\uFF09\uFF1A${piece}`);
|
|
4522
|
+
}
|
|
4523
|
+
if (seen.has(id)) continue;
|
|
4524
|
+
seen.add(id);
|
|
4525
|
+
out.push(id);
|
|
4526
|
+
}
|
|
4527
|
+
return out;
|
|
4528
|
+
}
|
|
4529
|
+
var ENTITY_ID_UUID_RE;
|
|
4530
|
+
var init_media_customer_id = __esm({
|
|
4531
|
+
"src/utils/media-customer-id.ts"() {
|
|
4532
|
+
"use strict";
|
|
4533
|
+
ENTITY_ID_UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
4534
|
+
}
|
|
4535
|
+
});
|
|
4536
|
+
|
|
4487
4537
|
// src/utils/balance.ts
|
|
4488
4538
|
function fmt(d) {
|
|
4489
4539
|
return d.toISOString().slice(0, 10);
|
|
@@ -4790,56 +4840,6 @@ var init_balance = __esm({
|
|
|
4790
4840
|
}
|
|
4791
4841
|
});
|
|
4792
4842
|
|
|
4793
|
-
// src/utils/media-customer-id.ts
|
|
4794
|
-
function stripMediaCustomerIdDecorators(raw) {
|
|
4795
|
-
return raw.trim().replace(/[\s-]+/g, "");
|
|
4796
|
-
}
|
|
4797
|
-
function looksLikeNumericMediaCustomerId(raw) {
|
|
4798
|
-
return /^\d+$/.test(stripMediaCustomerIdDecorators(raw));
|
|
4799
|
-
}
|
|
4800
|
-
function normalizeNumericMediaCustomerId(raw) {
|
|
4801
|
-
if (!looksLikeNumericMediaCustomerId(raw)) return null;
|
|
4802
|
-
return stripMediaCustomerIdDecorators(raw);
|
|
4803
|
-
}
|
|
4804
|
-
function looksLikeEntityIdUuid(raw) {
|
|
4805
|
-
return ENTITY_ID_UUID_RE.test(raw.trim());
|
|
4806
|
-
}
|
|
4807
|
-
function warnIfAccountIdsLookLikeEntityId(ids, command) {
|
|
4808
|
-
const bad = ids.map((id) => id.trim()).filter((id) => id && looksLikeEntityIdUuid(id));
|
|
4809
|
-
if (bad.length === 0) return;
|
|
4810
|
-
console.error(
|
|
4811
|
-
`
|
|
4812
|
-
\u26A0\uFE0F ${command} \u7684 -a/--accounts \u6536\u5230\u7591\u4F3C entityId/UUID\uFF1A${bad.join(", ")}
|
|
4813
|
-
\u672C\u547D\u4EE4\u9700\u8981 mediaCustomerId\uFF08list-accounts \u7684 ma.mediaCustomerId\uFF1BYandex \u5F62\u5982 porg-\u2026\uFF09\u3002
|
|
4814
|
-
\u8BF7\u5148 list-accounts -m <\u5A92\u4F53> -k <\u5A92\u4F53\u8D26\u6237\u53F7> \u6838\u5BF9\u540E\u518D\u91CD\u8BD5\uFF1B\u52FF\u636E\u6B64\u76F4\u63A5 reauth\u3002
|
|
4815
|
-
`
|
|
4816
|
-
);
|
|
4817
|
-
}
|
|
4818
|
-
function parseNumericMediaCustomerIds(input) {
|
|
4819
|
-
if (!input || !input.trim()) return [];
|
|
4820
|
-
const seen = /* @__PURE__ */ new Set();
|
|
4821
|
-
const out = [];
|
|
4822
|
-
for (const raw of input.split(",")) {
|
|
4823
|
-
const piece = raw.trim();
|
|
4824
|
-
if (!piece) continue;
|
|
4825
|
-
const id = normalizeNumericMediaCustomerId(piece);
|
|
4826
|
-
if (!id) {
|
|
4827
|
-
throw new Error(`mediaCustomerId \u5FC5\u987B\u4E3A\u7EAF\u6570\u5B57\uFF08\u53EF\u542B\u8FDE\u5B57\u7B26\uFF09\uFF1A${piece}`);
|
|
4828
|
-
}
|
|
4829
|
-
if (seen.has(id)) continue;
|
|
4830
|
-
seen.add(id);
|
|
4831
|
-
out.push(id);
|
|
4832
|
-
}
|
|
4833
|
-
return out;
|
|
4834
|
-
}
|
|
4835
|
-
var ENTITY_ID_UUID_RE;
|
|
4836
|
-
var init_media_customer_id = __esm({
|
|
4837
|
-
"src/utils/media-customer-id.ts"() {
|
|
4838
|
-
"use strict";
|
|
4839
|
-
ENTITY_ID_UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
4840
|
-
}
|
|
4841
|
-
});
|
|
4842
|
-
|
|
4843
4843
|
// src/utils/media-account-batch.ts
|
|
4844
4844
|
function mediaAccountDataBatchSize(media) {
|
|
4845
4845
|
switch (media) {
|
|
@@ -105715,12 +105715,6 @@ var VALID_MEDIA_TYPES = [
|
|
|
105715
105715
|
"BingV2",
|
|
105716
105716
|
"Kwai"
|
|
105717
105717
|
];
|
|
105718
|
-
function applyListAccountsSearchKeyword(params, keyword) {
|
|
105719
|
-
const kw = (keyword ?? "").trim();
|
|
105720
|
-
if (kw) {
|
|
105721
|
-
params.set("keyword", kw);
|
|
105722
|
-
}
|
|
105723
|
-
}
|
|
105724
105718
|
var PLATFORM_CONFIG = {
|
|
105725
105719
|
Google: {
|
|
105726
105720
|
path: "/query/media-account/",
|
|
@@ -106179,6 +106173,7 @@ function wrapListJson(params) {
|
|
|
106179
106173
|
}
|
|
106180
106174
|
|
|
106181
106175
|
// src/commands/list-accounts/main.ts
|
|
106176
|
+
init_media_customer_id();
|
|
106182
106177
|
async function runListAccounts(opts) {
|
|
106183
106178
|
let config = loadConfig(opts.token);
|
|
106184
106179
|
if (opts.refreshDp) {
|
|
@@ -106208,7 +106203,14 @@ async function runListAccounts(opts) {
|
|
|
106208
106203
|
if (platformCfg.responseType === "array" && opts.status && opts.status !== "all") {
|
|
106209
106204
|
params.set("status", opts.status);
|
|
106210
106205
|
}
|
|
106211
|
-
|
|
106206
|
+
if (opts.keyword) {
|
|
106207
|
+
const numericId = normalizeNumericMediaCustomerId(opts.keyword);
|
|
106208
|
+
if (numericId) {
|
|
106209
|
+
params.set(platformCfg.idSearchParam, numericId);
|
|
106210
|
+
} else {
|
|
106211
|
+
params.set("mediaCustomerName", opts.keyword.trim());
|
|
106212
|
+
}
|
|
106213
|
+
}
|
|
106212
106214
|
const url = `${config.apiBaseUrl}${platformCfg.path}?${params}`;
|
|
106213
106215
|
if (platformCfg.responseType === "array") {
|
|
106214
106216
|
try {
|
|
@@ -106242,7 +106244,9 @@ async function runListAccounts(opts) {
|
|
|
106242
106244
|
}
|
|
106243
106245
|
} else {
|
|
106244
106246
|
const params = new URLSearchParams();
|
|
106245
|
-
|
|
106247
|
+
if (opts.keyword) {
|
|
106248
|
+
params.set("keyword", normalizeNumericMediaCustomerId(opts.keyword) ?? opts.keyword.trim());
|
|
106249
|
+
}
|
|
106246
106250
|
if (opts.status && opts.status !== "all") params.set("status", opts.status);
|
|
106247
106251
|
params.set("pageNo", String(page));
|
|
106248
106252
|
params.set("pageSize", String(pageSize));
|
package/dist/skill/_meta.json
CHANGED
|
@@ -17,7 +17,7 @@ siluzan-tso list-accounts [选项]
|
|
|
17
17
|
| 选项 | 说明 |
|
|
18
18
|
| ----------------------- | -------------------------------------------------------------------------------- | ---------------------- |
|
|
19
19
|
| `-m, --media <type>` | 媒体类型(留空查全部):`Google \| TikTok \| Yandex \| MetaAd \| BingV2 \| Kwai` |
|
|
20
|
-
| `-k, --keyword <text>` |
|
|
20
|
+
| `-k, --keyword <text>` | 按账户名称或 ID 搜索 |
|
|
21
21
|
| `-s, --status <status>` | 账户状态:`normal \| invalid \| all`(默认 all) |
|
|
22
22
|
| `-p, --page <n>` | 页码(默认 1) |
|
|
23
23
|
| `--page-size <n>` | 每页数量(默认 20) |
|
|
@@ -164,7 +164,7 @@ siluzan-tso account-history --start 2026-03-01 --end 2026-03-31 --json-out ./sna
|
|
|
164
164
|
| 状态 | 含义 | 下一步操作 |
|
|
165
165
|
| ---------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
166
166
|
| `Pending` | 审核中 | 等待,可反复运行此命令轮询;审核周期因媒体而异 |
|
|
167
|
-
| `Approved` | 审核通过 | 运行 `list-accounts -m <媒体>` 确认账户已出现;引导用户充值激活(`config show` 取 `webUrl`,按 `finance.md` 打开对应媒体充值页;例如 Google 为 `https://www
|
|
167
|
+
| `Approved` | 审核通过 | 运行 `list-accounts -m <媒体>` 确认账户已出现;引导用户充值激活(`config show` 取 `webUrl`,按 `finance.md` 打开对应媒体充值页;例如 Google 为 `https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google`;Kwai、Yandex 当前没有对应充值界面) |
|
|
168
168
|
| `Rejected` | 被拒 | 查看 `--json-out` 落盘中的 `reason` 字段了解拒绝原因;修改资料后重新提交;若原因不明,引导用户联系丝路赞客服 |
|
|
169
169
|
|
|
170
170
|
---
|
|
@@ -472,7 +472,7 @@ siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --res
|
|
|
472
472
|
|
|
473
473
|
| 功能 | 媒体 | 网页路径 |
|
|
474
474
|
| --------------------------------------- | ------ | ------------------------------------------------- |
|
|
475
|
-
| **账户激活**(邀请他人激活 / 充值激活) | Google | `https://www
|
|
475
|
+
| **账户激活**(邀请他人激活 / 充值激活) | Google | `https://www.siluzan.com/v3/foreign_trade/tso/manageAccounts` |
|
|
476
476
|
|
|
477
477
|
**Agent 建议话术**:
|
|
478
478
|
|
|
@@ -481,5 +481,5 @@ siluzan-tso account email-deauth -c <mediaCustomerId> --invitation-id <id> --res
|
|
|
481
481
|
siluzan-tso config show # 查看 webUrl 字段
|
|
482
482
|
|
|
483
483
|
# 账户激活(Google)→ 引导至账户管理页
|
|
484
|
-
# https://www
|
|
484
|
+
# https://www.siluzan.com/v3/foreign_trade/tso/manageAccounts
|
|
485
485
|
```
|
|
@@ -127,7 +127,7 @@ siluzan-tso config show
|
|
|
127
127
|
|
|
128
128
|
### 充值页链接(按媒体 × 类型)
|
|
129
129
|
|
|
130
|
-
链接模式:`https://www
|
|
130
|
+
链接模式:`https://www.siluzan.com/v3/foreign_trade/tso/recharge/<page>?mediaType=<mediaType>`;丝路赞钱包:`https://www.siluzan.com/v3/foreign_trade/tso/recharge/siluzanWallet`(无媒体参数)。
|
|
131
131
|
|
|
132
132
|
| 充值类型 | `<page>` | 支持媒体(`mediaType` 参数) |
|
|
133
133
|
| ------------------------- | --------------------- | ------------------------------------------- |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 各媒体开户
|
|
2
2
|
|
|
3
|
-
> 网页链接:`https://www
|
|
3
|
+
> 网页链接:`https://www.siluzan.com/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory`
|
|
4
4
|
> 多命令串联见 `references/core/workflows.md` § 流程一。
|
|
5
5
|
|
|
6
6
|
|
|
@@ -63,7 +63,7 @@ siluzan-tso open-account google-wizard
|
|
|
63
63
|
|
|
64
64
|
```bash
|
|
65
65
|
siluzan-tso account-history -m Google
|
|
66
|
-
# 审核通过后:config show → https://www
|
|
66
|
+
# 审核通过后:config show → https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
---
|
|
@@ -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
|
|
194
|
-
| Google | 小时报(Hourly) | `https://www
|
|
195
|
-
| TikTok | 日报 | `https://www
|
|
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` |
|
|
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
|
|
208
|
+
# webUrl: https://www.siluzan.com
|
|
209
209
|
|
|
210
210
|
# 第三步:拼接链接(Google 日报)
|
|
211
|
-
# https://www
|
|
211
|
+
# https://www.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
|
|
14
14
|
```
|
|
15
15
|
|
|
16
16
|
---
|
|
@@ -63,7 +63,7 @@ siluzan-tso config set --api-key <Key> # 或 config 直接写入
|
|
|
63
63
|
siluzan-tso config set --token <Token> # 备用:设置 JWT Token
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
API Key 获取入口:`https://www
|
|
66
|
+
API Key 获取入口:`https://www.siluzan.com/v3/foreign_trade/settings/apiKeyManagement`
|
|
67
67
|
|
|
68
68
|
```bash
|
|
69
69
|
# 第 1 步:让用户报出手机号后,立刻发码(命令立即返回,不会等待输入)
|
|
@@ -126,9 +126,9 @@ siluzan-tso config show
|
|
|
126
126
|
|
|
127
127
|
```
|
|
128
128
|
构建环境 : production
|
|
129
|
-
apiBaseUrl : https://tso-api
|
|
130
|
-
googleApiUrl : https://googleapi
|
|
131
|
-
webUrl : https://www
|
|
129
|
+
apiBaseUrl : https://tso-api.siluzan.com
|
|
130
|
+
googleApiUrl : https://googleapi.mysiluzan.com
|
|
131
|
+
webUrl : https://www.siluzan.com
|
|
132
132
|
apiKey : abcd****1234
|
|
133
133
|
```
|
|
134
134
|
|
|
@@ -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
|
|
|
@@ -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.41'
|
|
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.
|
|
12
|
+
readonly PKG_VERSION="1.1.41"
|
|
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
|