siluzan-tso-cli 1.1.42-beta.2 → 1.1.42-beta.3

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 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.42-beta.2),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
54
+ > **注意**:当前为测试版(1.1.42-beta.3),供内部测试使用。正式发布后安装命令将改为 `npm install -g siluzan-tso-cli`。
55
55
 
56
56
  | 助手 | 建议 `--ai` |
57
57
  | ----------------------- | ------------------------------------ |
@@ -69,10 +69,10 @@ siluzan-tso -h
69
69
 
70
70
  | 用户意图(关键词) | 工作流 | 必读文档 |
71
71
  | ------------------ | ------ | -------- |
72
- | 新建搜索系列 / 出投放方案 / 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**;**禁止**因缺账户阻塞出方案 |
72
+ | 新建搜索系列 / 出投放方案 / Excel·表格方案 / 官网生成搜索广告 | **W3** | `references/google-ads/google-ads-campaign-plan.md`(§**仅出方案 vs 创建**)+ **`assets/campaign-create-template.json`**(先 Read)+ `assets/campaign-create-template.md` + `rules/google-ads-launch-plan-template.md`(JSON 后**写代码**投影完整审查稿);有方案文件时加 `rules/google-ads-plan-source-fidelity.md`。**≠ P8 / ≠ P9 / ≠ W5**;**禁止**因缺账户阻塞出方案、**禁止**只交概览表 |
73
73
  | 广告系列/组/广告/关键词 **查询** / 拒审字段 | W3 | `references/google-ads/google-ads-read.md` |
74
74
  | 广告系列/组/广告/关键词 **创建·编辑·启停** | W3 | `references/google-ads/google-ads-write.md` |
75
- | PMax 系列 | W3 | **`assets/pmax-create-template.json`**(先 Read)+ `assets/pmax-create-template.md` + `references/google-ads/pmax-api.md` + `google-ads-write.md`(PMax 节) |
75
+ | PMax 系列 | W3 | **`assets/pmax-create-template.json`**(先 Read)+ `assets/pmax-create-template.md` + `rules/google-ads-pmax-launch-plan-template.md`(**写代码**投影完整审查稿)+ `references/google-ads/pmax-api.md` + `google-ads-write.md`(PMax 节) |
76
76
  | AI 智投草稿 list/get/update/publish | W4 | `references/google-ads/google-ads-batch.md` |
77
77
  | 拓词 / keyword / 关键词规划 / 月搜索量 / 竞争度 / Keyword Planner | **W5** | `references/analytics/keyword-planner-workflows.md`(**§零·C**;客户背景先 `references/analytics/rag.md`) |
78
78
  | AI 广告优化记录 / 建议 | W6 | `references/operations/optimize.md` |
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "slug": "siluzan-tso",
3
- "version": "1.1.42-beta.2",
4
- "publishedAt": 1785748063884
3
+ "version": "1.1.42-beta.3",
4
+ "publishedAt": 1785835381907
5
5
  }
@@ -12,7 +12,7 @@
12
12
  "Excel/表格方案:转换脚本按匹配类型分 EXACT/PHRASE/BROAD 块;有方案源时勿压成一律 BROAD",
13
13
  "RSA 须同时写 DestinationUrl 与 Finalurl(后端必填 Finalurl;仅有 DestinationUrl 时 validate 可能仍通过)",
14
14
  "SITELINK 须写 AssetFieldType: SITELINK(与 typeV2 一致)",
15
- "提交前:ad campaign-validate → 用户确认 → ad campaign-create(勿对 validate 加 --json-out)"
15
+ "提交前:ad campaign-validate → 写代码从 JSON 投影完整审查稿(见 google-ads-launch-plan-template.md)→ 用户确认 → ad campaign-create"
16
16
  ]
17
17
  },
18
18
 
@@ -10,12 +10,12 @@
10
10
  "brandGuidelinesEnabled 省略时网关默认 true(Google v21+);品牌在 Campaign 级 brandAssets[],首个 AG 不含 Logo/商家名",
11
11
  "改已上线品牌:先 pmax-get 看 _brandGuidelinesActive;true 用 pmax-brand-assets-edit,false 用 pmax-assets-update 或 pmax-brand-guidelines-enable",
12
12
  "本地视频:填 videoPath(或别名 video);创建后 CLI 自动 PyAPI 上传并链接,与 --json-out 无关",
13
- "提交前:ad pmax-validate → 用户确认 → ad pmax-create",
13
+ "提交前:ad pmax-validate → 写代码从 JSON 投影完整审查稿 → 用户确认 → ad pmax-create",
14
14
  "campaignExtensions 默认必填:宣传信息≥20、结构化摘要≥20、站内链接≥6、leadForm、businessMessage",
15
15
  "文案门禁:headlines 15、longHeadlines 5(Google 上限须填满)、descriptions 5",
16
16
  "勿用 Search 的 ExtensionsForBatchJob;PMax 用 campaignExtensions(CLI 会尝试自动转换 CALLOUT/SNIPPET)",
17
17
  "Lead Gen/B2B 询盘方案:默认保留 campaignExtensions.leadForm(勿只写 callouts/snippets);用户明确不要表单才删 leadForm",
18
- "方案 Markdown 须单列「潜在客户表单」节(标题/描述/字段/privacyPolicyUrl);与 JSON 一致",
18
+ "审查稿须单列「潜在客户表单」节(标题/描述/字段/privacyPolicyUrl);结构见 google-ads-pmax-launch-plan-template.md",
19
19
  "不需要任何附加资产时设 skipCampaignExtensions: true(勿仅删除 campaignExtensions 块)"
20
20
  ]
21
21
  },
@@ -12,7 +12,7 @@
12
12
 
13
13
  | 场景 | 正确做法 |
14
14
  | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
15
- | 创建 PMax | `pmax-validate` → 用户确认 → `pmax-create` |
15
+ | 创建 PMax | `pmax-validate` → **写代码**从 JSON 投影完整审查稿 → 用户确认 → `pmax-create` |
16
16
  | 文案超长 | `pmax-validate --json-out` 读 `lengthViolations`(含完整 `text`);**勿自动截断**,列改写方案给用户确认后再改 JSON 并重跑 validate(同 Search `campaign-validate`) |
