siluzan-tso-cli 1.1.37-beta.5 → 1.1.37-beta.6
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/skill/SKILL.md +1 -1
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/assets/campaign-create-template.json +2 -2
- package/dist/skill/assets/campaign-create-template.md +2 -2
- package/dist/skill/references/core/agent-conventions.md +1 -1
- package/dist/skill/references/core/workflows.md +5 -6
- package/dist/skill/references/google-ads/google-ads-campaign-plan.md +7 -7
- package/dist/skill/references/google-ads/rules/README.md +1 -1
- package/dist/skill/references/google-ads/rules/google-ads-plan-source-fidelity.md +37 -107
- package/dist/skill/scripts/install.ps1 +1 -1
- package/dist/skill/scripts/install.sh +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ siluzan-tso init -d /path/to/skills # 写入自定义目录
|
|
|
51
51
|
siluzan-tso init --force # 强制覆盖已存在文件
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
> **注意**:当前为测试版(1.1.37-beta.
|
|
54
|
+
> **注意**:当前为测试版(1.1.37-beta.6),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
|
|
55
55
|
|
|
56
56
|
| 助手 | 建议 `--ai` |
|
|
57
57
|
| ----------------------- | ------------------------------------ |
|
package/dist/skill/SKILL.md
CHANGED
|
@@ -82,7 +82,7 @@ siluzan-tso -h # 查看帮助
|
|
|
82
82
|
|
|
83
83
|
| 用户意图(关键词) | 工作流 | 必读文档 |
|
|
84
84
|
| ------------------ | ------ | -------- |
|
|
85
|
-
| 新建搜索系列 / 出投放方案 / **按 Excel·xlsx·表格投放方案创建广告** / **根据官网·网站·URL 生成 Google 搜索广告** / 搜索广告文案·关键词·**表格** / 写搜索广告计划 | **W3** | `references/google-ads/google-ads-campaign-plan.md` + **`assets/campaign-create-template.json`**(先 Read)+ `assets/campaign-create-template.md`;**有方案文件时必读** `references/google-ads/rules/google-ads-plan-source-fidelity.md
|
|
85
|
+
| 新建搜索系列 / 出投放方案 / **按 Excel·xlsx·表格投放方案创建广告** / **根据官网·网站·URL 生成 Google 搜索广告** / 搜索广告文案·关键词·**表格** / 写搜索广告计划 | **W3** | `references/google-ads/google-ads-campaign-plan.md` + **`assets/campaign-create-template.json`**(先 Read)+ `assets/campaign-create-template.md`;**有方案文件时必读** `references/google-ads/rules/google-ads-plan-source-fidelity.md`(Agent 写脚本 Excel→campaign JSON + **`ad geo resolve`**,禁止对话手填);表格交付读 `references/google-ads/rules/google-ads-launch-plan-template.md`。**≠ P8 / ≠ P9 / ≠ W5** |
|
|
86
86
|
| 广告系列/组/广告/关键词 CRUD / 拒审 | W3 | `references/google-ads/google-ads.md` |
|
|
87
87
|
| PMax 系列 | W3 | **`assets/pmax-create-template.json`**(先 Read)+ `assets/pmax-create-template.md` + `references/google-ads/pmax-api.md` |
|
|
88
88
|
| AI 智投草稿 list/get/update/publish | W4 | `references/google-ads/google-ads.md`(§ ad batch) |
|
package/dist/skill/_meta.json
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"campaign-validate 推荐 --json-out ",
|
|
9
9
|
"否词只写 campaign.NegativeKeywordsForBatchJob,禁止把 free/jobs/tutorial 等否词抄进 AdGroupsForBatchJob[].KeywordsForBatchJob",
|
|
10
10
|
"KeywordText 是 JSON 字符串数组,空格多词合法(如 how to make);禁止因多词省略否词或让用户去后台手补",
|
|
11
|
-
"Excel/表格方案:
|
|
12
|
-
"Excel
|
|
11
|
+
"Excel/表格方案:Agent 写脚本直接转成 campaign-create JSON + ad geo resolve 取地域 id;禁止对话手填完整 JSON、禁止编造 geo id",
|
|
12
|
+
"Excel/表格方案:转换脚本按匹配类型分 EXACT/PHRASE/BROAD 块;有方案源时勿压成一律 BROAD",
|
|
13
13
|
"RSA 须同时写 DestinationUrl 与 Finalurl(后端必填 Finalurl;仅有 DestinationUrl 时 validate 可能仍通过)",
|
|
14
14
|
"SITELINK 须写 AssetFieldType: SITELINK(与 typeV2 一致)",
|
|
15
15
|
"提交前:ad campaign-validate → 用户确认 → ad campaign-create(勿对 validate 加 --json-out)"
|
|
@@ -38,8 +38,8 @@ JSON 模板:同目录 [`campaign-create-template.json`](campaign-create-templa
|
|
|
38
38
|
| 坑 | 正确做法 |
|
|
39
39
|
| -- | -------- |
|
|
40
40
|
| 编造 `targetedLocations[].id` 或对 30 国逐条 `geo search` | **一次** `ad geo resolve --from-file … --json-out`;见 `google-ads-plan-source-fidelity.md` |
|
|
41
|
-
| 对话里手写完整 campaign JSON |
|
|
42
|
-
| 方案有 Exact/Phrase,JSON 却一律 `BROAD` |
|
|
41
|
+
| 对话里手写完整 campaign JSON | Agent **写转换脚本** Excel → `campaign.json`(落盘),再 validate |
|
|
42
|
+
| 方案有 Exact/Phrase,JSON 却一律 `BROAD` | 转换脚本按方案列/词面写入 EXACT/PHRASE/BROAD 分块 |
|
|
43
43
|
|
|
44
44
|
**多词短语(与 `keyword-negative-create` 同类误判)**:`KeywordText` 是 **JSON 字符串数组**,**空格多词完全合法**(如 `"how to make"`、`"home cooking"`)。PHRASE 写 `"\"vegan recipe\""` 或裸词 + `MatchTypeV2: "PHRASE"`(validate 会补引号)。**禁止**因「多词」就省略否词或让用户去 Google Ads 后台手补——那是 Agent 误判,不是 `campaign-create` 限制。
|
|
45
45
|
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
- 当前凭据未返回手机号且用户指定了手机号 → 视同未校验通过,引导重新用手机号登录。
|
|
123
123
|
- **Google 新建搜索系列**:流程在 `references/google-ads/google-ads-campaign-plan.md`;填 JSON 前**必须先 Read** `assets/campaign-create-template.json`,再 Read `assets/campaign-create-template.md`。**禁止**只读 `.md` 手写 JSON。
|
|
124
124
|
- **「根据官网生成 Google 搜索广告 / 表格格式」**:仍属新建搜索系列 → **W3 + 本文件上条**;用户要的「表格」是 `google-ads-launch-plan-template.md` 对 JSON 的投影,**不是**可跳过 JSON/`campaign-validate` 的独立交付物。**禁止**与 P8 网站诊断、P9 市场分析、W5 仅拓词混用。
|
|
125
|
-
- **Excel/表格投放方案 → 创建广告**:必读 `references/google-ads/rules/google-ads-plan-source-fidelity.md
|
|
125
|
+
- **Excel/表格投放方案 → 创建广告**:必读 `references/google-ads/rules/google-ads-plan-source-fidelity.md`。Agent **写代码**直接转成 campaign-create JSON;地域用 **`ad geo resolve`**;**禁止**对话手填完整 JSON、**禁止**编造 geo id;有方案匹配类型时勿压成一律 BROAD。
|
|
126
126
|
- **「行业分析 / 行业分析报告 / 生成 XX 行业报告」**(例:「帮我生成一份电商行业的行业分析报告」)→ **P9 战略市场分析**。**必须**先 `siluzan-tso market-analysis collect … --json-out`,再 WebSearch 补数据、写 `market-report.json`,最后 `market-analysis render` 出 HTML。**禁止**不调用 CLI、仅在对话里用 WebSearch 写 Markdown 充当终稿。**不是** `google-analysis`、**不是** P8 网站诊断。
|
|
127
127
|
- **开户首次响应**:对话内首次进入开户话题时,**必须先**按 `references/accounts/open-account-by-media.md` §「首次响应硬规范」输出**完整必填清单**(未指明媒体则列全平台六表),再收集资料;**禁止**未列清单就执行 `open-account` 或零散追问。
|
|
128
128
|
- **Google 开户**:`open-account google-wizard` 仅限真实 TTY;Agent/自动化用非交互 `open-account google ...`,审核进度用 `account-history`。
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
- **创建路径选择**:
|
|
62
62
|
- 已有 AI 智投草稿 → 走 **W4**。
|
|
63
63
|
- **PMax 出方案/创建** → **`assets/pmax-create-template.json`**(先 Read)+ `pmax-create-template.md` + `pmax-api.md`:`pmax-validate` → 用户确认 → `pmax-create`(**勿**用 Search `campaign-create`)。
|
|
64
|
-
- **用户给了 Excel/表格方案** →
|
|
64
|
+
- **用户给了 Excel/表格方案** → **方案源轨**:见 `google-ads-plan-source-fidelity.md`——Agent **写脚本**直接转成 campaign-create JSON + **`ad geo resolve`** 取地域 id → validate → 确认 → create(**禁止**对话手填完整 JSON)。
|
|
65
65
|
- 搜索系列从零出方案 → `google-ads-campaign-plan.md`:JSON → `campaign-validate` → 用户确认 → `campaign-create`。
|
|
66
66
|
- 已有完整结构化 JSON → 对应 validate → create。
|
|
67
67
|
- **步骤(PMax 方案 → 创建)**:
|
|
@@ -71,11 +71,10 @@
|
|
|
71
71
|
4. 门禁:`ad pmax-validate --config-file ./pmax.json --json-out ./snap-pmax`。
|
|
72
72
|
5. 输出 JSON + Markdown 方案 → 用户确认 → `ad pmax-create --commit "…"`。
|
|
73
73
|
6. 复核:`ad campaigns` / `ad pmax-get`;缺表单时 `ad extension lead-form` 补挂。
|
|
74
|
-
- **步骤(Search · 方案文件 →
|
|
75
|
-
1.
|
|
76
|
-
2. `ad geo resolve -a <id> --from-file ./locations.json --json-out ./snap-geo
|
|
77
|
-
3. `
|
|
78
|
-
4. `ad campaign-validate` → 确认摘要(国家↔id + Exact/Phrase/Broad 计数)→ `campaign-create` → `batch get` / `batch diff` / 自动补扩展。
|
|
74
|
+
- **步骤(Search · 方案文件 → 创建)**:
|
|
75
|
+
1. Read `campaign-create-template.json`;Agent 写转换脚本读 Excel → 写出 `campaign.json`(匹配类型按方案分块)。
|
|
76
|
+
2. `ad geo resolve -a <id> --from-file ./locations.json --json-out ./snap-geo`,把 id 写回 JSON。
|
|
77
|
+
3. `ad campaign-validate` → 确认摘要(国家↔id + Exact/Phrase/Broad 计数)→ `campaign-create` → `batch get` / `batch diff` / 自动补扩展。
|
|
79
78
|
- **步骤(Search 一体化创建,无现成方案文件)**:
|
|
80
79
|
1. 地域:多国 `ad geo resolve`;单国 `ad geo search -a <id> -q "United States"`(仍禁止编造)。
|
|
81
80
|
2. 门禁:`ad campaign-validate --config-file ./campaign.json`(必跑)。
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
| 轨 | 条件 | 动作 |
|
|
22
22
|
| -------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
23
|
-
| **方案源轨** | 用户已给 Excel/表格/结构化投放方案(含地域、词、匹配类型等) | **先 Read** `rules/google-ads-plan-source-fidelity.md` →
|
|
23
|
+
| **方案源轨** | 用户已给 Excel/表格/结构化投放方案(含地域、词、匹配类型等) | **先 Read** `rules/google-ads-plan-source-fidelity.md` → Agent **写脚本**把方案直接转成 campaign-create JSON(+ **`ad geo resolve`** 取地域 id)→ validate → 确认 → create |
|
|
24
24
|
| **直读直写** | 用户已给账户/预算/组/词/RSA 等结构化数据(非文件,或已是 JSON) | 通过代码转换为 campaign-create 直接可用的 JSON → validate → 确认 → create |
|
|
25
25
|
| **方案先行** | 无完整结构,或要求「先出方案」 | 读本文件 + 必读规则 → 生成 JSON → validate → Markdown → 确认 → create |
|
|
26
26
|
|
|
@@ -28,12 +28,12 @@
|
|
|
28
28
|
|
|
29
29
|
- 可执行真相只有 **JSON**(`assets/campaign-create-template.json` 同构);Markdown 只读投影。
|
|
30
30
|
- **Agent Read 顺序(建系列前必做)**:① `assets/campaign-create-template.json`(复制/改写的结构真相源)→ ② `assets/campaign-create-template.md`(字段说明与踩坑)。**禁止**只读 `.md` 凭印象拼 JSON。
|
|
31
|
-
- **方案文件(Excel 等)额外必读**:`references/google-ads/rules/google-ads-plan-source-fidelity.md
|
|
32
|
-
- 改需求
|
|
31
|
+
- **方案文件(Excel 等)额外必读**:`references/google-ads/rules/google-ads-plan-source-fidelity.md`(Agent **写代码**直接转成 campaign-create JSON;禁止对话手填完整 JSON)。
|
|
32
|
+
- 改需求 **改转换脚本重跑**,再 `campaign-validate`,再刷新 Markdown。
|
|
33
33
|
- **PMax 系列创建**走独立流水线(勿用本文件 JSON 模板):**先 Read `assets/pmax-create-template.json`** + `assets/pmax-create-template.md` + `ad pmax-validate` / `ad pmax-create`;**Lead Gen/B2B 方案默认含 `campaignExtensions.leadForm`**(方案 Markdown 须单列表单);运营诊断见 `references/google-ads/rules/google-ads-pmax-guide.md`。
|
|
34
34
|
- 搜索网络:仅 Google 搜索(`TargetSearchNetwork`/`TargetContentNetwork`/`TargetPartnerSearchNetwork` 均为 false)。
|
|
35
35
|
- **地域 id**:多国用 **`ad geo resolve`**(单国可用 `ad geo search`);**禁止**编造 / ISO 心算。外层 `locations` 与 `targetedLocations` 数量必须一致(validate 硬校验)。
|
|
36
|
-
-
|
|
36
|
+
- **匹配类型**:转换脚本按方案写入 EXACT/PHRASE/BROAD 分块(有方案源时勿压成一律 BROAD)。
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
|
|
42
42
|
| 步 | 动作 | 文档/命令 |
|
|
43
43
|
| --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|
44
|
-
| 0 |
|
|
44
|
+
| 0 | **方案源轨**:Agent 写转换脚本:方案文件 → `campaign.json`;地域用 **`ad geo resolve --json-out`** 写入(**勿**对话手填) | **`rules/google-ads-plan-source-fidelity.md`** + **`assets/campaign-create-template.json`** |
|
|
45
45
|
| 1 | `list-accounts` 锁定 `account` / `customerName` / 币种 | `references/accounts/currency.md` |
|
|
46
46
|
| 2 | 可选 `rag query`;无现成词表时再 `keyword` / `keyword geo-list` 拓词 | `references/analytics/keyword-planner-workflows.md` |
|
|
47
47
|
| 3 | 无方案文件时:多国 **`ad geo resolve`**(或单国 `ad geo search`)写入 `locations` + `targetedLocations` | **禁止编造 id** |
|
|
48
|
-
| 4 | 无方案文件时:按分层写入 `KeywordsForBatchJob`(EXACT/PHRASE/BROAD);否词进 `NegativeKeywordsForBatchJob` | 参考 `google-ads-keyword-taxonomy.md`;有方案源则走步骤 0
|
|
49
|
-
| 5 |
|
|
48
|
+
| 4 | 无方案文件时:按分层写入 `KeywordsForBatchJob`(EXACT/PHRASE/BROAD);否词进 `NegativeKeywordsForBatchJob` | 参考 `google-ads-keyword-taxonomy.md`;有方案源则走步骤 0 |
|
|
49
|
+
| 5 | 得到与模板同构的 `campaign-create` JSON | **`assets/campaign-create-template.json`** |
|
|
50
50
|
| 6 | **`ad campaign-validate --config-file <json>`**(失败改中间件/脚本再组装;超长见下文) | 下文「校验」 |
|
|
51
51
|
| 7 | 给人看:**国家↔id** + **匹配类型条数** + 可选 Markdown 投影;**勿**贴整份 JSON 当主交付 | `google-ads-launch-plan-template.md` |
|
|
52
52
|
| 8 | 用户确认后 **`ad campaign-create`** | `references/google-ads/google-ads.md` |
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
| `google-ads-keyword-strategy.md` | 关键词策略规划 |
|
|
10
10
|
| `google-ads-keyword-optimization.md` | 关键词出价/否定/扩词优化 |
|
|
11
11
|
| `google-ads-keyword-taxonomy.md` | 词类分层与命名 |
|
|
12
|
-
| `google-ads-plan-source-fidelity.md` | **Excel/表格方案 → JSON
|
|
12
|
+
| `google-ads-plan-source-fidelity.md` | **Excel/表格方案 → JSON**:Agent 写脚本直转 + `ad geo resolve`(有方案文件时必读) |
|
|
13
13
|
| `google-ads-creative-optimization.md` | 创意/文案优化 |
|
|
14
14
|
| `google-ads-audience-strategy.md` | 受众策略 |
|
|
15
15
|
| `google-ads-pmax-guide.md` | PMax 运营指南(配合 `assets/pmax-create-template.md`) |
|
|
@@ -1,131 +1,61 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 方案文件 → campaign-create JSON
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 所属 skill:`siluzan-tso`。用户提供投放方案(`.xlsx` / `.xls` / `.csv` / 表格粘贴等)并要求创建 Google 搜索广告时 **必读**。
|
|
4
4
|
>
|
|
5
|
-
>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## 为什么不能「读 Excel → 直接写 campaign.json」
|
|
10
|
-
|
|
11
|
-
| 易错点 | 对话里手填时会发生什么 | 稳妥做法 |
|
|
12
|
-
| ------ | ---------------------- | -------- |
|
|
13
|
-
| 30 国 geo id | 编造 / 记错 / CriterionError | **一次** `ad geo resolve` |
|
|
14
|
-
| Exact/Phrase | 图省事全写成 BROAD | 抽取时带上 `matchType`,组装脚本分块 |
|
|
15
|
-
| 大 JSON | 上下文截断、漏字段 | 脚本写文件,Agent 只读 validate 摘要 |
|
|
16
|
-
| 版式差异 | 猜 Sheet 名失败就瞎补 | 只写「本文件专用」抽取脚本,输出固定中间件 |
|
|
5
|
+
> **主路径**:Agent **编写并执行代码**,把方案文件直接转成与 `assets/campaign-create-template.json` 同构的 JSON → `ad campaign-validate` → 用户确认 → `ad campaign-create`。
|
|
6
|
+
>
|
|
7
|
+
> 版式不固定没关系——**认列、认匹配类型、认国家列表就是 Agent 的活**;脚本只负责落盘,避免在对话里手填大 JSON。
|
|
17
8
|
|
|
18
9
|
---
|
|
19
10
|
|
|
20
|
-
##
|
|
11
|
+
## 流水线
|
|
21
12
|
|
|
22
13
|
```text
|
|
23
|
-
Excel
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Agent **对话内只做**:认列写①③脚本、跑 CLI、把 validate 错误修回脚本/中间件、给用户看「国家↔id + 匹配类型计数」。
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
### ① 抽取 → `plan-extract.json`(唯一允许「认版式」的一步)
|
|
39
|
-
|
|
40
|
-
复制形状:`assets/plan-extract.example.json`。
|
|
41
|
-
|
|
42
|
-
用 **Python openpyxl / Node** 读**全部 Sheet**,只输出中间件,**不要**在这一步写 `targetedLocations` id,**不要**写最终 campaign JSON。
|
|
43
|
-
|
|
44
|
-
关键词行必须带匹配类型(列优先,否则看词面 `[ ]` / `" "`):
|
|
45
|
-
|
|
46
|
-
```json
|
|
47
|
-
{ "text": "compactor garbage truck for sale", "matchType": "EXACT" }
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
`matchType` ∈ `EXACT` | `PHRASE` | `BROAD`。组装脚本再加 `[]` / `""`。
|
|
51
|
-
|
|
52
|
-
### ② 批量地域 → `geo-map.json`(禁止逐国 search、禁止编造)
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
# 从中间件抽出 locations 数组文件,或直接 --queries
|
|
56
|
-
siluzan-tso ad geo resolve -a <mediaCustomerId> \
|
|
57
|
-
--from-file ./locations.json \
|
|
58
|
-
--json-out ./snap-geo
|
|
14
|
+
方案文件(Excel 等)
|
|
15
|
+
│
|
|
16
|
+
│ Agent 写转换脚本(openpyxl / exceljs 等)
|
|
17
|
+
│ + ad geo resolve 取地域 id(勿编造)
|
|
18
|
+
▼
|
|
19
|
+
campaign.json (campaign-create 契约)
|
|
20
|
+
│
|
|
21
|
+
▼
|
|
22
|
+
ad campaign-validate → 确认摘要 → ad campaign-create
|
|
59
23
|
```
|
|
60
24
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
推荐直接跑 Skill 自带脚手架(按中间件 + geo-map 填模板):
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
node <skill>/assets/scripts/assemble-campaign-from-plan.mjs \
|
|
73
|
-
--plan ./plan-extract.json \
|
|
74
|
-
--geo ./snap-geo/ad-geo-resolve-<account>.json \
|
|
75
|
-
--template <skill>/assets/campaign-create-template.json \
|
|
76
|
-
--out ./campaign.json
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
脚本职责(Agent 勿手改输出里的这两块):
|
|
80
|
-
|
|
81
|
-
- 拷贝 `locations` + `targetedLocations`(来自 geo-map,同序)
|
|
82
|
-
- 按广告组把 keywords **分块**为 EXACT / PHRASE / BROAD `KeywordsForBatchJob`
|
|
83
|
-
- 否词 → `NegativeKeywordsForBatchJob`;RSA / Extensions 从中间件映射
|
|
25
|
+
| 步 | 谁做 | 动作 |
|
|
26
|
+
| -- | ---- | ---- |
|
|
27
|
+
| 1 | Agent + 脚本 | 读全 Sheet,按语义抽出预算/组/词+匹配类型/RSA/否词/国家等,写出 `campaign.json` |
|
|
28
|
+
| 2 | CLI | 国家列表 → `ad geo resolve -a <id> --from-file … --json-out …`,把返回的 `locations` / `targetedLocations` 写入 JSON(**禁止**编造 id) |
|
|
29
|
+
| 3 | CLI | `ad campaign-validate --config-file ./campaign.json` |
|
|
30
|
+
| 4 | Agent → 用户 | 摘要确认:国家↔id、Exact/Phrase/Broad 条数(可抽样几条),**勿**贴整份 JSON |
|
|
31
|
+
| 5 | CLI | 用户确认后 `ad campaign-create` → `batch get` / `batch diff` |
|
|
84
32
|
|
|
85
|
-
|
|
33
|
+
可选脚手架(非必须):`assets/plan-extract.example.json` + `assets/scripts/assemble-campaign-from-plan.mjs`——若 Agent 更习惯先抽中间件再组装,可以用;**不强制**。
|
|
86
34
|
|
|
87
|
-
|
|
88
|
-
siluzan-tso ad campaign-validate --config-file ./campaign.json --json-out ./snap-campaign
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
确认摘要(给用户,勿贴整份 JSON):
|
|
35
|
+
---
|
|
92
36
|
|
|
93
|
-
|
|
94
|
-
2. Exact / Phrase / Broad **条数**(来自 plan-extract 统计,须与 validate 后一致)
|
|
95
|
-
3. 预算 / 组数 / 否词数
|
|
37
|
+
## Agent 转换脚本须守住的点
|
|
96
38
|
|
|
97
|
-
|
|
39
|
+
1. **匹配类型**:方案里有「完全/词组/广泛」列或 `[词]` / `"词"` / 裸词时,写入对应 `MatchTypeV2` 块(EXACT / PHRASE / BROAD),**不要**图省事压成一律 BROAD。
|
|
40
|
+
2. **地域 id**:只来自 `ad geo resolve`(或多国一次 resolve;单国也可用 `ad geo search`)。`locations` 与 `targetedLocations` 同序同量。
|
|
41
|
+
3. **结构**:先 Read `assets/campaign-create-template.json`,脚本输出同构;RSA 15 标题 + 4 描述;否词只进 `NegativeKeywordsForBatchJob`。
|
|
42
|
+
4. **落盘**:用脚本 `--out` / `writeFile`,**禁止**在对话里手写完整 campaign JSON。
|
|
98
43
|
|
|
99
44
|
---
|
|
100
45
|
|
|
101
|
-
## CLI
|
|
46
|
+
## CLI 硬校验(兜底)
|
|
102
47
|
|
|
103
48
|
| 条件 | `campaign-validate` |
|
|
104
49
|
| ---- | ------------------- |
|
|
105
|
-
| `locations
|
|
106
|
-
| location id 非数字 | error |
|
|
107
|
-
|
|
108
|
-
匹配类型保真靠中间件 `matchType` + 组装脚本,不靠 CLI 禁止「全 BROAD」。
|
|
50
|
+
| `locations` 非空且与 `targetedLocations` 数量不一致 | error |
|
|
51
|
+
| location `id` 非数字 | error |
|
|
109
52
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
## Agent 禁令(高优先级)
|
|
113
|
-
|
|
114
|
-
1. **禁止**在对话里手写 / 粘贴完整 `campaign.json`(用脚本 `--out`)。
|
|
115
|
-
2. **禁止**对 30 国循环口述 `ad geo search`;用 **`ad geo resolve`**。
|
|
116
|
-
3. **禁止**编造 geo id(含 ISO、`2000+ISO` 心算)。
|
|
117
|
-
4. **禁止**把方案里的 Exact/Phrase 压成一律 BROAD。
|
|
118
|
-
5. **禁止**跳过 `plan-extract.json` 直接从 Excel「脑补」进 create。
|
|
53
|
+
匹配类型是否与方案一致,靠 Agent 转换脚本 + 确认摘要;validate 负责契约与词面/`MatchTypeV2` 对齐。
|
|
119
54
|
|
|
120
55
|
---
|
|
121
56
|
|
|
122
|
-
##
|
|
123
|
-
|
|
124
|
-
| 文档 | 何时 |
|
|
125
|
-
| ---- | ---- |
|
|
126
|
-
| 本文件 | 有 Excel/表格方案 → 创建 |
|
|
127
|
-
| `google-ads-campaign-plan.md` | W3 总流程;方案源轨指向本文件 |
|
|
128
|
-
| `assets/campaign-create-template.json` | 组装目标结构(先 Read) |
|
|
129
|
-
| `google-ads-launch-plan-template.md` | 可选:validate 后投影 Markdown 给人看 |
|
|
57
|
+
## 相关文档
|
|
130
58
|
|
|
131
|
-
|
|
59
|
+
- `google-ads-campaign-plan.md` — W3 总流程
|
|
60
|
+
- `assets/campaign-create-template.json` — JSON 结构真相源
|
|
61
|
+
- `google-ads.md` — `ad geo resolve` / `campaign-create` 命令
|
|
@@ -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.37-beta.
|
|
12
|
+
$PKG_VERSION = '1.1.37-beta.6'
|
|
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.37-beta.
|
|
12
|
+
readonly PKG_VERSION="1.1.37-beta.6"
|
|
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"
|