siluzan-tso-cli 1.1.12 → 1.1.13

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.
Files changed (44) hide show
  1. package/README.md +33 -29
  2. package/dist/index.js +2267 -1440
  3. package/dist/skill/SKILL.md +93 -34
  4. package/dist/skill/_meta.json +2 -2
  5. package/dist/skill/assets/campaign-create-template.json +96 -101
  6. package/dist/skill/references/account-analytics.md +64 -62
  7. package/dist/skill/references/accounts.md +130 -130
  8. package/dist/skill/references/clue.md +13 -13
  9. package/dist/skill/references/finance.md +62 -61
  10. package/dist/skill/references/forewarning.md +40 -39
  11. package/dist/skill/references/google-ads-rules/google-ads-account-audit.md +165 -161
  12. package/dist/skill/references/google-ads-rules/google-ads-audience-strategy.md +94 -85
  13. package/dist/skill/references/google-ads-rules/google-ads-campaign-optimization.md +97 -85
  14. package/dist/skill/references/google-ads-rules/google-ads-compliance.md +274 -272
  15. package/dist/skill/references/google-ads-rules/google-ads-conversion-architecture.md +97 -82
  16. package/dist/skill/references/google-ads-rules/google-ads-creative-optimization.md +143 -139
  17. package/dist/skill/references/google-ads-rules/google-ads-keyword-optimization.md +131 -128
  18. package/dist/skill/references/google-ads-rules/google-ads-keyword-strategy.md +175 -173
  19. package/dist/skill/references/google-ads-rules/google-ads-launch-plan-template.md +126 -123
  20. package/dist/skill/references/google-ads-rules/google-ads-pmax-guide.md +86 -73
  21. package/dist/skill/references/google-ads-rules/sensitive-industries.md +43 -8
  22. package/dist/skill/references/google-ads.md +201 -196
  23. package/dist/skill/references/open-account-by-media.md +23 -23
  24. package/dist/skill/references/open-account-google-ui.md +26 -26
  25. package/dist/skill/references/optimize.md +8 -8
  26. package/dist/skill/references/reporting.md +28 -28
  27. package/dist/skill/references/setup.md +10 -7
  28. package/dist/skill/references/tso-home.md +11 -11
  29. package/dist/skill/references/workflows.md +28 -26
  30. package/dist/skill/report-templates/README.md +22 -21
  31. package/dist/skill/report-templates/REPORT-WORKFLOW.md +9 -9
  32. package/dist/skill/report-templates/bing-period-report.md +11 -11
  33. package/dist/skill/report-templates/google-ads-diagnosis.md +86 -86
  34. package/dist/skill/report-templates/google-period-report.md +23 -23
  35. package/dist/skill/report-templates/report-template-academic.html +433 -341
  36. package/dist/skill/report-templates/report-template-dark.html +440 -257
  37. package/dist/skill/report-templates/report-template-formal.html +438 -288
  38. package/dist/skill/report-templates/report-template-mobile.html +456 -241
  39. package/dist/skill/report-templates/report-template-onepager.html +452 -240
  40. package/dist/skill/report-templates/report-template-print.html +355 -243
  41. package/dist/skill/report-templates/report-template.html +485 -392
  42. package/dist/skill/report-templates/tiktok-period-report.md +10 -10
  43. package/package.json +13 -13
  44. package/scripts/postinstall.mjs +3 -1
@@ -1,5 +1,7 @@
1
1
  # Google 广告管理命令详解
2
+
2
3
  > 所属 skill:`siluzan-tso`。
4
+
3
5
  ---
4
6
 
5
7
  ## 新建广告系列的流程
@@ -11,40 +13,43 @@
11
13
 
12
14
  操作开始前,**AI 必须先阅读完下面所有文档**,并在心智模型中内化规则后,才能进入任何「方案规划 / 广告创建 / 调整」步骤,严禁只读 `google-ads-launch-plan-template.md` 就直接出方案。
13
15
 