17
17
  | 金额 | JSON 填**主币种「元」**;CLI 提交前 `budget`、`targetCpa_BidingAmount` ×100 |
18
18
  | 图片 | **只填 `imagePaths`** 指向本地 PNG/JPEG(**相对路径相对 `--config-file` 所在目录**;`pmax-validate` 会检查文件是否存在);`pmax-create` 自动上传并用 assetId 创建(勿把 Base64 提交进 Git) |
@@ -26,15 +26,17 @@
26
26
 
27
27
  ---
28
28
 
29
- ## 方案生成(Agent 出投放方案时)
29
+ ## 方案生成与审查(Agent)
30
30
 
31
- 出 PMax **投放方案**(Markdown + JSON)时,除标题/描述/图片外,**Lead Gen / B2B 场景默认包含潜在客户表单**:
31
+ 出 PMax 方案时:先落盘本模板同构 JSON,再按 `references/google-ads/rules/google-ads-pmax-launch-plan-template.md` **写代码**从 JSON 投影完整审查稿(默认 Markdown;用户要求 Excel 等则改输出格式)。审查稿须含全部短/长标题、描述与附加资产正文,**禁止**只交概览表。
32
32
 
33
- 1. JSON:`campaignExtensions.leadForm` 字段结构与 `pmax-lead-form-template.json` 的 `leadForm` 相同(`businessName`、`headline`、`description`、`privacyPolicyUrl`、`finalUrl`、`fields`)。
34
- 2. Markdown:单独一节 **「潜在客户表单」**,列出表单标题、描述、收集字段、隐私政策 URL;**不得**只在 JSON 里写而方案正文遗漏。
35
- 3. `privacyPolicyUrl`:从落地页站点找 `/privacy`、`/terms` 等;找不到时向用户确认,**禁止**编造 URL。
36
- 4. 用户说「不要表单 / 仅品牌曝光 / 纯电商 Shopping」→ 可省略 `leadForm` 并在方案中说明原因。
37
- 5. `pmax-validate` 会校验 `leadForm`;创建后 `--json-out` 的 `campaignExtensions.leadForm` 段含 `ok` / `error`。
33
+ **Lead Gen / B2B 默认含潜在客户表单**:
34
+
35
+ 1. JSON:`campaignExtensions.leadForm` 结构同 `pmax-lead-form-template.json` 的 `leadForm`。
36
+ 2. 审查稿单独一节 **「潜在客户表单」**(标题/描述/字段/privacyPolicyUrl);不得只写在 JSON 里。
37
+ 3. `privacyPolicyUrl`:从站点找 `/privacy`、`/terms` 等;找不到则向用户确认,**禁止**编造。
38
+ 4. 用户明确不要表单 → 可省略 `leadForm` 并在审查稿说明原因。
39
+ 5. 创建阶段:`pmax-validate`;创建后 `--json-out` 的 `campaignExtensions.leadForm` 含 `ok` / `error`。
38
40
 
39
41
  ---
40
42
 
@@ -43,7 +45,7 @@
43
45
  ```bash
44
46
  siluzan-tso ad geo search -a <accountId> -q "United States"
45
47
  siluzan-tso ad pmax-validate --config-file ./pmax.json --json-out ./snap-pmax
46
- # 用户确认方案后:
48
+ # Agent 写代码:读 pmax.json → 写出完整审查稿(见 google-ads-pmax-launch-plan-template.md)→ 用户确认后:
47
49
  siluzan-tso ad pmax-create --config-file ./pmax.json --json-out ./snap-pmax
48
50
  siluzan-tso ad campaigns -a <accountId> --json-out ./snap
49
51
  ```
