siluzan-tso-cli 1.1.56-beta.3 → 1.1.56

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.
@@ -51,7 +51,7 @@ siluzan-tso -h
51
51
  - `stats` 的 `spend` = **区间合计**,不是日消耗。
52
52
  - 行业/市场报告禁止纯 WebSearch 当终稿;须 P9 `market-analysis collect`+`render`。
53
53
  - **禁止编造平台网址**:给用户 `*.siluzan.com` / `mysiluzan.com` 链接前,**必须**当轮 `config show` 取 `webUrl`,路径**只**用已 Read 文档中的相对路径表拼接;CLI 输出的授权 URL **原样粘贴**;文档未给路径则**不拼链接**。细则见 `agent-conventions.md`。
54
- - **W13 Meta 创建(硬性)**:首次落地只用 `meta-ad create`(会提交 `targeting_automation.advantage_audience`,默认 1)。组失败用 `--json-out` 的 `campaignId` 跑 `adset-create`,**禁止**再 `campaign-create`。细定向写 `adset.flexibleSpec` 并设 `advantageAudience=0`。
54
+ - **W13 Meta 创建(硬性)**:首次落地只用 `meta-ad create`(会提交 `targeting_automation.advantage_audience`,默认 1)。`adset-edit` 不套这个默认值;读不到当前 `advantage_audience` 时停下,须显式 `--advantage-audience`。组失败用 `--json-out` 的 `campaignId` 跑 `adset-create`,**禁止**再 `campaign-create`。细定向写 `adset.flexibleSpec` 并设 `advantageAudience=0`。`BID_AMOUNT_REQUIRED` 停下,除非 JSON 已写 `adset.bidAmountOnRequired`。
55
55
 
56
56
  ---
57
57
 
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "slug": "siluzan-tso",
3
- "version": "1.1.56-beta.3",
4
- "publishedAt": 1792571502951
3
+ "version": "1.1.56",
4
+ "publishedAt": 1792590212548
5
5
  }
@@ -15,7 +15,8 @@
15
15
  "create 默认 PAUSED;投放须三个对象分别 *-status ACTIVE",
16
16
  "pages --json-out 读 items[].id(不是 pages[]);403 或空列表不要硬填 pageId",
17
17
  "建广告报支付方式则停,补付款后 ad-create 续跑,不要重头 create",
18
- "create/adset-create 会提交 targeting_automation.advantage_audience(默认 1;有 flexibleSpec 时默认 0)",
18
+ "create/adset-create 会提交 targeting_automation.advantage_audience(默认 1;有 flexibleSpec 时默认 0)。adset-edit 不套这个默认",
19
+ "BID_AMOUNT_REQUIRED 不会把预算当成 bid cap;要当时改策略须事先填 adset.bidAmountOnRequired",
19
20
  "细定向写 adset.flexibleSpec + advantageAudience=0;审查稿兴趣也可只放 plan.targeting",
20
21
  "create 失败用 json-out 已建成 ID 续跑,禁止再 campaign-create / 新建空系列",
21
22
  "拉已有线索走 clue -m Meta(W11),不是本模板"
@@ -21,7 +21,7 @@
21
21
  | 失败续跑 | `--json-out` 含已建成 ID;用原语从失败步接着建,**不要**回滚、**不要**再 `campaign-create` |
22
22
  | 细定向 | 审查稿写 `plan.targeting`;要打网关写 `adset.flexibleSpec`,并设 `advantageAudience=0`(有 flexibleSpec 时默认就是 0) |
23
23
  | 支付方式 | 建广告报「请更新支付方式」→ 停,补付款后只跑 `ad-create` |
24
- | bid cap | `create` 遇 `BID_AMOUNT_REQUIRED` 会自动按预算带 bid cap 重试;JSON 不必预填 |
24
+ | bid cap | 遇到 `BID_AMOUNT_REQUIRED` 会停下。要当时改成 bid cap,事先填 `adset.bidAmountOnRequired`(主币种元)。不会把日/总预算写成出价 |
25
25
  | 拉线索 | `clue -m Meta`(W11),不是本命令 |
