siluzan-tso-cli 1.1.37-beta.17 → 1.1.37-beta.18
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.md +1 -1
- package/dist/skill/references/core/agent-conventions.md +5 -2
- package/dist/skill/references/core/intent-routing.md +2 -2
- package/dist/skill/references/core/workflows.md +11 -5
- package/dist/skill/references/google-ads/google-ads-campaign-plan.md +29 -17
- package/dist/skill/scripts/install.ps1 +1 -1
- package/dist/skill/scripts/install.sh +1 -1
- package/eval/cases/uj-ad-outdoor-campgear-search-plan.scenario.json +1 -1
- package/eval/cases/uj-ad-website-search-plan-table-format.scenario.json +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.18),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
|
|
55
55
|
|
|
56
56
|
| 助手 | 建议 `--ai` |
|
|
57
57
|
| ----------------------- | ------------------------------------ |
|
package/dist/skill/SKILL.md
CHANGED
|
@@ -75,7 +75,7 @@ siluzan-tso -h
|
|
|
75
75
|
|
|
76
76
|
| 用户意图(关键词) | 工作流 | 必读文档 |
|
|
77
77
|
| ------------------ | ------ | -------- |
|
|
78
|
-
| 新建搜索系列 / 出投放方案 / Excel·表格方案 / 官网生成搜索广告 | **W3** | `references/google-ads/google-ads-campaign-plan.md
|
|
78
|
+
| 新建搜索系列 / 出投放方案 / Excel·表格方案 / 官网生成搜索广告 | **W3** | `references/google-ads/google-ads-campaign-plan.md`(§**仅出方案 vs 创建**:无账户也可先出方案)+ **`assets/campaign-create-template.json`**(先 Read)+ `assets/campaign-create-template.md`;有方案文件时加 `references/google-ads/rules/google-ads-plan-source-fidelity.md`。**≠ P8 / ≠ P9 / ≠ W5**;**禁止**因缺账户阻塞出方案 |
|
|
79
79
|
| 广告系列/组/广告/关键词 **查询** / 拒审字段 | W3 | `references/google-ads/google-ads-read.md` |
|
|
80
80
|
| 广告系列/组/广告/关键词 **创建·编辑·启停** | W3 | `references/google-ads/google-ads-write.md` |
|
|
81
81
|
| PMax 系列 | W3 | **`assets/pmax-create-template.json`**(先 Read)+ `assets/pmax-create-template.md` + `references/google-ads/pmax-api.md` + `google-ads-write.md`(PMax 节) |
|
package/dist/skill/_meta.json
CHANGED
|
@@ -123,7 +123,7 @@ siluzan-tso ad batch diff --batch-id <taskId> --config-file ./campaign.json --js
|
|
|
123
123
|
|
|
124
124
|
| 字段 | 类型 | 必填 | 说明 |
|
|
125
125
|
| -------------------- | -------------- | :--: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
126
|
-
| `account` | string | ✅ | 媒体账户 ID;提交时转为数字 `customerId
|
|
126
|
+
| `account` | string | ✅ | 媒体账户 ID;提交时转为数字 `customerId`(勿依赖引号字符串)。**仅出方案**(未确认创建、无账户)可填 `"[PENDING_ACCOUNT]"` 或 `""`,见 `google-ads-campaign-plan.md` §仅出方案;**create/validate 前**须换成真实 `mediaCustomerId` |
|
|
127
127
|
| `customerName` | string | | 展示/智投用客户名;**可省略**——`campaign-create` / `batch publish` 会按 `account` 调 `list-accounts` 自动填入 `mediaCustomerName`。若填写则须与之一致,否则提交时 CLI 自动更正 |
|
|
128
128
|
| `name` | string | | 智投 `campaignName`;缺省取 `campaign.Name`;账户内不得与已有在投/暂停系列重名,否则 BatchJob 系列创建失败 |
|
|
129
129
|
| `url` | string | | 智投展示用 URL;后端只读,用于回显 |
|
|
@@ -126,7 +126,8 @@
|
|
|
126
126
|
|
|
127
127
|
- **账户状态 ≠ 系列状态**:`stats` / `balance` / `list-accounts` 的 `status` 只表示账户是否可用;系列状态必须来自 `ad campaigns`。
|
|
128
128
|
- **数据时效性**:涉及「今天/当天/今日消耗」「实时消耗排行」前,必读 `references/analytics/account-analytics.md` 顶部「数据时效性」表。TikTok / Yandex / BingV2 / Kwai 是 `accountsoverview` 同步昨天数据,**不能查今天**。
|
|
129
|
-
-
|
|
129
|
+
- **先查账户再操作**(拉数 / 改账户 / 报告 / **创建广告**):`list-accounts -m [mediaType] -k [mediaCustomerId]`;用户给出的 `mediaCustomerId` 必须 `-k` 核验,无结果则告知用户并停止,**禁止**翻页 grep 自行换 ID(会导致报告错户);拉数、脚本、报告文件名全链路用同一 ID(以 stdout `accountId` 为准)。**Google 额外建议**:`list-accounts` 命中后、拉数前可 `account check-access -a <mediaCustomerId>` 校验 Google 网关访问权限;`no_permission`(403)通常表示账户不在当前丝路赞账号下。
|
|
130
|
+
- **W3 仅出方案例外(覆盖上条)**:用户只要「投放方案 / 规划 / 表格 / 先别创建·开户·投钱」,或未给账户且未要求创建/发布时——**禁止**把「请先提供 Google 广告账户」当作第一步;按 `google-ads-campaign-plan.md` §「仅出方案 vs 创建」交付 JSON+Markdown(`account`=`[PENDING_ACCOUNT]`),跳过 `list-accounts` / `geo resolve` / `campaign-validate` / `campaign-create`。用户确认要创建后再要账户并续跑创建流水线。
|
|
130
131
|
- **不猜测账户 ID**:`entityId` ≠ `mediaCustomerId`,两者均来自 `list-accounts`;**禁止**把 `entityId` 传给 `stats -a` / `balance -a`。
|
|
131
132
|
- **媒体类型区分大小写**:`Google`、`TikTok`、`Yandex`、`MetaAd`、`BingV2`、`Kwai`。
|
|
132
133
|
- **CLI 输出忠实**:数值与 ID 须与本次落盘 JSON / stdout 一致,不编造示例 ID;`data` 为空时只说「当前返回无记录」并附 JSON 路径。
|
|
@@ -143,7 +144,7 @@
|
|
|
143
144
|
- 用户**未指定手机号** → 不校验,按当前凭据正常执行。
|
|
144
145
|
- 当前凭据未返回手机号且用户指定了手机号 → 视同未校验通过,引导重新用手机号登录。
|
|
145
146
|
- **Google 新建搜索系列**:流程在 `references/google-ads/google-ads-campaign-plan.md`;填 JSON 前**必须先 Read** `assets/campaign-create-template.json`,再 Read `assets/campaign-create-template.md`。**禁止**只读 `.md` 手写 JSON。
|
|
146
|
-
- **「根据官网生成 Google 搜索广告 / 表格格式」**:仍属新建搜索系列 → **W3 + 本文件上条**;用户要的「表格」是 `google-ads-launch-plan-template.md` 对 JSON 的投影,**不是**可跳过 JSON
|
|
147
|
+
- **「根据官网生成 Google 搜索广告 / 表格格式」**:仍属新建搜索系列 → **W3 + 本文件上条**;用户要的「表格」是 `google-ads-launch-plan-template.md` 对 JSON 的投影,**不是**可跳过 JSON 的独立交付物。**仅出方案**时可先交付 JSON+表格(跳过 validate);**创建前**必须 `campaign-validate`。**禁止**与 P8 网站诊断、P9 市场分析、W5 仅拓词混用;**禁止**因缺账户 ID 拒出方案。
|
|
147
148
|
- **Excel/表格投放方案 → 创建广告**:必读 `references/google-ads/rules/google-ads-plan-source-fidelity.md`。Agent **写代码**直接转成 campaign-create JSON;地域用 **`ad geo resolve`**;**禁止**对话手填完整 JSON、**禁止**编造 geo id;有方案匹配类型时勿压成一律 BROAD。**方案不合规时必须询问**:「您自己改还是我帮您改?」——**禁止**未问就静默改用户方案内容后 create。用户选「我帮您改」时:代改同步落盘变更账本;**创建完成后必出报告**(创建了哪些 + 从 xxx→xxx + 原因)。
|
|
148
149
|
- **「行业分析 / 行业分析报告 / 生成 XX 行业报告」**(例:「帮我生成一份电商行业的行业分析报告」)→ **P9 战略市场分析**。**必须**先 `siluzan-tso market-analysis collect … --json-out`,再 WebSearch 补数据、写 `market-report.json`,最后 `market-analysis render` 出 HTML。**禁止**不调用 CLI、仅在对话里用 WebSearch 写 Markdown 充当终稿。**不是** `google-analysis`、**不是** P8 网站诊断。
|
|
149
150
|
- **开户首次响应**:对话内首次进入开户话题时,**必须先**按 `references/accounts/open-account-by-media.md` §「首次响应硬规范」输出**完整必填清单**(未指明媒体则列全平台六表),再收集资料;**禁止**未列清单就执行 `open-account` 或零散追问。
|
|
@@ -307,6 +308,7 @@
|
|
|
307
308
|
| 场景 | 做法 |
|
|
308
309
|
| ---- | ---- |
|
|
309
310
|
| 查数、诊断、报告、列表 | **先拉数再汇报**;缺账户 ID 才问;缺时间范围按 §五(能默认则默认并注明) |
|
|
311
|
+
| **W3 仅出方案**(官网/规划/表格,未要求创建) | **先出 JSON+Markdown**;账户用占位;**禁止**先要广告账户再开工 |
|
|
310
312
|
| 模糊意图 | 选最可能工作流先执行;结论后附「您是不是还想…」 |
|
|
311
313
|
| campaign-create 后 Sitelink/国家 batch 漏建 | **自动** `batch get` → `batch diff` → `ad geo add` / `ad extension *`;**勿**反问是否补建 |
|
|
312
314
|
| 用户方案(Excel 等)不合规 | 列出问题 → 二选一「您自己改还是我帮您改?」→ 停等;禁止未问静默改后 create |
|
|
@@ -324,6 +326,7 @@
|
|
|
324
326
|
| 帮我优化一下 | W6 | 「我先看看哪些广告表现偏弱…」 |
|
|
325
327
|
| 哪些账户快没钱了 | P2 | 「正在扫描全部账户余额…」 |
|
|
326
328
|
| 帮我开个户 / 建广告 | W2 / W3 | 「我先告诉您需要准备哪些资料。」 |
|
|
329
|
+
| 根据官网出广告方案 / 先出方案别投钱 | W3 仅出方案 | 「我先根据官网整理一版投放方案(系列/词/文案),账户您稍后选定即可。」 |
|
|
327
330
|
| 网站行不行 | P8 | 「我来给这个网站做个体检…」 |
|
|
328
331
|
|
|
329
332
|
### 14.5 禁止事项(机械感)
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
| **P3** | **多个广告账户** 消耗/CPA/零转化巡检 | 多账户对比、消耗排名、**转化成本监控**、**CPA**、**零转化**、口语「零询盘」(无 CRM)——见 **§零·D** | 媒体 + 账户列表或全量 + 区间 | 表格 / 话术 |
|
|
226
226
|
| **P2** | **多账户余额** 续航预警 | 余额扫描、快没钱了、充值预警 | 媒体(可选账户子集) | 列表 |
|
|
227
227
|
| **P5** | **多账户 × 多维度** 批拉 | 批量分析、多户 google-analysis | ≥2 户 + ≥2 维度 + 区间 | 聚合报告 |
|
|
228
|
-
| **W3** | 根据 **官网 / URL 生成 Google 搜索广告方案** | 根据网站**出广告**、搜索广告方案/计划/文案/关键词**表**、**生成**投放方案表格 | 官网 URL +
|
|
228
|
+
| **W3** | 根据 **官网 / URL 生成 Google 搜索广告方案** | 根据网站**出广告**、搜索广告方案/计划/文案/关键词**表**、**生成**投放方案表格 | 官网 URL + **明确要广告方案**(**不**要求账户 ID) | JSON + 表格投影 |
|
|
229
229
|
| **W5** | **Google Ads 关键词规划** / 拓词(含市场指标) | 见 **§零·C**:拓词、Keyword Planner、长尾词、**月搜索量**、**竞争度**、核心词扩词、读 URL/文章后出词表 | 种子词 / 核心词(URL 可选) | 词表(指标来自 `keyword` CLI) |
|
|
230
230
|
| **W7** | **丝路赞平台内** 已生成的优化报告 / 推送 | Siluzan 优化报告列表、报告推送、邮件推送配置 | 按 `reporting.md` | 平台侧列表 |
|
|
231
231
|
|
|
@@ -236,7 +236,7 @@
|
|
|
236
236
|
| **有网址** + 诊断/检测/监测/报告(含说「**网络**」) | **P8(§零)** | 误走 P9「行业/网络分析」、P1 账户诊断 |
|
|
237
237
|
| 「这个**网站**好不好 / 能不能投」(无广告方案诉求) | **P8** | 误走 P9、W3 |
|
|
238
238
|
| 「**电商/制造**行业怎么样 / 市场格局」(**无 URL**) | **P9** | 误走 P8 |
|
|
239
|
-
| 「根据**官网**做 **Google 搜索广告** / 关键词表」 | **W3
|
|
239
|
+
| 「根据**官网**做 **Google 搜索广告** / 关键词表」 | **W3**(可无账户先出方案) | 误走 P8;或卡在要账户才出方案 |
|
|
240
240
|
| 「读**网址/文章** + **核心词** + 要 **月搜索量/竞争度** 长尾词表」 | **W5(§零·C)** | 纯 WebSearch 编数;误走 P8/P9/W3 |
|
|
241
241
|
| 只要 **Keyword Planner / 拓词** 指标,不要 campaign JSON | **W5** | 误走 W3 走 validate/create |
|
|
242
242
|
|
|
@@ -56,15 +56,21 @@
|
|
|
56
56
|
|
|
57
57
|
- **触发**:新建搜索系列、出投放方案、**按 Excel/表格投放方案创建**、**根据官网/网站/URL 生成 Google 搜索广告(含「表格格式」)**、搜索广告文案/关键词/计划表、系列/组/广告/关键词 CRUD、PMax、拒审处理、日常调价/启停。
|
|
58
58
|
- **勿误判**:仅给官网 URL 且目标是「写/生成搜索广告」→ **本卡片(W3)**,不是 P8 网站诊断、不是 P9 市场分析;若用户只要拓词无系列结构 → **W5**。
|
|
59
|
+
- **仅出方案(默认优先)**:用户说「出方案 / 规划 / 表格 / 先别创建·开户·投钱」,或**未给账户且未要求创建** → 按 `google-ads-campaign-plan.md` §「仅出方案 vs 创建」:交付 JSON + Markdown,`account`=`[PENDING_ACCOUNT]`;**禁止**先要广告账户再开工;跳过 `list-accounts` / `geo resolve` / validate / create,直到用户确认创建。
|
|
59
60
|
- **必读**:方案与门禁 `references/google-ads/google-ads-campaign-plan.md` + **`assets/campaign-create-template.json`**(先 Read)+ `assets/campaign-create-template.md`;**有 Excel/表格方案时另读** `references/google-ads/rules/google-ads-plan-source-fidelity.md`;写命令参数 `references/google-ads/google-ads-write.md`;查询/拒审 `google-ads-read.md`;batch 补建 `google-ads-batch.md`;PMax 加 **`assets/pmax-create-template.json`** + `assets/pmax-create-template.md` + `references/google-ads/pmax-api.md`。
|
|
60
61
|
- **创建路径选择**:
|
|
61
62
|
- 已有 AI 智投草稿 → 走 **W4**。
|
|
62
|
-
- **PMax 出方案/创建** → **`assets/pmax-create-template.json`**(先 Read)+ `pmax-create-template.md` + `pmax-api.md
|
|
63
|
-
- **用户给了 Excel/表格方案** → **方案源轨**:见 `google-ads-plan-source-fidelity.md`——Agent
|
|
64
|
-
- 搜索系列从零出方案 → `google-ads-campaign-plan.md`:JSON
|
|
65
|
-
- 已有完整结构化 JSON →
|
|
63
|
+
- **PMax 出方案/创建** → **`assets/pmax-create-template.json`**(先 Read)+ `pmax-create-template.md` + `pmax-api.md`:仅出方案先 JSON+Markdown;要创建再 `pmax-validate` → 用户确认 → `pmax-create`(**勿**用 Search `campaign-create`)。
|
|
64
|
+
- **用户给了 Excel/表格方案** → **方案源轨**:见 `google-ads-plan-source-fidelity.md`——Agent **写脚本**转 JSON;仅出方案停在 JSON+Markdown;要创建再 **`ad geo resolve`** → validate → 确认 → create(**禁止**对话手填完整 JSON)。
|
|
65
|
+
- 搜索系列从零出方案 → `google-ads-campaign-plan.md`:JSON + Markdown;要创建再 `campaign-validate` → 用户确认 → `campaign-create`。
|
|
66
|
+
- 已有完整结构化 JSON 且要创建 → validate → create。
|
|
67
|
+
- **步骤(Search · 仅出方案,无账户)**:
|
|
68
|
+
1. Read `campaign-create-template.json`;官网/RAG 归纳产品与落地页。
|
|
69
|
+
2. 填系列/组/词/RSA/预算假设;`account`=`[PENDING_ACCOUNT]`;地域用国家名占位(勿编造 geo 数字 id)。
|
|
70
|
+
3. 按 `google-ads-launch-plan-template.md` 投影 Markdown → 交付;说明「选定账户后可继续 validate/create」。
|
|
71
|
+
4. **停**;勿追问账户为前置条件。
|
|
66
72
|
- **步骤(PMax 方案 → 创建)**:
|
|
67
|
-
1.
|
|
73
|
+
1. **创建阶段**账户:`list-accounts -m Google -k <id>`;落地页与品牌从官网/RAG 归纳。仅出方案跳过本步。
|
|
68
74
|
2. 地域/语言:多国用 `ad geo resolve`,单国用 `ad geo search`;语言 id 写入 JSON。
|
|
69
75
|
3. 复制 `pmax-create-template.json` 填文案/预算/图片;**必须**含 `campaignExtensions`(至少 callouts + structuredSnippets);**Lead Gen/B2B 默认** `campaignExtensions.leadForm`(方案 Markdown 须单列表单节)。
|
|
70
76
|
4. 门禁:`ad pmax-validate --config-file ./pmax.json --json-out ./snap-pmax`。
|
|
@@ -10,47 +10,59 @@
|
|
|
10
10
|
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------- |
|
|
11
11
|
| 「根据 www.example.com 官网生成 Google 搜索广告」 | **W3 · 本文件标准流水线** | 只输出一张手写关键词/RSA 表;走 P8 网站诊断 |
|
|
12
12
|
| 「按这份 Excel / 投放方案创建广告」 | **方案源轨**(下表)+ **必读** `rules/google-ads-plan-source-fidelity.md` | 猜 geo id;关键词一律 BROAD;跳过 validate |
|
|
13
|
-
| 「要表格格式 / 表格给我」 | 先 JSON
|
|
13
|
+
| 「要表格格式 / 表格给我」 | 先 JSON →(有账户且要创建才 `campaign-validate`)→ 按 `google-ads-launch-plan-template.md` **投影 Markdown 表格** | 跳过 JSON 直接填表;因缺账户不给表格 |
|
|
14
14
|
| 「帮我写搜索广告文案/关键词」且未指定已有系列 | **W3**(含官网/RAG 归纳背景) | 与 W5 纯拓词混淆(W5 无系列/组/RSA 结构) |
|
|
15
|
+
| 「先出方案 / 先别开户 / 先别投钱 / 只要方案」 | **仅出方案**(见下节;**不**索要账户) | 卡在 `list-accounts` / 要 mediaCustomerId 才肯出方案 |
|
|
15
16
|
| 「分析这个网站能不能投广告」 | **P8** 网站诊断 | 本文件建户方案 |
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
### 仅出方案 vs 创建(硬门禁)
|
|
19
|
+
|
|
20
|
+
| 阶段 | 触发(满足其一即可) | 要不要 Google 账户 | Agent 必须做 | **禁止** |
|
|
21
|
+
| ---- | -------------------- | ------------------ | ------------ | -------- |
|
|
22
|
+
| **仅出方案** | 「出方案 / 规划 / 先别创建 / 先别开户 / 先别投钱 / 只要表格」;或用户**未**给账户且**未**说要创建/发布 | **不必须** | 交付同构 JSON + Markdown 投影;`account` / geo 数字 id 用占位并标注「待选定账户后补」 | **因缺账户 ID 阻塞交付**;未确认创建就跑 `list-accounts` 逼用户给号;未确认就 `campaign-create` |
|
|
23
|
+
| **创建** | 用户已确认方案并明确要创建/发布,或已提供可用 `mediaCustomerId` 且意图是落地 | **必须** | `list-accounts` → `geo resolve` → 填真 id → `campaign-validate` → 确认 → `campaign-create` → batch… | 编造 geo id;跳过 validate |
|
|
24
|
+
|
|
25
|
+
**缺参时(仅出方案)**:用户只给官网 URL、未给预算/地域/账户 → 先从官网归纳产品/落地页(必要时 `google-ads-landing-page-discovery-via-webfetch.md`),预算/地域可合理默认并在方案里写明假设;**账户 ID 一律不追问为前置条件**(写 `[PENDING_ACCOUNT]` 即可)。仅当缺官网且无法推断产品时才追问 1 项;不得因信息不全就降级为「随便写几条广告」,也**不得**把「请先提供广告账户」当成第一步。
|
|
26
|
+
|
|
27
|
+
**占位约定(仅出方案)**:外层 `account` 填 `"[PENDING_ACCOUNT]"`(或 `""`);`locations` 用国家中英文名;`targetedLocations` 可暂空数组或与 `locations` 同长的占位串——**交付时注明「选定账户后须 `ad geo resolve` 写回真 id,再 validate」**。此阶段**跳过** `list-accounts` / `ad geo resolve|search` / `campaign-validate` / `campaign-create`(无账户时这些命令无法合法完成)。
|
|
18
28
|
|
|
19
29
|
---
|
|
20
30
|
|
|
21
31
|
| 轨 | 条件 | 动作 |
|
|
22
32
|
| -------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
23
|
-
| **方案源轨** | 用户已给 Excel/表格/结构化投放方案(含地域、词、匹配类型等) | **先 Read** `rules/google-ads-plan-source-fidelity.md` → Agent
|
|
24
|
-
| **直读直写** | 用户已给账户/预算/组/词/RSA 等结构化数据(非文件,或已是 JSON) |
|
|
25
|
-
| **方案先行** | 无完整结构,或要求「先出方案」 | 读本文件 + 必读规则 → 生成 JSON
|
|
33
|
+
| **方案源轨** | 用户已给 Excel/表格/结构化投放方案(含地域、词、匹配类型等) | **先 Read** `rules/google-ads-plan-source-fidelity.md` → Agent **写脚本**转 JSON;**有账户且要创建**时再 `ad geo resolve` → validate → 确认 → create;**仅出方案**则脚本产出后停在 JSON+Markdown |
|
|
34
|
+
| **直读直写** | 用户已给账户/预算/组/词/RSA 等结构化数据(非文件,或已是 JSON) | 转为 campaign-create JSON →(要创建则)validate → 确认 → create |
|
|
35
|
+
| **方案先行** | 无完整结构,或要求「先出方案」 | 读本文件 + 必读规则 → 生成 JSON + Markdown;**仅出方案到此为止**;用户确认创建且已有账户后再 validate → create |
|
|
26
36
|
|
|
27
37
|
**硬约束**
|
|
28
38
|
|
|
29
39
|
- 可执行真相只有 **JSON**(`assets/campaign-create-template.json` 同构);Markdown 只读投影。
|
|
30
|
-
- **Agent Read
|
|
40
|
+
- **Agent Read 顺序(建系列 / 出方案前必做)**:① `assets/campaign-create-template.json`(复制/改写的结构真相源)→ ② `assets/campaign-create-template.md`(字段说明与踩坑)。**禁止**只读 `.md` 凭印象拼 JSON。
|
|
31
41
|
- **方案文件(Excel 等)额外必读**:`references/google-ads/rules/google-ads-plan-source-fidelity.md`(Agent **写代码**直接转成 campaign-create JSON;禁止对话手填完整 JSON)。
|
|
32
|
-
- 改需求
|
|
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`。
|
|
42
|
+
- 改需求 **改转换脚本重跑**;若已进入创建阶段则再 `campaign-validate`,再刷新 Markdown。
|
|
43
|
+
- **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`。PMax **仅出方案**时同样**禁止**因缺账户阻塞;`account` 占位,跳过 validate/create。
|
|
34
44
|
- 搜索网络:仅 Google 搜索(`TargetSearchNetwork`/`TargetContentNetwork`/`TargetPartnerSearchNetwork` 均为 false)。
|
|
35
|
-
- **地域 id
|
|
45
|
+
- **地域 id(创建阶段)**:多国用 **`ad geo resolve`**(单国可用 `ad geo search`);**禁止**编造 / ISO 心算。外层 `locations` 与 `targetedLocations` 数量必须一致(validate 硬校验)。**仅出方案**可用国家名占位,勿为取 id 而先逼用户给账户。
|
|
36
46
|
- **匹配类型**:转换脚本按方案写入 EXACT/PHRASE/BROAD 分块(有方案源时勿压成一律 BROAD)。
|
|
37
47
|
|
|
38
48
|
---
|
|
39
49
|
|
|
40
50
|
## 标准流水线
|
|
41
51
|
|
|
52
|
+
> **仅出方案**:做步 0(若有方案文件)→ **跳过**步 1~3 的账户/geo CLI → 做步 4~5(词与 JSON)→ **跳过**步 6 validate → 做步 7(Markdown,国家名即可)→ **停住等用户确认**;用户确认创建并给出账户后再从步 1 续跑。
|
|
53
|
+
|
|
42
54
|
| 步 | 动作 | 文档/命令 |
|
|
43
55
|
| --- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|
44
|
-
| 0 | **方案源轨**:Agent 写转换脚本:方案文件 → `campaign.json
|
|
45
|
-
| 1 |
|
|
46
|
-
| 2 | 可选 `rag query`;无现成词表时再 `keyword` / `keyword geo-list`
|
|
47
|
-
| 3 |
|
|
56
|
+
| 0 | **方案源轨**:Agent 写转换脚本:方案文件 → `campaign.json`;**创建阶段**地域用 **`ad geo resolve --json-out`** 写入(**勿**对话手填) | **`rules/google-ads-plan-source-fidelity.md`** + **`assets/campaign-create-template.json`** |
|
|
57
|
+
| 1 | **创建阶段**:`list-accounts` 锁定 `account` / `customerName` / 币种;**仅出方案且无账户 → 跳过** | `references/accounts/currency.md` |
|
|
58
|
+
| 2 | 可选 `rag query`;无现成词表时再 `keyword` / `keyword geo-list` 拓词(`keyword` **可不传** `-a`) | `references/analytics/keyword-planner-workflows.md` |
|
|
59
|
+
| 3 | **创建阶段**:无方案文件时多国 **`ad geo resolve`**(或单国 `ad geo search`)写入 `locations` + `targetedLocations`;**仅出方案 → 跳过,国家名占位** | **禁止编造 id** |
|
|
48
60
|
| 4 | 无方案文件时:按分层写入 `KeywordsForBatchJob`(EXACT/PHRASE/BROAD);否词进 `NegativeKeywordsForBatchJob` | 参考 `google-ads-keyword-taxonomy.md`;有方案源则走步骤 0 |
|
|
49
|
-
| 5 | 得到与模板同构的 `campaign-create` JSON | **`assets/campaign-create-template.json`** |
|
|
50
|
-
| 6 |
|
|
51
|
-
| 6b |
|
|
61
|
+
| 5 | 得到与模板同构的 `campaign-create` JSON(仅出方案时 `account`=`[PENDING_ACCOUNT]`) | **`assets/campaign-create-template.json`** |
|
|
62
|
+
| 6 | **创建阶段**:`ad campaign-validate --config-file <json>`;**仅出方案 → 跳过**,交付时说明「有账户后再 validate」 | 下文「校验」 |
|
|
63
|
+
| 6b | **方案来自用户且不合规**(创建前):列出问题 → **询问**「您自己改还是我帮您改?」→ 按选择处理后再 validate(**禁止**未问就静默改方案) | **`rules/google-ads-plan-source-fidelity.md`** § 用户方案不合规 |
|
|
52
64
|
| 6c | 用户选「我帮您改」:改 JSON 时**同步落盘变更账本**(from → to + reason) | 同上 § Agent 代改后:创建完成报告 |
|
|
53
|
-
| 7 |
|
|
65
|
+
| 7 | 给人看:国家(创建阶段补 **国家↔id**)+ **匹配类型条数** + Markdown 投影;**勿**贴整份 JSON 当主交付 | `google-ads-launch-plan-template.md` |
|
|
54
66
|
| 8 | 用户确认后 **`ad campaign-create`** | `references/google-ads/google-ads-write.md` |
|
|
55
67
|
| 9 | 每隔5s 获取创建结果 | `ad batch get --id <taskId> --config-file ./campaign.json` |
|
|
56
68
|
| 10 | 成功或部分成功后 **`ad batch diff`** 对照 JSON 与账户实况 | |
|
|
@@ -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.18'
|
|
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.18"
|
|
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"
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"turns": [
|
|
5
5
|
"我卖户外露营装备,主要面向美国和欧洲市场,网站是 https://www.campgear.com ,每天预算 3000 美金,帮我规划一套 Google 搜索广告方案。先出方案别直接开户投钱。"
|
|
6
6
|
],
|
|
7
|
-
"judgeExpectation": "路径:应先阅读 google-ads
|
|
7
|
+
"judgeExpectation": "路径:应先阅读 google-ads-campaign-plan(仅出方案轨),再输出可确认的投放方案(地域/语言/预算/系列结构);用户说先出方案时不得索要账户 ID;不得跳过确认直接执行 campaign-create。\n输出:须含 campaign-create JSON(唯一数据源,account 可 PENDING)+ 从 JSON 推导的 Markdown 说明;关键词写在 KeywordsForBatchJob;应说明选定账户后再 validate/create。",
|
|
8
8
|
"skillMapping": "references/google-ads/google-ads-campaign-plan.md;google-ads-rules",
|
|
9
9
|
"judgeReferencePaths": [
|
|
10
10
|
"references/google-ads/google-ads-campaign-plan.md"
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"turns": [
|
|
5
5
|
"根据 www.siluzan.com 这个官网的信息生成一份 Google 搜索广告给我,要表格格式。"
|
|
6
6
|
],
|
|
7
|
-
"judgeExpectation": "路径:须识别为 W3 搜索广告方案(google-ads-campaign-plan.md),不是 P8 网站诊断、不是 P9 市场分析、不是 W5 仅拓词;须 Read campaign-create-template.json 后再出 JSON
|
|
7
|
+
"judgeExpectation": "路径:须识别为 W3 搜索广告方案(google-ads-campaign-plan.md),不是 P8 网站诊断、不是 P9 市场分析、不是 W5 仅拓词;须 Read campaign-create-template.json 后再出 JSON;仅出方案阶段不得因缺账户阻塞,不得先逼 list-accounts/要 mediaCustomerId;不得跳过 JSON 直接 create 或只交付手写创意表;创建前才须 campaign-validate。\n输出:须含 campaign-create JSON(唯一数据源)+ 从 JSON 投影的 Markdown 表格(launch-plan-template 结构);缺账户用 [PENDING_ACCOUNT] 占位即可;缺预算/地域可默认并标注假设,不得因只给官网就降级为几条文案。",
|
|
8
8
|
"skillMapping": "references/google-ads/google-ads-campaign-plan.md",
|
|
9
9
|
"judgeReferencePaths": [
|
|
10
10
|
"references/google-ads/google-ads-campaign-plan.md",
|