@@ -128,7 +128,8 @@
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` 命中后,若 `scopeActivatedSources` 显示套餐**已激活**,拉数前可用 `account check-access -a <mediaCustomerId>` 检查授权是否仍可用(`reauth_required` / `no_permission`);**未激活套餐时勿用 check-access 判断授权过期**。`no_permission`(403)也可能表示账户不在当前丝路赞账号下。详见 `accounts-permissions.md`。
130
130
  - **一律走 CLI,禁止自拼网关请求**:查余额 / 拉数 / 写操作只用 `siluzan-tso …`。**禁止**用 curl、自写脚本或改请求头直连 TSO/Google 网关「另辟蹊径」取数;`balance` 等无数据时按 CLI/`list-accounts` 字段向用户说明(如套餐未激活、授权失效),**禁止**尝试任何绕过平台门禁的取数方式。
131
- - **W3 仅出方案例外(覆盖上条)**:用户只要「投放方案 / 规划 / 表格 / 先别创建·开户·投钱」,或未给账户且未要求创建/发布时——**禁止**把「请先提供 Google 广告账户」当作第一步;按 `google-ads-campaign-plan.md` §「仅出方案 vs 创建」交付 JSON+Markdown(`account`=`[PENDING_ACCOUNT]`),跳过 `list-accounts` / `geo resolve` / `campaign-validate` / `campaign-create`。用户确认要创建后再要账户并续跑创建流水线。
131
+ - **W3 仅出方案例外(覆盖上条)**:用户只要「投放方案 / 规划 / 表格 / 先别创建·开户·投钱」,或未给账户且未要求创建/发布时——**禁止**把「请先提供 Google 广告账户」当作第一步;按 `google-ads-campaign-plan.md` §「仅出方案 vs 创建」落盘 JSON 后 **写代码**投影完整审查稿(默认 MD;用户指定则 Excel 等;`account`=`[PENDING_ACCOUNT]`),跳过 `list-accounts` / `geo resolve` / validate / create。**禁止**只交概览表。用户确认要创建后再要账户并续跑创建流水线。
132
+ - **W3 审查稿(搜索与 PMax)**:JSON 落盘后、创建前,必须 **写代码**读取 JSON,按 `google-ads-launch-plan-template.md`(搜索)或 `google-ads-pmax-launch-plan-template.md`(PMax)生成完整审查文件交给用户;须含全部关键词/RSA 或全部 PMax 文案与附加资产。**禁止**用「方案总结」条数勾选代替。用户要求其他格式时改脚本输出,数据仍只从 JSON 来。
132
133
  - **不猜测账户 ID**:`entityId`(UUID,仅 delink/share/reauth/账单)≠ `mediaCustomerId`(`stats`/`balance`/`accounts-digest`/`ad` 的 `-a`)。两者均来自 `list-accounts` 的 `ma.*`。用户已给出媒体账户号时(Google 数字 CID、**Yandex `porg-…`**、Meta `act_…` 等)→ `-a` **原样使用**,再用 `-k` 核验;**禁止**改成 `entityId` / tokenId / 会话里其它 UUID。**禁止**把 `entityId` 传给 `stats -a` / `balance -a` / `accounts-digest -a`。
133
134
  - **媒体类型区分大小写**:`Google`、`TikTok`、`Yandex`、`MetaAd`、`BingV2`、`Kwai`。
134
135
  - **CLI 输出忠实**:数值与 ID 须与本次落盘 JSON / stdout 一致,不编造示例 ID;`data` 为空时只说「当前返回无记录」并附 JSON 路径。
@@ -145,7 +146,7 @@
145
146
  - 用户**未指定手机号** → 不校验,按当前凭据正常执行。
146
147
  - 当前凭据未返回手机号且用户指定了手机号 → 视同未校验通过,引导重新用手机号登录。
147
148
  - **Google 新建搜索系列**:流程在 `references/google-ads/google-ads-campaign-plan.md`;填 JSON 前**必须先 Read** `assets/campaign-create-template.json`,再 Read `assets/campaign-create-template.md`。**禁止**只读 `.md` 手写 JSON。
148
- - **「根据官网生成 Google 搜索广告 / 表格格式」**:仍属新建搜索系列 → **W3 + 本文件上条**;用户要的「表格」是 `google-ads-launch-plan-template.md` 对 JSON 的投影,**不是**可跳过 JSON 的独立交付物。**仅出方案**时可先交付 JSON+表格(跳过 validate);**创建前**必须 `campaign-validate`。**禁止**与 P8 网站诊断、P9 市场分析、W5 仅拓词混用;**禁止**因缺账户 ID 拒出方案。
149
+ - **「根据官网生成 Google 搜索广告 / 表格格式」**:仍属新建搜索系列 → **W3 + 本文件上条**;用户要的「表格」是对已落盘 JSON 的投影(Agent 写代码生成),**不是**可跳过 JSON 的独立交付物。**仅出方案**时可先 JSON + 审查稿(跳过 validate);**创建前**必须 `campaign-validate` 且用户已审完整审查稿。**禁止**与 P8 网站诊断、P9 市场分析、W5 仅拓词混用;**禁止**因缺账户 ID 拒出方案。
149
150
  - **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 + 原因)。
150
151
  - **「行业分析 / 行业分析报告 / 生成 XX 行业报告」**(例:「帮我生成一份电商行业的行业分析报告」)→ **P9 战略市场分析**。**必须**先 `siluzan-tso market-analysis collect … --json-out`,再 WebSearch 补数据、写 `market-report.json`,最后 `market-analysis render` 出 HTML。**禁止**不调用 CLI、仅在对话里用 WebSearch 写 Markdown 充当终稿。**不是** `google-analysis`、**不是** P8 网站诊断。
151
152
  - **开户首次响应**:对话内首次进入开户话题时,**必须先**按 `references/accounts/open-account-by-media.md` §「首次响应硬规范」输出**完整必填业务清单**(未指明媒体则列全平台六媒体业务项),再收集资料;**禁止**未列清单就执行 `open-account` 或零散追问。清单**只写业务项与说明**;**禁止**向用户展示 `--flag` / CLI 选项名 / 命令行参数列(参数仅 Agent 内部组命令用)。
@@ -56,37 +56,38 @@
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,直到用户确认创建。
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`。
59
+ - **仅出方案(默认优先)**:用户说「出方案 / 规划 / 表格 / 先别创建·开户·投钱」,或**未给账户且未要求创建** → 按 `google-ads-campaign-plan.md` §「仅出方案 vs 创建」:落盘 JSON + **写代码投影完整审查稿**(默认 MD;用户指定则 Excel 等),`account`=`[PENDING_ACCOUNT]`;**禁止**先要广告账户再开工;跳过 `list-accounts` / `geo resolve` / validate / create,直到用户确认创建。
60
+ - **必读**:方案与门禁 `references/google-ads/google-ads-campaign-plan.md` + **`assets/campaign-create-template.json`**(先 Read)+ `assets/campaign-create-template.md` + `rules/google-ads-launch-plan-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` + `rules/google-ads-pmax-launch-plan-template.md` + `references/google-ads/pmax-api.md`。
61
61
  - **创建路径选择**:
62
62
  - 已有 AI 智投草稿 → 走 **W4**。
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。
63
+ - **PMax 出方案/创建** → **`assets/pmax-create-template.json`**(先 Read)+ `pmax-create-template.md` + `google-ads-pmax-launch-plan-template.md` + `pmax-api.md`:JSON →(创建阶段 `pmax-validate`)→ **写代码投影完整审查稿** → 用户确认 → `pmax-create`(**勿**用 Search `campaign-create`)。
64
+ - **用户给了 Excel/表格方案** → **方案源轨**:见 `google-ads-plan-source-fidelity.md`——Agent **写脚本**转 JSON;投影完整审查稿后停住或再创建;要创建再 **`ad geo resolve`** → validate → 确认 → create(**禁止**对话手填完整 JSON)。
65
+ - 搜索系列从零出方案 → `google-ads-campaign-plan.md` + `google-ads-launch-plan-template.md`:JSON → 写代码投影审查稿;要创建再 `campaign-validate` → 用户确认 → `campaign-create`。
66
+ - 已有完整结构化 JSON 且要创建 → validate → **写代码投影审查稿** → 用户确认 → create。
67
67
  - **步骤(Search · 仅出方案,无账户)**:
68
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. **停**;勿追问账户为前置条件。
69
+ 2. 填系列/组/词/RSA/预算假设;`account`=`[PENDING_ACCOUNT]`;地域用国家名占位(勿编造 geo 数字 id);JSON 落盘。
70
+ 3. **写代码**按 `google-ads-launch-plan-template.md` 从 JSON 投影完整审查稿(默认 MD;用户要表格则出 Excel)→ 交给用户;说明「选定账户后可继续 validate/create」。
71
+ 4. **停**;勿追问账户为前置条件;**禁止**只交概览表。
72
72
  - **步骤(PMax 方案 → 创建)**:
73
73
  1. **创建阶段**账户:`list-accounts -m Google -k <id>`;落地页与品牌从官网/RAG 归纳。仅出方案跳过本步。
74
74
  2. 地域/语言:多国用 `ad geo resolve`,单国用 `ad geo search`;语言 id 写入 JSON。
75
- 3. 复制 `pmax-create-template.json` 填文案/预算/图片;**必须**含 `campaignExtensions`(至少 callouts + structuredSnippets);**Lead Gen/B2B 默认** `campaignExtensions.leadForm`(方案 Markdown 须单列表单节)。
76
- 4. 门禁:`ad pmax-validate --config-file ./pmax.json --json-out ./snap-pmax`。
77
- 5. 输出 JSON + Markdown 方案 → 用户确认 → `ad pmax-create --commit "…"`。
75
+ 3. 复制 `pmax-create-template.json` 填文案/预算/图片并落盘;**必须**含 `campaignExtensions`(至少 callouts + structuredSnippets);**Lead Gen/B2B 默认** `campaignExtensions.leadForm`。
76
+ 4. 创建阶段门禁:`ad pmax-validate --config-file ./pmax.json --json-out ./snap-pmax`。
77
+ 5. **写代码**按 `google-ads-pmax-launch-plan-template.md` 从 JSON 投影完整审查稿 → 用户审查确认 → `ad pmax-create --commit "…"`。
78
78
  6. 复核:`ad campaigns` / `ad pmax-get`;缺表单时 `ad extension lead-form` 补挂。
79
79
  - **步骤(Search · 方案文件 → 创建)**:
80
80
  1. Read `campaign-create-template.json`;Agent 写转换脚本读 Excel → 写出 `campaign.json`(匹配类型按方案分块)。
81
81
  2. `ad geo resolve -a <id> --from-file ./locations.json --json-out ./snap-geo`,把 id 写回 JSON。
82
- 3. `ad campaign-validate`;**有不合规 → 询问「您自己改还是我帮您改?」**(见 `google-ads-plan-source-fidelity.md`)→ 确认摘要 → `campaign-create` → `batch get` / `batch diff` / 自动补扩展;若 Agent 代改过 → **创建完成报告**(创建清单 + 从 xxx→xxx + 原因)。
82
+ 3. `ad campaign-validate`;**有不合规 → 询问「您自己改还是我帮您改?」**(见 `google-ads-plan-source-fidelity.md`)→ **写代码投影完整审查稿** → 用户确认 → `campaign-create` → `batch get` / `batch diff` / 自动补扩展;若 Agent 代改过 → **创建完成报告**(创建清单 + 从 xxx→xxx + 原因)。
83
83
  - **步骤(Search 一体化创建,无现成方案文件)**:
84
84
  1. 地域:多国 `ad geo resolve`;单国 `ad geo search -a <id> -q "United States"`(仍禁止编造)。
85
85
  2. 门禁:`ad campaign-validate --config-file ./campaign.json`(必跑)。
86
- 3. 用户确认后创建:`ad campaign-create --config-file ./campaign.json`,记录返回 taskId。
87
- 4. 轮询:`ad batch get --id <taskId> --config-file … --json-out …` 直至非 Creating;**读落盘 `agentWorkflow.nextCommand`**(`--json-out` 时人读提示不会出现)。
88
- 5. **必做** `ad batch diff`(含投放国家);`ok===false` / exit 2 时按 `missing[].remediateCommand` **自动** `ad geo add` / `ad extension *` 补建,勿反问用户(见 `google-ads-campaign-plan.md` § batch diff 后自动补建)。
89
- 6. 复核:`ad campaigns` / `ad extension list` 确认系列与扩展齐全。
86
+ 3. **写代码**按 `google-ads-launch-plan-template.md` 从 JSON 投影完整审查稿 → 用户确认。
87
+ 4. 创建:`ad campaign-create --config-file ./campaign.json`,记录返回 taskId。
88
+ 5. 轮询:`ad batch get --id <taskId> --config-file … --json-out …` 直至非 Creating;**读落盘 `agentWorkflow.nextCommand`**(`--json-out` 时人读提示不会出现)。
89
+ 6. **必做** `ad batch diff`(含投放国家);`ok===false` / exit 2 时按 `missing[].remediateCommand` **自动** `ad geo add` / `ad extension *` 补建,勿反问用户(见 `google-ads-campaign-plan.md` § batch diff 后自动补建)。
90
+ 7. 复核:`ad campaigns` / `ad extension list` 确认系列与扩展齐全。
90
91
  - **精细管理与日常运营**:`ad adgroup-create` / `ad keyword-create` / `ad keyword-negative-create` / `ad ad-create`(拓词辅助见 **W5**);调整用 `ad adgroup-status` / `ad campaign-status` / `ad ad-delete` / `ad keyword-negative-delete`。完整参数见 `references/google-ads/google-ads-write.md`;列表复核见 `google-ads-read.md`。
91
92
  - **产物**:系列(`ad campaigns` 可见)+ batch(`ad batch get` / `batch diff` 补齐扩展与地域);关键词匹配格式 `running shoes`=广泛 / `"..."`=词组 / `[...]`=精确;结构性写操作须用户确认;写后用成对读命令复核。
92
93
 
@@ -19,8 +19,8 @@
19
19
 
20
20
  | 阶段 | 触发(满足其一即可) | 要不要 Google 账户 | Agent 必须做 | **禁止** |