26
26
 
27
27
  ---
@@ -38,7 +38,8 @@
38
38
  | `campaign.name` | 是 | 系列名。CBO 再加 `dailyBudget` 或 `lifetimeBudget` |
39
39
  | `adset.name` / `countries` | 是 | ISO 两位国家。ABO 再加组预算 |
40
40
  | `adset.flexibleSpec` | 否 | Graph `flexible_spec`,原样提交 |
41
- | `adset.advantageAudience` | 否 | `0` / `1`;默认:有非空 `flexibleSpec` 为 `0`,否则 `1` |
41
+ | `adset.advantageAudience` | 否 | 仅**创建**:`0` / `1`;默认有非空 `flexibleSpec` 为 `0`,否则 `1`。`adset-edit` 不套这个默认 |
42
+ | `adset.bidAmountOnRequired` | 否 | 仅当建组返回 `BID_AMOUNT_REQUIRED` 时使用的出价上限(主币种元)。不填则停下,不会把预算写成 bid cap |
42
43
  | `adset.optimizationGoal` | 否 | 仅 `LEAD_GENERATION`(默认)/ `QUALITY_LEAD` |
43
44
  | `creative.message` / `link` | 是 | `link` 常用隐私政策 URL |
44
45
  | `ad.name` | 是 | 广告名 |
@@ -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-ci.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google`;Yandex 当前没有对应充值界面) |
173
+ | `Approved` | 审核通过 | 运行 `list-accounts -m <媒体>` 确认账户已出现;引导用户充值激活(`config show` 取 `webUrl`,按 `finance.md` 打开对应媒体充值页;例如 Google 为 `https://www.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-ci.siluzan.com/v3/foreign_trade/tso/manageAccounts` |
493
+ | **账户激活**(邀请他人激活 / 充值激活) | Google | `https://www.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-ci.siluzan.com/v3/foreign_trade/tso/manageAccounts
502
+ # https://www.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-ci.siluzan.com/v3/foreign_trade/tso/recharge/<page>?mediaType=<mediaType>`;丝路赞钱包:`https://www-ci.siluzan.com/v3/foreign_trade/tso/recharge/siluzanWallet`(无媒体参数)。
129
+ 链接模式:`https://www.siluzan.com/v3/foreign_trade/tso/recharge/<page>?mediaType=<mediaType>`;丝路赞钱包:`https://www.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-ci.siluzan.com/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory`
3
+ > 网页链接:`https://www.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-ci.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
68
+ # 审核通过后:config show → https://www.siluzan.com/v3/foreign_trade/tso/recharge/pay?mediaType=Google
69
69
  ```
70
70
 
71
71
  ---
@@ -1,6 +1,6 @@
1
1
  # rag:知识库检索(TSO 广告投放辅助)
2
2
 
3
- 知识库管理页面在 https://www-ci.siluzan.com/knowledge-base/
3
+ 知识库管理页面在 https://www.siluzan.com/knowledge-base/
4
4
 
5
5
  为 **广告投放、账户分析、拓词、诊断报告** 等 TSO 业务提供**企业已入库**的产品、行业、客户背景事实依据。
6
6
 
@@ -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-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` |
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-ci.siluzan.com
208
+ # webUrl: https://www.siluzan.com
209
209
 
210
210
  # 第三步:拼接链接(Google 日报)
211
- # https://www-ci.siluzan.com/media-report/publish/rpt_abc123?culture=zh-CN
211
+ # https://www.siluzan.com/media-report/publish/rpt_abc123?culture=zh-CN
212
212
  ```
@@ -149,7 +149,8 @@
149
149
  - **写操作结束后必须向用户交付成败报告**(修改 / 创建 / 删除 / 绑定 / 分享 / 开户提交 / 预警变更等凡改变远端状态的命令):
150
150
  - 用**业务语言**说明:结论(全成功 / 部分失败 / 全失败)→ **成功了哪些**(对象名或 ID)→ **失败了哪些**(对象 + 原因,来自当次 CLI stderr / `reason` / `errors` / 读命令复核)→ 如需用户动作再给 1 句下一步。
