siluzan-tso-cli 1.1.44-beta.3 → 1.1.44
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 -2
- package/dist/index.js +209 -163
- package/dist/skill/AGENTS.md +16 -16
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/assets/campaign-create-template.md +46 -46
- package/dist/skill/assets/market-analysis-rules.md +4 -4
- package/dist/skill/assets/pmax-create-template.md +17 -17
- package/dist/skill/assets/pmax-lead-form-template.md +12 -12
- package/dist/skill/assets/scripts/assemble-campaign-from-plan.mjs +3 -1
- package/dist/skill/references/README.md +31 -31
- package/dist/skill/references/accounts/accounts-balance-stats.md +38 -36
- package/dist/skill/references/accounts/accounts-list.md +21 -21
- package/dist/skill/references/accounts/accounts-permissions.md +29 -29
- package/dist/skill/references/accounts/accounts.md +9 -9
- package/dist/skill/references/accounts/finance.md +1 -2
- package/dist/skill/references/accounts/open-account-by-media.md +58 -59
- package/dist/skill/references/accounts/open-account-google-ui.md +19 -19
- package/dist/skill/references/analytics/account-analytics.md +33 -33
- package/dist/skill/references/analytics/google-analysis-batch.md +0 -1
- package/dist/skill/references/analytics/keyword-planner-workflows.md +15 -13
- package/dist/skill/references/analytics/market-analysis-guide.md +4 -1
- package/dist/skill/references/analytics/rag.md +8 -8
- package/dist/skill/references/analytics/reporting.md +5 -5
- package/dist/skill/references/analytics/website-diagnosis-guide.md +6 -6
- package/dist/skill/references/core/agent-conventions.md +54 -54
- package/dist/skill/references/core/intent-routing.md +107 -108
- package/dist/skill/references/core/setup.md +6 -5
- package/dist/skill/references/core/tips.md +0 -1
- package/dist/skill/references/core/workflows.md +15 -16
- package/dist/skill/references/google-ads/google-ads-campaign-plan.md +55 -55
- package/dist/skill/references/google-ads/google-ads-read.md +30 -12
- package/dist/skill/references/google-ads/google-ads-write.md +35 -18
- package/dist/skill/references/google-ads/google-ads.md +13 -14
- package/dist/skill/references/google-ads/rules/README.md +17 -17
- package/dist/skill/references/google-ads/rules/google-ads-account-audit.md +6 -8
- package/dist/skill/references/google-ads/rules/google-ads-compliance.md +5 -7
- package/dist/skill/references/google-ads/rules/google-ads-keyword-strategy.md +9 -9
- package/dist/skill/references/google-ads/rules/google-ads-launch-plan-template.md +16 -15
- package/dist/skill/references/google-ads/rules/google-ads-plan-source-fidelity.md +27 -27
- package/dist/skill/references/google-ads/rules/google-ads-pmax-launch-plan-template.md +41 -41
- package/dist/skill/references/misc/tso-home.md +2 -2
- package/dist/skill/references/operations/guard.md +24 -24
- package/dist/skill/references/operations/hosted-automation-self-control.md +15 -16
- package/dist/skill/references/operations/hosted-automation-user-catalog.md +18 -18
- package/dist/skill/references/report-templates/README.md +1 -1
- package/dist/skill/references/report-templates/bing-period-report.md +16 -16
- package/dist/skill/references/report-templates/google-ads-diagnosis.md +26 -23
- package/dist/skill/references/report-templates/google-inquiry-analysis.md +1 -1
- package/dist/skill/references/report-templates/google-period-report.md +5 -5
- package/dist/skill/references/report-templates/meta-account-diagnosis-report.md +2 -2
- package/dist/skill/references/report-templates/okki-weekly-google-client.md +0 -1
- package/dist/skill/references/report-templates/tiktok-period-report.md +6 -6
- package/dist/skill/report-templates/GoogleAdsDiagnosisReport.html +42 -13
- package/dist/skill/report-templates/README.md +1 -1
- package/dist/skill/report-templates/bing-period-report.html +10 -7
- package/dist/skill/report-templates/bing-period-report.md +16 -16
- package/dist/skill/report-templates/google-ads-diagnosis.md +26 -23
- package/dist/skill/report-templates/google-inquiry-analysis.md +1 -1
- package/dist/skill/report-templates/google-period-report.md +5 -5
- package/dist/skill/report-templates/meta-account-diagnosis-report.md +2 -2
- package/dist/skill/report-templates/okki-weekly-google-client.md +0 -1
- package/dist/skill/report-templates/tiktok-period-report.md +6 -6
- package/dist/skill/scripts/install.ps1 +3 -3
- package/dist/skill/scripts/install.sh +3 -3
- package/eval/cases/accounts-entityid-vs-mediaccustomerid.scenario.json +2 -14
- package/eval/cases/accounts-mcc-bind-inquiry.scenario.json +1 -3
- package/eval/cases/accounts-single-balance-not-bulk.scenario.json +3 -14
- package/eval/cases/budget-display-not-raw-micros.scenario.json +1 -8
- package/eval/cases/clue-meta-leads-json.scenario.json +2 -14
- package/eval/cases/clue-tiktok-leads-json.scenario.json +2 -11
- package/eval/cases/destructive-account-delink-needs-confirm.scenario.json +3 -9
- package/eval/cases/destructive-forewarning-delete-needs-confirm.scenario.json +3 -9
- package/eval/cases/destructive-invoice-apply-needs-confirm.scenario.json +3 -9
- package/eval/cases/facebook-analysis-google-section-aliases.scenario.json +2 -11
- package/eval/cases/facebook-analysis-not-google-keywords.scenario.json +3 -10
- package/eval/cases/facebook-analysis-period-default.scenario.json +2 -14
- package/eval/cases/finance-invoice-info-list.scenario.json +3 -11
- package/eval/cases/forewarning-list-google.scenario.json +3 -14
- package/eval/cases/google-ads-no-structural-without-confirm.scenario.json +2 -6
- package/eval/cases/google-analysis-keywords-route.scenario.json +2 -14
- package/eval/cases/guard-budget-circuit-all-google.scenario.json +2 -12
- package/eval/cases/guard-zero-conv-empty-spend.scenario.json +2 -12
- package/eval/cases/human-p1-multiturn.scenario.json +1 -5
- package/eval/cases/ir-p1-vs-p8-account-vs-url.scenario.json +5 -17
- package/eval/cases/ir-p3-cpa-monitor-not-p7.scenario.json +2 -19
- package/eval/cases/ir-p3-zero-inquiry-not-p7.scenario.json +3 -16
- package/eval/cases/ir-p4-period-not-diagnosis.scenario.json +3 -16
- package/eval/cases/ir-p8-meets-google-ads-requirements-with-url.scenario.json +3 -28
- package/eval/cases/ir-p8-network-diagnosis-with-url.scenario.json +3 -25
- package/eval/cases/ir-p8-website-monitor-report-with-url.scenario.json +3 -28
- package/eval/cases/ir-p8-website-test-report-no-url.scenario.json +3 -14
- package/eval/cases/ir-p9-industry-not-p8.scenario.json +3 -19
- package/eval/cases/ir-vague-report-clarify.scenario.json +3 -14
- package/eval/cases/ir-w3-vs-p8-from-website.scenario.json +2 -8
- package/eval/cases/ir-w5-keyword-planner-url-core-terms.scenario.json +2 -22
- package/eval/cases/meta-single-balance-not-bulk.scenario.json +3 -17
- package/eval/cases/no-legacy-json-flag.scenario.json +2 -6
- package/eval/cases/open-account-google-noninteractive.scenario.json +1 -3
- package/eval/cases/open-account-tiktok-license-file.scenario.json +1 -3
- package/eval/cases/optimize-list-by-account.scenario.json +3 -11
- package/eval/cases/p1-single-account-profile.scenario.json +1 -11
- package/eval/cases/p2-balance-scan-bulk.scenario.json +2 -9
- package/eval/cases/p3-accounts-digest.scenario.json +1 -5
- package/eval/cases/p3-cpa-scan-max-cpa.scenario.json +2 -14
- package/eval/cases/p4-fb-meta-period-report.scenario.json +2 -12
- package/eval/cases/p4-period-report-window.scenario.json +1 -8
- package/eval/cases/pmax-asset-group-create-with-bg.scenario.json +2 -13
- package/eval/cases/pmax-brand-edit-routing.scenario.json +3 -16
- package/eval/cases/pmax-edit-not-campaign-edit.scenario.json +2 -12
- package/eval/cases/pmax-enable-brand-guidelines.scenario.json +2 -12
- package/eval/cases/pmax-no-assets-update-brand-fields.scenario.json +3 -14
- package/eval/cases/rag-before-keyword-expand.scenario.json +1 -11
- package/eval/cases/rag-list-then-query.scenario.json +2 -14
- package/eval/cases/report-list-google.scenario.json +2 -11
- package/eval/cases/report-push-list-google.scenario.json +2 -11
- package/eval/cases/setup-login-or-env.scenario.json +1 -3
- package/eval/cases/setup-siluzan-data-permission-env.scenario.json +1 -3
- package/eval/cases/tiktok-bc-bind-inquiry.scenario.json +2 -6
- package/eval/cases/time-range-user-delegates-default.scenario.json +1 -8
- package/eval/cases/tips-json-out-filtering.scenario.json +1 -3
- package/eval/cases/tips-large-json-pagination.scenario.json +1 -3
- package/eval/cases/uj-ad-campaign-validate-before-create-stub.scenario.json +2 -11
- package/eval/cases/uj-ad-outdoor-campgear-search-plan.scenario.json +1 -3
- package/eval/cases/uj-ad-website-search-plan-table-format.scenario.json +1 -3
- package/eval/cases/uj-analytics-30d-pdf-campaign-device-geo.scenario.json +6 -18
- package/eval/cases/uj-analytics-compare-google-tiktok-last-month-roi.scenario.json +1 -8
- package/eval/cases/uj-analytics-ecommerce-industry-report.scenario.json +2 -14
- package/eval/cases/uj-analytics-google-weekly-trends-campaigns-keywords.scenario.json +2 -11
- package/eval/cases/uj-analytics-report-push-weekly-email.scenario.json +1 -3
- package/eval/cases/uj-finance-invoice-records-this-month.scenario.json +2 -11
- package/eval/cases/uj-life-newbie-siluzan-google-end-to-end.scenario.json +1 -4
- package/eval/cases/uj-ops-google-accounts-list-normal.scenario.json +2 -17
- package/eval/cases/uj-ops-google-yesterday-spend-conversions.scenario.json +2 -14
- package/eval/cases/uj-ops-pause-worst-adgroup-confirm.scenario.json +2 -6
- package/eval/cases/uj-ops-tiktok-leads-last-week.scenario.json +3 -17
- package/eval/cases/uj-patrol-cpc-spike-adgroups-over-15.scenario.json +1 -5
- package/eval/cases/uj-patrol-forewarning-create-daily-cap-3000.scenario.json +1 -3
- package/eval/cases/uj-patrol-forewarning-trigger-records.scenario.json +3 -17
- package/eval/cases/uj-patrol-google-balances-low.scenario.json +2 -11
- package/eval/cases/uj-roi-optimize-records-then-execute-cautiously.scenario.json +3 -14
- package/eval/cases/uj-roi-search-terms-add-negative-keywords.scenario.json +2 -14
- package/eval/cases/yandex-stats-use-porg-mediaccustomerid.scenario.json +3 -21
- package/package.json +1 -1
|
@@ -8,21 +8,21 @@
|
|
|
8
8
|
|
|
9
9
|
## 常见入口语(路由到本文件,勿走偏)
|
|
10
10
|
|
|
11
|
-
| 用户说法(示例) | 正确工作流
|
|
12
|
-
| ------------------------------------------------- |
|
|
13
|
-
| 「根据 www.example.com 官网生成 Google 搜索广告」 | **W3 · 本文件标准流水线**
|
|
14
|
-
| 「按这份 Excel / 投放方案创建广告」 | **方案源轨**(下表)+ **必读** `rules/google-ads-plan-source-fidelity.md`
|
|
15
|
-
| 「要表格格式 / 表格给我」 | 先 JSON →(有账户且要创建才 `campaign-validate`)→ 按 `google-ads-launch-plan-template.md` **投影 Markdown 表格** | 跳过 JSON 直接填表;因缺账户不给表格
|
|
16
|
-
| 「帮我写搜索广告文案/关键词」且未指定已有系列 | **W3**(含官网/RAG 归纳背景)
|
|
17
|
-
| 「先出方案 / 先别开户 / 先别投钱 / 只要方案」 | **仅出方案**(见下节;**不**索要账户)
|
|
18
|
-
| 「分析这个网站能不能投广告」 | **P8** 网站诊断
|
|
11
|
+
| 用户说法(示例) | 正确工作流 | **禁止** |
|
|
12
|
+
| ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
|
|
13
|
+
| 「根据 www.example.com 官网生成 Google 搜索广告」 | **W3 · 本文件标准流水线** | 只输出一张手写关键词/RSA 表;走 P8 网站诊断 |
|
|
14
|
+
| 「按这份 Excel / 投放方案创建广告」 | **方案源轨**(下表)+ **必读** `rules/google-ads-plan-source-fidelity.md` | 猜 geo id;关键词一律 BROAD;跳过 validate |
|
|
15
|
+
| 「要表格格式 / 表格给我」 | 先 JSON →(有账户且要创建才 `campaign-validate`)→ 按 `google-ads-launch-plan-template.md` **投影 Markdown 表格** | 跳过 JSON 直接填表;因缺账户不给表格 |
|
|
16
|
+
| 「帮我写搜索广告文案/关键词」且未指定已有系列 | **W3**(含官网/RAG 归纳背景) | 与 W5 纯拓词混淆(W5 无系列/组/RSA 结构) |
|
|
17
|
+
| 「先出方案 / 先别开户 / 先别投钱 / 只要方案」 | **仅出方案**(见下节;**不**索要账户) | 卡在 `list-accounts` / 要 mediaCustomerId 才肯出方案 |
|
|
18
|
+
| 「分析这个网站能不能投广告」 | **P8** 网站诊断 | 本文件建户方案 |
|
|
19
19
|
|
|
20
20
|
### 仅出方案 vs 创建(硬门禁)
|
|
21
21
|
|
|
22
|
-
| 阶段
|
|
23
|
-
|
|
|
24
|
-
| **仅出方案** | 「出方案 / 规划 / 先别创建 / 先别开户 / 先别投钱 / 只要表格」;或用户**未**给账户且**未**说要创建/发布 | **不必须**
|
|
25
|
-
| **创建**
|
|
22
|
+
| 阶段 | 触发(满足其一即可) | 要不要 Google 账户 | Agent 必须做 | **禁止** |
|
|
23
|
+
| ------------ | ------------------------------------------------------------------------------------------------------ | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
24
|
+
| **仅出方案** | 「出方案 / 规划 / 先别创建 / 先别开户 / 先别投钱 / 只要表格」;或用户**未**给账户且**未**说要创建/发布 | **不必须** | 落盘同构 JSON → **写代码**投影完整审查稿(默认 MD;用户指定则 Excel 等);`account` / geo 数字 id 用占位并标注「待选定账户后补」 | **因缺账户 ID 阻塞交付**;只交概览表;未确认创建就跑 `list-accounts` 逼用户给号;未确认就 `campaign-create` |
|
|
25
|
+
| **创建** | 用户已确认方案并明确要创建/发布,或已提供可用 `mediaCustomerId` 且意图是落地 | **必须** | `list-accounts` → `geo resolve` → 填真 id → `campaign-validate` → **写代码投影完整审查稿** → 用户确认 → `campaign-create` → batch… | 编造 geo id;跳过 validate;跳过完整审查稿 |
|
|
26
26
|
|
|
27
27
|
**缺参时(仅出方案)**:用户只给官网 URL、未给预算/地域/账户 → 先从官网归纳产品/落地页(必要时 `google-ads-landing-page-discovery-via-webfetch.md`),预算/地域可合理默认并在方案里写明假设;**账户 ID 一律不追问为前置条件**(写 `[PENDING_ACCOUNT]` 即可)。仅当缺官网且无法推断产品时才追问 1 项;不得因信息不全就降级为「随便写几条广告」,也**不得**把「请先提供广告账户」当成第一步。
|
|
28
28
|
|
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
33
|
-
| 轨
|
|
34
|
-
|
|
|
35
|
-
| **方案源轨**
|
|
36
|
-
| **直读直写**
|
|
37
|
-
| **方案先行**
|
|
33
|
+
| 轨 | 条件 | 动作 |
|
|
34
|
+
| ------------ | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
35
|
+
| **方案源轨** | 用户已给 Excel/表格/结构化投放方案(含地域、词、匹配类型等) | **先 Read** `rules/google-ads-plan-source-fidelity.md` → Agent **写脚本**转 JSON;**有账户且要创建**时再 `ad geo resolve` → validate → 确认 → create;**仅出方案**则脚本产出后停在 JSON+Markdown |
|
|
36
|
+
| **直读直写** | 用户已给账户/预算/组/词/RSA 等结构化数据(非文件,或已是 JSON) | 转为 campaign-create JSON →(要创建则)validate → 确认 → create |
|
|
37
|
+
| **方案先行** | 无完整结构,或要求「先出方案」 | 读本文件 + 必读规则 → 生成 JSON + Markdown;**仅出方案到此为止**;用户确认创建且已有账户后再 validate → create |
|
|
38
38
|
|
|
39
39
|
**硬约束**
|
|
40
40
|
|
|
@@ -53,24 +53,24 @@
|
|
|
53
53
|
|
|
54
54
|
> **仅出方案**:做步 0(若有方案文件)→ **跳过**步 1~3 的账户/geo CLI → 做步 4~5(词与 JSON)→ **跳过**步 6 validate → 做步 7(Markdown,国家名即可)→ **停住等用户确认**;用户确认创建并给出账户后再从步 1 续跑。
|
|
55
55
|
|
|
56
|
-
| 步 | 动作
|
|
57
|
-
| --- |
|
|
58
|
-
| 0 | **方案源轨**:Agent 写转换脚本:方案文件 → `campaign.json`;**创建阶段**地域用 **`ad geo resolve --json-out`** 写入(**勿**对话手填)
|
|
59
|
-
| 1 | **创建阶段**:`list-accounts` 锁定 `account` / `customerName` / 币种;**仅出方案且无账户 → 跳过**
|
|
60
|
-
| 2 | 可选 `rag query`;无现成词表时再 `keyword` / `keyword geo-list` 拓词(`keyword` **可不传** `-a`)
|
|
61
|
-
| 3 | **创建阶段**:无方案文件时多国 **`ad geo resolve`**(或单国 `ad geo search`)写入 `locations` + `targetedLocations`;**仅出方案 → 跳过,国家名占位**
|
|
62
|
-
| 4 | 无方案文件时:按分层写入 `KeywordsForBatchJob`(EXACT/PHRASE/BROAD);否词进 `NegativeKeywordsForBatchJob`
|
|
63
|
-
| 5 | 得到与模板同构的 `campaign-create` JSON(仅出方案时 `account`=`[PENDING_ACCOUNT]`)
|
|
64
|
-
| 6 | **创建阶段**:`ad campaign-validate --config-file <json>`;**仅出方案 → 跳过**,交付时说明「有账户后再 validate」
|
|
65
|
-
| 6b | **方案来自用户且不合规**(创建前):列出问题 → **询问**「您自己改还是我帮您改?」→ 按选择处理后再 validate(**禁止**未问就静默改方案)
|
|
66
|
-
| 6c | 用户选「我帮您改」:改 JSON 时**同步落盘变更账本**(from → to + reason)
|
|
67
|
-
| 7 | **审查稿(必做)**:Agent **写代码**读 JSON,按 `google-ads-launch-plan-template.md` 投影完整文件(默认 MD;用户要 Excel 等则改格式);须含全部关键词与 RSA 正文;**禁止**概览表代替;**勿**贴整份 JSON 当主交付 | `google-ads-launch-plan-template.md`
|
|
68
|
-
| 8 | 用户确认后 **`ad campaign-create`**
|
|
69
|
-
| 9 | 每隔5s 获取创建结果
|
|
70
|
-
| 10 | 成功或部分成功后 **`ad batch diff`** 对照 JSON 与账户实况
|
|
71
|
-
| 11 | **立刻交付创建详情**:把 diff stdout 中 `BEGIN_USER_DELIVERY_MARKDOWN`…`END` 全文原样发给用户(先于补建;禁止只贴汇总表)
|
|
72
|
-
| 12 | **自动补建缺失项**(见下文):扩展/地域等执行 `remediateCommand`;补建后再 diff 时可再发更新版详情。**勿**仅反问用户是否补建
|
|
73
|
-
| 13 | 代改过方案时**另附**修改表(从 xxx → xxx + 原因)
|
|
56
|
+
| 步 | 动作 | 文档/命令 |
|
|
57
|
+
| --- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
|
|
58
|
+
| 0 | **方案源轨**:Agent 写转换脚本:方案文件 → `campaign.json`;**创建阶段**地域用 **`ad geo resolve --json-out`** 写入(**勿**对话手填) | **`rules/google-ads-plan-source-fidelity.md`** + **`assets/campaign-create-template.json`** |
|
|
59
|
+
| 1 | **创建阶段**:`list-accounts` 锁定 `account` / `customerName` / 币种;**仅出方案且无账户 → 跳过** | `references/accounts/currency.md` |
|
|
60
|
+
| 2 | 可选 `rag query`;无现成词表时再 `keyword` / `keyword geo-list` 拓词(`keyword` **可不传** `-a`) | `references/analytics/keyword-planner-workflows.md` |
|
|
61
|
+
| 3 | **创建阶段**:无方案文件时多国 **`ad geo resolve`**(或单国 `ad geo search`)写入 `locations` + `targetedLocations`;**仅出方案 → 跳过,国家名占位** | **禁止编造 id** |
|
|
62
|
+
| 4 | 无方案文件时:按分层写入 `KeywordsForBatchJob`(EXACT/PHRASE/BROAD);否词进 `NegativeKeywordsForBatchJob` | 参考 `google-ads-keyword-taxonomy.md`;有方案源则走步骤 0 |
|
|
63
|
+
| 5 | 得到与模板同构的 `campaign-create` JSON(仅出方案时 `account`=`[PENDING_ACCOUNT]`) | **`assets/campaign-create-template.json`** |
|
|
64
|
+
| 6 | **创建阶段**:`ad campaign-validate --config-file <json>`;**仅出方案 → 跳过**,交付时说明「有账户后再 validate」 | 下文「校验」 |
|
|
65
|
+
| 6b | **方案来自用户且不合规**(创建前):列出问题 → **询问**「您自己改还是我帮您改?」→ 按选择处理后再 validate(**禁止**未问就静默改方案) | **`rules/google-ads-plan-source-fidelity.md`** § 用户方案不合规 |
|
|
66
|
+
| 6c | 用户选「我帮您改」:改 JSON 时**同步落盘变更账本**(from → to + reason) | 同上 § 创建完成报告 |
|
|
67
|
+
| 7 | **审查稿(必做)**:Agent **写代码**读 JSON,按 `google-ads-launch-plan-template.md` 投影完整文件(默认 MD;用户要 Excel 等则改格式);须含全部关键词与 RSA 正文;**禁止**概览表代替;**勿**贴整份 JSON 当主交付 | `google-ads-launch-plan-template.md` |
|
|
68
|
+
| 8 | 用户确认后 **`ad campaign-create`** | `references/google-ads/google-ads-write.md` |
|
|
69
|
+
| 9 | 每隔5s 获取创建结果 | `ad batch get --id <taskId> --config-file ./campaign.json` |
|
|
70
|
+
| 10 | 成功或部分成功后 **`ad batch diff`** 对照 JSON 与账户实况 | |
|
|
71
|
+
| 11 | **立刻交付创建详情**:把 diff stdout 中 `BEGIN_USER_DELIVERY_MARKDOWN`…`END` 全文原样发给用户(先于补建;禁止只贴汇总表) | `agent-conventions.md` §四 |
|
|
72
|
+
| 12 | **自动补建缺失项**(见下文):扩展/地域等执行 `remediateCommand`;补建后再 diff 时可再发更新版详情。**勿**仅反问用户是否补建 | `references/google-ads/google-ads-batch.md` § batch diff 后自动补建 |
|
|
73
|
+
| 13 | 代改过方案时**另附**修改表(从 xxx → xxx + 原因) | **`rules/google-ads-plan-source-fidelity.md`** § 创建完成报告 |
|
|
74
74
|
|
|
75
75
|
多系列:每系列一个 JSON;可选 `campaign-manifest.json`(`role: brand|competitor|generic`)仅作文件组织参考。
|
|
76
76
|
|
|
@@ -93,17 +93,17 @@
|
|
|
93
93
|
|
|
94
94
|
### 按需(触及时再读)
|
|
95
95
|
|
|
96
|
-
| 文档 | 何时
|
|
97
|
-
| ------------------------------------------------------------------------------- |
|
|
98
|
-
| `references/google-ads/rules/google-ads-keyword-strategy.md` | 分组/匹配/否定词策略争议
|
|
99
|
-
| `references/google-ads/rules/google-ads-campaign-optimization.md` | 出价策略、预算、学习期
|
|
100
|
-
| `references/google-ads/rules/google-ads-landing-page-discovery-via-webfetch.md` | 仅首页、需推断 PDP/PLP
|
|
101
|
-
| `references/google-ads/rules/google-ads-conversion-architecture.md` | 转化/EC/归因说明
|
|
102
|
-
| `references/google-ads/rules/google-ads-keyword-optimization.md` | 上线后优化,非首建
|
|
103
|
-
| `references/google-ads/rules/google-ads-account-audit.md` | 账户诊断,非首建
|
|
104
|
-
| `references/google-ads/rules/google-ads-audience-strategy.md` | 受众/RLSA
|
|
96
|
+
| 文档 | 何时 |
|
|
97
|
+
| ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
|
98
|
+
| `references/google-ads/rules/google-ads-keyword-strategy.md` | 分组/匹配/否定词策略争议 |
|
|
99
|
+
| `references/google-ads/rules/google-ads-campaign-optimization.md` | 出价策略、预算、学习期 |
|
|
100
|
+
| `references/google-ads/rules/google-ads-landing-page-discovery-via-webfetch.md` | 仅首页、需推断 PDP/PLP |
|
|
101
|
+
| `references/google-ads/rules/google-ads-conversion-architecture.md` | 转化/EC/归因说明 |
|
|
102
|
+
| `references/google-ads/rules/google-ads-keyword-optimization.md` | 上线后优化,非首建 |
|
|
103
|
+
| `references/google-ads/rules/google-ads-account-audit.md` | 账户诊断,非首建 |
|
|
104
|
+
| `references/google-ads/rules/google-ads-audience-strategy.md` | 受众/RLSA |
|
|
105
105
|
| `references/google-ads/rules/google-ads-pmax-guide.md` | PMax 运营/诊断;**创建**见 `assets/pmax-create-template.md` + `google-ads-pmax-launch-plan-template.md` |
|
|
106
|
-
| `references/google-ads/pmax-api.md` | PMax 网关路径与 Search API 边界
|
|
106
|
+
| `references/google-ads/pmax-api.md` | PMax 网关路径与 Search API 边界 |
|
|
107
107
|
|
|
108
108
|
复述给用户:**3–5 条**与本次任务相关的合规/策略要点即可,无需罗列全部文件名。
|
|
109
109
|
|
|
@@ -156,16 +156,16 @@ validate 与 create **共用** `runCampaignCreateValidation`:词面规范化 +
|
|
|
156
156
|
|
|
157
157
|
`campaign-create` BatchJob **常漏附加信息**(Sitelink)与 **投放国家**;系列/组/关键词/RSA 已创建成功时,**不要**停在「需要我现在补上吗?」——用户确认 JSON 时已包含这些内容,Agent **应自动补建**。
|
|
158
158
|
|
|
159
|
-
| 步骤 | 动作
|
|
160
|
-
| ---- |
|
|
161
|
-
| 1
|
|
162
|
-
| 2
|
|
163
|
-
| 3
|
|
164
|
-
| 4
|
|
165
|
-
| 5
|
|
166
|
-
| 6
|
|
167
|
-
| 7
|
|
168
|
-
| 8
|
|
159
|
+
| 步骤 | 动作 |
|
|
160
|
+
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
161
|
+
| 1 | `ad batch get --id <taskId> --config-file ./campaign.json --json-out ./snap-campaign` 直至终端态(Creating 时每 5s 轮询;**读落盘 `agentWorkflow.nextCommand`**,勿只看人读提示) |
|
|
162
|
+
| 2 | `Successfully` / `HasFailed`:执行 `agentWorkflow.nextCommand`(即 `ad batch diff … --json-out`);**Failed** 勿 diff |
|
|
163
|
+
| 3 | **立刻交付**:把本次 diff stdout 中 `BEGIN_USER_DELIVERY_MARKDOWN`…`END_USER_DELIVERY_MARKDOWN` 全文原样发给用户(即 `reportMarkdown`)。**禁止**只贴系列 ID/counts 摘要,**禁止**等补建结束再交付 |
|
|
164
|
+
| 4 | 读落盘 `ok` / `missing[]`;`layer=location` → `ad geo add`;`layer=extension` → 执行 `remediateCommand` |
|
|
165
|
+
| 5 | 无 `remediateCommand` 时,按 JSON 路径映射 `ad extension *` / `adgroup-create` / `keyword-create` / `ad-create` / `keyword-negative-create` |
|
|
166
|
+
| 6 | 有缺失时 CLI **exit 2**;补建后再 `ad batch diff`,直到 `ok===true`;每次 diff 后若状态有变可再发更新版详情 |
|
|
167
|
+
| 7 | 可简短补充「已自动补上 N 个投放国家 / M 条 Sitelink」(**不能代替**步骤 3 的 Markdown 全文) |
|
|
168
|
+
| 8 | 仅当补建命令也失败时,才向用户说明原因并给改写方案;代改方案另附修改表见 `google-ads-plan-source-fidelity.md` |
|
|
169
169
|
|
|
170
170
|
**Agent 易漏点**:`--json-out` 时人读「下一步」不会打印——**必须以落盘 `agentWorkflow` 为准**;`campaign-create` 落盘同样带 `agentWorkflow.nextCommand`(首轮 `batch get`)。
|
|
171
171
|
|
|
@@ -24,13 +24,13 @@
|
|
|
24
24
|
|
|
25
25
|
## ID 来源速查
|
|
26
26
|
|
|
27
|
-
| 需要的 ID | 获取命令
|
|
28
|
-
| ------------------- |
|
|
27
|
+
| 需要的 ID | 获取命令 |
|
|
28
|
+
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
29
29
|
| `accountId`(`-a`) | `siluzan-tso list-accounts -m Google --json-out ./snap` → `mediaCustomerId`(**纯数字**;UI 的 `123-456-7890` 可原样传入,CLI 去连字符) |
|
|
30
|
-
| 广告系列 `id` | `siluzan-tso ad campaigns -a <accountId> --json-out ./snap` → `id`
|
|
31
|
-
| 广告组 `id`、`name` | `siluzan-tso ad groups -a <accountId> --json-out ./snap` → `id`、`name`
|
|
32
|
-
| 广告 `id` | `siluzan-tso ad list -a <accountId> --json-out ./snap` → `id`
|
|
33
|
-
| 关键词 `id` | `siluzan-tso ad keywords -a <accountId> --json-out ./snap` → `id`
|
|
30
|
+
| 广告系列 `id` | `siluzan-tso ad campaigns -a <accountId> --json-out ./snap` → `id` |
|
|
31
|
+
| 广告组 `id`、`name` | `siluzan-tso ad groups -a <accountId> --json-out ./snap` → `id`、`name` |
|
|
32
|
+
| 广告 `id` | `siluzan-tso ad list -a <accountId> --json-out ./snap` → `id` |
|
|
33
|
+
| 关键词 `id` | `siluzan-tso ad keywords -a <accountId> --json-out ./snap` → `id` |
|
|
34
34
|
|
|
35
35
|
> **Google CID**:带连字符进网关曾导致 `HTTP 403:123-456-7890`;现 CLI 已归一化。仍失败时用纯数字重试;**禁止臆测授权过期**,须 `account check-access -a <mediaCustomerId>`(详见 [google-ads.md](google-ads.md) Gotchas / `accounts-permissions.md`)。
|
|
36
36
|
|
|
@@ -53,6 +53,8 @@ siluzan-tso ad campaigns -a <accountId> [--start <YYYY-MM-DD>] [--end <YYYY-MM-D
|
|
|
53
53
|
带 `--start` / `--end` 时,同行的 **`spend` / `impressions` / `clicks` / `conversions` 为该闭区间合计**(**不是**日消耗)。
|
|
54
54
|
与日预算比较「是否超预算」时,**必须** `start=end=统计日`;多日窗口须先 ÷ 天数或改用 `balance-scan.dailySpend` / `overview.averageDailyCost` 再谈「日均」。
|
|
55
55
|
|
|
56
|
+
> **缓存**:网关侧此列表按 `账户 + 日期区间` 缓存 60 秒(Redis)。若刚 `campaign-create` / `campaign-edit` / `campaign-status` / `campaign-delete` 后立刻查询想看到最新结果,加 `--fresh` 跳过缓存(网关 `newest=true`);日常巡检/报表不需要,留空更省配额。
|
|
57
|
+
|
|
56
58
|
### 启停
|
|
57
59
|
|
|
58
60
|
```bash
|
|
@@ -77,6 +79,8 @@ siluzan-tso ad campaign-delete -a <accountId> --id <campaignId>
|
|
|
77
79
|
siluzan-tso ad groups -a <accountId> [--start/--end <date>] [--json-out ./snap]
|
|
78
80
|
```
|
|
79
81
|
|
|
82
|
+
> **缓存**:同 `ad campaigns`,网关按 `账户 + 日期区间` 缓存 60 秒;刚 `adgroup-create` / `adgroup-edit` 等写操作后要立刻看到最新结果时加 `--fresh`(网关 `newest=true`)。
|
|
83
|
+
|
|
80
84
|
### 创建
|
|
81
85
|
|
|
82
86
|
```bash
|
|
@@ -156,11 +160,11 @@ siluzan-tso ad ad-create \
|
|
|
156
160
|
[--json-out <path>]
|
|
157
161
|
```
|
|
158
162
|
|
|
159
|
-
| 字段
|
|
160
|
-
|
|
|
161
|
-
| `--headlines`
|
|
162
|
-
| `--descriptions`
|
|
163
|
-
| `--path1`/`--path2` | 可选
|
|
163
|
+
| 字段 | 数量 | 每条上限(Google 字符宽,CJK×2) |
|
|
164
|
+
| ------------------- | -------- | -------------------------------- |
|
|
165
|
+
| `--headlines` | **3–15** | **≤30** |
|
|
166
|
+
| `--descriptions` | **2–4** | **≤90** |
|
|
167
|
+
| `--path1`/`--path2` | 可选 | **≤15** |
|
|
164
168
|
|
|
165
169
|
提交前用脚本 `len`/CJK×2 自检;**禁止**一次塞入 >4 条描述。创建后暂停:`ad ad-status … --status Paused --commit "…"`。
|
|
166
170
|
|
|
@@ -199,6 +203,8 @@ siluzan-tso ad keyword-create \
|
|
|
199
203
|
|
|
200
204
|
**支持空格多词短语**(如 `how to make`、`home cooking`)。匹配类型与 Web 一致:裸词=广泛,`"短语"`=词组,`[词]`=完全;也可用 `--match-type`。多词/带引号时推荐 `--keywords-file`,避免 shell 转义。
|
|
201
205
|
|
|
206
|
+
**三级层级:** Campaign(系列)/ AdGroup(组)/ **Account(账户级,Sammamish 2026-08 新增)**。不传 `--level` 时按是否传 `--adgroup-id` 自动判断 Campaign / AdGroup(兼容旧用法);**账户级必须显式传 `--level Account`**,且不能传 `--campaign-id` / `--adgroup-id`。账户级否词一次生效于整个账户下所有系列(对应 Google Ads「Account Settings → Negative keywords」),**无需再去 Google 后台手工应用**——这是本次新增前的旧限制,现已由接口直接支持。
|
|
207
|
+
|
|
202
208
|
```bash
|
|
203
209
|
# 添加(默认系列层级;传 --adgroup-id 则为组层级)
|
|
204
210
|
# 多词短语直接写空格,逗号分隔多条——CLI 支持,无需改后台手工补
|
|
@@ -214,11 +220,23 @@ siluzan-tso ad keyword-negative-create \
|
|
|
214
220
|
--campaign-id <campaignId> --campaign-name <campaignName> \
|
|
215
221
|
--keywords-file ./negatives.json --match-type Phrase
|
|
216
222
|
|
|
217
|
-
#
|
|
223
|
+
# 添加账户级否词(--level Account;无需 campaign-id/adgroup-id)
|
|
224
|
+
siluzan-tso ad keyword-negative-create \
|
|
225
|
+
-a <accountId> --level Account \
|
|
226
|
+
--keywords "free,jobs,DIY"
|
|
227
|
+
|
|
228
|
+
# 查询:--level Account|Campaign|AdGroup 按层级过滤;不传则三级都返回(用输出里的「级别」区分)
|
|
229
|
+
siluzan-tso ad keywords -a <accountId> --negative --level Account --json-out ./snap
|
|
230
|
+
siluzan-tso ad keywords -a <accountId> --negative --level AdGroup
|
|
231
|
+
|
|
232
|
+
# 删除/编辑对三级通用(先用 ad keywords --negative --json-out ./snap 获取 id,无需额外传层级)
|
|
233
|
+
# 编辑成功后 id 可能变(网关先建后删),以 CLI 提示的新 id 为准
|
|
218
234
|
siluzan-tso ad keyword-negative-delete -a <accountId> --id <negativeKeywordId>
|
|
219
235
|
```
|
|
220
236
|
|
|
221
237
|
> **禁止**因「多词」就让用户去 Google Ads 后台手工补否词——那是 Agent 误判;用上面命令即可。
|
|
238
|
+
> 账户级否词账户上限约 1000 词;权限不足返回 `403`,Google 侧错误返回 `400`。
|
|
239
|
+
> 查询 `--level AdGroup` 时 CLI 会映射为网关历史值 `appliedlevel=Ad group`(有空格),调用方无需关心。
|
|
222
240
|
|
|
223
241
|
---
|
|
224
242
|
|
|
@@ -39,13 +39,13 @@
|
|
|
39
39
|
|
|
40
40
|
## ID 来源速查
|
|
41
41
|
|
|
42
|
-
| 需要的 ID
|
|
43
|
-
|
|
|
42
|
+
| 需要的 ID | 获取命令 |
|
|
43
|
+
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
|
|
44
44
|
| `accountId`(`-a`) / JSON `account` | `list-accounts -m Google` → `mediaCustomerId`(纯数字;UI 带连字符 CID 可传入,CLI 去横杠,见 [google-ads.md](google-ads.md) Gotchas) |
|
|
45
|
-
| 广告系列 `id`
|
|
46
|
-
| 广告组 `id`、`name`
|
|
47
|
-
| 广告 `id`
|
|
48
|
-
| 关键词 `id`
|
|
45
|
+
| 广告系列 `id` | `siluzan-tso ad campaigns -a <accountId> --json-out ./snap` → `id` |
|
|
46
|
+
| 广告组 `id`、`name` | `siluzan-tso ad groups -a <accountId> --json-out ./snap` → `id`、`name` |
|
|
47
|
+
| 广告 `id` | `siluzan-tso ad list -a <accountId> --json-out ./snap` → `id` |
|
|
48
|
+
| 关键词 `id` | `siluzan-tso ad keywords -a <accountId> --json-out ./snap` → `id` |
|
|
49
49
|
|
|
50
50
|
---
|
|
51
51
|
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
64
64
|
| 模板 | 复制 `assets/pmax-create-template.json`,字段见 `assets/pmax-create-template.md` |
|
|
65
65
|
| **素材转换** | `siluzan-tso ad pmax-image-convert --input ./banner.jpg --output-dir ./assets --prefix <name> [--update-config ./pmax.json]` |
|
|
66
|
-
| 地理 ID | 多国:`ad geo resolve -a <accountId> --from-file ./locations.json --json-out ./snap-geo`;单国:`ad geo search -a <accountId> -q "<地区名>"`
|
|
66
|
+
| 地理 ID | 多国:`ad geo resolve -a <accountId> --from-file ./locations.json --json-out ./snap-geo`;单国:`ad geo search -a <accountId> -q "<地区名>"` |
|
|
67
67
|
| 校验 | `siluzan-tso ad pmax-validate --config-file ./pmax.json [--json-out ./snap-pmax]`(图片规格 + 文案超长 `lengthViolations`;超长勿自动截断,见 `references/google-ads/google-ads-campaign-plan.md` § 超长人工确认) |
|
|
68
68
|
| **审查稿** | Agent **写代码**读 JSON,按 `rules/google-ads-pmax-launch-plan-template.md` 投影完整文件(默认 MD;用户指定则 Excel 等)→ 用户确认;**禁止**只交概览表 |
|
|
69
69
|
| 创建 | `siluzan-tso ad pmax-create --config-file ./pmax.json [--json-out ./snap-pmax]` |
|
|
@@ -157,12 +157,12 @@ siluzan-tso ad batch diff --batch-id <taskId> --config-file ./campaign.json --js
|
|
|
157
157
|
|
|
158
158
|
### 失败处理(Agent 必遵)
|
|
159
159
|
|
|
160
|
-
| `status` | 含义 | 做法
|
|
161
|
-
| -------------- | -------- |
|
|
160
|
+
| `status` | 含义 | 做法 |
|
|
161
|
+
| -------------- | -------- | ---------------------------------------------------------------------------------------------------------- |
|
|
162
162
|
| `Creating` | 仍在执行 | 继续 `ad batch get`(带同一 `--config-file` + `--json-out`),读 `agentWorkflow`,勿重复 `campaign-create` |
|
|
163
|
-
| `Successfully` | 全部成功 | **须** `ad batch diff`(含投放国家);`--json-out` 时 `ok===true` 才算齐
|
|
164
|
-
| `Failed` | 全部失败 | `ad batch get` 读 `reason`/`errors` → **只改 JSON** → 再 `ad campaign-create`(**不要** `batch diff`)
|
|
165
|
-
| `HasFailed` | 部分成功 | **须** `ad batch diff` 列出缺失 → 分步补建或删系列重提(`ok===false` / exit 2)
|
|
163
|
+
| `Successfully` | 全部成功 | **须** `ad batch diff`(含投放国家);`--json-out` 时 `ok===true` 才算齐 |
|
|
164
|
+
| `Failed` | 全部失败 | `ad batch get` 读 `reason`/`errors` → **只改 JSON** → 再 `ad campaign-create`(**不要** `batch diff`) |
|
|
165
|
+
| `HasFailed` | 部分成功 | **须** `ad batch diff` 列出缺失 → 分步补建或删系列重提(`ok===false` / exit 2) |
|
|
166
166
|
|
|
167
167
|
**`HasFailed` 分支:**
|
|
168
168
|
|
|
@@ -276,11 +276,11 @@ siluzan-tso ad ad-create \
|
|
|
276
276
|
[--json-out <path>]
|
|
277
277
|
```
|
|
278
278
|
|
|
279
|
-
| 约束
|
|
280
|
-
|
|
|
281
|
-
| headlines
|
|
282
|
-
| descriptions | **2–4** 条,每条 **≤90** Google 字符(CJK×2)
|
|
283
|
-
| path1/path2
|
|
279
|
+
| 约束 | 值 |
|
|
280
|
+
| ------------ | ---------------------------------------------- |
|
|
281
|
+
| headlines | **3–15** 条,每条 **≤30** Google 字符(CJK×2) |
|
|
282
|
+
| descriptions | **2–4** 条,每条 **≤90** Google 字符(CJK×2) |
|
|
283
|
+
| path1/path2 | 可选,各 **≤15** |
|
|
284
284
|
|
|
285
285
|
创建后暂停:`ad ad-status -a <accountId> --id <adId> --status Paused --commit "创建后暂停"`。若列表找不到新广告,给 `ad-status` / `ad list` 加宽 `--start`/`--end`。
|
|
286
286
|
|
|
@@ -347,6 +347,23 @@ siluzan-tso ad keyword-status -a <accountId> --id <keywordId> --status <Enabled|
|
|
|
347
347
|
|
|
348
348
|
---
|
|
349
349
|
|
|
350
|
+
## ad keyword-negative-create — 否词创建(系列/组/账户三级)
|
|
351
|
+
|
|
352
|
+
```bash
|
|
353
|
+
# 系列级(默认)/ 组级(传 --adgroup-id):与旧版一致
|
|
354
|
+
siluzan-tso ad keyword-negative-create -a <accountId> \
|
|
355
|
+
--campaign-id <campaignId> --campaign-name <campaignName> \
|
|
356
|
+
--keywords "词1,词2"
|
|
357
|
+
|
|
358
|
+
# 账户级(Sammamish 2026-08 新增,Google Ads「Account Settings → Negative keywords」):
|
|
359
|
+
# --level Account,不传 campaign-id/adgroup-id;一次生效于整个账户所有系列
|
|
360
|
+
siluzan-tso ad keyword-negative-create -a <accountId> --level Account --keywords "free,jobs,DIY"
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
详见 `google-ads-read.md` §否定关键词(含 `--level` 用法与限制:账户上限约 1000 词)。
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
350
367
|
## ad keyword-negative-edit — 否词编辑
|
|
351
368
|
|
|
352
369
|
```bash
|
|
@@ -355,7 +372,7 @@ siluzan-tso ad keyword-negative-edit \
|
|
|
355
372
|
[--text <新文本>] [--match-type Broad|Phrase|Exact]
|
|
356
373
|
```
|
|
357
374
|
|
|
358
|
-
传 `--match-type` 时 CLI
|
|
375
|
+
传 `--match-type` 时 CLI 自动同步改写外层括号/引号。系列/组/账户三级通用,无需额外传层级参数。
|
|
359
376
|
|
|
360
377
|
---
|
|
361
378
|
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
|
|
5
5
|
## 支持的广告类型(硬边界)
|
|
6
6
|
|
|
7
|
-
| 类型
|
|
8
|
-
|
|
|
9
|
-
| **搜索广告(Search)**
|
|
10
|
-
| **Performance Max(PMax)** | ✅ 支持
|
|
11
|
-
| **展示广告(Display)**
|
|
7
|
+
| 类型 | CLI / Skill | 说明 |
|
|
8
|
+
| --------------------------- | ------------- | ------------------------------------------------------------------------- |
|
|
9
|
+
| **搜索广告(Search)** | ✅ 支持 | 方案、`campaign-validate` / `campaign-create`、组/RSA/关键词 CRUD、扩展等 |
|
|
10
|
+
| **Performance Max(PMax)** | ✅ 支持 | `pmax-validate` / `pmax-create` 及存量 PMax 管理(见 `pmax-api.md`) |
|
|
11
|
+
| **展示广告(Display)** | ❌ **不支持** | 含独立 Display 系列、自适应展示广告(RDA)等;**禁止**创建或伪装创建 |
|
|
12
12
|
|
|
13
13
|
用户明确要求展示广告时:如实告知不支持,可改推 Search 或 PMax;**禁止**用搜索系列 JSON / `ad-create`(RSA)冒充 Display。
|
|
14
14
|
|
|
@@ -16,14 +16,14 @@
|
|
|
16
16
|
|
|
17
17
|
## 何时 Read
|
|
18
18
|
|
|
19
|
-
| 任务
|
|
20
|
-
|
|
|
21
|
-
| 查系列/组/创意/关键词/搜索词/地理
|
|
22
|
-
| 创建/编辑/启停/否词/附加信息/PMax/设备出价
|
|
23
|
-
| batch 流水线、`ad batch`、AI 智投草稿(W4) | [`google-ads-batch.md`](google-ads-batch.md)
|
|
24
|
-
| 搜索系列 7 步方案与门禁
|
|
25
|
-
| PMax 网关路径
|
|
26
|
-
| 优化/合规 SOP
|
|
19
|
+
| 任务 | Read |
|
|
20
|
+
| ------------------------------------------- | ---------------------------------------------------------------------- |
|
|
21
|
+
| 查系列/组/创意/关键词/搜索词/地理 | [`google-ads-read.md`](google-ads-read.md) |
|
|
22
|
+
| 创建/编辑/启停/否词/附加信息/PMax/设备出价 | [`google-ads-write.md`](google-ads-write.md) |
|
|
23
|
+
| batch 流水线、`ad batch`、AI 智投草稿(W4) | [`google-ads-batch.md`](google-ads-batch.md) |
|
|
24
|
+
| 搜索系列 7 步方案与门禁 | [`google-ads-campaign-plan.md`](google-ads-campaign-plan.md) |
|
|
25
|
+
| PMax 网关路径 | [`pmax-api.md`](pmax-api.md) |
|
|
26
|
+
| 优化/合规 SOP | [`rules/README.md`](rules/README.md)(只读索引 → 再读一个 rules 文件) |
|
|
27
27
|
|
|
28
28
|
## Gotchas
|
|
29
29
|
|
|
@@ -55,4 +55,3 @@
|
|
|
55
55
|
| 关键词 `id` | `siluzan-tso ad keywords -a <accountId> --json-out ./snap` → `id` |
|
|
56
56
|
|
|
57
57
|
---
|
|
58
|
-
|
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
> **策略/SOP**,非 CLI 参数表。命令见 `google-ads-read.md` / `google-ads-write.md` / `google-ads-batch.md`。新建流程见 `google-ads-campaign-plan.md`。
|
|
4
4
|
> **怎么读**:下表选 **一个**文件再 Read(审计/合规若有子模块,先读其导航再选子文件)。
|
|
5
5
|
|
|
6
|
-
| 文件
|
|
7
|
-
|
|
|
8
|
-
| `google-ads-account-audit.md`
|
|
9
|
-
| `google-ads-compliance.md`
|
|
10
|
-
| `google-ads-campaign-optimization.md`
|
|
11
|
-
| `google-ads-keyword-strategy.md`
|
|
12
|
-
| `google-ads-keyword-optimization.md`
|
|
13
|
-
| `google-ads-keyword-taxonomy.md`
|
|
14
|
-
| `google-ads-plan-source-fidelity.md`
|
|
15
|
-
| `google-ads-creative-optimization.md`
|
|
16
|
-
| `google-ads-audience-strategy.md`
|
|
17
|
-
| `google-ads-pmax-guide.md`
|
|
18
|
-
| `google-ads-conversion-architecture.md`
|
|
19
|
-
| `google-ads-landing-page-discovery-via-webfetch.md` | 落地页发现(WebFetch)
|
|
20
|
-
| `google-ads-launch-plan-template.md`
|
|
21
|
-
| `google-ads-pmax-launch-plan-template.md`
|
|
22
|
-
| `sensitive-industries.md`
|
|
6
|
+
| 文件 | 何时 Read |
|
|
7
|
+
| --------------------------------------------------- | ---------------------------------------------------------- |
|
|
8
|
+
| `google-ads-account-audit.md` | 账户健康审计(索引 → quick / structure / assets / report) |
|
|
9
|
+
| `google-ads-compliance.md` | 合规政策(索引 → forbid / copy / ops) |
|
|
10
|
+
| `google-ads-campaign-optimization.md` | 系列层优化决策 |
|
|
11
|
+
| `google-ads-keyword-strategy.md` | 关键词策略规划 |
|
|
12
|
+
| `google-ads-keyword-optimization.md` | 关键词出价/否定/扩词 |
|
|
13
|
+
| `google-ads-keyword-taxonomy.md` | 词类分层与命名 |
|
|
14
|
+
| `google-ads-plan-source-fidelity.md` | **Excel/表格方案 → JSON**(有方案文件时必读) |
|
|
15
|
+
| `google-ads-creative-optimization.md` | 创意/文案优化 |
|
|
16
|
+
| `google-ads-audience-strategy.md` | 受众策略 |
|
|
17
|
+
| `google-ads-pmax-guide.md` | PMax 运营(配合 `assets/pmax-create-template.md`) |
|
|
18
|
+
| `google-ads-conversion-architecture.md` | 转化追踪架构 |
|
|
19
|
+
| `google-ads-landing-page-discovery-via-webfetch.md` | 落地页发现(WebFetch) |
|
|
20
|
+
| `google-ads-launch-plan-template.md` | 搜索投放审查稿(Agent 写代码从 JSON 投影) |
|
|
21
|
+
| `google-ads-pmax-launch-plan-template.md` | PMax 投放审查稿(Agent 写代码从 JSON 投影) |
|
|
22
|
+
| `sensitive-industries.md` | 敏感行业限制 |
|
|
23
23
|
|
|
24
24
|
宿主编排自动优化:`references/operations/hosted-automation-optimize-index.md`。
|
|
@@ -6,8 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
9
|
- 1. 审计总览与流程
|
|
12
10
|
- 2. 快速健康检查(5分钟诊断)
|
|
13
11
|
- 3. 账户结构审计
|
|
@@ -33,9 +31,9 @@
|
|
|
33
31
|
|
|
34
32
|
## Contents / 何时 Read
|
|
35
33
|
|
|
36
|
-
| 文件
|
|
37
|
-
|
|
|
38
|
-
| [`google-ads-account-audit-quick.md`](google-ads-account-audit-quick.md)
|
|
39
|
-
| [`google-ads-account-audit-structure.md`](google-ads-account-audit-structure.md) | 账户结构、转化追踪、出价策略审计
|
|
40
|
-
| [`google-ads-account-audit-assets.md`](google-ads-account-audit-assets.md)
|
|
41
|
-
| [`google-ads-account-audit-report.md`](google-ads-account-audit-report.md)
|
|
34
|
+
| 文件 | 何时 Read |
|
|
35
|
+
| -------------------------------------------------------------------------------- | ------------------------------------------------ |
|
|
36
|
+
| [`google-ads-account-audit-quick.md`](google-ads-account-audit-quick.md) | 5 分钟健康检查、常见问题速查、CLI 审计命令序列 |
|
|
37
|
+
| [`google-ads-account-audit-structure.md`](google-ads-account-audit-structure.md) | 账户结构、转化追踪、出价策略审计 |
|
|
38
|
+
| [`google-ads-account-audit-assets.md`](google-ads-account-audit-assets.md) | 关键词/创意/地域设备/落地页/预算/竞争态势 |
|
|
39
|
+
| [`google-ads-account-audit-report.md`](google-ads-account-audit-report.md) | 撰写审计报告章节(Critical/Warning/Opportunity) |
|
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
10
|
- 一、行业敏感度分级(先判断再执行)
|
|
13
11
|
- 二、绝对禁止内容(关键词/文案中不可出现)
|
|
14
12
|
- 三、编辑合规规则(Top 12% 被拒原因)
|
|
@@ -29,8 +27,8 @@
|
|
|
29
27
|
|
|
30
28
|
## Contents / 何时 Read
|
|
31
29
|
|
|
32
|
-
| 文件
|
|
33
|
-
|
|
|
34
|
-
| [`google-ads-compliance-forbid.md`](google-ads-compliance-forbid.md) | 行业分级、绝对禁止、编辑/虚假承诺/商标/落地页一致性
|
|
35
|
-
| [`google-ads-compliance-copy.md`](google-ads-compliance-copy.md)
|
|
36
|
-
| [`google-ads-compliance-ops.md`](google-ads-compliance-ops.md)
|
|
30
|
+
| 文件 | 何时 Read |
|
|
31
|
+
| -------------------------------------------------------------------- | --------------------------------------------------------------------- |
|
|
32
|
+
| [`google-ads-compliance-forbid.md`](google-ads-compliance-forbid.md) | 行业分级、绝对禁止、编辑/虚假承诺/商标/落地页一致性 |
|
|
33
|
+
| [`google-ads-compliance-copy.md`](google-ads-compliance-copy.md) | 关键词生成、多语言、修饰语、Headlines/Descriptions 清单、新广告主验证 |
|
|
34
|
+
| [`google-ads-compliance-ops.md`](google-ads-compliance-ops.md) | 生成前检查、命令联动、被拒排查、申诉恢复 |
|
|
@@ -403,15 +403,15 @@ Broad Match + 受众信号 = 伪装成广泛定向的精准投放。
|
|
|
403
403
|
|
|
404
404
|
## 十四、CLI 命令联动速查
|
|
405
405
|
|
|
406
|
-
| 策略场景 | 命令 | 要点
|
|
407
|
-
| ------------ | ------------------------------------------------------------ |
|
|
408
|
-
| 关键词调研 | `keyword -k "词" [--url]` | 结果按意图分层后再添加
|
|
409
|
-
| 添加关键词 | `ad keyword-create --keywords "词1,词2"` | 格式:`词→BROAD`、`"词"→PHRASE`、`[词]→EXACT`
|
|
410
|
-
| 添加否定词 | `ad keyword-negative-create` | **支持空格多词**(`how to make`);多词用 `--keywords` 或 `--keywords-file
|
|
411
|
-
| 创建广告系列 | `ad campaign-create --config-file`(先 `campaign-validate`) | `KeywordText` 为 JSON 数组,**空格多词合法**;否词写 `NegativeKeywordsForBatchJob`,勿因多词省略
|
|
412
|
-
| 搜索词分析 | `ad search-terms` | 每周导出,按第八章流程处理
|
|
413
|
-
| 竞品监控 | `ad auction-insights`(如有) | 按第九章分析竞争态势
|
|
414
|
-
| 出价调整 | 广告系列级 Smart Bidding 设置 | 新账户用 Manual/ECPC → 有数据后切 tCPA/tROAS
|
|
406
|
+
| 策略场景 | 命令 | 要点 |
|
|
407
|
+
| ------------ | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------- |
|
|
408
|
+
| 关键词调研 | `keyword -k "词" [--url]` | 结果按意图分层后再添加 |
|
|
409
|
+
| 添加关键词 | `ad keyword-create --keywords "词1,词2"` | 格式:`词→BROAD`、`"词"→PHRASE`、`[词]→EXACT` |
|
|
410
|
+
| 添加否定词 | `ad keyword-negative-create` | **支持空格多词**(`how to make`);多词用 `--keywords` 或 `--keywords-file`,**禁止**因多词改让用户后台手补;`--level Account` 可直接建账户级否词(详见 `google-ads-write.md`) |
|
|
411
|
+
| 创建广告系列 | `ad campaign-create --config-file`(先 `campaign-validate`) | `KeywordText` 为 JSON 数组,**空格多词合法**;否词写 `NegativeKeywordsForBatchJob`,勿因多词省略 |
|
|
412
|
+
| 搜索词分析 | `ad search-terms` | 每周导出,按第八章流程处理 |
|
|
413
|
+
| 竞品监控 | `ad auction-insights`(如有) | 按第九章分析竞争态势 |
|
|
414
|
+
| 出价调整 | 广告系列级 Smart Bidding 设置 | 新账户用 Manual/ECPC → 有数据后切 tCPA/tROAS |
|
|
415
415
|
|
|
416
416
|
---
|
|
417
417
|
|
|
@@ -35,22 +35,22 @@
|
|
|
35
35
|
|
|
36
36
|
## Markdown ↔ JSON 映射(生成 JSON 时对照)
|
|
37
37
|
|
|
38
|
-
| 计划正文(Markdown) | `campaign-create` JSON 字段(**PascalCase 直通后端**)
|
|
39
|
-
| ---------------------- |
|
|
40
|
-
| 账户 ID / 客户名 | `account`、`customerName`(外层)
|
|
41
|
-
| 系列名称 | `name`(外层展示用) / `campaign.Name`(内层)
|
|
42
|
-
| 日预算 | `campaign.Budget`(**元**,CLI 内部 ×100 转分)
|
|
43
|
-
| 出价策略 / 上限 / tCPA | `campaign.BiddingStrategyTypeV2`、`campaign.TargetSpend_BidCeilingAmount`、`campaign.TargetCpa_BidingAmount`、`campaign.TargetRoas`
|
|
38
|
+
| 计划正文(Markdown) | `campaign-create` JSON 字段(**PascalCase 直通后端**) |
|
|
39
|
+
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
40
|
+
| 账户 ID / 客户名 | `account`、`customerName`(外层) |
|
|
41
|
+
| 系列名称 | `name`(外层展示用) / `campaign.Name`(内层) |
|
|
42
|
+
| 日预算 | `campaign.Budget`(**元**,CLI 内部 ×100 转分) |
|
|
43
|
+
| 出价策略 / 上限 / tCPA | `campaign.BiddingStrategyTypeV2`、`campaign.TargetSpend_BidCeilingAmount`、`campaign.TargetCpa_BidingAmount`、`campaign.TargetRoas` |
|
|
44
44
|
| 投放地域 | `campaign.targetedLocations: [{ id: "<geoId>" }]`(**必须**先 `ad geo search` 取 id,禁止编造)、外层 `locations`(与 targetedLocations 同序同量) |
|
|
45
|
-
| 语言 | `campaign.targetedLanguages: [{ id: 1000 }]`(英语 1000 / 中文 1017)
|
|
46
|
-
| 起止日期 | `campaign.StartTime`、`campaign.EndTime`(YYYY-MM-DD)
|
|
47
|
-
| 落地页 | 外层 `url`;广告组级 `KeywordsForBatchJob[].FinalURL`、创意级 `AdsForBatchJob[].Finalurl`
|
|
48
|
-
| 关键词 | `campaign.AdGroupsForBatchJob[].KeywordsForBatchJob`(`MatchTypeV2` + `KeywordText`)
|
|
49
|
-
| 否定词 | `campaign.NegativeKeywordsForBatchJob: [{ KeywordText: [...], MatchTypeV2: "BROAD", FinalURL: "" }]`
|
|
50
|
-
| 附加信息 | `campaign.ExtensionsForBatchJob`
|
|
51
|
-
| 广告组 | `campaign.AdGroupsForBatchJob[]`:`Name`、`MaxCPCAmount`、`KeywordsForBatchJob`、`AdsForBatchJob`
|
|
52
|
-
| 仅保存草稿 | `draft: true` → 确认后 `ad batch publish`
|
|
53
|
-
| 立即创建 | `draft: false`(默认)
|
|
45
|
+
| 语言 | `campaign.targetedLanguages: [{ id: 1000 }]`(英语 1000 / 中文 1017) |
|
|
46
|
+
| 起止日期 | `campaign.StartTime`、`campaign.EndTime`(YYYY-MM-DD) |
|
|
47
|
+
| 落地页 | 外层 `url`;广告组级 `KeywordsForBatchJob[].FinalURL`、创意级 `AdsForBatchJob[].Finalurl` |
|
|
48
|
+
| 关键词 | `campaign.AdGroupsForBatchJob[].KeywordsForBatchJob`(`MatchTypeV2` + `KeywordText`) |
|
|
49
|
+
| 否定词 | `campaign.NegativeKeywordsForBatchJob: [{ KeywordText: [...], MatchTypeV2: "BROAD", FinalURL: "" }]` |
|
|
50
|
+
| 附加信息 | `campaign.ExtensionsForBatchJob` |
|
|
51
|
+
| 广告组 | `campaign.AdGroupsForBatchJob[]`:`Name`、`MaxCPCAmount`、`KeywordsForBatchJob`、`AdsForBatchJob` |
|
|
52
|
+
| 仅保存草稿 | `draft: true` → 确认后 `ad batch publish` |
|
|
53
|
+
| 立即创建 | `draft: false`(默认) |
|
|
54
54
|
|
|
55
55
|
关键词匹配(在 `KeywordsForBatchJob` 块中以 `MatchTypeV2` 区分;同一块同匹配类型):`词`→广泛、`"词"`→词组、`[词]`→完全。
|
|
56
56
|
从 Excel/表格方案导入时须保真匹配类型与地域 id,见 `google-ads-plan-source-fidelity.md`。
|
|
@@ -88,6 +88,7 @@
|
|
|
88
88
|
{{如为 Tier 2/3,在此插入合规提示:}}
|
|
89
89
|
|
|
90
90
|
> ⚠️ **合规提示**(推荐列出 **2–4 条**核心限制):{{行业}}属于{{Tier等级}}行业,须遵守以下限制:
|
|
91
|
+
>
|
|
91
92
|
> - {{限制条目 1}}
|
|
92
93
|
> - {{限制条目 2}}
|
|
93
94
|
> - {{限制条目 3(可选)}}
|