21
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 |
22
+ | **仅出方案** | 「出方案 / 规划 / 先别创建 / 先别开户 / 先别投钱 / 只要表格」;或用户**未**给账户且**未**说要创建/发布 | **不必须** | 落盘同构 JSON → **写代码**投影完整审查稿(默认 MD;用户指定则 Excel 等);`account` / geo 数字 id 用占位并标注「待选定账户后补」 | **因缺账户 ID 阻塞交付**;只交概览表;未确认创建就跑 `list-accounts` 逼用户给号;未确认就 `campaign-create` |
23
+ | **创建** | 用户已确认方案并明确要创建/发布,或已提供可用 `mediaCustomerId` 且意图是落地 | **必须** | `list-accounts` → `geo resolve` → 填真 id → `campaign-validate` → **写代码投影完整审查稿** → 用户确认 → `campaign-create` → batch… | 编造 geo id;跳过 validate;跳过完整审查稿 |
24
24
 
25
25
  **缺参时(仅出方案)**:用户只给官网 URL、未给预算/地域/账户 → 先从官网归纳产品/落地页(必要时 `google-ads-landing-page-discovery-via-webfetch.md`),预算/地域可合理默认并在方案里写明假设;**账户 ID 一律不追问为前置条件**(写 `[PENDING_ACCOUNT]` 即可)。仅当缺官网且无法推断产品时才追问 1 项;不得因信息不全就降级为「随便写几条广告」,也**不得**把「请先提供广告账户」当成第一步。
26
26
 
@@ -40,7 +40,7 @@
40
40
  - **Agent Read 顺序(建系列 / 出方案前必做)**:① `assets/campaign-create-template.json`(复制/改写的结构真相源)→ ② `assets/campaign-create-template.md`(字段说明与踩坑)。**禁止**只读 `.md` 凭印象拼 JSON。
41
41
  - **方案文件(Excel 等)额外必读**:`references/google-ads/rules/google-ads-plan-source-fidelity.md`(Agent **写代码**直接转成 campaign-create JSON;禁止对话手填完整 JSON)。
42
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。
43
+ - **PMax 系列创建**走独立流水线(勿用本文件 JSON 模板):**先 Read `assets/pmax-create-template.json`** + `assets/pmax-create-template.md` + `rules/google-ads-pmax-launch-plan-template.md`;落盘 JSON →(创建阶段 `pmax-validate`)→ **写代码投影完整审查稿** → 用户确认 → `pmax-create`;**Lead Gen/B2B 默认含 `campaignExtensions.leadForm`**(审查稿须单列表单节)。运营诊断见 `rules/google-ads-pmax-guide.md`。PMax **仅出方案**同样**禁止**因缺账户阻塞;`account` 占位,跳过 validate/create。
44
44
  - 搜索网络:仅 Google 搜索(`TargetSearchNetwork`/`TargetContentNetwork`/`TargetPartnerSearchNetwork` 均为 false)。
45
45
  - **地域 id(创建阶段)**:多国用 **`ad geo resolve`**(单国可用 `ad geo search`);**禁止**编造 / ISO 心算。外层 `locations` 与 `targetedLocations` 数量必须一致(validate 硬校验)。**仅出方案**可用国家名占位,勿为取 id 而先逼用户给账户。
46
46
  - **匹配类型**:转换脚本按方案写入 EXACT/PHRASE/BROAD 分块(有方案源时勿压成一律 BROAD)。
@@ -62,7 +62,7 @@
62
62
  | 6 | **创建阶段**:`ad campaign-validate --config-file <json>`;**仅出方案 → 跳过**,交付时说明「有账户后再 validate」 | 下文「校验」 |
63
63
  | 6b | **方案来自用户且不合规**(创建前):列出问题 → **询问**「您自己改还是我帮您改?」→ 按选择处理后再 validate(**禁止**未问就静默改方案) | **`rules/google-ads-plan-source-fidelity.md`** § 用户方案不合规 |
64
64
  | 6c | 用户选「我帮您改」:改 JSON 时**同步落盘变更账本**(from → to + reason) | 同上 § Agent 代改后:创建完成报告 |
65
- | 7 | 给人看:国家(创建阶段补 **国家↔id**)+ **匹配类型条数** + Markdown 投影;**勿**贴整份 JSON 当主交付 | `google-ads-launch-plan-template.md` |
65
+ | 7 | **审查稿(必做)**:Agent **写代码**读 JSON,按 `google-ads-launch-plan-template.md` 投影完整文件(默认 MD;用户要 Excel 等则改格式);须含全部关键词与 RSA 正文;**禁止**概览表代替;**勿**贴整份 JSON 当主交付 | `google-ads-launch-plan-template.md` |
66
66
  | 8 | 用户确认后 **`ad campaign-create`** | `references/google-ads/google-ads-write.md` |
67
67
  | 9 | 每隔5s 获取创建结果 | `ad batch get --id <taskId> --config-file ./campaign.json` |
68
68
  | 10 | 成功或部分成功后 **`ad batch diff`** 对照 JSON 与账户实况 | |
@@ -83,7 +83,8 @@
83
83
  | `references/google-ads/rules/google-ads-keyword-taxonomy.md` | 无方案源时的核心/长尾与匹配块**建议** |
84
84
  | `references/google-ads/rules/google-ads-compliance.md` | 词与文案合规 |
85
85
  | `references/google-ads/rules/sensitive-industries.md` | 敏感行业(若相关) |
86
- | `references/google-ads/rules/google-ads-launch-plan-template.md` | 用户可见 Markdown 结构与 RSA/否词表 |
86
+ | `references/google-ads/rules/google-ads-launch-plan-template.md` | 搜索审查稿结构;Agent 写代码从 JSON 投影 |
87
+ | `references/google-ads/rules/google-ads-pmax-launch-plan-template.md` | PMax 审查稿结构;Agent 写代码从 JSON 投影 |
87
88
  | `references/google-ads/rules/google-ads-creative-optimization.md` | RSA 创意主题;`campaign-validate` 强制 **15** 标题 + **4** 描述 |
88
89
  | **`assets/campaign-create-template.json`** + `assets/campaign-create-template.md` | JSON 结构(先 Read `.json`)+ 字段说明 |
89
90
 