151
151
  - 批量或可部分失败时(多账户 MCC/BC、关户、批量关键词等):**逐项**列清,禁止只说「已处理」。
152
- - 单资源写:至少交代「改了什么 + 当前状态」(可用成对读命令复核后写进报告)。
152
+ - 单资源写:至少交代「改了什么 + 当前状态」(可用成对读命令复核后写进报告)。CLI 若给出 `verification`:`verified` 才算核到实际值;`partial` / `unknown` / `submitted` 不能说成已生效。`unknown` 表示还不能判断,不要当成没创建。
153
+ - **写请求重试**:读请求可以有限退避。创建遇到传输超时、响应丢失或部分成功时,先按已有 ID 或 `--json-out` 进度对账,禁止盲重发 POST。`RATE_LIMITED` 与 Graph 明确返回的 `GRAPH_RETRY` 只表示可再查,或有限重试已确认未提交的请求。整对象 PUT(`ad campaign-edit` / `ad campaign-status`)即使目标值相同也不要无条件重发。
153
154
  - **禁止**只贴一行 CLI `✅`/`❌` 或整段 stdout 当交付;**禁止**写命令成功后静默结束。
154
155
  - **广告创建(W3)另有加强**:见下条与 `workflows.md` W3——创建完成后必须输出**每个系列**的详情,不能只报「任务已提交 / 创建完成」。
155
156
  - **Google 广告创建完成后必出系列详情报告**(用户确认计划并执行 `campaign-create` / `pmax-create` 之后):
@@ -10,7 +10,7 @@
10
10
  ## 安装 CLI
11
11
 
12
12
  ```bash
13
- npm install -g siluzan-tso-cli@beta
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-ci.siluzan.com/v3/foreign_trade/settings/apiKeyManagement`
67
+ API Key 获取入口:`https://www.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-ci.siluzan.com
131
- googleApiUrl : https://googleapi-ci.mysiluzan.com
132
- webUrl : https://www-ci.siluzan.com
130
+ apiBaseUrl : https://tso-api.siluzan.com
131
+ googleApiUrl : https://googleapi.mysiluzan.com
132
+ webUrl : https://www.siluzan.com
133
133
  apiKey : abcd****1234
134
134
  ```
135
135
 
@@ -240,6 +240,7 @@
240
240
  6. `meta-ad create --config-file ./meta-lead.json --json-out ./snap --commit "…"`(默认 PAUSED;失败读已建成 ID 用原语续跑)。报「支付方式」则停,不要重头 create。
241
241
  7. 按返回 ID `meta-ad campaign/adset/ad --id` 复核。
242
242
  8. 需要投放:三个对象 `*-status --status ACTIVE --commit`。清理:`DELETED`,顺序广告→组→系列。
243
- - **定向**:`create` / `adset-create` 会提交 `targeting_automation.advantage_audience`(默认 `1`;有非空 `flexibleSpec` 时默认 `0`,也可 JSON/`--advantage-audience` 显式指定)。审查稿兴趣可只写 `plan.targeting`;要打进网关则写 `adset.flexibleSpec`。
243
+ - **定向**:`create` / `adset-create` 会提交 `targeting_automation.advantage_audience`(默认 `1`;有非空 `flexibleSpec` 时默认 `0`,也可 JSON/`--advantage-audience` 显式指定)。`adset-edit` 不套该默认值;读不到当前 `advantage_audience` 时停下,须显式 `--advantage-audience`。国家默认整表替换,追加用 `--countries-mode append`。审查稿兴趣可只写 `plan.targeting`;要打进网关则写 `adset.flexibleSpec`。
244
+ - **出价**:建组遇到 `BID_AMOUNT_REQUIRED` 时停下。要自动改成 bid cap,须事先写 `adset.bidAmountOnRequired`,金额单独填,不要用日预算代替。
244
245
  - **失败续跑**:读 `--json-out` 已建成 ID 用原语续跑;**禁止**再 `campaign-create` / 重头 `create`。