14
- | 文档地址 | 文档内容 |
15
- |----------|-----------|
16
- | `references/google-ads-rules/google-ads-compliance.md` | **Google 广告合规指南**:关键词 & 文案审核通过规则、编辑规范、禁止内容、虚假承诺处理、商标规则、多语言规则 |
17
- | `references/google-ads-rules/sensitive-industries.md` | **敏感行业合规细则**:酒精 / 赌博 / 金融 / 加密 / 医疗 / 法律等 15 个行业的关键词生成规则与地区限制 |
18
- | `references/google-ads-rules/google-ads-keyword-strategy.md` | **关键词策略与优化技巧**:匹配类型策略、分组结构、否定词技巧、出价意图分层、搜索词挖掘、竞品策略、PMax/AI Max 协同、信号污染防治 |
19
- | `references/google-ads-rules/google-ads-keyword-optimization.md` | **关键词持续优化指南**:基于投放数据的迭代优化闭环——指标解读、决策框架(暂停/提价/降价/加否定)、优化节奏、转化归因、预算再分配、衰减检测、竞争响应、CRM 反馈 |
20
- | `references/google-ads-rules/google-ads-creative-optimization.md` | **广告创意与素材优化**:RSA 六类主题法、Ad Strength 评分、文案 A/B 测试、创意疲劳管理、附加信息(Sitelink/Callout/Snippet/Image)优化、DKI/倒计时/IF 函数、落地页 CRO、PMax 创意策略、多语言管理 |
21
- | `references/google-ads-rules/google-ads-campaign-optimization.md` | **广告系列结构与投放优化**:系列类型选择决策树、电商/线索/本地/SaaS 架构模板、出价策略校准与启动协议、地域/设备优化、转化追踪(Enhanced Conversions/离线导入/价值规则)、预算优化、网络设置、实验设计、账户健康诊断 |
22
- | `references/google-ads-rules/google-ads-launch-plan-template.md` | **投放计划确认模板**:AI 生成完整投放方案的 Markdown 模板——信息收集清单、计划格式规范、字段与 CLI 参数映射、合规检查、执行命令预览;用于「用户确认后再执行」的工作流 |
23
- | `references/google-ads-rules/google-ads-account-audit.md` | **账户诊断与审计指南**:三层审计框架(账户→系列→组/词)、5 分钟快速健康检查、结构/转化/出价/关键词/创意/地域/设备/落地页/预算审计、竞争态势分析、20 条常见问题诊断速查表、审计报告模板 |
24
- | `references/google-ads-rules/google-ads-conversion-architecture.md` | **转化信号架构设计**:信号质量层级(L1-L5)、转化动作设计框架、多阶段漏斗价值设计、Enhanced Conversions 实施、离线转化导入策略、Consent Mode v2、利润导向出价(Profit-Based Bidding)、信号质量诊断与迁移路径、7 个行业推荐配置 |
25
- | `references/google-ads-rules/google-ads-audience-strategy.md` | **受众策略与分析**:受众类型全览、业务类型×漏斗阶段策略矩阵、观察 vs 定向模式决策、再营销四层分级(hot/warm/cool/cold)、RLSA 三大策略、Customer Match、受众数据分析框架、受众排除策略、2025-2026 隐私趋势 |
26
- | `references/google-ads-rules/google-ads-pmax-guide.md` | **PMax 与 Demand Gen 深度运营**:PMax 运营原理、Search 蚕食诊断(20% 品牌花费阈值)、Asset Group 策略、渠道级分析(2025 新功能)、搜索词/否定词/品牌排除管理、受众信号优化、Demand Gen 战术、AI Max for Search 协同、AI Overview 广告策略、常见问题诊断 |
16
+ | 文档地址 | 文档内容 |
17
+ | ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
18
+ | `references/google-ads-rules/google-ads-compliance.md` | **Google 广告合规指南**:关键词 & 文案审核通过规则、编辑规范、禁止内容、虚假承诺处理、商标规则、多语言规则 |
19
+ | `references/google-ads-rules/sensitive-industries.md` | **敏感行业合规细则**:酒精 / 赌博 / 金融 / 加密 / 医疗 / 法律等 15 个行业的关键词生成规则与地区限制 |
20
+ | `references/google-ads-rules/google-ads-keyword-strategy.md` | **关键词策略与优化技巧**:匹配类型策略、分组结构、否定词技巧、出价意图分层、搜索词挖掘、竞品策略、PMax/AI Max 协同、信号污染防治 |
21
+ | `references/google-ads-rules/google-ads-keyword-optimization.md` | **关键词持续优化指南**:基于投放数据的迭代优化闭环——指标解读、决策框架(暂停/提价/降价/加否定)、优化节奏、转化归因、预算再分配、衰减检测、竞争响应、CRM 反馈 |
22
+ | `references/google-ads-rules/google-ads-creative-optimization.md` | **广告创意与素材优化**:RSA 六类主题法、Ad Strength 评分、文案 A/B 测试、创意疲劳管理、附加信息(Sitelink/Callout/Snippet/Image)优化、DKI/倒计时/IF 函数、落地页 CRO、PMax 创意策略、多语言管理 |
23
+ | `references/google-ads-rules/google-ads-campaign-optimization.md` | **广告系列结构与投放优化**:系列类型选择决策树、电商/线索/本地/SaaS 架构模板、出价策略校准与启动协议、地域/设备优化、转化追踪(Enhanced Conversions/离线导入/价值规则)、预算优化、网络设置、实验设计、账户健康诊断 |
24
+ | `references/google-ads-rules/google-ads-launch-plan-template.md` | **投放计划确认模板**:AI 生成完整投放方案的 Markdown 模板——信息收集清单、计划格式规范、字段与 CLI 参数映射、合规检查、执行命令预览;用于「用户确认后再执行」的工作流 |
25
+ | `references/google-ads-rules/google-ads-account-audit.md` | **账户诊断与审计指南**:三层审计框架(账户→系列→组/词)、5 分钟快速健康检查、结构/转化/出价/关键词/创意/地域/设备/落地页/预算审计、竞争态势分析、20 条常见问题诊断速查表、审计报告模板 |
26
+ | `references/google-ads-rules/google-ads-conversion-architecture.md` | **转化信号架构设计**:信号质量层级(L1-L5)、转化动作设计框架、多阶段漏斗价值设计、Enhanced Conversions 实施、离线转化导入策略、Consent Mode v2、利润导向出价(Profit-Based Bidding)、信号质量诊断与迁移路径、7 个行业推荐配置 |
27
+ | `references/google-ads-rules/google-ads-audience-strategy.md` | **受众策略与分析**:受众类型全览、业务类型×漏斗阶段策略矩阵、观察 vs 定向模式决策、再营销四层分级(hot/warm/cool/cold)、RLSA 三大策略、Customer Match、受众数据分析框架、受众排除策略、2025-2026 隐私趋势 |
28
+ | `references/google-ads-rules/google-ads-pmax-guide.md` | **PMax 与 Demand Gen 深度运营**:PMax 运营原理、Search 蚕食诊断(20% 品牌花费阈值)、Asset Group 策略、渠道级分析(2025 新功能)、搜索词/否定词/品牌排除管理、受众信号优化、Demand Gen 战术、AI Max for Search 协同、AI Overview 广告策略、常见问题诊断 |
27
29
 
28
30
  > **AI Agent 具体要求:**
29
- > - 若当前会话中尚未阅读上述任一文件,AI 必须先主动阅读,再继续下一步流程,而不是直接生成广告计划或文案。
30
- > - 在首次阅读后,AI 需用自己的话向用户**简要复述**上述文档中与本次任务强相关的 3~5 条关键合规/策略要点,并询问用户是否有本地特殊限制需要补充。
31
+ >
32
+ > - 若当前会话中尚未阅读上述任一文件,AI 必须先主动阅读,再继续下一步流程,而不是直接生成广告计划或文案。
33
+ > - 在首次阅读后,AI 需用自己的话向用户**简要复述**上述文档中与本次任务强相关的 3~5 条关键合规/策略要点,并询问用户是否有本地特殊限制需要补充。
31
34
  > - 后续生成的关键词、文案、出价与结构,必须**显式遵守这些规则**;一旦与规则冲突,应以规则优先,并向用户说明原因(例如:某些词因合规或商标问题被自动剔除)。
32
35
 
33
36
  ### 第二步:向用户补齐关键信息
34
37
 
