siluzan-tso-cli 1.1.29-beta.2 → 1.1.29-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.js +3174 -867
- package/dist/skill/AGENTS.md +30 -31
- package/dist/skill/SKILL.md +16 -33
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/assets/campaign-create-keyword-test.fixed.json +10 -33
- package/dist/skill/assets/campaign-create-template.json +2 -0
- package/dist/skill/assets/campaign-create-template.md +114 -99
- package/dist/skill/assets/market-analysis-rules.md +55 -55
- package/dist/skill/assets/meta-period-report-rules.md +61 -60
- package/dist/skill/assets/pmax-asset-group-template.json +12 -4
- package/dist/skill/assets/pmax-asset-group-template.md +25 -0
- package/dist/skill/assets/pmax-brand-assets-template.json +25 -0
- package/dist/skill/assets/pmax-brand-assets-template.md +22 -0
- package/dist/skill/assets/pmax-brand-guidelines-enable-template.json +24 -0
- package/dist/skill/assets/pmax-brand-guidelines-enable-template.md +22 -0
- package/dist/skill/assets/pmax-create-template.json +41 -2
- package/dist/skill/assets/pmax-create-template.md +84 -51
- package/dist/skill/assets/pmax-lead-form-template.json +36 -0
- package/dist/skill/assets/pmax-lead-form-template.md +70 -0
- package/dist/skill/assets/pmax-signals-template.json +2 -6
- package/dist/skill/assets/pmax-whatsapp-template.json +26 -0
- package/dist/skill/assets/pmax-whatsapp-template.md +45 -0
- package/dist/skill/assets/website-diagnosis-rules.md +67 -67
- package/dist/skill/references/README.md +78 -65
- package/dist/skill/references/accounts/accounts.md +99 -105
- package/dist/skill/references/accounts/finance.md +23 -79
- package/dist/skill/references/accounts/open-account-by-media.md +84 -81
- package/dist/skill/references/accounts/open-account-google-ui.md +24 -24
- package/dist/skill/references/analytics/account-analytics.md +94 -103
- package/dist/skill/references/analytics/facebook-analysis-guide.md +61 -61
- package/dist/skill/references/analytics/google-analysis-batch.md +2 -2
- package/dist/skill/references/analytics/keyword-planner-workflows.md +22 -23
- package/dist/skill/references/analytics/market-analysis-guide.md +31 -25
- package/dist/skill/references/analytics/rag.md +20 -20
- package/dist/skill/references/analytics/reporting.md +4 -4
- package/dist/skill/references/analytics/website-diagnosis-guide.md +24 -24
- package/dist/skill/references/core/agent-conventions.md +136 -106
- package/dist/skill/references/core/cli-enums.md +47 -53
- package/dist/skill/references/core/playbooks.md +42 -41
- package/dist/skill/references/core/subagent-orchestration.md +40 -40
- package/dist/skill/references/core/tips.md +18 -61
- package/dist/skill/references/core/workflows.md +36 -29
- package/dist/skill/references/google-ads/google-ads-campaign-plan.md +25 -24
- package/dist/skill/references/google-ads/google-ads.md +81 -57
- package/dist/skill/references/google-ads/pmax-api.md +138 -34
- package/dist/skill/references/google-ads/rules/README.md +15 -15
- package/dist/skill/references/google-ads/rules/google-ads-account-audit.md +22 -22
- package/dist/skill/references/google-ads/rules/google-ads-compliance.md +27 -27
- package/dist/skill/references/google-ads/rules/google-ads-keyword-strategy.md +15 -15
- package/dist/skill/references/google-ads/rules/google-ads-keyword-taxonomy.md +32 -22
- package/dist/skill/references/google-ads/rules/google-ads-launch-plan-template.md +32 -30
- package/dist/skill/references/google-ads/rules/google-ads-pmax-guide.md +3 -1
- package/dist/skill/references/misc/tso-home.md +8 -8
- package/dist/skill/references/operations/clue.md +1 -1
- package/dist/skill/references/operations/forewarning.md +1 -1
- package/dist/skill/references/operations/hosted-automation-optimize-index.md +2 -2
- package/dist/skill/references/operations/hosted-automation-scenarios.md +5 -5
- package/dist/skill/references/operations/hosted-automation-self-control.md +15 -15
- package/dist/skill/references/operations/hosted-automation-user-catalog.md +13 -13
- package/dist/skill/references/operations/optimize.md +8 -8
- package/dist/skill/references/report-templates/README.md +45 -0
- package/dist/skill/references/report-templates/REPORT-WORKFLOW.md +114 -0
- package/dist/skill/references/report-templates/bing-period-report.md +65 -0
- package/dist/skill/references/report-templates/google-account-diagnosis-report.md +83 -0
- package/dist/skill/references/report-templates/google-ads-diagnosis.md +378 -0
- package/dist/skill/references/report-templates/google-inquiry-analysis.md +543 -0
- package/dist/skill/references/report-templates/google-period-report-excel.md +126 -0
- package/dist/skill/references/report-templates/google-period-report.md +60 -0
- package/dist/skill/references/report-templates/market-analysis-report.md +40 -0
- package/dist/skill/references/report-templates/meta-account-diagnosis-report.md +74 -0
- package/dist/skill/references/report-templates/meta-period-report-excel.md +230 -0
- package/dist/skill/references/report-templates/meta-period-report.md +219 -0
- package/dist/skill/references/report-templates/okki-weekly-google-client.md +217 -0
- package/dist/skill/references/report-templates/tiktok-period-report.md +56 -0
- package/dist/skill/references/report-templates/website-diagnosis-report.md +79 -0
- package/dist/skill/report-templates/README.md +16 -14
- package/dist/skill/report-templates/REPORT-WORKFLOW.md +13 -13
- package/dist/skill/report-templates/google-account-diagnosis-report.md +1 -1
- package/dist/skill/report-templates/google-ads-diagnosis.md +21 -21
- package/dist/skill/report-templates/google-inquiry-analysis.md +44 -44
- package/dist/skill/report-templates/google-period-report-excel.md +24 -24
- package/dist/skill/report-templates/google-period-report.md +23 -23
- package/dist/skill/report-templates/market-analysis-report.md +1 -1
- package/dist/skill/report-templates/meta-period-report-excel.md +72 -64
- package/dist/skill/report-templates/meta-period-report.html +706 -428
- package/dist/skill/report-templates/meta-period-report.md +61 -60
- package/dist/skill/report-templates/okki-weekly-google-client.md +26 -26
- package/dist/skill/report-templates/report-template-academic.html +1 -1
- package/dist/skill/report-templates/report-template-dark.html +1 -1
- package/dist/skill/report-templates/report-template-formal.html +1 -1
- package/dist/skill/report-templates/report-template-mobile.html +1 -1
- package/dist/skill/report-templates/report-template-onepager.html +1 -1
- package/dist/skill/report-templates/report-template-print.html +1 -1
- package/dist/skill/report-templates/report-template.html +1 -1
- package/dist/skill/report-templates/website-diagnosis-report.html +1731 -1653
- package/dist/skill/report-templates/website-diagnosis-report.md +21 -23
- package/dist/skill/scripts/install.ps1 +1 -1
- package/dist/skill/scripts/install.sh +1 -1
- package/dist/skill/snippets/handoff-p7-inquiry.md +5 -5
- 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/human-p1-multiturn.scenario.json +1 -5
- 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/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 +15 -0
- package/eval/cases/pmax-brand-edit-routing.scenario.json +12 -0
- package/eval/cases/pmax-edit-not-campaign-edit.scenario.json +15 -0
- package/eval/cases/pmax-enable-brand-guidelines.scenario.json +15 -0
- package/eval/cases/pmax-no-assets-update-brand-fields.scenario.json +12 -0
- 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-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-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/stub-fixtures/facebook-analysis.json +24 -4
- package/eval/stub-fixtures/meta-overview.json +4 -1
- package/eval/stub-fixtures/pmax-asset-group-create-ok.json +12 -0
- package/eval/stub-fixtures/pmax-brand-assets-edit-ok.json +11 -0
- package/eval/stub-fixtures/pmax-brand-guidelines-enable-ok.json +11 -0
- package/eval/stub-fixtures/pmax-edit-ok.json +11 -0
- package/eval/stub-fixtures/pmax-get-bg-on.json +20 -0
- package/package.json +1 -1
- package/dist/skill/references/core/deliverable-preflight.md +0 -109
package/dist/skill/AGENTS.md
CHANGED
|
@@ -14,48 +14,47 @@
|
|
|
14
14
|
|
|
15
15
|
## 文档域(gstack-style domains)
|
|
16
16
|
|
|
17
|
-
| 域
|
|
18
|
-
|
|
|
19
|
-
| **Core**
|
|
20
|
-
| **Handoff**
|
|
21
|
-
| **Accounts**
|
|
22
|
-
| **Google Ads** | `references/google-ads/`
|
|
23
|
-
| **Analytics**
|
|
24
|
-
| **Operations** | `references/operations/`
|
|
25
|
-
| **Templates**
|
|
17
|
+
| 域 | 路径 | 何时 Read |
|
|
18
|
+
| -------------- | -------------------------------------------------------------------- | -------------------------------------------------------------- |
|
|
19
|
+
| **Core** | `references/core/` | 纪律、安装、tips、playbooks、workflows、subagent-orchestration |
|
|
20
|
+
| **Handoff** | `snippets/` | P5/P6/P7 Task 派发模板(与 SKILL 同级) |
|
|
21
|
+
| **Accounts** | `references/accounts/` | 列表、余额、开户、财务、审计 |
|
|
22
|
+
| **Google Ads** | `references/google-ads/` | CRUD、PMax、搜索系列流水线;`rules/` 为优化 SOP |
|
|
23
|
+
| **Analytics** | `references/analytics/` | 拉数、批处理、拓词、RAG、TSO 报告 |
|
|
24
|
+
| **Operations** | `references/operations/` | 预警、线索、优化记录、宿主编排自动化 |
|
|
25
|
+
| **Templates** | `assets/`、`references/report-templates/`、`report-templates/*.html` | JSON 契约、报告纲要、HTML 样式 |
|
|
26
26
|
|
|
27
27
|
## 工作流目录
|
|
28
28
|
|
|
29
|
-
| 类别
|
|
30
|
-
|
|
|
31
|
-
| 分析 / 报告类 | `references/core/playbooks.md` | P1–P9
|
|
29
|
+
| 类别 | 文档 | 编号 |
|
|
30
|
+
| ------------- | ------------------------------ | ------ |
|
|
31
|
+
| 分析 / 报告类 | `references/core/playbooks.md` | P1–P9 |
|
|
32
32
|
| 操作 / 管理类 | `references/core/workflows.md` | W1–W12 |
|
|
33
33
|
|
|
34
34
|
专用报告模板(被工作流卡片引用):
|
|
35
35
|
|
|
36
|
-
| ID
|
|
37
|
-
|
|
|
38
|
-
| 网站诊断
|
|
39
|
-
| 战略市场分析
|
|
40
|
-
| Google 周期 Excel | `report-templates/google-period-report-excel.md`(P4
|
|
41
|
-
| OKKI 周报
|
|
42
|
-
| 询盘分析
|
|
36
|
+
| ID | 文档 |
|
|
37
|
+
| ----------------- | ----------------------------------------------------------------- |
|
|
38
|
+
| 网站诊断 | `references/report-templates/website-diagnosis-report.md` |
|
|
39
|
+
| 战略市场分析 | `references/report-templates/market-analysis-report.md` |
|
|
40
|
+
| Google 周期 Excel | `references/report-templates/google-period-report-excel.md`(P4) |
|
|
41
|
+
| OKKI 周报 | `references/report-templates/okki-weekly-google-client.md` |
|
|
42
|
+
| 询盘分析 | `references/report-templates/google-inquiry-analysis.md` |
|
|
43
43
|
|
|
44
44
|
## 维护
|
|
45
45
|
|
|
46
|
-
- 结构规范:`references/core/skill-authoring.md`
|
|
47
|
-
- 人类深读:`docs/skill-guide.md`
|
|
48
46
|
- 源码唯一真相:`tso-cli/assets/siluzan-ads/`(勿编辑 `skills/siluzan-tso/` 副本)
|
|
47
|
+
- 通用纪律唯一真相源:`references/core/agent-conventions.md`(其他文档只单行指向,不复制规则)
|
|
49
48
|
|
|
50
49
|
## CLI 代码域(与文档对齐)
|
|
51
50
|
|
|
52
|
-
| CLI 模块
|
|
53
|
-
|
|
|
54
|
-
| `src/commands/list-accounts/`、`accounts-digest/`、`balance-scan/` | accounts
|
|
55
|
-
| `src/commands/open-account/`、`account-manage-register.ts`
|
|
56
|
-
| `src/commands/ad/`
|
|
57
|
-
| `src/commands/google-analysis/`、`google-analysis-batch.ts`
|
|
58
|
-
| `src/commands/website-diagnosis/`
|
|
59
|
-
| `src/commands/market-analysis/`
|
|
60
|
-
| `src/commands/report/`
|
|
61
|
-
| `src/commands/forewarning/`、`optimize/`、`clue.ts`
|
|
51
|
+
| CLI 模块 | 文档域 |
|
|
52
|
+
| ------------------------------------------------------------------ | ---------------------------- |
|
|
53
|
+
| `src/commands/list-accounts/`、`accounts-digest/`、`balance-scan/` | accounts |
|
|
54
|
+
| `src/commands/open-account/`、`account-manage-register.ts` | accounts |
|
|
55
|
+
| `src/commands/ad/` | google-ads |
|
|
56
|
+
| `src/commands/google-analysis/`、`google-analysis-batch.ts` | analytics |
|
|
57
|
+
| `src/commands/website-diagnosis/` | analytics(网站诊断) |
|
|
58
|
+
| `src/commands/market-analysis/` | analytics(战略市场分析) |
|
|
59
|
+
| `src/commands/report/` | analytics + report-templates |
|
|
60
|
+
| `src/commands/forewarning/`、`optimize/`、`clue.ts` | operations |
|
package/dist/skill/SKILL.md
CHANGED
|
@@ -20,17 +20,9 @@ allowed-tools: Bash(siluzan-tso:*) Read Write
|
|
|
20
20
|
|
|
21
21
|
<!-- 注入到 SKILL.md.tmpl 的 {{AGENT_PREAMBLE}};构建时由 gen-skill-docs.mjs 合并 -->
|
|
22
22
|
|
|
23
|
-
> **Agent
|
|
23
|
+
> **Agent 纪律(每个新任务必读)**:先 Read `references/core/agent-conventions.md`(唯一规则真相源:加载纪律、数据处理协议、时间/币种、批量约束、交付前自检),再按下方路由表 Read「必读文档」与对应工作流卡片。禁止跨话题复用参数记忆;数据类任务一律 `--json-out` + **仅用代码**读落盘 JSON(脚本示例见 `references/core/tips.md`)。
|
|
24
24
|
>
|
|
25
|
-
>
|
|
26
|
-
>
|
|
27
|
-
> **Google Excel(P4)**:Read `report-templates/google-period-report-excel.md`;`list-accounts -k` 核验用户 ID;拉数后**先读齐**各 `*.outline.txt` 再写脚本;禁止 `cat|head` 预览业务 JSON、禁止第三方 xlsx Skill、禁止猜字段名。
|
|
28
|
-
>
|
|
29
|
-
> **HTML 终稿类报告(用户未指定格式时默认 HTML)**:网站诊断 P8(`website-diagnosis render`)、Meta 周期 P4-FB(`facebook-analysis render`)、战略市场 P9(`market-analysis render`)。Agent 只写 JSON,**禁止**仅交付 Markdown 摘要或纯 JSON 充当终稿。
|
|
30
|
-
>
|
|
31
|
-
> **开户**:首次进入开户话题须先向用户罗列该媒体(或未指明媒体时六平台)**全部必填项**,见 `references/accounts/open-account-by-media.md` §「首次响应硬规范」。
|
|
32
|
-
>
|
|
33
|
-
> **Subagent(可选)**:若宿主支持 Task / 子会话,复杂报告(P5/P6/P7)或长 CLI 输出前 Read `references/core/subagent-orchestration.md`,**自行决定**是否委派;写操作确认与对用户的最终交付留在主 Agent。
|
|
25
|
+
> **默认交付格式**:用户未指定格式时,网站诊断 P8、Meta 周期 P4-FB、战略市场 P9 默认 **HTML**(各自 `render` 子命令),Google 周期 P4 默认 HTML;**禁止**仅交付 Markdown 摘要或纯 JSON 充当终稿。
|
|
34
26
|
|
|
35
27
|
---
|
|
36
28
|
|
|
@@ -71,11 +63,11 @@ siluzan-tso -h # 查看帮助
|
|
|
71
63
|
|
|
72
64
|
| 用户意图(关键词) | 工作流 | 必读文档 |
|
|
73
65
|
| ------------------ | ------ | -------- |
|
|
74
|
-
| 账户列表 / 有哪些 / 有多少 / 列出全部某媒体 | W1 | `accounts/accounts.md`(§ list-accounts
|
|
75
|
-
| 单户实时余额 | W1 | `accounts/accounts.md`(balance
|
|
76
|
-
| 多账户余额 / 续航不足预警 | **P2** | `accounts/accounts.md`(balance-scan
|
|
77
|
-
| 单户消耗 / 投放数据 | W1 / **P1** | `accounts/accounts.md`(stats
|
|
78
|
-
| 多账户消耗/对比汇总 | **P3** | `accounts/accounts.md`(accounts-digest
|
|
66
|
+
| 账户列表 / 有哪些 / 有多少 / 列出全部某媒体 | W1 | `accounts/accounts.md`(§ list-accounts 意图速查) |
|
|
67
|
+
| 单户实时余额 | W1 | `accounts/accounts.md`(balance) |
|
|
68
|
+
| 多账户余额 / 续航不足预警 | **P2** | `accounts/accounts.md`(balance-scan) |
|
|
69
|
+
| 单户消耗 / 投放数据 | W1 / **P1** | `accounts/accounts.md`(stats) |
|
|
70
|
+
| 多账户消耗/对比汇总 | **P3** | `accounts/accounts.md`(accounts-digest) |
|
|
79
71
|
| 激活/充值账单明细 | W1 | `accounts/accounts.md`(account-active-bills) |
|
|
80
72
|
| 开户(六大媒体)/ 开户进度 | W2 | `accounts/open-account-by-media.md`(**首次须列全必填项**;Google 加 `accounts/open-account-google-ui.md`) |
|
|
81
73
|
| 账户权限:分享/取消/解绑/重授权/MCC/BC/BM/关闭/提现/邮箱授权 | W9 | `accounts/accounts.md`(account 子命令) |
|
|
@@ -88,9 +80,9 @@ siluzan-tso -h # 查看帮助
|
|
|
88
80
|
|
|
89
81
|
| 用户意图(关键词) | 工作流 | 必读文档 |
|
|
90
82
|
| ------------------ | ------ | -------- |
|
|
91
|
-
| 新建搜索系列 / 出投放方案 | W3 | `google-ads/google-ads-campaign-plan.md` + `assets/campaign-create-template.md
|
|
83
|
+
| 新建搜索系列 / 出投放方案 | W3 | `google-ads/google-ads-campaign-plan.md` + **`assets/campaign-create-template.json`**(结构真相源,先 Read)+ `assets/campaign-create-template.md`(字段说明) |
|
|
92
84
|
| 广告系列/组/广告/关键词 CRUD / 拒审 | W3 | `google-ads/google-ads.md` |
|
|
93
|
-
| PMax 系列 | W3 | `assets/pmax-create-template.md` + `google-ads/pmax-api.md` |
|
|
85
|
+
| PMax 系列 | W3 | **`assets/pmax-create-template.json`**(先 Read)+ `assets/pmax-create-template.md` + `google-ads/pmax-api.md` |
|
|
94
86
|
| AI 智投草稿 list/get/update/publish | W4 | `google-ads/google-ads.md`(§ ad batch) |
|
|
95
87
|
| 拓词 / keyword / 关键词规划 | W5 | `analytics/keyword-planner-workflows.md`(客户背景先 `analytics/rag.md`) |
|
|
96
88
|
| AI 广告优化记录 / 建议 | W6 | `operations/optimize.md` |
|
|
@@ -100,16 +92,16 @@ siluzan-tso -h # 查看帮助
|
|
|
100
92
|
|
|
101
93
|
| 用户意图(关键词) | 工作流 | 必读文档 |
|
|
102
94
|
| ------------------ | ------ | -------- |
|
|
103
|
-
| 单账户投放画像 / 诊断 | **P1** | `analytics/account-analytics.md`
|
|
104
|
-
| Google 账户周期报告 | **P4** | `report-templates/google-period-report.md` + `analytics/account-analytics.md
|
|
105
|
-
| Meta/Facebook 周期或诊断报告 | **P4-FB** | `report-templates/meta-period-report.md` + `assets/meta-period-report-rules.md` + `analytics/facebook-analysis-guide.md`;要 Excel 加 `meta-period-report-excel.md` |
|
|
106
|
-
| TikTok / Bing 周期报告 | **P4** | `analytics/account-analytics.md`(report tiktok-*/bing-*)+ 对应 `report-templates/*-period-report.md` |
|
|
95
|
+
| 单账户投放画像 / 诊断 | **P1** | `analytics/account-analytics.md` |
|
|
96
|
+
| Google 账户周期报告 | **P4** | `references/report-templates/google-period-report.md` + `analytics/account-analytics.md`;要 **Excel** 加 `references/report-templates/google-period-report-excel.md` |
|
|
97
|
+
| Meta/Facebook 周期或诊断报告 | **P4-FB** | `references/report-templates/meta-period-report.md` + `assets/meta-period-report-rules.md` + `analytics/facebook-analysis-guide.md`;要 Excel 加 `references/report-templates/meta-period-report-excel.md` |
|
|
98
|
+
| TikTok / Bing 周期报告 | **P4** | `analytics/account-analytics.md`(report tiktok-*/bing-*)+ 对应 `references/report-templates/*-period-report.md` |
|
|
107
99
|
| 多账户 × 多维度批处理 | **P5** | `analytics/google-analysis-batch.md` + `analytics/account-analytics.md` |
|
|
108
|
-
| OKKI 周报 | **P6** | `report-templates/okki-weekly-google-client.md`(全文) |
|
|
109
|
-
| Google 询盘分析 | **P7** | `report-templates/google-inquiry-analysis.md`(全文)+ `analytics/geo-continents.json` |
|
|
100
|
+
| OKKI 周报 | **P6** | `references/report-templates/okki-weekly-google-client.md`(全文) |
|
|
101
|
+
| Google 询盘分析 | **P7** | `references/report-templates/google-inquiry-analysis.md`(全文)+ `analytics/geo-continents.json` |
|
|
110
102
|
| 网站诊断 / 落地页评分 | **P8** | `analytics/website-diagnosis-guide.md` + `assets/website-diagnosis-rules.md`(**默认交付 HTML**) |
|
|
111
103
|
| 市场分析 / 行业 / 战略市场报告 | **P9** | `analytics/market-analysis-guide.md` + `assets/market-analysis-rules.md`(**默认交付 HTML**) |
|
|
112
|
-
| Google 广告诊断 / 账户健康检查 | **P1** | `report-templates/google-ads-diagnosis.md` + `report-templates/google-account-diagnosis-report.md` |
|
|
104
|
+
| Google 广告诊断 / 账户健康检查 | **P1** | `references/report-templates/google-ads-diagnosis.md` + `references/report-templates/google-account-diagnosis-report.md` |
|
|
113
105
|
| TSO 平台优化报告:列表/生成/推送 | W7 | `analytics/reporting.md` |
|
|
114
106
|
| RAG 知识库检索 | W5 | `analytics/rag.md` |
|
|
115
107
|
|
|
@@ -122,8 +114,6 @@ siluzan-tso -h # 查看帮助
|
|
|
122
114
|
| 日/周巡检 | W12 | `core/workflows.md`(W12)+ `accounts/accounts.md` |
|
|
123
115
|
| 宿主编排 / 投放自控 / 异常监控 / 自动优化 | — | `operations/hosted-automation-user-catalog.md`(索引)→ `operations/hosted-automation-*.md` |
|
|
124
116
|
|
|
125
|
-
> **数据/报告类任务通用纪律**:一律 `--json-out` 落盘 + **仅用脚本**读 JSON(见 `core/tips.md`);交付前 Read 最终产物按 `core/deliverable-preflight.md` 自检(币种/章节)。
|
|
126
|
-
|
|
127
117
|
---
|
|
128
118
|
|
|
129
119
|
## Subagent 自主委派(可选)
|
|
@@ -142,10 +132,3 @@ siluzan-tso -h # 查看帮助
|
|
|
142
132
|
| references 与命令对齐 | 批处理循环、限速、重试;**可选** subagent 并行 |
|
|
143
133
|
|
|
144
134
|
详见 `operations/hosted-automation-self-control.md`、`operations/hosted-automation-monitoring-json.md`、`operations/hosted-automation-optimize-index.md`。
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## 维护者
|
|
149
|
-
|
|
150
|
-
- `references/core/skill-authoring.md` — 规范与检查清单
|
|
151
|
-
- `docs/skill-guide.md` — 人类导读
|
package/dist/skill/_meta.json
CHANGED
|
@@ -3,13 +3,8 @@
|
|
|
3
3
|
"customerName": "成功易人民币广告搭建测试账户",
|
|
4
4
|
"name": "Searh_核心中东",
|
|
5
5
|
"url": "https://www.hy-steelpipe.com/",
|
|
6
|
-
"locations": [
|
|
7
|
-
|
|
8
|
-
],
|
|
9
|
-
"productWords": [
|
|
10
|
-
"test",
|
|
11
|
-
"keyword"
|
|
12
|
-
],
|
|
6
|
+
"locations": ["United States"],
|
|
7
|
+
"productWords": ["test", "keyword"],
|
|
13
8
|
"googleDataRecordId": null,
|
|
14
9
|
"draft": false,
|
|
15
10
|
"campaign": {
|
|
@@ -114,10 +109,7 @@
|
|
|
114
109
|
],
|
|
115
110
|
"NegativeKeywordsForBatchJob": [
|
|
116
111
|
{
|
|
117
|
-
"KeywordText": [
|
|
118
|
-
"free sample",
|
|
119
|
-
"cheap"
|
|
120
|
-
],
|
|
112
|
+
"KeywordText": ["free sample", "cheap"],
|
|
121
113
|
"MatchTypeV2": "BROAD",
|
|
122
114
|
"FinalURL": ""
|
|
123
115
|
}
|
|
@@ -134,51 +126,36 @@
|
|
|
134
126
|
{
|
|
135
127
|
"FinalURL": "https://www.example.com/test-a",
|
|
136
128
|
"MatchTypeV2": "BROAD",
|
|
137
|
-
"KeywordText": [
|
|
138
|
-
"broad match keyword"
|
|
139
|
-
]
|
|
129
|
+
"KeywordText": ["broad match keyword"]
|
|
140
130
|
},
|
|
141
131
|
{
|
|
142
132
|
"FinalURL": "https://www.example.com/test-a",
|
|
143
133
|
"MatchTypeV2": "PHRASE",
|
|
144
|
-
"KeywordText": [
|
|
145
|
-
"\"phrase match keyword\""
|
|
146
|
-
]
|
|
134
|
+
"KeywordText": ["\"phrase match keyword\""]
|
|
147
135
|
},
|
|
148
136
|
{
|
|
149
137
|
"FinalURL": "https://www.example.com/test-a",
|
|
150
138
|
"MatchTypeV2": "EXACT",
|
|
151
|
-
"KeywordText": [
|
|
152
|
-
"[exact match keyword]"
|
|
153
|
-
]
|
|
139
|
+
"KeywordText": ["[exact match keyword]"]
|
|
154
140
|
},
|
|
155
141
|
{
|
|
156
142
|
"FinalURL": "https://www.example.com/test-b",
|
|
157
143
|
"MatchTypeV2": "BROAD",
|
|
158
|
-
"KeywordText": [
|
|
159
|
-
"running shoes broad"
|
|
160
|
-
]
|
|
144
|
+
"KeywordText": ["running shoes broad"]
|
|
161
145
|
},
|
|
162
146
|
{
|
|
163
147
|
"FinalURL": "https://www.example.com/test-b",
|
|
164
148
|
"MatchTypeV2": "EXACT",
|
|
165
|
-
"KeywordText": [
|
|
166
|
-
"[steel pipe exact]"
|
|
167
|
-
]
|
|
149
|
+
"KeywordText": ["[steel pipe exact]"]
|
|
168
150
|
},
|
|
169
151
|
{
|
|
170
152
|
"MatchTypeV2": "EXACT",
|
|
171
|
-
"KeywordText": [
|
|
172
|
-
"[exact keyword one]",
|
|
173
|
-
"[exact keyword two]"
|
|
174
|
-
],
|
|
153
|
+
"KeywordText": ["[exact keyword one]", "[exact keyword two]"],
|
|
175
154
|
"FinalURL": "https://www.example.com/test-c"
|
|
176
155
|
},
|
|
177
156
|
{
|
|
178
157
|
"MatchTypeV2": "PHRASE",
|
|
179
|
-
"KeywordText": [
|
|
180
|
-
"\"phrase keyword only\""
|
|
181
|
-
],
|
|
158
|
+
"KeywordText": ["\"phrase keyword only\""],
|
|
182
159
|
"FinalURL": "https://www.example.com/test-d"
|
|
183
160
|
}
|
|
184
161
|
],
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
"schema": "campaign-create/v2",
|
|
4
4
|
"doc": "campaign-create-template.md",
|
|
5
5
|
"note": "以 _ 开头的键仅作说明,CLI 提交前会剥离;字段名一律 PascalCase,直接对齐后端 CampaignCreationRecord + Campaign 契约",
|
|
6
|
+
"agentReadOrder": "Agent 建系列前必须先 Read 本 JSON(结构真相源),再 Read campaign-create-template.md(字段说明);禁止只读 .md 手写 JSON",
|
|
6
7
|
"agentPitfalls": [
|
|
7
8
|
"campaign-validate 推荐 --json-out ",
|
|
9
|
+
"否词只写 campaign.NegativeKeywordsForBatchJob,禁止把 free/jobs/tutorial 等否词抄进 AdGroupsForBatchJob[].KeywordsForBatchJob",
|
|
8
10
|
"RSA 须同时写 DestinationUrl 与 Finalurl(后端必填 Finalurl;仅有 DestinationUrl 时 validate 可能仍通过)",
|
|
9
11
|
"SITELINK 须写 AssetFieldType: SITELINK(与 typeV2 一致)",
|
|
10
12
|
"提交前:ad campaign-validate → 用户确认 → ad campaign-create(勿对 validate 加 --json-out)"
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# `ad campaign-create` JSON 配置说明
|
|
2
2
|
|
|
3
|
+
> **Agent 必读(与 JSON 成对加载)**:本文件是字段说明;**结构真相源**是同目录 [`campaign-create-template.json`](campaign-create-template.json)。建系列前**必须先 Read `.json`**,再 Read 本 `.md`。**禁止**只读本文件凭印象手写 JSON。
|
|
4
|
+
|
|
3
5
|
`siluzan-tso ad campaign-create` **仅**接受 `--config-file` 指向的 JSON 文件
|
|
4
6
|
|
|
5
7
|
**JSON 字段名保持 PascalCase**,与后端 `Campaign` / `CampaignCreationRecord` 契约一致;`ad campaign-validate` 会**就地自动修复**关键词词面(按 `MatchTypeV2` 补全 `"` / `[]`,兼容 `matchTypeV2` / `keywordText` / `Items[]`),可用 `--write-normalized` 落盘修复后的 JSON。
|
|
@@ -17,15 +19,27 @@ JSON 模板:同目录 [`campaign-create-template.json`](campaign-create-templa
|
|
|
17
19
|
|
|
18
20
|
## Agent 常见坑(实战)
|
|
19
21
|
|
|
20
|
-
> 摘自真实创建流水:多次 `--json-out` 误用、validate 通过但 create 因 `Finalurl`
|
|
22
|
+
> 摘自真实创建流水:多次 `--json-out` 误用、validate 通过但 create 因 `Finalurl` 失败、**否词误填正向关键词**。提交前对照本表,避免重复踩坑。
|
|
23
|
+
|
|
24
|
+
### 正向关键词 vs 否定关键词(勿混放)
|
|
25
|
+
|
|
26
|
+
| 类型 | JSON 路径 | 说明 |
|
|
27
|
+
| ---- | --------- | ---- |
|
|
28
|
+
| **正向关键词**(要买的词) | `campaign.AdGroupsForBatchJob[].KeywordsForBatchJob[]` | 按组写入;含 `MatchTypeV2` + `FinalURL` |
|
|
29
|
+
| **否定关键词**(要排除的词) | `campaign.NegativeKeywordsForBatchJob[]` | **系列级**;元素 `{ KeywordText: [...], MatchTypeV2: "BROAD", FinalURL: "" }` |
|
|
30
|
+
|
|
31
|
+
**禁止**:把方案 Markdown「否定词表」里的 `free` / `jobs` / `tutorial` 等抄进 `KeywordsForBatchJob`——那会**主动购买**这些流量。
|
|
32
|
+
**正确**:否词只写 `NegativeKeywordsForBatchJob`;`ad campaign-validate` 会对误填给出 **warnings**(常见否词词根 / 与否词块重复)。
|
|
33
|
+
|
|
34
|
+
投放方案 Markdown 中 §3.3 关键词矩阵 → `KeywordsForBatchJob`;§3.3 系列级否定词 / §3.4 账户级否定词 → `NegativeKeywordsForBatchJob`(账户级列表仍须在 Google 后台单独应用)。
|
|
21
35
|
|
|
22
36
|
### CLI 参数(勿混用)
|
|
23
37
|
|
|
24
|
-
| 命令
|
|
25
|
-
|
|
|
26
|
-
| `ad campaign-validate`
|
|
27
|
-
| `ad campaign-create`
|
|
28
|
-
| `ad batch get` / `ad batch diff` |
|
|
38
|
+
| 命令 | 支持 `--json-out`? | 推荐用法 |
|
|
39
|
+
| -------------------------------- | :-----------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
40
|
+
| `ad campaign-validate` | **是** | **推荐** `--json-out ./snap-campaign`(落盘 `ad-campaign-validate-<account>.json`,含 `lengthViolations`);。人读:`--config-file` 即可;词面规范化:`--write-normalized`。超长勿自动截断,见 `google-ads/google-ads-campaign-plan.md` § 超长人工确认 |
|
|
41
|
+
| `ad campaign-create` | **是** | 落盘任务响应:`--json-out ./snap-campaign`; |
|
|
42
|
+
| `ad batch get` / `ad batch diff` | **是** | 轮询与 diff 结果落盘,见 `references/core/tips.md` |
|
|
29
43
|
|
|
30
44
|
**Agent**:校验与 create/batch 共用同一 `--json-out` 目录时,按 stdout 摘要里的 `outlineFile` → 再读对应 JSON(勿把 outline 当数据)。
|
|
31
45
|
|
|
@@ -91,17 +105,17 @@ siluzan-tso ad batch diff --batch-id <taskId> --config-file ./campaign.json --js
|
|
|
91
105
|
|
|
92
106
|
## 外层字段(CampaignCreationRecord)
|
|
93
107
|
|
|
94
|
-
| 字段
|
|
95
|
-
|
|
|
96
|
-
| `account`
|
|
97
|
-
| `customerName`
|
|
98
|
-
| `name`
|
|
99
|
-
| `url`
|
|
100
|
-
| `locations`
|
|
101
|
-
| `productWords`
|
|
102
|
-
| `googleDataRecordId`
|
|
103
|
-
| `draft`
|
|
104
|
-
| `campaign`
|
|
108
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
109
|
+
| -------------------- | -------------- | :--: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
110
|
+
| `account` | string | ✅ | 媒体账户 ID;提交时转为数字 `customerId`(勿依赖引号字符串) |
|
|
111
|
+
| `customerName` | string | | 展示/智投用客户名;**可省略**——`campaign-create` / `batch publish` 会按 `account` 调 `list-accounts` 自动填入 `mediaCustomerName`。若填写则须与之一致,否则提交时 CLI 自动更正 |
|
|
112
|
+
| `name` | string | | 智投 `campaignName`;缺省取 `campaign.Name`;账户内不得与已有在投/暂停系列重名,否则 BatchJob 系列创建失败 |
|
|
113
|
+
| `url` | string | | 智投展示用 URL;后端只读,用于回显 |
|
|
114
|
+
| `locations` | string[] | | 展示用地区名(后端只读,可空数组) |
|
|
115
|
+
| `productWords` | string[] | | 智投/推荐用产品核心词 |
|
|
116
|
+
| `googleDataRecordId` | string \| null | | 智投记录 ID;省略时提交 `""`(CLI 默认) |
|
|
117
|
+
| `draft` | boolean | | `false`(默认)立即发布到 Google;`true` 仅保存草稿,需后续 `ad batch publish` |
|
|
118
|
+
| `campaign` | object | ✅ | 内层 Campaign 对象,见下表 |
|
|
105
119
|
|
|
106
120
|
> 提交时 CLI 另附 `KeywordRecommendationsV2`:`[{ Key: <广告组 Name>, Value: [] }, …]`,由 CLI 自动附加;JSON 文件内无需手写。
|
|
107
121
|
|
|
@@ -114,125 +128,126 @@ siluzan-tso ad batch diff --batch-id <taskId> --config-file ./campaign.json --js
|
|
|
114
128
|
|
|
115
129
|
### 基础
|
|
116
130
|
|
|
117
|
-
| 字段
|
|
118
|
-
|
|
|
119
|
-
| `Name`
|
|
120
|
-
| `StatusV2`
|
|
121
|
-
| `ChannelTypeV2`
|
|
131
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
132
|
+
| --------------- | --------------------- | :--: | ----------------------------------------------------------------- |
|
|
133
|
+
| `Name` | string | ✅ | 广告系列名;须与外层 `name` 一致;账户内唯一(在投/暂停不可重名) |
|
|
134
|
+
| `StatusV2` | "Enabled" \| "Paused" | | 默认 `Enabled` |
|
|
135
|
+
| `ChannelTypeV2` | string | | 搜索系列填 `SEARCH` |
|
|
122
136
|
|
|
123
137
|
### 预算与出价
|
|
124
138
|
|
|
125
|
-
| 字段
|
|
126
|
-
|
|
|
127
|
-
| `Budget`
|
|
128
|
-
| `BudgetShared`
|
|
129
|
-
| `BudgetId`
|
|
130
|
-
| `BudgetBudgetDeliveryMethodV2`
|
|
131
|
-
| `BiddingStrategyTypeV2`
|
|
132
|
-
| `TargetSpend_BidCeilingAmount`
|
|
133
|
-
| `TargetCpa_BidingAmount`
|
|
134
|
-
| `TargetRoas`
|
|
135
|
-
| `ManualCpc_EnhancedCpcEnabled`
|
|
139
|
+
| 字段 | 类型 | 必填条件 | 说明 |
|
|
140
|
+
| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------ | ------------------ | ----------------------------- |
|
|
141
|
+
| `Budget` | number | ✅ > 0 | 日预算(元) |
|
|
142
|
+
| `BudgetShared` | boolean | | 共享预算时为 true |
|
|
143
|
+
| `BudgetId` | number / string | | 共享预算 id |
|
|
144
|
+
| `BudgetBudgetDeliveryMethodV2` | "STANDARD" \| "ACCELERATED" \| "UNSPECIFIED" \| "UNKNOWN" | | 默认 STANDARD |
|
|
145
|
+
| `BiddingStrategyTypeV2` | "TARGET_SPEND" \| "MANUAL_CPC" \| "TARGET_CPA" \| "TARGET_ROAS" \| "MAXIMIZE_CONVERSIONS" \| "MAXIMIZE_CONVERSION_VALUE" | ✅ | 出价策略 |
|
|
146
|
+
| `TargetSpend_BidCeilingAmount` | number | TARGET_SPEND 时 ✅ | 每次点击费用上限(元) |
|
|
147
|
+
| `TargetCpa_BidingAmount` | number | TARGET_CPA 时 ✅ | 目标 CPA(元) |
|
|
148
|
+
| `TargetRoas` | number | TARGET_ROAS 时 ✅ | 目标 ROAS(如 2.5 表示 250%) |
|
|
149
|
+
| `ManualCpc_EnhancedCpcEnabled` | boolean | | 是否增强 CPC |
|
|
136
150
|
|
|
137
151
|
### 网络(后端硬约束)
|
|
138
152
|
|
|
139
|
-
| 字段
|
|
140
|
-
|
|
|
141
|
-
| `TargetGoogleSearch`
|
|
142
|
-
| `TargetSearchNetwork`
|
|
143
|
-
| `TargetContentNetwork`
|
|
144
|
-
| `TargetPartnerSearchNetwork`
|
|
153
|
+
| 字段 | 类型 | 说明 |
|
|
154
|
+
| ---------------------------- | ------- | ----------------------------------------------------------------- |
|
|
155
|
+
| `TargetGoogleSearch` | boolean | 默认 true;当 `TargetSearchNetwork=true` 时**必须** true |
|
|
156
|
+
| `TargetSearchNetwork` | boolean | Google 搜索网络合作伙伴;产品默认建议 false |
|
|
157
|
+
| `TargetContentNetwork` | boolean | 展示网络;搜索专属方案建议 false |
|
|
158
|
+
| `TargetPartnerSearchNetwork` | boolean | **必须 false**(后端拒绝:cannot set TargetPartnerSearchNetwork) |
|
|
145
159
|
|
|
146
160
|
### 地理 / 语言 / 平台
|
|
147
161
|
|
|
148
|
-
| 字段
|
|
149
|
-
|
|
|
150
|
-
| `targetedLocations`
|
|
151
|
-
| `excludedLocations`
|
|
152
|
-
| `targetedLanguages`
|
|
153
|
-
| `targetedPlatforms`
|
|
154
|
-
| `excludedIpAddresses`
|
|
155
|
-
| `PositiveGeoTargetType` | number
|
|
156
|
-
| `NegativeGeoTargetType` | number
|
|
162
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
163
|
+
| ----------------------- | ---------------------------------------- | :--: | --------------------------------------------------------------- |
|
|
164
|
+
| `targetedLocations` | `{ id: string, bidModifier?: number }[]` | ✅ | 至少 1 个;先 `siluzan-tso ad geo search -a <acct> -q <地区名>` |
|
|
165
|
+
| `excludedLocations` | 同上 | | 排除地区 |
|
|
166
|
+
| `targetedLanguages` | `{ id: number }[]` | ✅ | 英语 1000,中文 1017 |
|
|
167
|
+
| `targetedPlatforms` | `{ id: number, bidModifier?: number }[]` | | 30001 桌面 / 30002 平板 / 30000 移动 |
|
|
168
|
+
| `excludedIpAddresses` | string[] | | 排除 IP |
|
|
169
|
+
| `PositiveGeoTargetType` | number | | |
|
|
170
|
+
| `NegativeGeoTargetType` | number | | |
|
|
157
171
|
|
|
158
172
|
### 时间与 DSA
|
|
159
173
|
|
|
160
|
-
| 字段 | 类型
|
|
161
|
-
| ----------------- |
|
|
162
|
-
| `StartTime` | YYYY-MM-DD
|
|
163
|
-
| `EndTime` | YYYY-MM-DD
|
|
164
|
-
| `adSchedules` | object[]
|
|
165
|
-
| `DSADomainName` | string
|
|
166
|
-
| `DSALanguageCode` | string
|
|
174
|
+
| 字段 | 类型 | 说明 |
|
|
175
|
+
| ----------------- | ---------- | ------------------------------------ |
|
|
176
|
+
| `StartTime` | YYYY-MM-DD | 开始日期 |
|
|
177
|
+
| `EndTime` | YYYY-MM-DD | 结束日期(必须晚于 StartTime) |
|
|
178
|
+
| `adSchedules` | object[] | 投放时段,缺省可填全周全天(见模板) |
|
|
179
|
+
| `DSADomainName` | string | 动态搜索广告域名 |
|
|
180
|
+
| `DSALanguageCode` | string | 默认 `en` |
|
|
167
181
|
|
|
168
182
|
### 子结构
|
|
169
183
|
|
|
170
|
-
| 字段
|
|
171
|
-
|
|
|
172
|
-
| `AdGroupsForBatchJob`
|
|
173
|
-
| `NegativeKeywordsForBatchJob`
|
|
174
|
-
| `ExtensionsForBatchJob`
|
|
184
|
+
| 字段 | 类型 | 说明 |
|
|
185
|
+
| ----------------------------- | -------- | --------------------------------------------------------------------------------- |
|
|
186
|
+
| `AdGroupsForBatchJob` | object[] | **至少 1 组**;见下 |
|
|
187
|
+
| `NegativeKeywordsForBatchJob` | object[] | 系列级否词;元素:`{ KeywordText: string[], MatchTypeV2: "BROAD", FinalURL: "" }` |
|
|
188
|
+
| `ExtensionsForBatchJob` | object[] | 附加信息;`Properties` 须 **string→string**(勿用数组值)。SITELINK 见下表 |
|
|
175
189
|
|
|
176
190
|
#### SITELINK(`ExtensionsForBatchJob[i]`,`typeV2` / `AssetFieldType` = `SITELINK`)
|
|
177
191
|
|
|
178
|
-
| 字段
|
|
179
|
-
|
|
|
180
|
-
| `typeV2`
|
|
181
|
-
| `AssetFieldType`
|
|
182
|
-
| `level` / `Level`
|
|
183
|
-
| `Properties`
|
|
184
|
-
| `Properties.Text`
|
|
185
|
-
| `Properties.Line2`
|
|
186
|
-
| `Properties.Line3`
|
|
187
|
-
| `Properties.DestinationUrl` | string | 落地页 URL(必填)。**勿**写 `FinalUrls` 数组——会导致 TSO 无法反序列化整包 body(`campaign creation record is null`)
|
|
192
|
+
| 字段 | 类型 | 说明 |
|
|
193
|
+
| --------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------ |
|
|
194
|
+
| `typeV2` | string | 必填 `SITELINK` |
|
|
195
|
+
| `AssetFieldType` | string | **必填** `SITELINK`(与 `typeV2` 一致;缺省会导致部分账户 BatchJob 失败) |
|
|
196
|
+
| `level` / `Level` | string | 系列级填 `Campaign` |
|
|
197
|
+
| `Properties` | object | 键值均为字符串;见下表 |
|
|
198
|
+
| `Properties.Text` | string | 链接文字(必填)。可写 `LinkText`,提交前会映射为 `Text` |
|
|
199
|
+
| `Properties.Line2` | string | 描述行 1,**≤ 25 字符**。可写 `Description1`,提交前映射为 `Line2` |
|
|
200
|
+
| `Properties.Line3` | string | 描述行 2,**≤ 25 字符**;**不可省略或空字符串**(Google V20 不允许 null,空时 CLI 用 `Line2` 回填)。可写 `Description2` |
|
|
201
|
+
| `Properties.DestinationUrl` | string | 落地页 URL(必填)。**勿**写 `FinalUrls` 数组——会导致 TSO 无法反序列化整包 body(`campaign creation record is null`) |
|
|
188
202
|
|
|
189
203
|
---
|
|
190
204
|
|
|
191
205
|
## 广告组(`AdGroupsForBatchJob[i]`)
|
|
192
206
|
|
|
193
|
-
| 字段 | 类型 |
|
|
194
|
-
| --------------------- | --------------------- |
|
|
195
|
-
| `Name` | string |
|
|
196
|
-
| `StatusV2` | "Enabled" \| "Paused" |
|
|
197
|
-
| `TypeV2` | string |
|
|
198
|
-
| `RotationModeV2` | string |
|
|
199
|
-
| `MaxCPCAmount` | number |
|
|
200
|
-
| `KeywordsForBatchJob` | object[] |
|
|
201
|
-
| `AdsForBatchJob` | object[] |
|
|
207
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
208
|
+
| --------------------- | --------------------- | :------------: | ------------------------------------------------- |
|
|
209
|
+
| `Name` | string | ✅ | 组名;用于提交体 `KeywordRecommendationsV2[].Key` |
|
|
210
|
+
| `StatusV2` | "Enabled" \| "Paused" | | 默认 Enabled |
|
|
211
|
+
| `TypeV2` | string | | 搜索系列填 `SEARCH_STANDARD` |
|
|
212
|
+
| `RotationModeV2` | string | | 一般 `Unspecified` |
|
|
213
|
+
| `MaxCPCAmount` | number | ✅(MANUAL_CPC) | 元;MANUAL_CPC 出价策略必须 > 0 |
|
|
214
|
+
| `KeywordsForBatchJob` | object[] | | 见下 |
|
|
215
|
+
| `AdsForBatchJob` | object[] | | 见下 |
|
|
202
216
|
|
|
203
217
|
### 关键词块(`KeywordsForBatchJob[j]`)
|
|
204
218
|
|
|
205
219
|
每个块描述一组**同匹配类型**的关键词。若同一块内混用裸词 / `"词组"` / `[完全]`(或与块级 `MatchTypeV2` 冲突的符号),`campaign-validate` 会**自动拆成多个块**(顺序:BROAD → PHRASE → EXACT),再按块级类型修复词面。
|
|
206
220
|
|
|
207
|
-
| 字段 | 类型
|
|
208
|
-
| ------------- |
|
|
209
|
-
| `KeywordText` | string[]
|
|
210
|
-
| `MatchTypeV2` | "BROAD" \| "PHRASE" \| "EXACT"
|
|
211
|
-
| `FinalURL` | string
|
|
221
|
+
| 字段 | 类型 | 说明 |
|
|
222
|
+
| ------------- | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
|
|
223
|
+
| `KeywordText` | string[] | 关键词词面数组;PHRASE 应写 `"keyword"`,EXACT 应写 `[keyword]`(裸词亦可,`campaign-validate` 会按 `MatchTypeV2` **自动修复**) |
|
|
224
|
+
| `MatchTypeV2` | "BROAD" \| "PHRASE" \| "EXACT" | 与词面格式对应;Google 网关以词面符号为准,CLI 校验时会改写 `KeywordText` 与之对齐 |
|
|
225
|
+
| `FinalURL` | string | 关键词级落地页 |
|
|
212
226
|
|
|
213
227
|
### 创意块(`AdsForBatchJob[j]`,RSA)
|
|
214
228
|
|
|
215
|
-
| 字段
|
|
216
|
-
|
|
|
217
|
-
| `TypeV2`
|
|
218
|
-
| `DestinationUrl`
|
|
219
|
-
| `Finalurl`
|
|
220
|
-
| `AdTitle`
|
|
221
|
-
| `Path1` / `Path2`
|
|
222
|
-
| `headlinePart1/2/3`
|
|
223
|
-
| `AddtionalHeadlines`
|
|
224
|
-
| `adDescription` / `adDescription2` | string
|
|
225
|
-
| `AddtionalAdDescriptions`
|
|
229
|
+
| 字段 | 类型 | 必填 | 说明 |
|
|
230
|
+
| ---------------------------------- | -------------- | :--: | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
231
|
+
| `TypeV2` | string | | RSA 填 `RESPONSIVE_SEARCH_AD` |
|
|
232
|
+
| `DestinationUrl` | string | ✅ | 展示/编辑用落地页 URL |
|
|
233
|
+
| `Finalurl` | string | ✅ | **后端 BatchJob 必填**;与 `DestinationUrl` 填**相同** URL。勿只写前者——validate 可能仍通过,create 会失败 |
|
|
234
|
+
| `AdTitle` | null \| string | | 可选;无标题时写 `null`(CLI 默认) |
|
|
235
|
+
| `Path1` / `Path2` | string | ✅ | 显示路径(**必填**,缺/null 会导致后端 BatchJob `ArgumentNullException`);**≤ 15 字符**(CJK 按 2 计);小写 a-z、数字、连字符 |
|
|
236
|
+
| `headlinePart1/2/3` | string | ✅ | 前 3 条标题;**每条 ≤ 30 字符**(CJK 按 2 计) |
|
|
237
|
+
| `AddtionalHeadlines` | string[] | ✅ | 第 4–15 条标题;与前三条合计须 **15 条**(写满) |
|
|
238
|
+
| `adDescription` / `adDescription2` | string | ✅ | 前 2 条描述;**每条 ≤ 90 字符** |
|
|
239
|
+
| `AddtionalAdDescriptions` | string[] | ✅ | 第 3–4 条描述;与前两条合计须 **4 条**(写满) |
|
|
226
240
|
|
|
227
241
|
---
|
|
228
242
|
|
|
229
243
|
## 校验规则(`ad campaign-validate`)
|
|
230
244
|
|
|
231
|
-
| 规则
|
|
232
|
-
|
|
|
233
|
-
| 基础
|
|
234
|
-
| 网络
|
|
245
|
+
| 规则 | 说明 |
|
|
246
|
+
| ----------------------- | ---------------------------------------------------------------------------------------------------------- |
|
|
247
|
+
| 基础 | `customerName` / `campaign` 非空;`Budget > 0`;地理/语言至少 1 项 |
|
|
248
|
+
| 网络 | `TargetPartnerSearchNetwork` 须 false;不可同时关闭 Google 搜索与搜索网络 |
|
|
235
249
|
| RSA / 关键词 / 附加信息 | 标题 **15** 条、描述 **4** 条(须写满);字符上限、词面非空;RSA `Path1`/`Path2` 必填;SITELINK 行长度限制 |
|
|
250
|
+
| 否词误填 | `KeywordsForBatchJob` 含常见否词词根或与 `NegativeKeywordsForBatchJob` 重复 → **warnings**(不阻断,须 Agent 修正后再 create) |
|
|
236
251
|
| 实务 | 日期格式与先后、出价策略与配套字段一致 |
|
|
237
252
|
|
|
238
253
|
`ad campaign-validate` 通过不保证 BatchJob 成功(例如仅写 `DestinationUrl` 未写 `Finalurl` 时 validate 仍可能 ✅)。异步结果用 `ad batch get` 轮询;`HasFailed` / 部分失败时用 `ad batch diff` 对照 JSON 补缺,系列级失败时改 JSON 重提,勿在半成品上反复整包创建。写操作须 `--commit`,见 `references/google-ads/google-ads.md` § ad campaign-create。
|