245
246
  - **产物**:审查稿路径(MD 或 xlsx)+ create 的 `formId` / `imageHash` / `campaignId` / `adSetId` / `creativeId` / `adId`;写后交代成败与是否仍为 PAUSED。
@@ -260,7 +260,9 @@ siluzan-tso ad campaign-edit -a <accountId> --id <campaignId> \
260
260
 
261
261
  相对运算:先 `ad campaigns --json-out ./snap` 读 `budget`(已为主币种元)、`biddingStrategyTypeV2`,再传入。
262
262
 
263
- > PMax / 部分智能系列类型 Google 可能拒绝切换出价策略;以 API 返回错误为准。
263
+ `campaign-edit` / `campaign-status` 会先 GET 完整系列,改少数字段后**整包 PUT**(`writeScope=gateway-full-put`)。这不是字段级更新:服务端可能在非共享预算上另走预算更新;`budgetShared=true` 时本命令直接拒绝 `--budget`,不会改共享预算。成功回执不等于只写了本次字段。金额仍是主币种元,CLI ×100 写入网关「分」。写完会再 GET:`verification=verified` 才表示对上了本次字段;没改预算但回读预算变了则是 `partial`;读不到是 `unknown`(再查 `ad campaigns`,不要当成没改成,也不要立刻重发 PUT)。PUT 本身失败时会再 GET 一次预算:金额相对提交前变了是 `partial`(退出码 0),读不到或无法对比是 `unknown`(退出码 0),都不要整包重提;金额没变才是失败(退出码 1)。只改预算金额、且不附带系列其它字段的接口不在本命令。
264
+
265
+ > PMax / 部分智能系列类型 Google 可能拒绝切换出价策略;以 API 返回错误为准。已上线 PMax 用 `ad pmax-edit`,不要用本命令。
264
266
 
265
267
  ---
266
268
 
@@ -374,6 +376,8 @@ siluzan-tso ad keyword-negative-create -a <accountId> --level Account --keywords
374
376
 
375
377
  详见 `google-ads-read.md` §否定关键词(含 `--level` 用法与限制:账户上限约 1000 词)。
376
378
 
379
+ 成功条数来自回执或回读里对得上的词面,不是 `--keywords` 的个数。`verification=unknown` 表示尚未核验,不要当成没加上,也不要立刻再发一次创建。
380
+
377
381
  ---
378
382
 
379
383
  ## ad keyword-negative-edit — 否词编辑
@@ -9,7 +9,8 @@
9
9
  - `--json-out <path>`:路径必填;禁止裸 `--json`。
10
10
  - 创建默认 **PAUSED**。`meta-ad create` **不会**根据 `activate` 自动投放。
11
11
  - 中途失败**不回滚**;读 `--json-out` 里已建成 ID,用原语续跑。**禁止**再 `campaign-create` / 重头 `create`。
12
- - 建组提交 `targeting.targeting_automation.advantage_audience`(默认 `1`;有非空 `flexibleSpec` 时默认 `0`)。细定向:JSON `adset.flexibleSpec` + `advantageAudience=0`;原语 `--advantage-audience 0`。
12
+ - 建组(`create` / `adset-create`)提交 `targeting.targeting_automation.advantage_audience`(默认 `1`;有非空 `flexibleSpec` 时默认 `0`)。细定向:JSON `adset.flexibleSpec` + `advantageAudience=0`;原语 `--advantage-audience 0`。
13
+ - `adset-edit` **不**套用上面的创建默认值。未传 `--advantage-audience` 时保留当前的 `0` 或 `1`。当前组读不到该值时停下(`needs_decision` / `ADVANTAGE_AUDIENCE_UNSET`),须显式传 `--advantage-audience 0` 或 `1` 后再提交;不要省略后交给网关,网关会写成 `1`。`--countries` 默认是整表 **替换**;要在原国家上追加,用 `--countries-mode append`。当前定向里有本命令不能写回的字段时会停下,确认后才加 `--targeting-replace`。
13
14
 
14
15
  ## 主路径(对标 Google `pmax-validate` / `pmax-create`)
15
16
 
@@ -40,11 +41,11 @@ siluzan-tso meta-ad ad-create -a <id> --adset-id <sid> --creative-id <crid> --na
40
41
 
