siluzan-tso-cli 1.1.20-beta.21 → 1.1.20-beta.23
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 -1
- package/dist/index.js +443 -315
- package/dist/skill/SKILL.md +1 -1
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/assets/campaign-create-template.md +3 -3
- package/dist/skill/references/account-analytics.md +1 -1
- package/dist/skill/references/currency.md +1 -1
- package/dist/skill/references/google-ads-campaign-plan.md +14 -2
- package/dist/skill/references/google-ads-rules/google-ads-campaign-optimization.md +1 -0
- package/dist/skill/references/google-ads-rules/google-ads-keyword-taxonomy.md +1 -1
- package/dist/skill/references/google-ads.md +23 -3
- package/dist/skill/references/keyword-planner-workflows.md +1 -1
- package/dist/skill/scripts/install.ps1 +1 -1
- package/dist/skill/scripts/install.sh +1 -1
- package/package.json +1 -1
package/dist/skill/SKILL.md
CHANGED
|
@@ -152,7 +152,7 @@ Windows 注意:部分 Agent 客户端通过 PowerShell / cmd 代执行命令
|
|
|
152
152
|
- `ad campaigns --json/--json-out` → `budget`(元,与 `campaign-edit --budget` 同口径)
|
|
153
153
|
- `ad groups --json` → `maxCPCAmountYuan` / `targetCpaAmountYuan`(元)
|
|
154
154
|
- `google-analysis campaigns-*.json` → `budgetAmountYuan` / `campaignTargetCpaYuan` / `maximizeConversionsTargetCpaYuan` / `spend` / `averageCpc` / `costPerConversion`(均元)
|
|
155
|
-
- `keyword --json` → `averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid` +
|
|
155
|
+
- `keyword --json` → `averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid` + 根级与每条 `bidAmountCurrency`(无 `-a` 为 USD;有 `-a` 为账户 `currencyCode`);`-a <mediaCustomerId>` 走账户级推荐接口;限定市场用 `keyword geo-list` + `--geo <id>`(**多 id = 汇总指标**;分市场须多次调用、每次一个 `--geo`,见 `references/keyword-planner-workflows.md`)
|
|
156
156
|
- **品牌名优先级**:(1) 用户明确提供 → (2) `list-accounts.mag.advertiserName` → (3) 用户提供网址 → 域名占位并标注 `[待确认品牌名]`。**严禁**把英文域名翻译为虚构中文品牌。
|
|
157
157
|
- 完整字段表见 `references/currency.md`。
|
|
158
158
|
|
package/dist/skill/_meta.json
CHANGED
|
@@ -23,11 +23,11 @@ JSON 模板:同目录 [`campaign-create-template.json`](campaign-create-templa
|
|
|
23
23
|
|
|
24
24
|
| 命令 | 支持 `--json-out`? | 推荐用法 |
|
|
25
25
|
| ---- | :-----------------: | -------- |
|
|
26
|
-
| `ad campaign-validate` |
|
|
27
|
-
| `ad campaign-create` |
|
|
26
|
+
| `ad campaign-validate` | **是** | **推荐** `--json-out ./snap-campaign`(落盘 `ad-campaign-validate-<account>.json`,含 `lengthViolations`);与 `--json` 互斥。人读:`--config-file` 即可;词面规范化:`--write-normalized`。超长勿自动截断,见 `google-ads-campaign-plan.md` § 超长人工确认 |
|
|
27
|
+
| `ad campaign-create` | **是** | 落盘任务响应:`--json-out ./snap-campaign`;与 `--json` 互斥 |
|
|
28
28
|
| `ad batch get` / `ad batch diff` | **是** | 轮询与 diff 结果落盘,见 `references/tips.md` |
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
**Agent**:校验与 create/batch 共用同一 `--json-out` 目录时,按 stdout 摘要里的 `outlineFile` → 再读对应 JSON(勿把 outline 当数据)。
|
|
31
31
|
|
|
32
32
|
### RSA 落地页:`Finalurl` 必填
|
|
33
33
|
|
|
@@ -83,7 +83,7 @@ CLI 出口的所有 JSON / 表格金额已统一为**元**,关键字段:
|
|
|
83
83
|
| `ad campaigns --json` | `budget`(元,与 `--budget` 写参同口径) |
|
|
84
84
|
| `ad groups --json` | `maxCPCAmountYuan`、`targetCpaAmountYuan` |
|
|
85
85
|
| `google-analysis campaigns` 落盘 `campaigns-*.json` | `budgetAmountYuan`、`campaignTargetCpaYuan`、`maximizeConversionsTargetCpaYuan`;同行 `spend` / `averageCpc` / `costPerConversion` 也是元 |
|
|
86
|
-
| `keyword suggest --json` | `averageCpc`、`lowTopOfPageBid`、`highTopOfPageBid
|
|
86
|
+
| `keyword suggest --json` | `averageCpc`、`lowTopOfPageBid`、`highTopOfPageBid`;根级与每条 `bidAmountCurrency`(有 `-a` 为账户币;无 `-a` 为 USD) |
|
|
87
87
|
| `balance` 等账户余额接口 | `remainingAccountBudget`(元) |
|
|
88
88
|
|
|
89
89
|
旧字段 `budgetAmount`(分)、`maxCPCAmountDisplay`、`*Micros`(微元)**已不再落盘**,下游脚本无需做单位换算。金额保留 2 位小数,带货币代码(如 `¥50.00 CNY`、`$50.00 USD`),`currencyCode` 从响应读取,跨币种账户分表;细则见 `references/currency.md`。
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
|
|
47
47
|
## 金额单位约定
|
|
48
48
|
|
|
49
|
-
- **CLI 出口的大多数 JSON / 表格金额以「元」为单位**:`budget`、`*Yuan` 后缀(`budgetAmountYuan`、`maxCPCAmountYuan` 等)、`spend` / `averageCpc` / `costPerConversion` 等。**`keyword suggest`**:`averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid` 的币种见根级与每条 **`bidAmountCurrency`**(传 `-a` 时为账户 `currencyCode`;无 `-a` 时为 **USD
|
|
49
|
+
- **CLI 出口的大多数 JSON / 表格金额以「元」为单位**:`budget`、`*Yuan` 后缀(`budgetAmountYuan`、`maxCPCAmountYuan` 等)、`spend` / `averageCpc` / `costPerConversion` 等。**`keyword suggest`**:`averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid` 的币种见根级与每条 **`bidAmountCurrency`**(传 `-a` 时为账户 `currencyCode`;无 `-a` 时为 **USD**)。
|
|
50
50
|
- **写 CLI 参数**(`--budget`、`--max-cpc`、`--target-cpa`、`--amount` 等):同样传**主币种元**,与账户 `currencyCode` 一致;CLI 内部按需 ×100 / ×1_000_000 写后端。
|
|
51
51
|
- 旧版网关字段(`budgetAmount` 分、`*Micros` 微元、`maxCPCAmountDisplay` 等)**已不再落盘到 CLI 输出**,下游脚本无需做单位换算。
|
|
52
52
|
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
| 2 | 可选 `rag query`;`keyword` / `keyword geo-list` 拓词 | `references/keyword-planner-workflows.md` |
|
|
27
27
|
| 3 | 按分层规则写入 `KeywordsForBatchJob`(Exact/Phrase/Broad) | `google-ads-rules/google-ads-keyword-taxonomy.md`(参考,非 CLI 强制) |
|
|
28
28
|
| 4 | 填 `campaign`(预算/出价/地域/否词≥20/RSA/附加信息) | `assets/campaign-create-template.md` |
|
|
29
|
-
| 5 | **`ad campaign-validate --config-file <json>`**(失败只改 JSON
|
|
29
|
+
| 5 | **`ad campaign-validate --config-file <json>`**(失败只改 JSON;超长见下文「超长人工确认」) | 下文「校验」 |
|
|
30
30
|
| 6 | 输出:**JSON 代码块** → **Markdown**(`google-ads-launch-plan-template.md` 正文)→ 待确认 | — |
|
|
31
31
|
| 7 | 用户确认后 **`ad campaign-create`** | `google-ads.md`|
|
|
32
32
|
| 8 | 每隔5s 获取创建结果| `ad batch get --id <taskId> --config-file ./campaign.json` |
|
|
@@ -72,7 +72,8 @@
|
|
|
72
72
|
## 校验与创建(命令速查)
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
siluzan-tso ad campaign-validate --config-file ./campaign.json
|
|
75
|
+
siluzan-tso ad campaign-validate --config-file ./campaign.json --json-out ./snap-campaign
|
|
76
|
+
siluzan-tso ad campaign-validate --config-file ./campaign.json [--json] [--write-normalized <path>]
|
|
76
77
|
siluzan-tso ad campaign-create --config-file ./campaign.json
|
|
77
78
|
siluzan-tso ad batch get --id <taskId> --config-file ./campaign.json
|
|
78
79
|
siluzan-tso ad batch diff --batch-id <taskId> --config-file ./campaign.json
|
|
@@ -81,6 +82,17 @@ siluzan-tso ad geo search
|
|
|
81
82
|
|
|
82
83
|
validate 与 create **共用** `runCampaignCreateValidation`:词面规范化 + 后端/Google 硬约束(预算、RSA、匹配符号与 `MatchTypeV2` 对齐、搜索网络等)。**不含**关键词分层数量、匹配占比、否词条数下限。
|
|
83
84
|
|
|
85
|
+
### 超长内容:禁止 Agent 自动截断
|
|
86
|
+
|
|
87
|
+
标题/描述/Path/关键词/Sitelink 超限时 CLI **报错阻断**,不会在 JSON 里静默改短。
|
|
88
|
+
|
|
89
|
+
1. 使用 **`ad campaign-validate --config-file <json> --json-out <dir>`**(与 create/batch 同一落盘目录),读落盘文件中的 `lengthViolations`(每项含 `path`、`limit`、`actual`、**完整** `text`)。小文件可用 `--json` 代替。
|
|
90
|
+
2. Agent 将 **全部** 超长条目整理成表(路径、原文、上限、超出量),并为每条给出 **1–2 个改写方案**(保留卖点、符合字符计数;CJK 按 2 计见 `google-ads-compliance.md` §3.2.1)。
|
|
91
|
+
3. **用户确认**选用方案后,Agent **只改 JSON 对应字段**,再执行 `campaign-validate`;通过后再 `campaign-create`。
|
|
92
|
+
4. **禁止**:未确认前 `slice`/省略号截断、仅改 `--write-normalized` 而不经用户确认。
|
|
93
|
+
|
|
94
|
+
人读模式失败时 CLI 会额外打印「📏 超长内容清单」;`--json-out` / `--json` 时见 `lengthViolations` + `agentHint`。
|
|
95
|
+
|
|
84
96
|
---
|
|
85
97
|
|
|
86
98
|
## 已上线后的修改
|
|
@@ -249,6 +249,7 @@ siluzan-tso ad geo add -a <CID> --campaign-id <ID> --location-id <ID> --exclude
|
|
|
249
249
|
|
|
250
250
|
# 添加出价调整(+20%)
|
|
251
251
|
siluzan-tso ad geo add -a <CID> --campaign-id <ID> --location-id <ID> --bid-modifier 1.2
|
|
252
|
+
siluzan-tso ad geo set-bid -a <CID> --campaign-id <ID> --location-id <ID> --bid-modifier 1.2
|
|
252
253
|
|
|
253
254
|
# 查看地域效果报告
|
|
254
255
|
siluzan-tso google-analysis -a <CID> --sections geographic
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
| 技术词 | api/sdk/integration | payment sdk integration |
|
|
55
55
|
| 问题词 | how to + 问题 | how to reduce failed payments |
|
|
56
56
|
|
|
57
|
-
拓词编排见 `references/keyword-planner-workflows.md`;Planner
|
|
57
|
+
拓词编排见 `references/keyword-planner-workflows.md`;Planner 出价见 `averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid` 与根级、每条 `bidAmountCurrency`。
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
## 金额单位(全局重要)
|
|
8
8
|
|
|
9
|
-
> **所有 CLI 金额参数均按「主币种金额」传入**(如 `1.5` = ¥1.50 / $1.50
|
|
10
|
-
> **唯一例外**:`ad keyword-edit --max-cpc` 单位为「主币种元」(直接透传,不做 ×100 转换)。
|
|
9
|
+
> **所有 CLI 金额参数均按「主币种金额」传入**(如 `1.5` = ¥1.50 / $1.50);CLI 写入网关前对「分」字段 ×100(含 `ad keyword-edit --max-cpc` → `maxCPC`)。
|
|
11
10
|
> **禁止** 按 Google micros(×1,000,000)填写任何金额参数。
|
|
12
11
|
|
|
13
12
|
---
|
|
@@ -277,6 +276,8 @@ siluzan-tso keyword geo-list [--country-code <US,CN,...>] [--name-contains <text
|
|
|
277
276
|
|
|
278
277
|
不提交 API;创建系列前**建议**跑。命令、选项、与 create 共用校验逻辑见 **`references/google-ads-campaign-plan.md`** § 校验与创建(后端/Google 硬约束,不含关键词分层占比)。
|
|
279
278
|
|
|
279
|
+
**超长内容**:加 **`--json-out <dir>`**(推荐,与 create/batch 共用目录)或 `--json` 时响应含 `lengthViolations`(完整 `text` + JSON `path`)。Agent **勿自动截断**;须列出全部超长项与改写方案,用户确认后再改 JSON 并重跑 validate(流程见 `google-ads-campaign-plan.md` § 超长人工确认)。
|
|
280
|
+
|
|
280
281
|
---
|
|
281
282
|
|
|
282
283
|
## ad campaign-create — 广告系列创建
|
|
@@ -442,7 +443,7 @@ siluzan-tso ad keyword-edit \
|
|
|
442
443
|
[--max-cpc <n>] [--final-url <url>] [--status Enabled|Paused]
|
|
443
444
|
```
|
|
444
445
|
|
|
445
|
-
传 `--match-type` 时 CLI 自动规范 `keywordText` 括号/引号格式。至少传一项。`--max-cpc`
|
|
446
|
+
传 `--match-type` 时 CLI 自动规范 `keywordText` 括号/引号格式。至少传一项。`--max-cpc` 为主币种元(CLI ×100 写入 `maxCPC`「分」字段,与 `adgroup-edit --max-cpc` 同口径)。`ad keywords --json` 出价见 `maxCPCYuan`。`--status` 写入 `userStatusV2`(与 Web 关键词开关一致,非系列的 `statusV2`)。
|
|
446
447
|
|
|
447
448
|
---
|
|
448
449
|
|
|
@@ -520,10 +521,29 @@ siluzan-tso ad geo list -a <accountId> --mode targeted|excluded|report [--start/
|
|
|
520
521
|
# 添加定向
|
|
521
522
|
siluzan-tso ad geo add -a <accountId> --campaign-id <id> --location-id <id> [--bid-modifier 1.2] [--exclude]
|
|
522
523
|
|
|
524
|
+
# 修改已定向地区的出价调整(系列级 campaign_criterion)
|
|
525
|
+
siluzan-tso ad geo set-bid -a <accountId> --campaign-id <id> --location-id <id> --bid-modifier 1.2
|
|
526
|
+
# 或使用 list 返回的 criterion id
|
|
527
|
+
siluzan-tso ad geo set-bid -a <accountId> --campaign-id <id> --criterion-id <id> --bid-modifier 0.8
|
|
528
|
+
|
|
523
529
|
# 删除
|
|
524
530
|
siluzan-tso ad geo remove -a <accountId> --campaign-id <id> --location-id <id>
|
|
525
531
|
```
|
|
526
532
|
|
|
533
|
+
**`--bid-modifier` 口径(`add` / `set-bid` 均为 Google 倍率)**
|
|
534
|
+
|
|
535
|
+
| 倍率 | 含义 |
|
|
536
|
+
|------|------|
|
|
537
|
+
| `1.0` | 不调整 |
|
|
538
|
+
| `1.2` | 提高 20% |
|
|
539
|
+
| `0.8` | 降低 20% |
|
|
540
|
+
|
|
541
|
+
- `add`:写入 `PUT …/criterion/{account}` 时 CLI 会换算为后端百分比。
|
|
542
|
+
- `set-bid`:直接 `PUT …/campaigns/{campaignId}/Criteria/{criterionId}/BidModifier/{bidModifier}`,与 `ad device-bid set`(系列级)、AI 优化 `updateDeviceAndAddress` 同源。
|
|
543
|
+
- `list` 返回的 `bidModifier` 为 Google 倍率(非网页编辑弹窗里的 `+10` 百分比)。
|
|
544
|
+
|
|
545
|
+
**Sammamish 落点**:`ModifyCampaignCriteriaBidModifier` → `GoogleAdsAcctMgmtServiceProviderV2.ModifyCampaignCriteriaBidModifier`。
|
|
546
|
+
|
|
527
547
|
---
|
|
528
548
|
|
|
529
549
|
## ad device-bid — 设备出价调整
|
|
@@ -205,6 +205,6 @@ siluzan-tso keyword geo-list [--country-code <codes>] [--name-contains <text>] [
|
|
|
205
205
|
|
|
206
206
|
`--google-only`:只调 Google 推荐主接口(有 `-a` 为账户接口,无 `-a` 为 `keywordidea/google`),不叠加 `--url` 的网址拓词;**分支 B(仅 Google)必加**。
|
|
207
207
|
|
|
208
|
-
**返回字段**(与后端 `Samm.Core.Service.KeywordRecommendation` 对齐):根级与每条 **`bidAmountCurrency`**(无账户=`USD`;有账户=`list-accounts` 的 `currencyCode`);`averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid`(微元 ÷1,000,000,**与 `bidAmountCurrency`
|
|
208
|
+
**返回字段**(与后端 `Samm.Core.Service.KeywordRecommendation` 对齐):根级与每条 **`bidAmountCurrency`**(无账户=`USD`;有账户=`list-accounts` 的 `currencyCode`);`averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid`(微元 ÷1,000,000,**与 `bidAmountCurrency` 一致**)。另有 `keyword` / `montlySearch` / `competition` / `competitionV2` / `source` 等。
|
|
209
209
|
|
|
210
210
|
与只读账户关键词列表、否词 CRUD 的对照仍归 **`references/google-ads.md`** 中 `ad keywords` / `ad keyword-*` 各节。
|
|
@@ -9,7 +9,7 @@ $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.20-beta.
|
|
12
|
+
$PKG_VERSION = '1.1.20-beta.23'
|
|
13
13
|
$CLI_BIN = 'siluzan-tso'
|
|
14
14
|
$SKILL_LABEL = 'Siluzan TSO'
|
|
15
15
|
$INSTALL_CMD = 'npm install -g siluzan-tso-cli@beta'
|
|
@@ -9,7 +9,7 @@ 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.20-beta.
|
|
12
|
+
readonly PKG_VERSION="1.1.20-beta.23"
|
|
13
13
|
readonly CLI_BIN="siluzan-tso"
|
|
14
14
|
readonly SKILL_LABEL="Siluzan TSO"
|
|
15
15
|
readonly INSTALL_CMD="npm install -g siluzan-tso-cli@beta"
|