@@ -98,7 +99,7 @@
98
99
  | `references/google-ads/rules/google-ads-keyword-optimization.md` | 上线后优化,非首建 |
99
100
  | `references/google-ads/rules/google-ads-account-audit.md` | 账户诊断,非首建 |
100
101
  | `references/google-ads/rules/google-ads-audience-strategy.md` | 受众/RLSA |
101
- | `references/google-ads/rules/google-ads-pmax-guide.md` | PMax 运营/诊断;**创建**见 `assets/pmax-create-template.md` |
102
+ | `references/google-ads/rules/google-ads-pmax-guide.md` | PMax 运营/诊断;**创建**见 `assets/pmax-create-template.md` + `google-ads-pmax-launch-plan-template.md` |
102
103
  | `references/google-ads/pmax-api.md` | PMax 网关路径与 Search API 边界 |
103
104
 
104
105
  复述给用户:**3–5 条**与本次任务相关的合规/策略要点即可,无需罗列全部文件名。
@@ -42,7 +42,7 @@
42
42
 
43
43
  ## 新建广告系列(方案 + 创建)
44
44
 
45
- > **Search 流程与校验**:`references/google-ads/google-ads-campaign-plan.md`。本文件只写 **命令参数**(`campaign-validate` / `campaign-create` / `batch` 见下文各节)。
45
+ > **Search 流程与校验**:`references/google-ads/google-ads-campaign-plan.md`。审查稿结构:`rules/google-ads-launch-plan-template.md`(JSON 落盘后 Agent **写代码**投影完整审查稿,用户确认再 create)。本文件只写 **命令参数**(`campaign-validate` / `campaign-create` / `batch` 见下文各节)。
46
46
 
47
47
  ---
48
48
 
@@ -50,12 +50,13 @@
50
50
 
51
51
  > **与 Search 隔离**:勿用 `campaign-create` 或 `campaign-create-template.json`。网关摘录见 `references/google-ads/pmax-api.md`。
52
52
 
53
- | 步骤 | 命令 |
53
+ | 步骤 | 命令 / 动作 |
54
54
  | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
55
55
  | 模板 | 复制 `assets/pmax-create-template.json`,字段见 `assets/pmax-create-template.md` |
56
56
  | **素材转换** | `siluzan-tso ad pmax-image-convert --input ./banner.jpg --output-dir ./assets --prefix <name> [--update-config ./pmax.json]` |
57
57
  | 地理 ID | 多国:`ad geo resolve -a <accountId> --from-file ./locations.json --json-out ./snap-geo`;单国:`ad geo search -a <accountId> -q "<地区名>"` |
58
58
  | 校验 | `siluzan-tso ad pmax-validate --config-file ./pmax.json [--json-out ./snap-pmax]`(图片规格 + 文案超长 `lengthViolations`;超长勿自动截断,见 `references/google-ads/google-ads-campaign-plan.md` § 超长人工确认) |
59
+ | **审查稿** | Agent **写代码**读 JSON,按 `rules/google-ads-pmax-launch-plan-template.md` 投影完整文件(默认 MD;用户指定则 Excel 等)→ 用户确认;**禁止**只交概览表 |
59
60
  | 创建 | `siluzan-tso ad pmax-create --config-file ./pmax.json [--json-out ./snap-pmax]` |
60
61
  | 复核 | `siluzan-tso ad campaigns -a <accountId> --json-out ./snap` → `channelTypeV2` 为 `PERFORMANCE_MAX` |
61
62
 
@@ -17,7 +17,8 @@
17
17
  | `google-ads-pmax-guide.md` | PMax 运营(配合 `assets/pmax-create-template.md`) |
18
18
  | `google-ads-conversion-architecture.md` | 转化追踪架构 |
19
19
  | `google-ads-landing-page-discovery-via-webfetch.md` | 落地页发现(WebFetch) |
20
- | `google-ads-launch-plan-template.md` | 上线计划模板 |
20
+ | `google-ads-launch-plan-template.md` | 搜索投放审查稿(Agent 写代码从 JSON 投影) |
21
+ | `google-ads-pmax-launch-plan-template.md` | PMax 投放审查稿(Agent 写代码从 JSON 投影) |
21
22
  | `sensitive-industries.md` | 敏感行业限制 |
22
23
 
23
24
  宿主编排自动优化:`references/operations/hosted-automation-optimize-index.md`。
@@ -1,17 +1,21 @@
1
1
  # 广告投放计划模板
2
2
 
3
- > 用途:从已确认的 `campaign-create` JSON **投影**用户可见的 Markdown 表格(勿与 JSON 矛盾)。流程与门禁见 `references/google-ads/google-ads-campaign-plan.md`。
4
- > 触发:用户要投放方案/确认稿;**先完成 JSON + validate,再填本模板正文**。
5
- > 字段契约:`assets/campaign-create-template.json` + `campaign-create-template.md`
6
- > 关键词数量建议:`google-ads-keyword-taxonomy.md`(Agent 参考,CLI 不强制)
3
+ > 用途:用户审查用的搜索广告计划结构;字段须与已落盘的 `campaign-create` JSON 一致。流程见 `references/google-ads/google-ads-campaign-plan.md`。
4
+ > 触发:出方案 / 创建前确认。
5
+ > 字段契约:`assets/campaign-create-template.json` + `campaign-create-template.md`
6
+ > 关键词数量建议:`google-ads-keyword-taxonomy.md`
7
7
 
8
8
  ---
9
9
 
10
10
  ## 交付顺序(固定)
11
11
 
12
- 1. **JSON 代码块**(唯一数据源)
13
- 2. **下方模板正文**(从 JSON 填充)
14
- 3. **待确认**(改需求只改 JSON)
12
+ 1. 落盘与模板同构的 **`campaign-create` JSON**(唯一可执行数据源;对话里勿贴整份 JSON 当主交付)。
13
+ 2. **创建阶段**跑 `ad campaign-validate`;**仅出方案**可跳过 validate。
14
+ 3. **审查稿(必做)**:Agent **写代码**(Node/Python)读取该 JSON,按下方模板投影为完整文件并交给用户审查。
15
+ - 默认输出 **Markdown**(`./campaign-plan.md`)。
16
+ - 用户要求 Excel / 表格 / 其他格式时,同一脚本改输出格式;数值与文案仍只从 JSON 读出。
17
+ - 审查稿须含:**全部**广告组关键词、系列否定词、每组 RSA 全部标题/描述、Extensions 全文——**禁止**只交「方案总结」条数勾选/概览表。
18
+ 4. 用户确认后改需求只改 JSON → 重跑脚本刷新审查稿 →(创建阶段)再 validate → `ad campaign-create`。
15
19
 