41
42
  ```bash
42
43
  siluzan-tso meta-ad campaign-edit -a <id> --id <cid> --daily-budget 20 --commit "上调日预算"
43
- siluzan-tso meta-ad adset-edit -a <id> --id <sid> --countries US --age-min 18 --age-max 55 --commit "改定向"
44
+ siluzan-tso meta-ad adset-edit -a <id> --id <sid> --countries US,CA --countries-mode append --age-min 25 --commit "追加国家并改年龄下限"
44
45
  siluzan-tso meta-ad ad-edit -a <id> --id <adId> --creative-id <newCrid> --commit "换创意"
45
46
  ```
46
47
 
47
- `adset-edit --countries` 是**整份替换**定向,只认国家 / 年龄 / 性别。换主页请新建组。不能靠加一侧预算把 CBO 切成 ABO。
48
+ `adset-edit --countries` 默认是**整表替换**国家,不是在旧国家上追加。追加用 `--countries-mode append`(例如保留 US 再加 CA)。只改年龄、性别时会先读当前组,保留可写回的国家 / 年龄 / 性别 / `flexible_spec` / `advantage_audience`。当前值是 `0` 或 `1` 时原样写回,**不会**改成 `1`。读不到当前值时本次不提交,须加上 `--advantage-audience`。不能写回的定向字段会停下;确认丢掉后再加 `--targeting-replace`。换主页请新建组。不能靠加一侧预算把 CBO 切成 ABO。写完后 CLI 回读,`verification=verified` 才表示已核验;`unknown` 要再查 `meta-ad adset`,不要当成没改成。
48
49
 
49
50
  ## 启停
50
51
 
@@ -62,10 +63,10 @@ siluzan-tso meta-ad ad-status -a <id> --id <adId> --status ACTIVE --commit "开
62
63
  | --- | --- |
63
64
  | `VALIDATION` | 按 `message` 改请求 |
64
65
  | `CBO_ABO_CONFLICT` | 预算只放系列或只放组 |
65
- | `BID_AMOUNT_REQUIRED` | `meta-ad create` / `adset-create` 会按日/总预算带 `LOWEST_COST_WITH_BID_CAP` 自动重试一次;JSON 不必预填 |
66
- | `advantage_audience` / `targeting_automation` | CLI/网关会提交该字段。仍失败时用已有 `campaignId` 跑 `adset-create`,不要新建系列;细定向加 `advantageAudience=0` |
66
+ | `BID_AMOUNT_REQUIRED` | 停下,输出 `needs_decision`(保留已建成 `campaignId`)。日/总预算**不是** bid cap。只有事先写了 `adset.bidAmountOnRequired` 或 `--bid-amount-on-required` 才会按该金额改成 `LOWEST_COST_WITH_BID_CAP` 再试一次 |
67
+ | `advantage_audience` / `targeting_automation` | **创建**会提交该字段(默认见上)。`adset-edit` 不套创建默认值;读不到当前值时输出 `ADVANTAGE_AUDIENCE_UNSET`,加上 `--advantage-audience` 后再提交。仍失败时用已有 `campaignId` 跑 `adset-create`,不要新建系列 |
67
68
  | 请更新支付方式 / 添加有效支付方式 | **停**。读 `--json-out` 已建成 ID;让用户补付款方式后只跑 `ad-create`,不要重头 `create` |
68
69
  | HTTP 403(账户/主页) | 当前 Token 无该户 Facebook Ads 权限,换登录或重新授权 |
69
70
  | `PAGE_LIST_EMPTY` / `PAGE_NOT_LINKED` / `PAGE_NO_ADVERTISE` | 补主页广告投放权限并重新授权 |
70
71
  | `LEAD_TOS_REQUIRED` | 用户在 Ads Manager 勾选条款,接口不代勾 |