35
- 在进入计划设计前,AI 应最少询问并确认以下关键信息(可按需追加):
36
- - **业务与转化目标**:行业、主营产品/服务、主要转化动作(表单提交 / 电话咨询 / 在线下单 等)。
37
- - **目标地区与语言**:主要投放国家/地区、语言组合、多语言站点情况。
38
- - **预算与节奏**:日预算区间、是否有阶段性活动(如大促 / 节日档期)、允许的试错周期。
39
- - **历史投放情况**:是否已有历史账户/系列/关键词表现数据,是否有必须保留/禁止使用的词或文案。
38
+ 在进入计划设计前,AI 应最少询问并确认以下关键信息(可按需追加):
39
+
40
+ - **业务与转化目标**:行业、主营产品/服务、主要转化动作(表单提交 / 电话咨询 / 在线下单 等)。
41
+ - **目标地区与语言**:主要投放国家/地区、语言组合、多语言站点情况。
42
+ - **预算与节奏**:日预算区间、是否有阶段性活动(如大促 / 节日档期)、允许的试错周期。
43
+ - **历史投放情况**:是否已有历史账户/系列/关键词表现数据,是否有必须保留/禁止使用的词或文案。
40
44
  - **合规与品牌限制**:是否涉及敏感行业、是否有品牌词 / 合作方词 / 法律风控要求等。
41
45
 
42
46
  ### 第三步:根据规则与信息生成计划并确认
43
47
 
44
48
  最终需要按照 `references/google-ads-rules/google-ads-launch-plan-template.md`
45
49
  生成对应的计划,与用户沟通确认。**在该方案中,AI 必须:**
46
- - **引用并遵守**前述规则文档中的关键条款(尤其是合规与敏感行业部分),必要时在方案对应章节标注「来源规则」。
47
- - **解释核心决定的依据**,例如为何采用某类匹配结构、为何排除某类词、为何推荐某种出价策略。
50
+
51
+ - **引用并遵守**前述规则文档中的关键条款(尤其是合规与敏感行业部分),必要时在方案对应章节标注「来源规则」。
52
+ - **解释核心决定的依据**,例如为何采用某类匹配结构、为何排除某类词、为何推荐某种出价策略。
48
53
  - **明确列出风险点与替代方案**,帮助用户在确认前做出知情决策。
49
54
 
50
55
  **只有在用户通过自然语言明确表示「同意 / 确认按此方案执行」之后**,AI 才能真正开始下面的操作;在用户未确认前,不得对账户做任何结构性改动(系列 / 广告组 / 关键词 / 创意)。
@@ -62,8 +67,8 @@
62
67
 
63
68
  ### 广告修改
64
69
 