16
20
  ### 创意与否定词数量(关键词见 taxonomy)
17
21
 
@@ -55,7 +59,7 @@
55
59
 
56
60
  ## 模板正文(Markdown 投影,须与 JSON 一致)
57
61
 
58
- AI 生成计划时,**先写好 JSON,再按以下格式输出说明**。`{{占位符}}` 由 JSON 字段填充,不得手写与 JSON 矛盾的数值。
62
+ 投影脚本按以下格式写审查稿。`{{占位符}}` 只从 JSON 读取,不得手写与 JSON 矛盾的数值。
59
63
 
60
64
  ---
61
65
 
@@ -0,0 +1,116 @@
1
+ # PMax 广告投放计划模板
2
+
3
+ > 用途:用户审查用的 Performance Max 计划结构;字段须与已落盘的 `pmax-create` JSON 一致。
4
+ > 触发:出 PMax 方案 / `pmax-create` 前确认。
5
+ > 字段契约:`assets/pmax-create-template.json` + `assets/pmax-create-template.md`
6
+ > 命令:`ad pmax-validate` / `ad pmax-create`(见 `references/google-ads/pmax-api.md`)
7
+
8
+ ---
9
+
10
+ ## 交付顺序(固定)
11
+
12
+ 1. 落盘与模板同构的 **`pmax-create` JSON**(唯一可执行数据源;勿把整份 JSON 当主交付贴进对话)。
13
+ 2. **创建阶段**跑 `ad pmax-validate --config-file … --json-out …`;**仅出方案**可跳过。
14
+ 3. **审查稿(必做)**:Agent **写代码**(Node/Python)读取该 JSON,按下方章节写出完整文件并交给用户审查。
15
+ - 默认 **Markdown**(如 `./pmax-plan.md`)。
16
+ - 用户要求 Excel / 表格 / 其他格式时,同一脚本改输出格式;文案与金额只从 JSON 投影。
17
+ - 须列出:**全部**短标题 / 长标题 / 描述、callouts、structuredSnippets、sitelinks、leadForm、businessMessage、imagePaths——**禁止**只交概览表或「15 条标题已通过」类勾选摘要。
18
+ 4. 用户确认 → 补齐图片等待办 →(必要时重跑 validate)→ `ad pmax-create`。
19
+
20
+ 多份配置(多系列)时:每个 JSON 各投影一份审查稿(或脚本合并为一份,但每组文案仍须全量列出)。
21
+
22
+ ---
23
+
24
+ ## Markdown ↔ JSON 映射
25
+
26
+ | 计划正文 | `pmax-create` JSON(camelCase) |
27
+ | -------- | ------------------------------- |
28
+ | 账户 | `account` |
29
+ | 系列名称 | `name` |
30
+ | 日预算(元) | `budget` |
31
+ | 预算/资产组名 | `budgetName`、`assetGroupName` |
32
+ | 落地页 | `finalUrls[]` |
33
+ | 商家名 | `businessName` |
34
+ | 短标题 ×15 | `headlines[]` |
35
+ | 长标题 ×5 | `longHeadlines[]` |
36
+ | 描述 ×5 | `descriptions[]` |
37
+ | 地域 / 语言 | `targetedLocations[].id`、`targetedLanguages[].id` |
38
+ | 出价 | `biddingStrategyTypeV2`、`targetCpa_BidingAmount`、`targetRoas` |
39
+ | 图片 | `imagePaths.marketing` / `square` / `logo`(或对应 assetId) |
40
+ | 视频 | `videoPath` 或 `youtubeUrlOrId` |
41
+ | 宣传信息 | `campaignExtensions.callouts[]` |
42
+ | 结构化摘要 | `campaignExtensions.structuredSnippets[]` |
43
+ | 站内链接 | `campaignExtensions.sitelinks[]` |
44
+ | 潜在客户表单 | `campaignExtensions.leadForm`(须单独成节) |
45
+ | WhatsApp | `campaignExtensions.businessMessage` |
46
+
47
+ ---
48
+
49
+ ## 模板正文(须与 JSON 一致)
50
+
51
+ 脚本投影时按下列章节输出;`{{…}}` 仅表示从 JSON 填入。
52
+
53
+ ```markdown
54
+ # Google PMax 广告投放计划
55
+
56
+ > 账户 ID:{{account}}
57
+ > 制定日期:{{日期}}
58
+ > 计划状态:**待确认**
59
+
60
+ ## 一、方案总览
61
+
62
+ | 项目 | 内容 |
63
+ | ---- | ---- |
64
+ | 系列名称 | {{name}} |
65
+ | 日预算(元) | {{budget}} |
66
+ | 出价策略 | {{biddingStrategyTypeV2}} |
67
+ | 目标 CPA / ROAS | {{targetCpa_BidingAmount}} / {{targetRoas}} |
68
+ | 地域 ID | {{targetedLocations}} |
69
+ | 语言 ID | {{targetedLanguages}} |
70
+ | 落地页 | {{finalUrls}} |
71
+ | 商家名 | {{businessName}} |
72
+
73
+ ## 二、资产组文案(全量)
74
+
75
+ | 资产类型 | 文案 | 字符数 |
76
+ | -------- | ---- | ------ |
77
+ | Business Name | {{businessName}} | … |
78
+ | Headline 1…15 | {{headlines[i]}} | … |
79
+ | Long Headline 1…5 | {{longHeadlines[i]}} | … |
80
+ | Description 1…5 | {{descriptions[i]}} | … |
81
+
82
+ ## 三、附加资产(全量)
83
+
84
+ - callouts:逐条列出
85
+ - structuredSnippets:header + values 全量
86
+ - sitelinks:text + destinationUrl 全量
87
+
88
+ ## 四、潜在客户表单
89
+
90
+ | 项目 | 内容 |
91
+ | ---- | ---- |
92
+ | 标题 / 描述 | {{leadForm.headline}} / {{leadForm.description}} |
93
+ | 收集字段 | {{leadForm.fields}} |
94
+ | 隐私政策 URL | {{leadForm.privacyPolicyUrl}} |
95
+ | 落地页 | {{leadForm.finalUrl}} |
96
+
97
+ (JSON 无 leadForm 且为 Lead Gen/B2B 时:须说明省略原因,或补回后再审查。)
98
+
99
+ ## 五、WhatsApp / 图片与视频
100
+
101
+ 列出 businessMessage 与 imagePaths / videoPath / youtubeUrlOrId;缺图写在「待确认」。
102
+
103
+ ## 六、待确认
104
+
105
+ - 占位账户、缺图、privacyPolicyUrl 待核实等
106
+ ```
107
+
108
+ JSON 中没有的内容(受众信号建议、效果预估、落地页优化建议)可作**附录**,并标注「非 JSON 字段」;不得写入后当作已进创建配置。
109
+
110
+ ---
111
+
112
+ ## 禁止
113
+
114
+ - 只输出概览表(账户/预算/「文案已齐」勾选)而不列全文案
115
+ - 手抄与 JSON 不一致的审查稿;改文案只改 JSON 后重跑投影脚本
116
+ - 未获用户确认审查稿就执行 `pmax-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.42-beta.2'
12
+ $PKG_VERSION = '1.1.42-beta.3'
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.42-beta.2"
12
+ readonly PKG_VERSION="1.1.42-beta.3"
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"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "siluzan-tso-cli",
3
- "version": "1.1.42-beta.2",
3
+ "version": "1.1.42-beta.3",
4
4
  "description": "Siluzan 广告账户管理 CLI — 查询账户、余额、消耗数据,管理绑定关系与充值。",
5
5
  "keywords": [
6
6
  "ad-account",
@@ -1,47 +0,0 @@
1
- # Skill 维护指南(agentskills.io 对齐)
2
-
3
- > 给人 / 维护 Agent 读。运行时用户任务**不要**加载本文件。
4
-
5
- 对齐:[Agent Skills Specification](https://agentskills.io/specification)、[Best practices](https://agentskills.io/skill-creation/best-practices)、[Optimizing descriptions](https://agentskills.io/skill-creation/optimizing-descriptions)、[Evaluating skills](https://agentskills.io/skill-creation/evaluating-skills)。
6
-
7
- ## 四层职责(禁止写错层)
8
-
9
- | 层 | 写什么 | 禁止写什么 |
10
- | -- | ------ | ---------- |
11
- | 1 `SKILL.md` | 意图路由表、即时规范(Gotchas)、加载一句话 | 安装长文、完整参数表、业务流程细节、双规范路径 |
12
- | 2 `agent-conventions.md` | 加载纪律、数据处理、时间/币种、自检、**§十四怎么回复用户** | 具体 CLI 选项表、某 P/W 的编号步骤 |
13
- | 3 命令 reference | CLI 语法、选项表、字段/JSON 路径、易错口径;文首「流程见 playbooks/workflows Xxx」 | 「先做 A 再做 B」长流程、完整报告纲要、用户话术模板 |
14
- | 4 playbooks/workflows | `触发 / 必读 / 编号步骤 / 产物`;步骤只写命令名+关键 flag | 完整参数表、重复 conventions 正文、suggestion chips 全文清单 |
15
-
16
- 报告结构细节仍在 `report-templates/*.md`(由层 4「必读」指向)。`intent-routing.md` 只做消歧,不进层 2。
17
-
18
- ## 硬约束
19
-
20
- | 项 | 规则 |
21
- | -- | ---- |
22
- | `name` | 小写+连字符,与安装目录一致,≤64 |
23
- | `description` | ≤1024 字符;第三人称;WHAT + WHEN + 负向触发;细则路由放 body / `intent-routing.md`,**勿塞进 description** |
24
- | `SKILL.md` | 建议 <200 行本仓库目标 / 官方 <500 行;只做层 1 |
25
- | 引用深度 | 从 `SKILL.md` **一层**指向 `references/*`;避免 A→B→C 嵌套链 |
26
- | 长 reference | >100 行须有 `## Contents`;按域拆成 2–3 个聚焦模块优于巨型单文件 |
27
- | 脚本 | 脆弱/重复逻辑放 CLI 或 `scripts/`,勿让模型每次重写 |
28
- | 沟通规范 | 只维护在 `agent-conventions.md` §十四;`user-communication-guide.md` 仅 stub |
29
-
30
- ## 本仓库编辑流
31
-
32
- 1. 只改 `tso-cli/assets/siluzan-ads/`(勿改安装副本)。
33
- 2. 改 `SKILL.md.tmpl` 或 `snippets/agent-preamble.md` 后:`node scripts/gen-skill-docs.mjs`。
34
- 3. 业务细则进对应域 `references/`(层 3);工作流卡片进 `playbooks.md` / `workflows.md`(层 4)。
35
- 4. 通用纪律与沟通只写在 `agent-conventions.md`(层 2),其他文档单行指向。
36
- 5. 验证:`skills-ref validate`(若已装)+ `pnpm run eval:skill -- --stub` 相关场景。
37
-
38
- ## Progressive disclosure(本 skill)
39
-
40
- 1. L1 触发:`name` + `description`
41
- 2. 层 1 body:`SKILL.md` 路由表 + 即时规范
42
- 3. 层 2–4:按路由表 Read conventions(按需)+ **一个**工作流卡片 + **一个** leaf 命令 reference
43
-
44
- ## 评测建议
45
-
46
- - Description:准备 should-trigger / should-not-trigger 查询(见官方 optimizing-descriptions)。
47
- - 输出:`tso-cli/eval/cases/*.scenario.json` + skill-eval harness;改路由后跑相关 stub 场景防回归。