71
- | `RATE_LIMITED` / `GRAPH_RETRY` | 退避后重试同一请求 |
72
+ | `RATE_LIMITED` / `GRAPH_RETRY` | Graph 明确返回的限流或 code 2。可有限退避后**再读或再查**已有 ID。传输超时、响应丢失、部分成功先对账 `--json-out` 进度,**禁止**盲重发创建 |
@@ -33,7 +33,7 @@
33
33
  - **主页 `--json-out`**:数组在 `items[]`(`id` / `name` / `tasks`),**不是** `pages[]`。`tasks` 须含 `ADVERTISE`。空列表或 `PAGE_LIST_EMPTY` / `PAGE_NOT_LINKED` → 补主页广告投放权限并重新授权,不要硬填历史 `pageId`。
34
34
  - **HTTP 403**(账户/主页):当前 Token 没有该户 Facebook Ads 权限,停;换有权限的登录或重新授权,不要硬跑 `create`。
35
35
  - **`LEAD_TOS_REQUIRED`**:主页须在 Ads Manager 勾选潜在客户开发广告服务条款;**禁止**让接口代勾。
36
- - **`BID_AMOUNT_REQUIRED`**:`meta-ad create` / `adset-create` 会按日/总预算带 `LOWEST_COST_WITH_BID_CAP` **自动重试一次**。不要改成别的出价策略。
37
- - **组定向**:国家/年龄/性别 + 可选 `flexible_spec`。每次建/改组都会提交 `targeting_automation.advantage_audience`(默认 `1`;有非空 `flexibleSpec` 时默认 `0`)。组失败用已有 `campaignId` 续跑,不要新建空系列。
36
+ - **`BID_AMOUNT_REQUIRED`**:停下并看 `needs_decision`。不要把日/总预算当成 bid cap,也不要改成别的出价策略。只有事先写了 `adset.bidAmountOnRequired`(或 `adset-create --bid-amount-on-required`)才会按**该金额**用 `LOWEST_COST_WITH_BID_CAP` 再试一次。
37
+ - **组定向**:创建时国家/年龄/性别 + 可选 `flexible_spec`,并提交 `targeting_automation.advantage_audience`(默认 `1`;有非空 `flexibleSpec` 时默认 `0`)。`adset-edit` 不套这个默认值:不传则保留当前的 `0` 或 `1`;读不到当前值时停下,须显式 `--advantage-audience`。`--countries` 默认整表替换,追加用 `--countries-mode append`。组失败用已有 `campaignId` 续跑,不要新建空系列。
38
38
  - **支付方式**:建到广告对象时 Graph 可能报「请更新支付方式」。已建成的系列/组/创意会留着,**不要**重头 `create`;停下来让用户在账单与支付中心加有效付款方式,再用 `ad-create` 续跑。
39
39
  - 花费上限顶满(`spend_capDisplay` ≈ `amount_spentDisplay`)时对象仍能建成,**ACTIVE 也投不出去**。
@@ -6,7 +6,7 @@
6
6
  siluzan-tso config show # 取 webUrl
7
7
  ```
8
8
 
9
- 首页地址:`https://www-ci.siluzan.com/v3/foreign_trade/tso/home`
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-ci.siluzan.com/v3/foreign_trade/tso/home`。
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.56-beta.3'
12
+ $PKG_VERSION = '1.1.56'
13
13
  $CLI_BIN = 'siluzan-tso'
14
14
  $SKILL_LABEL = 'Siluzan TSO'
15
- $INSTALL_CMD = 'npm install -g siluzan-tso-cli@beta'
16
- $WEB_BASE = 'https://www-ci.siluzan.com'
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.56-beta.3"
12
+ readonly PKG_VERSION="1.1.56"
13
13
  readonly CLI_BIN="siluzan-tso"
14
14
  readonly SKILL_LABEL="Siluzan TSO"
15
- readonly INSTALL_CMD="npm install -g siluzan-tso-cli@beta"
16
- readonly WEB_BASE="https://www-ci.siluzan.com"
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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siluzan-tso-cli",
3
- "version": "1.1.56-beta.3",
3
+ "version": "1.1.56",
4
4
  "description": "Siluzan 广告账户管理 CLI — 查询账户、余额、消耗数据,管理绑定关系与充值。",
5
5
  "keywords": [
6
6
  "ad-account",