65
- - 对用户提出的修改内容进行评估与拓展评估标准基于(references/googles-ads-rules/*.md)中的对应的文件来确认
66
- - 确认修改方案按照
70
+ - 对用户提出的修改内容进行评估与拓展评估标准基于(references/googles-ads-rules/\*.md)中的对应的文件来确认
71
+ - 确认修改方案按照
67
72
  - 读取`references/google-ads-rules/google-ads-launch-plan-template.md` 中关于计划模板的描述,节选用户需要修改的部分来按格式输出给用户确认
68
73
  - 使用对应命令来进行修改
69
74
  - 使用ad -h 来查询有哪些修改命令
@@ -77,19 +82,18 @@
77
82
 
78
83
  参考修改的流程,优化的部分需要有新旧对照的表格,其他与修改流程一致
79
84
 
80
-
81
-
82
85
  ## 下面是相关命令的示例,参考就行
83
86
 
84
87
  **ID 来源说明:**
85
88
 
86
- | 需要的 ID | 从哪里获取 |
87
- |----------|-----------|
88
- | `accountId`(`-a`) | `siluzan-tso list-accounts --json` → `mediaCustomerId` |
89
- | 广告系列 `id` | `siluzan-tso ad campaigns -a <accountId> --json` → `id` |
89
+ | 需要的 ID | 从哪里获取 |
90
+ | ------------------- | ------------------------------------------------------------ |
91
+ | `accountId`(`-a`) | `siluzan-tso list-accounts --json` → `mediaCustomerId` |
92
+ | 广告系列 `id` | `siluzan-tso ad campaigns -a <accountId> --json` → `id` |
90
93
  | 广告组 `id`、`name` | `siluzan-tso ad groups -a <accountId> --json` → `id`、`name` |
91
- | 广告 `id` | `siluzan-tso ad list -a <accountId> --json` → `id` |
92
- | 关键词 `id` | `siluzan-tso ad keywords -a <accountId> --json` → `id` |
94
+ | 广告 `id` | `siluzan-tso ad list -a <accountId> --json` → `id` |
95
+ | 关键词 `id` | `siluzan-tso ad keywords -a <accountId> --json` → `id` |
96
+
93
97
  ---
94
98
 
95
99
  ## ad campaigns — 广告系列管理
@@ -100,12 +104,12 @@
100
104
  siluzan-tso ad campaigns -a <accountId> [选项]
101
105
  ```
102
106
 
103
- | 选项 | 说明 |
104
- |------|------|
105
- | `-a, --account <id>` | Google mediaCustomerId(必填) |
106
- | `--start <YYYY-MM-DD>` | 统计开始日期 |
107
- | `--end <YYYY-MM-DD>` | 统计结束日期 |
108
- | `--json` | 输出原始 JSON |
107
+ | 选项 | 说明 |
108
+ | ---------------------- | ------------------------------ |
109
+ | `-a, --account <id>` | Google mediaCustomerId(必填) |
110
+ | `--start <YYYY-MM-DD>` | 统计开始日期 |
111
+ | `--end <YYYY-MM-DD>` | 统计结束日期 |
112
+ | `--json` | 输出原始 JSON |
109
113
 
110
114
  **示例:**
111
115
 
@@ -169,11 +173,11 @@ siluzan-tso ad campaign-delete -a 6326027735 --id campaign_001
169
173
  siluzan-tso ad groups -a <accountId> [选项]
170
174
  ```
171
175
 
172
- | 选项 | 说明 |
173
- |------|------|
174
- | `-a, --account <id>` | Google mediaCustomerId(必填) |
175
- | `--start / --end <date>` | 统计日期范围 |
176
- | `--json` | 输出原始 JSON |
176
+ | 选项 | 说明 |
177
+ | ------------------------ | ------------------------------ |
178
+ | `-a, --account <id>` | Google mediaCustomerId(必填) |
179
+ | `--start / --end <date>` | 统计日期范围 |
180
+ | `--json` | 输出原始 JSON |
177
181
 
178
182
  **示例:**
179
183
 
@@ -198,14 +202,14 @@ siluzan-tso ad adgroup-create \
198
202
  --max-cpc <金额(微单位)>
199
203
  ```
200
204
 
201
- | 选项 | 说明 | 必填 |
202
- |------|------|------|
203
- | `-a, --account <id>` | Google mediaCustomerId | ✅ |
204
- | `--campaign-id <id>` | 所属广告系列 ID(来自 `campaigns --json`) | ✅ |
205
- | `--campaign-name <name>` | 所属广告系列名称 | ✅ |
206
- | `--name <name>` | 广告组名称 | ✅ |
207
- | `--max-cpc <amount>` | 最高 CPC 出价(最小货币单位,如 `100000` = 1 USD) | ✅ |
208
- | `--status <status>` | `ENABLED \| PAUSED`(默认 `ENABLED`) | |
205
+ | 选项 | 说明 | 必填 |
206
+ | ------------------------ | -------------------------------------------------- | ---- |
207
+ | `-a, --account <id>` | Google mediaCustomerId | ✅ |
208
+ | `--campaign-id <id>` | 所属广告系列 ID(来自 `campaigns --json`) | ✅ |
209
+ | `--campaign-name <name>` | 所属广告系列名称 | ✅ |
210
+ | `--name <name>` | 广告组名称 | ✅ |
211
+ | `--max-cpc <amount>` | 最高 CPC 出价(最小货币单位,如 `100000` = 1 USD) | ✅ |
212
+ | `--status <status>` | `ENABLED \| PAUSED`(默认 `ENABLED`) | |
209
213
 
210
214
  **示例:**
211
215
 
@@ -273,11 +277,11 @@ siluzan-tso ad adgroup-delete -a 6326027735 --id adgroup_001
273
277
  siluzan-tso ad list -a <accountId> [选项]
274
278
  ```
275
279
 
276
- | 选项 | 说明 |
277
- |------|------|
278
- | `-a, --account <id>` | Google mediaCustomerId(必填) |
279
- | `--start / --end <date>` | 统计日期范围 |
280
- | `--json` | 输出原始 JSON |
280
+ | 选项 | 说明 |
281
+ | ------------------------ | ------------------------------ |
282
+ | `-a, --account <id>` | Google mediaCustomerId(必填) |
283
+ | `--start / --end <date>` | 统计日期范围 |
284
+ | `--json` | 输出原始 JSON |
281
285
 
282
286
  **示例:**
283
287
 
@@ -303,16 +307,16 @@ siluzan-tso ad ad-create \
303
307
  --descriptions "描述1,描述2"
304
308
  ```
305
309
 
306
- | 选项 | 说明 | 必填 |
307
- |------|------|------|
308
- | `-a, --account <id>` | Google mediaCustomerId | ✅ |
309
- | `--adgroup-id <id>` | 广告组 ID(来自 `groups --json`) | ✅ |
310
- | `--adgroup-name <name>` | 广告组名称 | ✅ |
311
- | `--final-url <url>` | 最终落地页 URL | ✅ |
312
- | `--headlines <titles>` | 标题列表,逗号分隔(**至少 3 个**,每个≤30字符) | ✅ |
313
- | `--descriptions <descs>` | 描述列表,逗号分隔(**至少 2 个**,每个≤90字符) | ✅ |
314
- | `--path1 <text>` | 显示路径第1段(≤15字符) | |
315
- | `--path2 <text>` | 显示路径第2段(≤15字符) | |
310
+ | 选项 | 说明 | 必填 |
311
+ | ------------------------ | ------------------------------------------------ | ---- |
312
+ | `-a, --account <id>` | Google mediaCustomerId | ✅ |
313
+ | `--adgroup-id <id>` | 广告组 ID(来自 `groups --json`) | ✅ |
314
+ | `--adgroup-name <name>` | 广告组名称 | ✅ |
315
+ | `--final-url <url>` | 最终落地页 URL | ✅ |
316
+ | `--headlines <titles>` | 标题列表,逗号分隔(**至少 3 个**,每个≤30字符) | ✅ |
317
+ | `--descriptions <descs>` | 描述列表,逗号分隔(**至少 2 个**,每个≤90字符) | ✅ |
318
+ | `--path1 <text>` | 显示路径第1段(≤15字符) | |
319
+ | `--path2 <text>` | 显示路径第2段(≤15字符) | |
316
320
 
317
321
  **示例:**
318
322
 
@@ -380,12 +384,12 @@ siluzan-tso ad ad-delete -a 6326027735 --id ad_001
380
384
  siluzan-tso ad keywords -a <accountId> [选项]
381
385
  ```
382
386
 
383
- | 选项 | 说明 |
384
- |------|------|
385
- | `-a, --account <id>` | Google mediaCustomerId(必填) |
386
- | `--negative` | 查询否定关键词(默认查普通关键词) |
387
- | `--start / --end <date>` | 统计日期范围 |
388
- | `--json` | 输出原始 JSON |
387
+ | 选项 | 说明 |
388
+ | ------------------------ | ---------------------------------- |
389
+ | `-a, --account <id>` | Google mediaCustomerId(必填) |
390
+ | `--negative` | 查询否定关键词(默认查普通关键词) |
391
+ | `--start / --end <date>` | 统计日期范围 |
392
+ | `--json` | 输出原始 JSON |
389
393
 
390
394
  **示例:**
391
395
 
@@ -414,15 +418,15 @@ siluzan-tso ad keyword-create \
414
418
  --keywords "词1,词2,词3"
415
419
  ```
416
420
 
417
- | 选项 | 说明 | 必填 |
418
- |------|------|------|
419
- | `-a, --account <id>` | Google mediaCustomerId | ✅ |
420
- | `--adgroup-id <id>` | 广告组 ID | ✅ |
421
- | `--adgroup-name <name>` | 广告组名称 | ✅ |
422
- | `--campaign-id <id>` | 广告系列 ID | ✅ |
423
- | `--campaign-name <name>` | 广告系列名称 | ✅ |
424
- | `--keywords <words>` | 关键词列表,逗号分隔 | ✅ |
425
- | `--final-url <url>` | 关键词独立落地页(可选) | |
421
+ | 选项 | 说明 | 必填 |
422
+ | ------------------------ | ------------------------ | ---- |
423
+ | `-a, --account <id>` | Google mediaCustomerId | ✅ |
424
+ | `--adgroup-id <id>` | 广告组 ID | ✅ |
425
+ | `--adgroup-name <name>` | 广告组名称 | ✅ |
426
+ | `--campaign-id <id>` | 广告系列 ID | ✅ |
427
+ | `--campaign-name <name>` | 广告系列名称 | ✅ |
428
+ | `--keywords <words>` | 关键词列表,逗号分隔 | ✅ |
429
+ | `--final-url <url>` | 关键词独立落地页(可选) | |
426
430
 
427
431
  **示例:**
428
432
 
@@ -461,10 +465,10 @@ siluzan-tso ad keyword-negative-create \
461
465
  --keywords "词1,词2"
462
466
  ```
463
467
 
464
- | 选项 | 说明 |
465
- |------|------|
466
- | `--adgroup-id <id>` | 广告组 ID(传入则在广告组层级添加,否则在广告系列层级) |
467
- | `--adgroup-name <name>` | 广告组名称(与 `--adgroup-id` 配套使用) |
468
+ | 选项 | 说明 |
469
+ | ----------------------- | ------------------------------------------------------- |
470
+ | `--adgroup-id <id>` | 广告组 ID(传入则在广告组层级添加,否则在广告系列层级) |
471
+ | `--adgroup-name <name>` | 广告组名称(与 `--adgroup-id` 配套使用) |
468
472
 
469
473
  **示例:**
470
474
 
@@ -496,8 +500,8 @@ siluzan-tso ad keyword-negative-delete \
496
500
  --id <negativeKeywordId>
497
501
  ```
498
502
 
499
- | 选项 | 说明 |
500
- |------|------|
503
+ | 选项 | 说明 |
504
+ | ------------------------ | ---------------------------------------------- |
501
505
  | `--start / --end <date>` | 查询日期范围(用于定位关键词,默认最近 30 天) |
502
506
 
503
507
  **示例:**
@@ -522,16 +526,16 @@ siluzan-tso ad keyword-negative-delete -a 6326027735 --id negkw_abc123
522
526
  siluzan-tso ad batch list [选项]
523
527
  ```
524
528
 
525
- | 选项 | 说明 |
526
- |------|------|
527
- | `-s, --state <state>` | 状态:`Creating \| Successfully \| Failed \| HasFailed \| Unpublished` |
528
- | `--customer-id <id>` | Google mediaCustomerId |
529
- | `--customer-name <name>` | 客户名称关键字 |
530
- | `-k, --keyword <text>` | 关键字 |
531
- | `--start / --end <date>` | 创建日期范围 |
532
- | `-p, --page <n>` | 页码(默认 1) |
533
- | `--page-size <n>` | 每页数量(默认 20) |
534
- | `--json` | 输出原始 JSON |
529
+ | 选项 | 说明 |
530
+ | ------------------------ | ---------------------------------------------------------------------- |
531
+ | `-s, --state <state>` | 状态:`Creating \| Successfully \| Failed \| HasFailed \| Unpublished` |
532
+ | `--customer-id <id>` | Google mediaCustomerId |
533
+ | `--customer-name <name>` | 客户名称关键字 |
534
+ | `-k, --keyword <text>` | 关键字 |
535
+ | `--start / --end <date>` | 创建日期范围 |
536
+ | `-p, --page <n>` | 页码(默认 1) |
537
+ | `--page-size <n>` | 每页数量(默认 20) |
538
+ | `--json` | 输出原始 JSON |
535
539
 
536
540
  **示例:**
537
541
 
@@ -558,11 +562,11 @@ siluzan-tso ad batch get --id <recordId>
558
562
  siluzan-tso ad batch update --id <recordId> [选项]
559
563
  ```
560
564
 
561
- | 选项 | 说明 |
562
- |------|------|
563
- | `--budget <amount>` | 新预算(最小货币单位,如 `8500` = 85 元 CNY) |
564
- | `--url <url>` | 新推广链接 |
565
- | `--campaign-name <name>` | 新广告系列名称 |
565
+ | 选项 | 说明 |
566
+ | ------------------------ | --------------------------------------------- |
567
+ | `--budget <amount>` | 新预算(最小货币单位,如 `8500` = 85 元 CNY) |
568
+ | `--url <url>` | 新推广链接 |
569
+ | `--campaign-name <name>` | 新广告系列名称 |
566
570
 
567
571
  ### publish — 发布草稿
568
572
 
@@ -582,13 +586,13 @@ siluzan-tso ad batch publish --id <recordId>
582
586
  siluzan-tso keyword -k <搜索词> [选项]
583
587
  ```
584
588
 
585
- | 选项 | 说明 |
586
- |------|------|
587
- | `-k, --keyword <words>` | 种子词,多个逗号分隔(必填) |
588
- | `--url <url>` | 公司/产品网址(填写后触发「网址拓词 + 轮询」流程) |
589
- | `--include <words>` | 结果必须包含的词(逗号或空格分隔,本地过滤) |
590
- | `--exclude <words>` | 结果不包含的词(本地过滤) |
591
- | `--json` | 输出原始 JSON |
589
+ | 选项 | 说明 |
590
+ | ----------------------- | -------------------------------------------------- |
591
+ | `-k, --keyword <words>` | 种子词,多个逗号分隔(必填) |
592
+ | `--url <url>` | 公司/产品网址(填写后触发「网址拓词 + 轮询」流程) |
593
+ | `--include <words>` | 结果必须包含的词(逗号或空格分隔,本地过滤) |
594
+ | `--exclude <words>` | 结果不包含的词(本地过滤) |
595
+ | `--json` | 输出原始 JSON |
592
596
 
593
597
  **示例:**
594
598
 
@@ -615,10 +619,10 @@ siluzan-tso keyword -k "running shoes" --json
615
619
 
616
620
  新建搜索广告系列(异步批量任务)。支持两种创建模式:
617
621
 
618
- > - 默认行为:不加 `--draft` 时,CLI 直接走「立即发布」路径(`DraftStatus: Published`)。
622
+ > - 默认行为:不加 `--draft` 时,CLI 直接走「立即发布」路径(`DraftStatus: Published`)。
619
623
  > - 草稿行为:加上 `--draft` 时,仅创建草稿记录(`DraftStatus: Draft`),需后续用 `ad batch publish` 才真正提交给 Google。
620
- > 广告组、关键词、广告创意的直接创建走另一套 Google 网关 API,均有对应的 `adgroup-create`、`keyword-create`、`ad-create` 等命令。
621
- > 任务异步处理,任务 ID 可通过 `ad batch get --id <id>` 跟进进度。
624
+ > 广告组、关键词、广告创意的直接创建走另一套 Google 网关 API,均有对应的 `adgroup-create`、`keyword-create`、`ad-create` 等命令。
625
+ > 任务异步处理,任务 ID 可通过 `ad batch get --id <id>` 跟进进度。
622
626
 
623
627
  ---
624
628
 
@@ -627,6 +631,7 @@ siluzan-tso keyword -k "running shoes" --json
627
631
  **当参数复杂(多广告组、含附加功能、标题中有逗号)时,AI 应优先使用此方式**:将所有参数写入一个 JSON 文件,再用 `--config-file` 传入路径。
628
632
 
629
633
  **优势:**
634
+
630
635
  - `headlines` 是真正的字符串数组,元素内**允许含逗号**(如 `"Global Reach, Local Impact"`)
631
636
  - `extensions` / `extraAdGroups` 直接写 JSON,不需要序列化为字符串
632
637
  - 参数复杂时无 shell 转义问题,AI 一次生成即可成功
@@ -643,34 +648,34 @@ siluzan-tso keyword -k "running shoes" --json
643
648
 
644
649
  **JSON文件 字段说明:**
645
650
 
646
- | 字段 | 必填 | 类型 | 说明 |
647
- |------|------|------|------|
648
- | `account` | ✅ | string | Google 账户 mediaCustomerId |
649
- | `customerName` | ✅ | string | 账户名称(`list-accounts --json` 的 `mediaAccountName`) |
650
- | `name` | ✅ | string | 广告系列名称 |
651
- | `budget` | ✅ | number | 日预算,**主币种展示金额**(100 = 每天 100 USD/CNY,内部 ×100) |
652
- | `bidding` | ✅ | string | 出价策略:`TARGET_SPEND` \| `MANUAL_CPC` \| `TARGET_CPA` \| `TARGET_ROAS` |
653
- | `locationIds` | ✅ | string[] | 地理位置 ID 数组(`ad geo search` 获取) |
654
- | `adgroupName` | ✅ | string | 第一个广告组名称 |
655
- | `maxCpc` | ✅ | number | 第一个广告组最高 CPC,主币种展示金额(1.5 = 1.50 USD,内部 ×100) |
656
- | `bidCeiling` | ✅ | number | TARGET_SPEND 出价上限(主币种,内部 ×100) |
657
- | `targetCpa` | ✅ | number | TARGET_CPA 目标 CPA(主币种,内部 ×100) |
658
- | `targetRoas` | ✅| number | TARGET_ROAS 目标 ROAS(如 2.5) |
659
- | `languageIds` | ✅ | string[] | 语言 ID 数组(默认 `["1000"]` = 英语,中文 = `"1017"`) |
660
- | `startDate` / `endDate` | ✅ | string | 日期 YYYY-MM-DD(默认:今天 / 2037-12-30) |
661
- | `url` | ✅ | string | 落地页 URL |
662
- | `status` | ✅| string | `Enabled` \| `Paused`(默认 Enabled) |
663
- | `matchType` | ✅ | string | 默认匹配类型:`BROAD` \| `PHRASE` \| `EXACT` |
664
- | `keywords` | ✅ | string[] | 第一个广告组关键词 |
665
- | `headlines` | ✅ | string[] | 标题数组,至少 3 条,推荐 15 条,每条 ≤ 30 字符,**元素内允许含逗号** |
666
- | `descriptions` | ✅| string[] | 描述数组,至少 2 条,推荐 4 条,每条 ≤ 90 字符 |
667
- | `finalUrl` | ✅| string | 广告落地页 |
668
- | `path1` / `path2` | ✅ | string | 展示 URL 路径(各 ≤ 15 字符) |
669
- | `productWords` | ✅ | string[] | 推广产品词(用于 AI 关键词推荐) |
670
- | `negativeKeywords` |✅ | string[] | 否定关键词数组(默认 BROAD 匹配) |
671
- | `extensions` | ✅ | array | 广告附加功能(CALL / SITELINK / STRUCTURED_SNIPPET),见 Schema |
672
- | `extraAdGroups` | ✅ | array | 额外广告组,追加到 AdGroupsForBatchJob,见 Schema |
673
- | `draft` | ✅ | boolean | `true` = 仅保存草稿(需后续 `ad batch publish` 发布) |
651
+ | 字段 | 必填 | 类型 | 说明 |
652
+ | ----------------------- | ---- | -------- | ------------------------------------------------------------------------- |
653
+ | `account` | ✅ | string | Google 账户 mediaCustomerId |
654
+ | `customerName` | ✅ | string | 账户名称(`list-accounts --json` 的 `mediaAccountName`) |
655
+ | `name` | ✅ | string | 广告系列名称 |
656
+ | `budget` | ✅ | number | 日预算,**主币种展示金额**(100 = 每天 100 USD/CNY,内部 ×100) |
657
+ | `bidding` | ✅ | string | 出价策略:`TARGET_SPEND` \| `MANUAL_CPC` \| `TARGET_CPA` \| `TARGET_ROAS` |
658
+ | `locationIds` | ✅ | string[] | 地理位置 ID 数组(`ad geo search` 获取) |
659
+ | `adgroupName` | ✅ | string | 第一个广告组名称 |
660
+ | `maxCpc` | ✅ | number | 第一个广告组最高 CPC,主币种展示金额(1.5 = 1.50 USD,内部 ×100) |
661
+ | `bidCeiling` | ✅ | number | TARGET_SPEND 出价上限(主币种,内部 ×100) |
662
+ | `targetCpa` | ✅ | number | TARGET_CPA 目标 CPA(主币种,内部 ×100) |
663
+ | `targetRoas` | | number | TARGET_ROAS 目标 ROAS(如 2.5) |
664
+ | `languageIds` | ✅ | string[] | 语言 ID 数组(默认 `["1000"]` = 英语,中文 = `"1017"`) |
665
+ | `startDate` / `endDate` | ✅ | string | 日期 YYYY-MM-DD(默认:今天 / 2037-12-30) |
666
+ | `url` | ✅ | string | 落地页 URL |
667
+ | `status` | | string | `Enabled` \| `Paused`(默认 Enabled) |
668
+ | `matchType` | ✅ | string | 默认匹配类型:`BROAD` \| `PHRASE` \| `EXACT` |
669
+ | `keywords` | ✅ | string[] | 第一个广告组关键词 |
670
+ | `headlines` | ✅ | string[] | 标题数组,至少 3 条,推荐 15 条,每条 ≤ 30 字符,**元素内允许含逗号** |
671
+ | `descriptions` | | string[] | 描述数组,至少 2 条,推荐 4 条,每条 ≤ 90 字符 |
672
+ | `finalUrl` | | string | 广告落地页 |
673
+ | `path1` / `path2` | ✅ | string | 展示 URL 路径(各 ≤ 15 字符) |
674
+ | `productWords` | ✅ | string[] | 推广产品词(用于 AI 关键词推荐) |
675
+ | `negativeKeywords` | | string[] | 否定关键词数组(默认 BROAD 匹配) |
676
+ | `extensions` | ✅ | array | 广告附加功能(CALL / SITELINK / STRUCTURED_SNIPPET),见 Schema |
677
+ | `extraAdGroups` | ✅ | array | 额外广告组,追加到 AdGroupsForBatchJob,见 Schema |
678
+ | `draft` | ✅ | boolean | `true` = 仅保存草稿(需后续 `ad batch publish` 发布) |
674
679
 
675
680
  ---
676
681
 
@@ -678,31 +683,31 @@ siluzan-tso keyword -k "running shoes" --json
678
683
 
679
684
  所有参数也可以直接通过 CLI 选项传入(复杂场景推荐用 `--config-file`):
680
685
 
681
- | 选项 | 必填 | 说明 |
682
- |------|------|------|
683
- | `-a, --account <id>` | ✅* | Google 账户 mediaCustomerId(*使用 `--config-file` 时可从文件读取) |
684
- | `--customer-name <name>` | ✅* | 账户名称 |
685
- | `--name <name>` | ✅* | 广告系列名称 |
686
- | `--budget <amount>` | ✅* | 日预算(主币种展示金额) |
687
- | `--bidding <strategy>` | ✅* | 出价策略 |
688
- | `--location-ids <ids>` | ✅* | 地理位置 ID,逗号分隔 |
689
- | `--adgroup-name <name>` | ✅* | 第一个广告组名称 |
690
- | `--max-cpc <amount>` | ✅* | 最高 CPC(主币种展示金额) |
691
- | `--keywords <kws>` | — | 关键词,逗号分隔 |
692
- | `--headlines <titles>` | — | 广告标题,逗号分隔(⚠️ 标题内不能含逗号,含逗号请用 `--config-file`) |
693
- | `--descriptions <descs>` | — | 广告描述,逗号分隔 |
694
- | `--product-words <words>` | — | 产品词,逗号分隔 |
695
- | `--negative-keywords <kws>` | — | 否定关键词,逗号分隔 |
696
- | `--extensions-json <json>` | — | 附加功能 JSON 数组字符串 |
697
- | `--extra-adgroups-json <json>` | — | 额外广告组 JSON 数组字符串 |
698
- | `--lang-ids <ids>` | — | 语言 ID,逗号分隔(默认 1000=英语) |
699
- | `--bid-ceiling / --target-cpa / --target-roas` | — | 出价相关参数 |
700
- | `--start / --end` | — | 日期 YYYY-MM-DD |
701
- | `--url / --final-url` | — | 落地页 |
702
- | `--path1 / --path2` | — | 展示路径 |
703
- | `--status` | — | Enabled \| Paused |
704
- | `--draft` | — | 仅保存草稿 |
705
- | `--config-file <path>` | — | JSON 配置文件路径(AI 推荐) |
686
+ | 选项 | 必填 | 说明 |
687
+ | ---------------------------------------------- | ---- | --------------------------------------------------------------------- |
688
+ | `-a, --account <id>` | ✅\* | Google 账户 mediaCustomerId(\*使用 `--config-file` 时可从文件读取) |
689
+ | `--customer-name <name>` | ✅\* | 账户名称 |
690
+ | `--name <name>` | ✅\* | 广告系列名称 |
691
+ | `--budget <amount>` | ✅\* | 日预算(主币种展示金额) |
692
+ | `--bidding <strategy>` | ✅\* | 出价策略 |
693
+ | `--location-ids <ids>` | ✅\* | 地理位置 ID,逗号分隔 |
694
+ | `--adgroup-name <name>` | ✅\* | 第一个广告组名称 |
695
+ | `--max-cpc <amount>` | ✅\* | 最高 CPC(主币种展示金额) |
696
+ | `--keywords <kws>` | — | 关键词,逗号分隔 |
697
+ | `--headlines <titles>` | — | 广告标题,逗号分隔(⚠️ 标题内不能含逗号,含逗号请用 `--config-file`) |
698
+ | `--descriptions <descs>` | — | 广告描述,逗号分隔 |
699
+ | `--product-words <words>` | — | 产品词,逗号分隔 |
700
+ | `--negative-keywords <kws>` | — | 否定关键词,逗号分隔 |
701
+ | `--extensions-json <json>` | — | 附加功能 JSON 数组字符串 |
702
+ | `--extra-adgroups-json <json>` | — | 额外广告组 JSON 数组字符串 |
703
+ | `--lang-ids <ids>` | — | 语言 ID,逗号分隔(默认 1000=英语) |
704
+ | `--bid-ceiling / --target-cpa / --target-roas` | — | 出价相关参数 |
705
+ | `--start / --end` | — | 日期 YYYY-MM-DD |
706
+ | `--url / --final-url` | — | 落地页 |
707
+ | `--path1 / --path2` | — | 展示路径 |
708
+ | `--status` | — | Enabled \| Paused |
709
+ | `--draft` | — | 仅保存草稿 |
710
+ | `--config-file <path>` | — | JSON 配置文件路径(AI 推荐) |
706
711
 
707
712
  **典型用法(简单场景):**
708
713
 
@@ -760,15 +765,15 @@ siluzan-tso ad campaign-edit \
760
765
  [--content-network true|false]
761
766
  ```
762
767
 
763
- | 选项 | 说明 |
764
- |------|------|
765
- | `--name` | 新广告系列名称 |
766
- | `--budget` | 新预算,最小货币单位(如 100000 = 1 USD) |
767
- | `--bidding` | 出价策略:`TARGET_SPEND` \| `TARGET_CPA` \| `TARGET_ROAS` \| `MANUAL_CPC` |
768
- | `--bid-ceiling` | `TARGET_SPEND` 出价上限(最小货币单位,0 = 不限) |
769
- | `--target-cpa` | `TARGET_CPA` 目标 CPA |
770
- | `--search-network` | 投放 Google 搜索:`true` \| `false` |
771
- | `--content-network` | 投放展示网络:`true` \| `false` |
768
+ | 选项 | 说明 |
769
+ | ------------------- | ------------------------------------------------------------------------- |
770
+ | `--name` | 新广告系列名称 |
771
+ | `--budget` | 新预算,最小货币单位(如 100000 = 1 USD) |
772
+ | `--bidding` | 出价策略:`TARGET_SPEND` \| `TARGET_CPA` \| `TARGET_ROAS` \| `MANUAL_CPC` |
773
+ | `--bid-ceiling` | `TARGET_SPEND` 出价上限(最小货币单位,0 = 不限) |
774
+ | `--target-cpa` | `TARGET_CPA` 目标 CPA |
775
+ | `--search-network` | 投放 Google 搜索:`true` \| `false` |
776
+ | `--content-network` | 投放展示网络:`true` \| `false` |
772
777
 
773
778
  **示例:**
774
779
 
@@ -809,19 +814,19 @@ CLI 会在请求前自动设置 **Datapermission**(与浏览器 `datapermissio
809
814
 
810
815
  ### 网关 JSON 与 CLI 参数对应(常用字段)
811
816
 
812
- | 网关字段 | 说明 | CLI |
813
- |----------|------|-----|
814
- | `id` | 广告 ID | `--id` |
815
- | `activeuseridg` | 账户 mediaCustomerId | `-a` / `--account` |
816
- | `headlinePart1` / `headlinePart2` / `headlinePart3` | 前 3 条标题 | `--headlines` 前 3 项 |
817
- | `AddtionalHeadlines` | 第 4~15 条标题(网关拼写为 Addtional) | `--headlines` 第 4 项起 |
818
- | `adDescription` / `adDescription2` | 前 2 条描述 | `--descriptions` 前 2 项 |
819
- | `AddtionalAdDescriptions` | 第 3~4 条描述 | `--descriptions` 第 3 项起 |
820
- | `finalUrl` | 落地页 | `--final-url` |
821
- | `path1` / `path2` | 显示路径 | `--path1` / `--path2` |
822
- | `adGroupId` / `adGroup` | 广告组 | 从列表结果保留,勿手改 |
823
- | `typeV2` | 广告类型 | 从列表保留(RSA 为 `RESPONSIVE_SEARCH_AD`) |
824
- | `statusV2` | `Enabled` / `Paused` | `--status Enabled` 或 `--status Paused` |
817
+ | 网关字段 | 说明 | CLI |
818
+ | --------------------------------------------------- | --------------------------------------- | ------------------------------------------- |
819
+ | `id` | 广告 ID | `--id` |
820
+ | `activeuseridg` | 账户 mediaCustomerId | `-a` / `--account` |
821
+ | `headlinePart1` / `headlinePart2` / `headlinePart3` | 前 3 条标题 | `--headlines` 前 3 项 |
822
+ | `AddtionalHeadlines` | 第 4~15 条标题(网关拼写为 Addtional) | `--headlines` 第 4 项起 |
823
+ | `adDescription` / `adDescription2` | 前 2 条描述 | `--descriptions` 前 2 项 |
824
+ | `AddtionalAdDescriptions` | 第 3~4 条描述 | `--descriptions` 第 3 项起 |
825
+ | `finalUrl` | 落地页 | `--final-url` |
826
+ | `path1` / `path2` | 显示路径 | `--path1` / `--path2` |
827
+ | `adGroupId` / `adGroup` | 广告组 | 从列表结果保留,勿手改 |
828
+ | `typeV2` | 广告类型 | 从列表保留(RSA 为 `RESPONSIVE_SEARCH_AD`) |
829
+ | `statusV2` | `Enabled` / `Paused` | `--status Enabled` 或 `--status Paused` |
825
830
 
826
831
  **约束:** 至少指定一项:`--headlines` / `--descriptions` / `--final-url` / `--path1` / `--path2` / `--status`。若传 `--headlines` 须 ≥3 条;若传 `--descriptions` 须 ≥2 条。
827
832
 
@@ -918,15 +923,15 @@ siluzan-tso ad keyword-delete -a 6326027735 --id 2464982882313 --adgroup-id 1955
918
923
 
919
924
  ### 网关字段与 CLI 对应(常用)
920
925
 
921
- | 网关字段 | 说明 | CLI |
922
- |----------|------|-----|
923
- | `id` | 关键词资源 id | `--id` |
924
- | `keywordText` | 关键词文案(数组,一般一项) | `--text` → `["..."]` |
925
- | `matchTypeV2` | 匹配类型(网页用 Broad / Phrase / Exact) | `--match-type` |
926
- | `matchType` | 另一套枚举(如 EXACT),列表里可能仍存在 | 一般随 list 结果保留,勿手改 |
927
- | `maxCPC` | 最高每次点击费用 | `--max-cpc` |
928
- | `finalURL` | 关键词级最终到达网址 | `--final-url` |
929
- | `adGroupId` / `campaignId` 等 | 层级与统计字段 | 从列表保留 |
926
+ | 网关字段 | 说明 | CLI |
927
+ | ----------------------------- | ----------------------------------------- | ---------------------------- |
928
+ | `id` | 关键词资源 id | `--id` |
929
+ | `keywordText` | 关键词文案(数组,一般一项) | `--text` → `["..."]` |
930
+ | `matchTypeV2` | 匹配类型(网页用 Broad / Phrase / Exact) | `--match-type` |
931
+ | `matchType` | 另一套枚举(如 EXACT),列表里可能仍存在 | 一般随 list 结果保留,勿手改 |
932
+ | `maxCPC` | 最高每次点击费用 | `--max-cpc` |
933
+ | `finalURL` | 关键词级最终到达网址 | `--final-url` |
934
+ | `adGroupId` / `campaignId` 等 | 层级与统计字段 | 从列表保留 |
930
935
 
931
936
  **注意:** 成功响应也是数组;**`id` 可能与请求不一致**(网关可能返回新资源 id)。CLI 若检测到变化会打印提示,后续请用 **返回体中的新 `id`** 再查列表或再编辑。
932
937