siluzan-tso-cli 1.1.21 → 1.1.22-beta.10
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 +3 -2
- package/dist/index.js +542 -533
- package/dist/skill/AGENTS.md +45 -0
- package/dist/skill/SKILL.md +55 -347
- package/dist/skill/_meta.json +2 -2
- package/dist/skill/assets/campaign-create-template.json +1 -1
- package/dist/skill/assets/campaign-create-template.md +5 -5
- package/dist/skill/assets/pmax-create-template.md +6 -5
- package/dist/skill/docs/skill-guide.md +44 -0
- package/dist/skill/references/README.md +73 -0
- package/dist/skill/references/{accounts.md → accounts/accounts.md} +37 -37
- package/dist/skill/references/{currency.md → accounts/currency.md} +7 -7
- package/dist/skill/references/{finance.md → accounts/finance.md} +18 -18
- package/dist/skill/references/accounts/open-account-by-media.md +153 -0
- package/dist/skill/references/{open-account-google-ui.md → accounts/open-account-google-ui.md} +2 -2
- package/dist/skill/references/{write-audit-restore.md → accounts/write-audit-restore.md} +4 -4
- package/dist/skill/references/{account-analytics.md → analytics/account-analytics.md} +37 -32
- package/dist/skill/references/{google-analysis-batch.md → analytics/google-analysis-batch.md} +2 -2
- package/dist/skill/references/{keyword-planner-workflows.md → analytics/keyword-planner-workflows.md} +15 -15
- package/dist/skill/references/{rag.md → analytics/rag.md} +11 -11
- package/dist/skill/references/{reporting.md → analytics/reporting.md} +16 -16
- package/dist/skill/references/core/agent-conventions.md +180 -0
- package/dist/skill/references/core/playbooks.md +141 -0
- package/dist/skill/references/{setup.md → core/setup.md} +5 -5
- package/dist/skill/references/core/skill-authoring.md +192 -0
- package/dist/skill/references/{tips.md → core/tips.md} +5 -6
- package/dist/skill/references/{workflows.md → core/workflows.md} +63 -65
- package/dist/skill/references/{google-ads-campaign-plan.md → google-ads/google-ads-campaign-plan.md} +25 -25
- package/dist/skill/references/{google-ads.md → google-ads/google-ads.md} +63 -67
- package/dist/skill/references/{pmax-api.md → google-ads/pmax-api.md} +0 -2
- package/dist/skill/references/google-ads/rules/README.md +21 -0
- package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-account-audit.md +19 -19
- package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-campaign-optimization.md +1 -1
- package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-keyword-optimization.md +1 -1
- package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-keyword-strategy.md +3 -3
- package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-keyword-taxonomy.md +2 -2
- package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-launch-plan-template.md +8 -8
- package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-pmax-guide.md +2 -2
- package/dist/skill/references/{tso-home.md → misc/tso-home.md} +5 -5
- package/dist/skill/references/{clue.md → operations/clue.md} +7 -7
- package/dist/skill/references/{forewarning.md → operations/forewarning.md} +6 -6
- package/dist/skill/references/{hosted-automation-monitoring-json.md → operations/hosted-automation-monitoring-json.md} +14 -14
- package/dist/skill/references/{hosted-automation-optimize-ab-winner.md → operations/hosted-automation-optimize-ab-winner.md} +4 -4
- package/dist/skill/references/{hosted-automation-optimize-index.md → operations/hosted-automation-optimize-index.md} +6 -6
- package/dist/skill/references/{hosted-automation-optimize-scale.md → operations/hosted-automation-optimize-scale.md} +8 -8
- package/dist/skill/references/{hosted-automation-optimize-weak-downbid.md → operations/hosted-automation-optimize-weak-downbid.md} +9 -9
- package/dist/skill/references/operations/hosted-automation-scenarios.md +23 -0
- package/dist/skill/references/{hosted-automation-self-control.md → operations/hosted-automation-self-control.md} +28 -28
- package/{assets/siluzan-ads/references → dist/skill/references/operations}/hosted-automation-user-catalog.md +13 -13
- package/dist/skill/references/{optimize.md → operations/optimize.md} +5 -5
- package/dist/skill/report-templates/README.md +2 -1
- package/dist/skill/report-templates/REPORT-WORKFLOW.md +2 -2
- package/dist/skill/report-templates/google-ads-diagnosis.md +2 -2
- package/dist/skill/report-templates/google-inquiry-analysis.md +11 -12
- package/dist/skill/report-templates/google-period-report.md +2 -2
- package/dist/skill/report-templates/okki-weekly-google-client.md +12 -12
- 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 +4 -4
- package/eval/cases/accounts-mcc-bind-inquiry.scenario.json +3 -3
- package/eval/cases/accounts-single-balance-not-bulk.scenario.json +3 -3
- package/eval/cases/budget-display-not-raw-micros.scenario.json +3 -3
- package/eval/cases/clue-meta-leads-json.scenario.json +4 -4
- package/eval/cases/clue-tiktok-leads-json.scenario.json +3 -3
- package/eval/cases/destructive-account-delink-needs-confirm.scenario.json +1 -1
- package/eval/cases/destructive-forewarning-delete-needs-confirm.scenario.json +1 -1
- package/eval/cases/destructive-invoice-apply-needs-confirm.scenario.json +1 -1
- package/eval/cases/finance-invoice-info-list.scenario.json +3 -3
- package/eval/cases/forewarning-list-google.scenario.json +3 -3
- package/eval/cases/google-ads-no-structural-without-confirm.scenario.json +3 -3
- package/eval/cases/google-analysis-keywords-route.scenario.json +2 -2
- package/eval/cases/hosted-sop-cpa-spike-downbid.scenario.json +6 -6
- package/eval/cases/hosted-sop-daily-budget-circuit-breaker.scenario.json +4 -4
- package/eval/cases/hosted-sop-empty-spend-pause-p1.scenario.json +5 -5
- package/eval/cases/human-p1-multiturn.scenario.json +1 -1
- package/eval/cases/meta-single-balance-not-bulk.scenario.json +4 -4
- package/eval/cases/no-legacy-json-flag.scenario.json +12 -0
- package/eval/cases/open-account-bing-noninteractive.scenario.json +3 -3
- package/eval/cases/open-account-google-noninteractive.scenario.json +2 -2
- package/eval/cases/open-account-tiktok-license-file.scenario.json +2 -2
- package/eval/cases/optimize-list-by-account.scenario.json +3 -3
- package/eval/cases/p1-single-account-profile.scenario.json +2 -2
- package/eval/cases/p2-balance-scan-bulk.scenario.json +1 -1
- package/eval/cases/p4-period-report-window.scenario.json +1 -1
- package/eval/cases/rag-before-keyword-expand.scenario.json +3 -3
- package/eval/cases/rag-list-then-query.scenario.json +5 -5
- package/eval/cases/report-list-google.scenario.json +3 -3
- package/eval/cases/report-push-list-google.scenario.json +3 -3
- package/eval/cases/reporting-vs-account-analytics-routing.scenario.json +4 -4
- package/eval/cases/setup-login-or-env.scenario.json +2 -2
- package/eval/cases/setup-siluzan-data-permission-env.scenario.json +2 -2
- package/eval/cases/skill-optimize-vs-google-ads-distinction.scenario.json +4 -4
- package/eval/cases/tiktok-bc-bind-inquiry.scenario.json +2 -2
- package/eval/cases/time-range-user-delegates-default.scenario.json +2 -2
- package/eval/cases/tips-json-out-filtering.scenario.json +12 -0
- package/eval/cases/tips-large-json-pagination.scenario.json +3 -3
- package/eval/cases/uj-ad-bluetooth-keywords-exclude-cheap-free.scenario.json +1 -1
- package/eval/cases/uj-ad-campaign-validate-before-create-stub.scenario.json +3 -3
- package/eval/cases/uj-ad-keywords-camping-tent-outdoor-plan.scenario.json +1 -1
- package/eval/cases/uj-ad-outdoor-campgear-search-plan.scenario.json +3 -3
- package/eval/cases/uj-analytics-30d-pdf-campaign-device-geo.scenario.json +2 -2
- package/eval/cases/uj-analytics-compare-google-tiktok-last-month-roi.scenario.json +3 -3
- package/eval/cases/uj-analytics-google-weekly-trends-campaigns-keywords.scenario.json +4 -4
- package/eval/cases/uj-analytics-report-push-weekly-email.scenario.json +3 -3
- package/eval/cases/uj-finance-invoice-records-this-month.scenario.json +4 -4
- package/eval/cases/uj-life-newbie-siluzan-google-end-to-end.scenario.json +2 -2
- package/eval/cases/uj-ops-google-accounts-list-normal.scenario.json +4 -4
- package/eval/cases/uj-ops-google-yesterday-spend-conversions.scenario.json +5 -5
- package/eval/cases/uj-ops-open-google-b2c-usd-shenzhen.scenario.json +3 -3
- package/eval/cases/uj-ops-pause-worst-adgroup-confirm.scenario.json +2 -2
- package/eval/cases/uj-ops-tiktok-leads-last-week.scenario.json +4 -4
- package/eval/cases/uj-patrol-cpc-spike-adgroups-over-15.scenario.json +3 -3
- package/eval/cases/uj-patrol-forewarning-create-daily-cap-3000.scenario.json +3 -3
- package/eval/cases/uj-patrol-forewarning-trigger-records.scenario.json +4 -4
- package/eval/cases/uj-patrol-google-balances-low.scenario.json +3 -3
- package/eval/cases/uj-roi-full-google-account-diagnosis.scenario.json +1 -1
- package/eval/cases/uj-roi-keywords-high-cpa-low-cvr-triage.scenario.json +1 -1
- package/eval/cases/uj-roi-optimize-records-then-execute-cautiously.scenario.json +4 -4
- package/eval/cases/uj-roi-search-terms-add-negative-keywords.scenario.json +2 -2
- package/package.json +4 -3
- package/dist/skill/references/hosted-automation-scenarios.md +0 -23
- package/dist/skill/references/hosted-automation-user-catalog.md +0 -38
- package/eval/cases/tips-json-filtering.scenario.json +0 -12
- /package/dist/skill/references/{geo-continents.json → analytics/geo-continents.json} +0 -0
- /package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-audience-strategy.md +0 -0
- /package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-compliance.md +0 -0
- /package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-conversion-architecture.md +0 -0
- /package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-creative-optimization.md +0 -0
- /package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-landing-page-discovery-via-webfetch.md +0 -0
- /package/dist/skill/references/{google-ads-rules → google-ads/rules}/sensitive-industries.md +0 -0
|
@@ -15,36 +15,32 @@
|
|
|
15
15
|
|
|
16
16
|
| 需要的 ID | 获取命令 |
|
|
17
17
|
| ------------------- | ------------------------------------------------------------ |
|
|
18
|
-
| `accountId`(`-a`) | `siluzan-tso list-accounts --json` → `mediaCustomerId` |
|
|
19
|
-
| 广告系列 `id` | `siluzan-tso ad campaigns -a <accountId> --json` → `id` |
|
|
20
|
-
| 广告组 `id`、`name` | `siluzan-tso ad groups -a <accountId> --json` → `id`、`name` |
|
|
21
|
-
| 广告 `id` | `siluzan-tso ad list -a <accountId> --json` → `id` |
|
|
22
|
-
| 关键词 `id` | `siluzan-tso ad keywords -a <accountId> --json` → `id` |
|
|
18
|
+
| `accountId`(`-a`) | `siluzan-tso list-accounts --json-out ./snap` → `mediaCustomerId` |
|
|
19
|
+
| 广告系列 `id` | `siluzan-tso ad campaigns -a <accountId> --json-out ./snap` → `id` |
|
|
20
|
+
| 广告组 `id`、`name` | `siluzan-tso ad groups -a <accountId> --json-out ./snap` → `id`、`name` |
|
|
21
|
+
| 广告 `id` | `siluzan-tso ad list -a <accountId> --json-out ./snap` → `id` |
|
|
22
|
+
| 关键词 `id` | `siluzan-tso ad keywords -a <accountId> --json-out ./snap` → `id` |
|
|
23
23
|
|
|
24
24
|
---
|
|
25
25
|
|
|
26
26
|
## 新建广告系列(方案 + 创建)
|
|
27
27
|
|
|
28
|
-
> **Search 流程与校验**:`references/google-ads-campaign-plan.md`。本文件只写 **命令参数**(`campaign-validate` / `campaign-create` / `batch` 见下文各节)。
|
|
28
|
+
> **Search 流程与校验**:`references/google-ads/google-ads-campaign-plan.md`。本文件只写 **命令参数**(`campaign-validate` / `campaign-create` / `batch` 见下文各节)。
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
32
32
|
## 新建 Performance Max(PMax)
|
|
33
33
|
|
|
34
|
-
>
|
|
35
|
-
>
|
|
36
|
-
> 下列命令文档保留供后续上线参考,**当前勿执行**。
|
|
37
|
-
|
|
38
|
-
> **与 Search 隔离**:勿用 `campaign-create` 或 `campaign-create-template.json`。网关摘录见 `references/pmax-api.md`。
|
|
34
|
+
> **与 Search 隔离**:勿用 `campaign-create` 或 `campaign-create-template.json`。网关摘录见 `references/google-ads/pmax-api.md`。
|
|
39
35
|
|
|
40
36
|
| 步骤 | 命令 |
|
|
41
37
|
|------|------|
|
|
42
38
|
| 模板 | 复制 `assets/pmax-create-template.json`,字段见 `assets/pmax-create-template.md` |
|
|
43
39
|
| **素材转换** | `siluzan-tso ad pmax-image-convert --input ./banner.jpg --output-dir ./assets --prefix <name> [--update-config ./pmax.json]` |
|
|
44
40
|
| 地理 ID | `siluzan-tso ad geo search -a <accountId> -q "<地区名>"` |
|
|
45
|
-
| 校验 | `siluzan-tso ad pmax-validate --config-file ./pmax.json [--json-out ./snap-pmax]
|
|
41
|
+
| 校验 | `siluzan-tso ad pmax-validate --config-file ./pmax.json [--json-out ./snap-pmax]`(图片规格 + 文案超长 `lengthViolations`;超长勿自动截断,见 `google-ads/google-ads-campaign-plan.md` § 超长人工确认) |
|
|
46
42
|
| 创建 | `siluzan-tso ad pmax-create --config-file ./pmax.json [--json-out ./snap-pmax]` |
|
|
47
|
-
| 复核 | `siluzan-tso ad campaigns -a <accountId> --json` → `channelTypeV2` 为 `PERFORMANCE_MAX` |
|
|
43
|
+
| 复核 | `siluzan-tso ad campaigns -a <accountId> --json-out ./snap` → `channelTypeV2` 为 `PERFORMANCE_MAX` |
|
|
48
44
|
|
|
49
45
|
**网关**:`POST {googleApiUrl}/accounts/{accountId}/campaign/pmax`(`PmaxCampaignManagementController`)。**同步**返回 `campaignId`、`assetGroupId`、`budgetId`;无 `ad batch get/diff`。
|
|
50
46
|
|
|
@@ -70,13 +66,13 @@
|
|
|
70
66
|
| 报表 | `ad pmax-report-asset-groups` / `ad pmax-report-geo` |
|
|
71
67
|
| 删活动 | `ad campaign-delete -a <id> --id <campaignId>`(与 Search 共用;勿用 `ad campaign-edit`) |
|
|
72
68
|
|
|
73
|
-
模板与 HTTP 对照:`references/pmax-api.md`。
|
|
69
|
+
模板与 HTTP 对照:`references/google-ads/pmax-api.md`。
|
|
74
70
|
|
|
75
71
|
---
|
|
76
72
|
|
|
77
73
|
## 广告的编辑
|
|
78
74
|
|
|
79
|
-
已上线系列勿用 `campaign-create` 覆盖;改方案/重建见 **`google-ads-campaign-plan.md`** § 已上线后的修改;分步 CRUD 用下文 `ad *-edit` 等,写后读命令复核。
|
|
75
|
+
已上线系列勿用 `campaign-create` 覆盖;改方案/重建见 **`google-ads/google-ads-campaign-plan.md`** § 已上线后的修改;分步 CRUD 用下文 `ad *-edit` 等,写后读命令复核。
|
|
80
76
|
|
|
81
77
|
### 广告新增
|
|
82
78
|
|
|
@@ -93,10 +89,10 @@
|
|
|
93
89
|
### 查询列表
|
|
94
90
|
|
|
95
91
|
```bash
|
|
96
|
-
siluzan-tso ad campaigns -a <accountId> [--start <YYYY-MM-DD>] [--end <YYYY-MM-DD>] [--json]
|
|
92
|
+
siluzan-tso ad campaigns -a <accountId> [--start <YYYY-MM-DD>] [--end <YYYY-MM-DD>] [--json-out ./snap]
|
|
97
93
|
```
|
|
98
94
|
|
|
99
|
-
|
|
95
|
+
落盘 JSON 中 `budget` 为日预算(主币种「元」,CLI 已 ÷100),另有 `statusDisplay`(状态文案)。
|
|
100
96
|
|
|
101
97
|
### 启停
|
|
102
98
|
|
|
@@ -116,7 +112,7 @@ siluzan-tso ad campaign-delete -a <accountId> --id <campaignId>
|
|
|
116
112
|
|
|
117
113
|
## 批量创建工作流(adgroup + keyword + ad + extension)
|
|
118
114
|
|
|
119
|
-
适用:从 Excel/JSON 任务清单一次性创建多个广告组及其内容。`adgroup-create` / `keyword-create` / `ad-create` / `extension <type>`
|
|
115
|
+
适用:从 Excel/JSON 任务清单一次性创建多个广告组及其内容。`adgroup-create` / `keyword-create` / `ad-create` / `extension <type>` 写命令均支持 **`--json-out`**,落盘响应里直接含 `id`,**无需**再 `ad groups --json-out ./snap` 反查。
|
|
120
116
|
|
|
121
117
|
**推荐节奏**(每广告组):
|
|
122
118
|
|
|
@@ -124,14 +120,14 @@ siluzan-tso ad campaign-delete -a <accountId> --id <campaignId>
|
|
|
124
120
|
# 1. 创建广告组 → 拿 adgroupId
|
|
125
121
|
out=$(siluzan-tso ad adgroup-create -a <accountId> \
|
|
126
122
|
--campaign-id <campaignId> --campaign-name <campaignName> \
|
|
127
|
-
--name "<adgroupName>" --max-cpc 2.0 --status ENABLED --json)
|
|
123
|
+
--name "<adgroupName>" --max-cpc 2.0 --status ENABLED --json-out ./snap)
|
|
128
124
|
adgroupId=$(echo "$out" | jq -r '.id')
|
|
129
125
|
|
|
130
126
|
# 2. 添加关键词(已是单组批量,传逗号分隔关键词)
|
|
131
127
|
siluzan-tso ad keyword-create -a <accountId> \
|
|
132
128
|
--adgroup-id "$adgroupId" --adgroup-name "<adgroupName>" \
|
|
133
129
|
--campaign-id <campaignId> --campaign-name <campaignName> \
|
|
134
|
-
--keywords "kw1,\"kw2\",[kw3]" --final-url "https://..." --json
|
|
130
|
+
--keywords "kw1,\"kw2\",[kw3]" --final-url "https://..." --json-out ./snap
|
|
135
131
|
|
|
136
132
|
# 3. 添加 RSA 广告
|
|
137
133
|
siluzan-tso ad ad-create -a <accountId> \
|
|
@@ -139,19 +135,19 @@ siluzan-tso ad ad-create -a <accountId> \
|
|
|
139
135
|
--final-url "https://..." \
|
|
140
136
|
--headlines "标题1,标题2,标题3,..." \
|
|
141
137
|
--descriptions "描述1,描述2,..." \
|
|
142
|
-
[--path1 <path1>] [--path2 <path2>] --json
|
|
138
|
+
[--path1 <path1>] [--path2 <path2>] --json-out ./snap
|
|
143
139
|
|
|
144
140
|
# 4. 系列层 Sitelinks(每条 1 次调用,逐条循环)
|
|
145
141
|
for sitelink in "${SITELINKS[@]}"; do
|
|
146
142
|
siluzan-tso ad extension sitelink -a <accountId> \
|
|
147
143
|
--level Campaign --campaign-id <campaignId> \
|
|
148
|
-
--text "..." --url "..." [--line2/--line3 ...] --json
|
|
144
|
+
--text "..." --url "..." [--line2/--line3 ...] --json-out ./snap
|
|
149
145
|
done
|
|
150
146
|
```
|
|
151
147
|
|
|
152
|
-
**幂等性(Agent 侧)**:CLI 当前无 `--idempotent` 参数,请脚本侧先用 `ad groups --json` / `ad keywords --json` / `ad list --json` / `ad extension list --json` 取已有实体清单,按 `name + adgroupId` 等键过滤待创建项;HTTP 400 多半是重复创建,建议捕获并跳过。
|
|
148
|
+
**幂等性(Agent 侧)**:CLI 当前无 `--idempotent` 参数,请脚本侧先用 `ad groups --json-out ./snap` / `ad keywords --json-out ./snap` / `ad list --json-out ./snap` / `ad extension list --json-out ./snap` 取已有实体清单,按 `name + adgroupId` 等键过滤待创建项;HTTP 400 多半是重复创建,建议捕获并跳过。
|
|
153
149
|
|
|
154
|
-
**字符上限**(Agent 侧校验):标题 ≤30、描述 ≤90、CALLOUT ≤25、Sitelink Text ≤25。CJK 字符按 2 计(Google 规范),`google-ads
|
|
150
|
+
**字符上限**(Agent 侧校验):标题 ≤30、描述 ≤90、CALLOUT ≤25、Sitelink Text ≤25。CJK 字符按 2 计(Google 规范),`google-ads/rules/google-ads-compliance.md` 有详细规则。
|
|
155
151
|
|
|
156
152
|
---
|
|
157
153
|
|
|
@@ -160,7 +156,7 @@ done
|
|
|
160
156
|
### 查询列表
|
|
161
157
|
|
|
162
158
|
```bash
|
|
163
|
-
siluzan-tso ad groups -a <accountId> [--start/--end <date>] [--json]
|
|
159
|
+
siluzan-tso ad groups -a <accountId> [--start/--end <date>] [--json-out ./snap]
|
|
164
160
|
```
|
|
165
161
|
|
|
166
162
|
### 创建
|
|
@@ -170,7 +166,7 @@ siluzan-tso ad adgroup-create \
|
|
|
170
166
|
-a <accountId> \
|
|
171
167
|
--campaign-id <campaignId> --campaign-name <campaignName> \
|
|
172
168
|
--name <adGroupName> --max-cpc <主币种金额> \
|
|
173
|
-
[--status ENABLED|PAUSED] [--json
|
|
169
|
+
[--status ENABLED|PAUSED] [--json-out <path>]
|
|
174
170
|
```
|
|
175
171
|
|
|
176
172
|
| 选项 | 说明 | 必填 |
|
|
@@ -181,9 +177,9 @@ siluzan-tso ad adgroup-create \
|
|
|
181
177
|
| `--name <name>` | 广告组名称 | ✅ |
|
|
182
178
|
| `--max-cpc <amount>` | 最高 CPC(主币种金额) | ✅ |
|
|
183
179
|
| `--status` | `ENABLED`(默认)/ `PAUSED` | |
|
|
184
|
-
| `--json
|
|
180
|
+
| `--json-out` | 输出网关返回的完整 adgroup 对象(含 `id` / `maxCPCAmountYuan` 等) | |
|
|
185
181
|
|
|
186
|
-
**返回字段(--json)**:网关同步返回完整 adgroup,含 **`id`**(adgroupId)、`name`、`campaignId`、`statusV2`、`maxCPCAmountYuan`(元,CLI 已 ÷100)、`typeV2: "SEARCH_STANDARD"` 等 75+ 字段。批量创建脚本应直接读 `id`,**不需要**再次 `ad groups --json` 反查。
|
|
182
|
+
**返回字段(--json-out)**:网关同步返回完整 adgroup,含 **`id`**(adgroupId)、`name`、`campaignId`、`statusV2`、`maxCPCAmountYuan`(元,CLI 已 ÷100)、`typeV2: "SEARCH_STANDARD"` 等 75+ 字段。批量创建脚本应直接读 `id`,**不需要**再次 `ad groups --json-out ./snap` 反查。
|
|
187
183
|
|
|
188
184
|
### 启停
|
|
189
185
|
|
|
@@ -193,7 +189,7 @@ siluzan-tso ad adgroup-status -a <accountId> --id <adGroupId> --status <Enabled|
|
|
|
193
189
|
|
|
194
190
|
### 编辑
|
|
195
191
|
|
|
196
|
-
先用 `ad groups --json` 查看当前值,再只改传入字段。
|
|
192
|
+
先用 `ad groups --json-out ./snap` 查看当前值,再只改传入字段。
|
|
197
193
|
|
|
198
194
|
```bash
|
|
199
195
|
siluzan-tso ad adgroup-edit \
|
|
@@ -202,7 +198,7 @@ siluzan-tso ad adgroup-edit \
|
|
|
202
198
|
[--start/--end <YYYY-MM-DD>]
|
|
203
199
|
```
|
|
204
200
|
|
|
205
|
-
`--max-cpc` / `--target-cpa` 与 `ad groups --json` 中 `maxCPCAmountYuan` / `targetCpaAmountYuan` 对齐(**元**,CLI 出口已统一)。
|
|
201
|
+
`--max-cpc` / `--target-cpa` 与 `ad groups --json-out ./snap` 中 `maxCPCAmountYuan` / `targetCpaAmountYuan` 对齐(**元**,CLI 出口已统一)。
|
|
206
202
|
|
|
207
203
|
### 删除
|
|
208
204
|
|
|
@@ -217,12 +213,12 @@ siluzan-tso ad adgroup-delete -a <accountId> --id <adGroupId>
|
|
|
217
213
|
### 查询列表
|
|
218
214
|
|
|
219
215
|
```bash
|
|
220
|
-
siluzan-tso ad list -a <accountId> [--start/--end <date>] [--include-deleted] [--json]
|
|
216
|
+
siluzan-tso ad list -a <accountId> [--start/--end <date>] [--include-deleted] [--json-out ./snap]
|
|
221
217
|
```
|
|
222
218
|
|
|
223
219
|
`--include-deleted` 用于审计/排障,会多传 `readDeleted=true`。
|
|
224
220
|
|
|
225
|
-
### 拒审巡检(`--json`)
|
|
221
|
+
### 拒审巡检(`--json-out`)
|
|
226
222
|
|
|
227
223
|
关注 `policyApprovalStatusV2`(`2`=不通过、`3`=受限)、`approvalStatusDetails`(`;` 分隔摘要)、`statusV2`(过滤 `Removed`)。同源也可用 `google-analysis --sections ads --json-out <dir>`。
|
|
228
224
|
|
|
@@ -236,10 +232,10 @@ siluzan-tso ad ad-create \
|
|
|
236
232
|
--headlines "标题1,标题2,标题3" \
|
|
237
233
|
--descriptions "描述1,描述2" \
|
|
238
234
|
[--path1 <≤15字符>] [--path2 <≤15字符>] \
|
|
239
|
-
[--json
|
|
235
|
+
[--json-out <path>]
|
|
240
236
|
```
|
|
241
237
|
|
|
242
|
-
`--headlines` 至少 3 条(≤30字符),`--descriptions` 至少 2 条(≤90字符)。**`--json`**
|
|
238
|
+
`--headlines` 至少 3 条(≤30字符),`--descriptions` 至少 2 条(≤90字符)。**`--json-out`** 落盘返回网关响应(含 `id` 等字段),便于批量脚本拿到 adId 后续编辑/启停。
|
|
243
239
|
|
|
244
240
|
### 启停 / 删除
|
|
245
241
|
|
|
@@ -255,7 +251,7 @@ siluzan-tso ad ad-delete -a <accountId> --id <adId>
|
|
|
255
251
|
### 查询
|
|
256
252
|
|
|
257
253
|
```bash
|
|
258
|
-
siluzan-tso ad keywords -a <accountId> [--negative] [--start/--end <date>] [--json]
|
|
254
|
+
siluzan-tso ad keywords -a <accountId> [--negative] [--start/--end <date>] [--json-out ./snap]
|
|
259
255
|
```
|
|
260
256
|
|
|
261
257
|
### 添加关键词
|
|
@@ -266,10 +262,10 @@ siluzan-tso ad keyword-create \
|
|
|
266
262
|
--adgroup-id <adGroupId> --adgroup-name <adGroupName> \
|
|
267
263
|
--campaign-id <campaignId> --campaign-name <campaignName> \
|
|
268
264
|
--keywords "词1,词2,词3" [--final-url <url>] \
|
|
269
|
-
[--json
|
|
265
|
+
[--json-out <path>]
|
|
270
266
|
```
|
|
271
267
|
|
|
272
|
-
`--json`
|
|
268
|
+
`--json-out` 落盘 `{ request: { adgroupId, count }, response: ... }`,批量脚本可直接据此核对成功量。
|
|
273
269
|
|
|
274
270
|
### 否定关键词
|
|
275
271
|
|
|
@@ -281,7 +277,7 @@ siluzan-tso ad keyword-negative-create \
|
|
|
281
277
|
--keywords "词1,词2" \
|
|
282
278
|
[--adgroup-id <id> --adgroup-name <name>]
|
|
283
279
|
|
|
284
|
-
# 删除(先用 ad keywords --negative --json 获取 id)
|
|
280
|
+
# 删除(先用 ad keywords --negative --json-out ./snap 获取 id)
|
|
285
281
|
siluzan-tso ad keyword-negative-delete -a <accountId> --id <negativeKeywordId>
|
|
286
282
|
```
|
|
287
283
|
|
|
@@ -292,7 +288,7 @@ siluzan-tso ad keyword-negative-delete -a <accountId> --id <negativeKeywordId>
|
|
|
292
288
|
对应页面 `/advertising/AICreationList`。
|
|
293
289
|
|
|
294
290
|
```bash
|
|
295
|
-
siluzan-tso ad batch list [--state Creating|Successfully|Failed|HasFailed|Unpublished] [--customer-id <id>] [--start/--end <date>] [--json]
|
|
291
|
+
siluzan-tso ad batch list [--state Creating|Successfully|Failed|HasFailed|Unpublished] [--customer-id <id>] [--start/--end <date>] [--json-out ./snap]
|
|
296
292
|
siluzan-tso ad batch get --id <recordId>
|
|
297
293
|
siluzan-tso ad batch update --id <recordId> [--budget <主币种>] [--url <url>] [--campaign-name <name>]
|
|
298
294
|
siluzan-tso ad batch publish --id <recordId>
|
|
@@ -304,24 +300,24 @@ siluzan-tso ad batch publish --id <recordId>
|
|
|
304
300
|
|
|
305
301
|
## keyword — 关键字推荐
|
|
306
302
|
|
|
307
|
-
多场景编排(竞品 URL + 种子、账户词叠市场指标、否词与建户表等)见 **`references/keyword-planner-workflows.md`**。
|
|
303
|
+
多场景编排(竞品 URL + 种子、账户词叠市场指标、否词与建户表等)见 **`references/analytics/keyword-planner-workflows.md`**。
|
|
308
304
|
|
|
309
305
|
```bash
|
|
310
|
-
siluzan-tso keyword -k <搜索词> [--geo <geoTargetConstantIds>] [--url <url>] [--google-only] [--include <words>] [--exclude <words>] [--json
|
|
311
|
-
siluzan-tso keyword geo-list [--country-code <US,CN,...>] [--name-contains <text>] [--json]
|
|
306
|
+
siluzan-tso keyword -k <搜索词> [--geo <geoTargetConstantIds>] [--url <url>] [--google-only] [--include <words>] [--exclude <words>] [--json-out <dir>]
|
|
307
|
+
siluzan-tso keyword geo-list [--country-code <US,CN,...>] [--name-contains <text>] [--json-out ./snap]
|
|
312
308
|
```
|
|
313
309
|
|
|
314
|
-
`--geo` 传多个 ID(如 `2840,2826`)时,返回的搜索量/CPC/竞争度为**跨所传地区的汇总数据**,响应中**无**按地区拆分的字段。若要分别查看各市场指标,须**多次调用**且每次 `--geo` **只传一个** ID(详见 **`references/keyword-planner-workflows.md`**「多地区 `--geo`」)。
|
|
310
|
+
`--geo` 传多个 ID(如 `2840,2826`)时,返回的搜索量/CPC/竞争度为**跨所传地区的汇总数据**,响应中**无**按地区拆分的字段。若要分别查看各市场指标,须**多次调用**且每次 `--geo` **只传一个** ID(详见 **`references/analytics/keyword-planner-workflows.md`**「多地区 `--geo`」)。
|
|
315
311
|
|
|
316
|
-
`--url` 触发网址拓词(`websitereco`)并合并进结果;与 `--google-only` 互斥(仅 Google Keyword Planner 时用后者)。`--include`/`--exclude` 为本地过滤。仅 Google、不联网搜索的 Agent 编排见 **`references/keyword-planner-workflows.md`**「分支 B」。
|
|
312
|
+
`--url` 触发网址拓词(`websitereco`)并合并进结果;与 `--google-only` 互斥(仅 Google Keyword Planner 时用后者)。`--include`/`--exclude` 为本地过滤。仅 Google、不联网搜索的 Agent 编排见 **`references/analytics/keyword-planner-workflows.md`**「分支 B」。
|
|
317
313
|
|
|
318
314
|
---
|
|
319
315
|
|
|
320
316
|
## ad campaign-validate — 投放 JSON 校验
|
|
321
317
|
|
|
322
|
-
不提交 API;创建系列前**建议**跑。命令、选项、与 create 共用校验逻辑见 **`references/google-ads-campaign-plan.md`** § 校验与创建(后端/Google 硬约束,不含关键词分层占比)。
|
|
318
|
+
不提交 API;创建系列前**建议**跑。命令、选项、与 create 共用校验逻辑见 **`references/google-ads/google-ads-campaign-plan.md`** § 校验与创建(后端/Google 硬约束,不含关键词分层占比)。
|
|
323
319
|
|
|
324
|
-
**超长内容**:加 **`--json-out <dir>`**(推荐,与 create/batch 共用目录)或 `--json` 时响应含 `lengthViolations`(完整 `text` + JSON `path`)。Agent **勿自动截断**;须列出全部超长项与改写方案,用户确认后再改 JSON 并重跑 validate(流程见 `google-ads-campaign-plan.md` § 超长人工确认)。
|
|
320
|
+
**超长内容**:加 **`--json-out <dir>`**(推荐,与 create/batch 共用目录)或 `--json-out` 时响应含 `lengthViolations`(完整 `text` + JSON `path`)。Agent **勿自动截断**;须列出全部超长项与改写方案,用户确认后再改 JSON 并重跑 validate(流程见 `google-ads/google-ads-campaign-plan.md` § 超长人工确认)。
|
|
325
321
|
|
|
326
322
|
---
|
|
327
323
|
|
|
@@ -349,7 +345,7 @@ siluzan-tso ad batch get --id <taskId> --config-file ./campaign.json
|
|
|
349
345
|
|
|
350
346
|
# 3. 成功或部分成功后必做比对
|
|
351
347
|
siluzan-tso ad batch diff --batch-id <taskId> --config-file ./campaign.json
|
|
352
|
-
# 可选:--campaign-id <id>(ad campaigns -a <accountId> --json;省略时按系列名自动匹配)
|
|
348
|
+
# 可选:--campaign-id <id>(ad campaigns -a <accountId> --json-out ./snap;省略时按系列名自动匹配)
|
|
353
349
|
|
|
354
350
|
# Failed:系列未创建,无需 diff;根据 get 的 reason/errors 改 JSON 后重提
|
|
355
351
|
# siluzan-tso ad campaign-create --config-file ./campaign.json
|
|
@@ -370,14 +366,14 @@ siluzan-tso ad batch diff --batch-id <taskId> --config-file ./campaign.json
|
|
|
370
366
|
`ad campaign-delete -a <accountId> --id <campaignId>` → 按 `reason`/`errors` 修正 **campaign.json** → 重新 `ad campaign-create`。**不要**在脏系列上反复补建。
|
|
371
367
|
|
|
372
368
|
2. **仅少数组/资产失败**(系列与大部分组已有 `Id`):
|
|
373
|
-
- 缺组:`ad adgroup-create`(`--json` 取 `id`)
|
|
369
|
+
- 缺组:`ad adgroup-create`(`--json-out` 取 `id`)
|
|
374
370
|
- 缺词:`ad keyword-create`(词面格式同 JSON `KeywordsForBatchJob`)
|
|
375
371
|
- 缺 RSA:`ad ad-create`(`--headlines` / `--descriptions` 从 JSON `AdsForBatchJob` 抄)
|
|
376
372
|
补建前可用 `ad groups` / `ad keywords` 核对账户现状。
|
|
377
373
|
|
|
378
|
-
**`ad batch diff` 比对维度:**系列是否存在 → 各 `AdGroupsForBatchJob[].Name` → 组内关键词(匹配类型+词面)→ RSA 首条标题 → 系列否定词 → 附加信息条数。默认按层级树状输出每条缺失的 **JSON 路径 + 计划内容 + 账户实况**;`--json` 可落盘完整结构。
|
|
374
|
+
**`ad batch diff` 比对维度:**系列是否存在 → 各 `AdGroupsForBatchJob[].Name` → 组内关键词(匹配类型+词面)→ RSA 首条标题 → 系列否定词 → 附加信息条数。默认按层级树状输出每条缺失的 **JSON 路径 + 计划内容 + 账户实况**;`--json-out` 可落盘完整结构。
|
|
379
375
|
|
|
380
|
-
**`ad batch get` 输出:**摘要表 + 后端原始 `reason` + 完整 `errors`(或 `--json` 整条记录)。
|
|
376
|
+
**`ad batch get` 输出:**摘要表 + 后端原始 `reason` + 完整 `errors`(或 `--json-out` 整条记录)。
|
|
381
377
|
|
|
382
378
|
**CLI 在提交前只做三件事:**
|
|
383
379
|
|
|
@@ -399,7 +395,7 @@ siluzan-tso ad batch diff --batch-id <taskId> --config-file ./campaign.json
|
|
|
399
395
|
|
|
400
396
|
```bash
|
|
401
397
|
# 支持的策略枚举
|
|
402
|
-
siluzan-tso ad campaign-bidding-strategies [--json]
|
|
398
|
+
siluzan-tso ad campaign-bidding-strategies [--json-out ./snap]
|
|
403
399
|
|
|
404
400
|
siluzan-tso ad campaign-edit \
|
|
405
401
|
-a <accountId> --id <campaignId> \
|
|
@@ -429,7 +425,7 @@ siluzan-tso ad campaign-edit -a <accountId> --id <campaignId> \
|
|
|
429
425
|
--bidding TARGET_CPA --target-cpa 80
|
|
430
426
|
```
|
|
431
427
|
|
|
432
|
-
相对运算:先 `ad campaigns --json` 读 `budget`(已为主币种元)、`biddingStrategyTypeV2`,再传入。
|
|
428
|
+
相对运算:先 `ad campaigns --json-out ./snap` 读 `budget`(已为主币种元)、`biddingStrategyTypeV2`,再传入。
|
|
433
429
|
|
|
434
430
|
> PMax / 部分智能系列类型 Google 可能拒绝切换出价策略;以 API 返回错误为准。
|
|
435
431
|
|
|
@@ -445,9 +441,9 @@ siluzan-tso ad adgroup-rename -a <accountId> --id <adGroupId> --name <新名称>
|
|
|
445
441
|
|
|
446
442
|
## ad ad-edit — 广告创意编辑
|
|
447
443
|
|
|
448
|
-
先用 `ad list --json` 取得完整 JSON,再只修改传入字段,未改字段从列表原值带回。
|
|
444
|
+
先用 `ad list --json-out ./snap` 取得完整 JSON,再只修改传入字段,未改字段从列表原值带回。
|
|
449
445
|
|
|
450
|
-
`ad list --json` 关键字段映射:
|
|
446
|
+
`ad list --json-out ./snap` 关键字段映射:
|
|
451
447
|
|
|
452
448
|
- `headlinePart1~3` + `AddtionalHeadlines` → `--headlines`(≥3条)
|
|
453
449
|
- `adDescription`/`adDescription2` + `AddtionalAdDescriptions` → `--descriptions`(≥2条)
|
|
@@ -470,7 +466,7 @@ siluzan-tso ad ad-edit \
|
|
|
470
466
|
|
|
471
467
|
```bash
|
|
472
468
|
# 先查询获取 id 和 adGroupId
|
|
473
|
-
siluzan-tso ad keywords -a <accountId> --json
|
|
469
|
+
siluzan-tso ad keywords -a <accountId> --json-out ./snap
|
|
474
470
|
# 再删除
|
|
475
471
|
siluzan-tso ad keyword-delete -a <accountId> --id <keywordId> --adgroup-id <adGroupId>
|
|
476
472
|
```
|
|
@@ -479,7 +475,7 @@ siluzan-tso ad keyword-delete -a <accountId> --id <keywordId> --adgroup-id <adGr
|
|
|
479
475
|
|
|
480
476
|
## ad keyword-edit — 搜索关键词编辑
|
|
481
477
|
|
|
482
|
-
先用 `ad keywords --json` 取完整对象,再提交修改。`id` 可能与请求不一致,CLI 检测到变化会提示。
|
|
478
|
+
先用 `ad keywords --json-out ./snap` 取完整对象,再提交修改。`id` 可能与请求不一致,CLI 检测到变化会提示。
|
|
483
479
|
|
|
484
480
|
```bash
|
|
485
481
|
siluzan-tso ad keyword-edit \
|
|
@@ -488,7 +484,7 @@ siluzan-tso ad keyword-edit \
|
|
|
488
484
|
[--max-cpc <n>] [--final-url <url>] [--status Enabled|Paused]
|
|
489
485
|
```
|
|
490
486
|
|
|
491
|
-
传 `--match-type` 时 CLI 自动规范 `keywordText` 括号/引号格式。至少传一项。`--max-cpc` 为主币种元(CLI ×100 写入 `maxCPC`「分」字段,与 `adgroup-edit --max-cpc` 同口径)。`ad keywords --json` 出价见 `maxCPCYuan`。`--status` 写入 `userStatusV2`(与 Web 关键词开关一致,非系列的 `statusV2`)。
|
|
487
|
+
传 `--match-type` 时 CLI 自动规范 `keywordText` 括号/引号格式。至少传一项。`--max-cpc` 为主币种元(CLI ×100 写入 `maxCPC`「分」字段,与 `adgroup-edit --max-cpc` 同口径)。`ad keywords --json-out ./snap` 出价见 `maxCPCYuan`。`--status` 写入 `userStatusV2`(与 Web 关键词开关一致,非系列的 `statusV2`)。
|
|
492
488
|
|
|
493
489
|
---
|
|
494
490
|
|
|
@@ -516,25 +512,25 @@ siluzan-tso ad keyword-negative-edit \
|
|
|
516
512
|
|
|
517
513
|
## ad extension — 附加信息管理
|
|
518
514
|
|
|
519
|
-
修改方式为**先删后建**(无 PUT 接口)。所有 `extension <type>` 子命令均支持 `--json
|
|
515
|
+
修改方式为**先删后建**(无 PUT 接口)。所有 `extension <type>` 子命令均支持 `--json-out`,输出网关返回的扩展对象(含 `id`),批量脚本可据此回填。
|
|
520
516
|
|
|
521
517
|
```bash
|
|
522
518
|
# 查询
|
|
523
|
-
siluzan-tso ad extension list -a <accountId> [--type SITELINK|CALL|CALLOUT|STRUCTURED_SNIPPET] [--json]
|
|
519
|
+
siluzan-tso ad extension list -a <accountId> [--type SITELINK|CALL|CALLOUT|STRUCTURED_SNIPPET] [--json-out ./snap]
|
|
524
520
|
|
|
525
521
|
# 附加链接
|
|
526
522
|
siluzan-tso ad extension sitelink -a <accountId> --text "文字" --url "https://..." \
|
|
527
|
-
[--line2/--line3 <text>] [--level Account|Campaign|AdGroup] [--campaign-id <id>] [--json]
|
|
523
|
+
[--line2/--line3 <text>] [--level Account|Campaign|AdGroup] [--campaign-id <id>] [--json-out ./snap]
|
|
528
524
|
|
|
529
525
|
# 附加电话
|
|
530
526
|
siluzan-tso ad extension call -a <accountId> --country-code "+86" --phone "4008001234" \
|
|
531
|
-
[--level Account|Campaign|AdGroup] [--json]
|
|
527
|
+
[--level Account|Campaign|AdGroup] [--json-out ./snap]
|
|
532
528
|
|
|
533
529
|
# 附加宣传信息(≤25字符)
|
|
534
|
-
siluzan-tso ad extension callout -a <accountId> --text "免费送货上门" [--level Account] [--json]
|
|
530
|
+
siluzan-tso ad extension callout -a <accountId> --text "免费送货上门" [--level Account] [--json-out ./snap]
|
|
535
531
|
|
|
536
532
|
# 附加结构化摘要
|
|
537
|
-
siluzan-tso ad extension snippet -a <accountId> --header "Brands" --values "A,B,C" [--level Account] [--json]
|
|
533
|
+
siluzan-tso ad extension snippet -a <accountId> --header "Brands" --values "A,B,C" [--level Account] [--json-out ./snap]
|
|
538
534
|
|
|
539
535
|
# 删除
|
|
540
536
|
siluzan-tso ad extension delete -a <accountId> --id <extensionId>
|
|
@@ -549,7 +545,7 @@ siluzan-tso ad extension delete -a <accountId> --id <extensionId>
|
|
|
549
545
|
只读报告。屏蔽搜索词:先查到词,再用 `keyword-negative-create` 加否词。
|
|
550
546
|
|
|
551
547
|
```bash
|
|
552
|
-
siluzan-tso ad search-terms -a <accountId> [--start/--end YYYY-MM-DD] [--json]
|
|
548
|
+
siluzan-tso ad search-terms -a <accountId> [--start/--end YYYY-MM-DD] [--json-out ./snap]
|
|
553
549
|
```
|
|
554
550
|
|
|
555
551
|
---
|
|
@@ -615,12 +611,12 @@ siluzan-tso ad geo remove -a <accountId> --campaign-id <id> --location-id <id>
|
|
|
615
611
|
|
|
616
612
|
```bash
|
|
617
613
|
# 系列级:账户下全部设备出价(可按系列过滤)
|
|
618
|
-
siluzan-tso ad device-bid list -a <accountId> [--campaign-id <id>] [--json]
|
|
614
|
+
siluzan-tso ad device-bid list -a <accountId> [--campaign-id <id>] [--json-out ./snap]
|
|
619
615
|
|
|
620
616
|
# 广告组级
|
|
621
|
-
siluzan-tso ad device-bid list -a <accountId> --level adgroup --campaign-id <id> --ad-group-id <id> [--json]
|
|
617
|
+
siluzan-tso ad device-bid list -a <accountId> --level adgroup --campaign-id <id> --ad-group-id <id> [--json-out ./snap]
|
|
622
618
|
|
|
623
|
-
# 修改系列设备出价(id 来自 list --json,或用 --device-type 自动匹配)
|
|
619
|
+
# 修改系列设备出价(id 来自 list --json-out ./snap,或用 --device-type 自动匹配)
|
|
624
620
|
siluzan-tso ad device-bid set -a <accountId> --campaign-id <id> --device-type Mobile --bid-modifier 0.8
|
|
625
621
|
|
|
626
622
|
# 修改广告组设备出价
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Google Ads 优化与合规规则
|
|
2
|
+
|
|
3
|
+
> 本目录为 **策略/SOP 文档**,非 CLI 参数表。命令与字段见 `references/google-ads/google-ads.md`;新建流程见 `google-ads/google-ads-campaign-plan.md`。
|
|
4
|
+
|
|
5
|
+
| 文件 | 何时 Read |
|
|
6
|
+
| ---- | --------- |
|
|
7
|
+
| `google-ads-account-audit.md` | 账户健康度审计、结构诊断 |
|
|
8
|
+
| `google-ads-campaign-optimization.md` | 系列层优化决策 |
|
|
9
|
+
| `google-ads-keyword-strategy.md` | 关键词策略规划 |
|
|
10
|
+
| `google-ads-keyword-optimization.md` | 关键词出价/否定/扩词优化 |
|
|
11
|
+
| `google-ads-keyword-taxonomy.md` | 词类分层与命名 |
|
|
12
|
+
| `google-ads-creative-optimization.md` | 创意/文案优化 |
|
|
13
|
+
| `google-ads-audience-strategy.md` | 受众策略 |
|
|
14
|
+
| `google-ads-pmax-guide.md` | PMax 运营指南(配合 `assets/pmax-create-template.md`) |
|
|
15
|
+
| `google-ads-conversion-architecture.md` | 转化追踪架构 |
|
|
16
|
+
| `google-ads-compliance.md` | 合规与政策 |
|
|
17
|
+
| `google-ads-landing-page-discovery-via-webfetch.md` | 落地页发现(WebFetch) |
|
|
18
|
+
| `google-ads-launch-plan-template.md` | 上线计划模板 |
|
|
19
|
+
| `sensitive-industries.md` | 敏感行业限制 |
|
|
20
|
+
|
|
21
|
+
宿主编排下的自动优化分文件 SOP:`references/operations/hosted-automation-optimize-index.md`。
|
package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-account-audit.md
RENAMED
|
@@ -78,8 +78,8 @@ siluzan-tso google-analysis -a <CID> --sections ads-index
|
|
|
78
78
|
### 执行命令
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
|
-
siluzan-tso ad campaigns -a <CID> --json
|
|
82
|
-
siluzan-tso ad groups -a <CID> --json
|
|
81
|
+
siluzan-tso ad campaigns -a <CID> --json-out ./snap
|
|
82
|
+
siluzan-tso ad groups -a <CID> --json-out ./snap
|
|
83
83
|
siluzan-tso google-analysis -a <CID> --sections campaigns
|
|
84
84
|
```
|
|
85
85
|
|
|
@@ -155,7 +155,7 @@ siluzan-tso google-analysis -a <CID> --sections overview
|
|
|
155
155
|
### 执行命令
|
|
156
156
|
|
|
157
157
|
```bash
|
|
158
|
-
siluzan-tso ad campaigns -a <CID> --json
|
|
158
|
+
siluzan-tso ad campaigns -a <CID> --json-out ./snap
|
|
159
159
|
siluzan-tso google-analysis -a <CID> --sections campaigns
|
|
160
160
|
siluzan-tso google-analysis -a <CID> --sections daily-metrics
|
|
161
161
|
```
|
|
@@ -192,7 +192,7 @@ siluzan-tso google-analysis -a <CID> --sections daily-metrics
|
|
|
192
192
|
```bash
|
|
193
193
|
siluzan-tso google-analysis -a <CID> --sections keywords
|
|
194
194
|
siluzan-tso google-analysis -a <CID> --sections search-terms
|
|
195
|
-
siluzan-tso ad keywords -a <CID> --json
|
|
195
|
+
siluzan-tso ad keywords -a <CID> --json-out ./snap
|
|
196
196
|
siluzan-tso ad search-terms -a <CID>
|
|
197
197
|
```
|
|
198
198
|
|
|
@@ -243,7 +243,7 @@ siluzan-tso ad search-terms -a <CID>
|
|
|
243
243
|
siluzan-tso google-analysis -a <CID> --sections ads
|
|
244
244
|
siluzan-tso google-analysis -a <CID> --sections ads-index
|
|
245
245
|
siluzan-tso google-analysis -a <CID> --sections extensions
|
|
246
|
-
siluzan-tso ad list -a <CID> --json
|
|
246
|
+
siluzan-tso ad list -a <CID> --json-out ./snap
|
|
247
247
|
siluzan-tso ad extension list -a <CID>
|
|
248
248
|
```
|
|
249
249
|
|
|
@@ -260,7 +260,7 @@ siluzan-tso ad extension list -a <CID>
|
|
|
260
260
|
|
|
261
261
|
### 7.2 RSA 素材覆盖检查
|
|
262
262
|
|
|
263
|
-
从 `ad list --json` 检查每个 RSA 的素材数量:
|
|
263
|
+
从 `ad list --json-out ./snap` 检查每个 RSA 的素材数量:
|
|
264
264
|
|
|
265
265
|
| 素材类型 | 最低要求 | 推荐数量 | 不足时影响 |
|
|
266
266
|
| ---------------- | -------- | ---------- | ---------------------------- |
|
|
@@ -383,7 +383,7 @@ siluzan-tso google-analysis -a <CID> --sections devices
|
|
|
383
383
|
```bash
|
|
384
384
|
siluzan-tso google-analysis -a <CID> --sections campaigns
|
|
385
385
|
siluzan-tso google-analysis -a <CID> --sections daily-metrics
|
|
386
|
-
siluzan-tso ad campaigns -a <CID> --json
|
|
386
|
+
siluzan-tso ad campaigns -a <CID> --json-out ./snap
|
|
387
387
|
```
|
|
388
388
|
|
|
389
389
|
### 10.1 预算利用率分析
|
|
@@ -529,12 +529,12 @@ siluzan-tso google-analysis -a <CID> --sections dimension-summary
|
|
|
529
529
|
| 4 | CTR 持续下降 | `ads` 查广告强度和创意内容 | 广告疲劳 | 更新广告素材,添加新标题/描述 |
|
|
530
530
|
| 5 | CTR 持续下降 | `campaigns` 查 searchImpressionShare | 广告位置下降 | 检查出价竞争力和 QS |
|
|
531
531
|
| 6 | 展示量大幅下降 | `campaigns` 查 searchBudgetLostIS | 预算耗尽 | 增加预算 |
|
|
532
|
-
| 7 | 展示量大幅下降 | `keywords` 查关键词状态 | 关键词被暂停或否定 | `ad keywords --json` 检查状态 |
|
|
533
|
-
| 8 | 展示量大幅下降 | `campaigns` 查系列状态 | 广告被拒或系列暂停 | `ad campaigns --json` 检查状态 |
|
|
532
|
+
| 7 | 展示量大幅下降 | `keywords` 查关键词状态 | 关键词被暂停或否定 | `ad keywords --json-out ./snap` 检查状态 |
|
|
533
|
+
| 8 | 展示量大幅下降 | `campaigns` 查系列状态 | 广告被拒或系列暂停 | `ad campaigns --json-out ./snap` 检查状态 |
|
|
534
534
|
| 9 | 转化量下降但点击正常 | `final-urls` 查转化率 | 落地页问题(改版/故障) | 检查落地页是否可访问且正常 |
|
|
535
535
|
| 10 | 转化量下降但点击正常 | `conversion-actions` 查转化操作 | 转化追踪代码失效 | 检查 Google Tag 是否正常触发 |
|
|
536
536
|
| 11 | 预算花不出去 | `keywords` 查展示量和出价 | 出价过低无竞争力 | 提高出价或切换出价策略 |
|
|
537
|
-
| 12 | 预算花不出去 | `ad keywords --json` 查关键词数量 | 关键词太少或搜索量低 | 扩展关键词列表 |
|
|
537
|
+
| 12 | 预算花不出去 | `ad keywords --json-out ./snap` 查关键词数量 | 关键词太少或搜索量低 | 扩展关键词列表 |
|
|
538
538
|
| 13 | QS 整体下降 | `keywords` 查 QS 分布 | 落地页体验下降 | 检查落地页加载速度和内容相关性 |
|
|
539
539
|
| 14 | QS 整体下降 | `ads` 查广告相关性 | 广告与关键词不匹配 | 重写广告,确保包含核心关键词 |
|
|
540
540
|
| 15 | 移动端效果差 | `devices` 查移动端 CPA | 移动落地页体验差 | 优化移动端页面或降低移动出价 |
|
|
@@ -542,7 +542,7 @@ siluzan-tso google-analysis -a <CID> --sections dimension-summary
|
|
|
542
542
|
| 17 | 搜索展示份额骤降 | `campaigns` 查 searchRankLostIS | 竞争对手加大投放 | 提高 QS 和出价应对 |
|
|
543
543
|
| 18 | 转化波动大(时高时低) | `daily-metrics` 查每日趋势 | 转化延迟或追踪不稳定 | `conversion-actions` 确认追踪和归因窗口 |
|
|
544
544
|
| 19 | 花费突然激增 | `search-terms` 查新搜索词 | 广泛匹配触发大量新词 | 添加否定关键词,收紧匹配类型 |
|
|
545
|
-
| 20 | 广告审核被拒 | `ad list --json` 查广告状态 | 广告违规政策 | 修改广告内容后重新提交 |
|
|
545
|
+
| 20 | 广告审核被拒 | `ad list --json-out ./snap` 查广告状态 | 广告违规政策 | 修改广告内容后重新提交 |
|
|
546
546
|
|
|
547
547
|
## 14. CLI 审计命令序列
|
|
548
548
|
|
|
@@ -578,17 +578,17 @@ siluzan-tso google-analysis -a <CID> --sections conversion-actions
|
|
|
578
578
|
|
|
579
579
|
# ---- 第二阶段:系列与结构 ----
|
|
580
580
|
siluzan-tso google-analysis -a <CID> --sections campaigns
|
|
581
|
-
siluzan-tso ad campaigns -a <CID> --json
|
|
582
|
-
siluzan-tso ad groups -a <CID> --json
|
|
581
|
+
siluzan-tso ad campaigns -a <CID> --json-out ./snap
|
|
582
|
+
siluzan-tso ad groups -a <CID> --json-out ./snap
|
|
583
583
|
|
|
584
584
|
# ---- 第三阶段:关键词与搜索词 ----
|
|
585
585
|
siluzan-tso google-analysis -a <CID> --sections keywords
|
|
586
586
|
siluzan-tso google-analysis -a <CID> --sections search-terms
|
|
587
|
-
siluzan-tso ad keywords -a <CID> --json
|
|
587
|
+
siluzan-tso ad keywords -a <CID> --json-out ./snap
|
|
588
588
|
|
|
589
589
|
# ---- 第四阶段:创意与扩展 ----
|
|
590
590
|
siluzan-tso google-analysis -a <CID> --sections ads
|
|
591
|
-
siluzan-tso ad list -a <CID> --json
|
|
591
|
+
siluzan-tso ad list -a <CID> --json-out ./snap
|
|
592
592
|
siluzan-tso google-analysis -a <CID> --sections extensions
|
|
593
593
|
siluzan-tso ad extension list -a <CID>
|
|
594
594
|
|
|
@@ -613,10 +613,10 @@ siluzan-tso google-analysis -a <CID> --sections gold-account
|
|
|
613
613
|
siluzan-tso google-analysis -a <CID> --sections conversion-actions
|
|
614
614
|
|
|
615
615
|
# ---- 账户结构梳理 ----
|
|
616
|
-
siluzan-tso ad campaigns -a <CID> --json
|
|
617
|
-
siluzan-tso ad groups -a <CID> --json
|
|
618
|
-
siluzan-tso ad keywords -a <CID> --json
|
|
619
|
-
siluzan-tso ad list -a <CID> --json
|
|
616
|
+
siluzan-tso ad campaigns -a <CID> --json-out ./snap
|
|
617
|
+
siluzan-tso ad groups -a <CID> --json-out ./snap
|
|
618
|
+
siluzan-tso ad keywords -a <CID> --json-out ./snap
|
|
619
|
+
siluzan-tso ad list -a <CID> --json-out ./snap
|
|
620
620
|
|
|
621
621
|
# ---- 效果基线建立 ----
|
|
622
622
|
siluzan-tso google-analysis -a <CID> --sections campaigns
|
|
@@ -495,7 +495,7 @@ siluzan-tso ad batch get --id <taskId>
|
|
|
495
495
|
|
|
496
496
|
```bash
|
|
497
497
|
# 查看当前系列设置
|
|
498
|
-
siluzan-tso ad campaigns -a <CID> --json
|
|
498
|
+
siluzan-tso ad campaigns -a <CID> --json-out ./snap
|
|
499
499
|
|
|
500
500
|
# 切换到 Target CPA(数据充足后)
|
|
501
501
|
# --target-cpa 是「主币种金额」,CLI 内部自动 ×100 写入;50 = 50 USD(不是微单位 5000)
|
|
@@ -500,7 +500,7 @@ siluzan-tso ad keyword-create --keywords "[高转化词1],[高转化词2]" ...
|
|
|
500
500
|
|
|
501
501
|
```bash
|
|
502
502
|
# 1. 拉取 30 天全量数据
|
|
503
|
-
siluzan-tso google-analysis -a <CID> --sections keywords --start <30天前> --end <昨天>
|
|
503
|
+
siluzan-tso google-analysis -a <CID> --sections keywords --start <30天前> --end <昨天>
|
|
504
504
|
|
|
505
505
|
# 2. 拉取按日趋势(看 CPA 趋势)
|
|
506
506
|
siluzan-tso google-analysis -a <CID> --sections daily-metrics --start <30天前> --end <昨天>
|
package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-keyword-strategy.md
RENAMED
|
@@ -446,7 +446,7 @@ Broad Match + 受众信号 = 伪装成广泛定向的精准投放。
|
|
|
446
446
|
CLI 命令格式:
|
|
447
447
|
|
|
448
448
|
```
|
|
449
|
-
siluzan-tso keyword -k "搜索词" [--url <URL>] [--include <包含词>] [--exclude <排除词>] [--json]
|
|
449
|
+
siluzan-tso keyword -k "搜索词" [--url <URL>] [--include <包含词>] [--exclude <排除词>] [--json-out ./snap]
|
|
450
450
|
```
|
|
451
451
|
|
|
452
452
|
| 参数 | 说明 |
|
|
@@ -455,7 +455,7 @@ siluzan-tso keyword -k "搜索词" [--url <URL>] [--include <包含词>] [--excl
|
|
|
455
455
|
| `--url` | 配合网站 URL 获取更相关的建议;Google 会分析页面内容,返回与该网站更匹配的关键词 |
|
|
456
456
|
| `--include` | 结果必须包含的词(逗号分隔),用于缩小建议范围 |
|
|
457
457
|
| `--exclude` | 排除包含这些词的建议(逗号分隔),过滤无关结果 |
|
|
458
|
-
| `--json` | 输出 JSON 格式,便于程序化处理或进一步分析 |
|
|
458
|
+
| `--json-out` | 输出 JSON 格式,便于程序化处理或进一步分析 |
|
|
459
459
|
|
|
460
460
|
**组合用法建议**:先用 `-k` 拉大探索范围,拿到初步结果后,再用 `--include` / `--exclude` 精筛,逐步收窄到高相关关键词集合。
|
|
461
461
|
|
|
@@ -495,7 +495,7 @@ Step 3: 竞品参考
|
|
|
495
495
|
Step 4: 整理为关键词列表
|
|
496
496
|
→ 按意图分层:BOFU(交易意图)/ MOFU(商业调研)/ TOFU(信息意图)
|
|
497
497
|
→ 分配匹配类型:高价值已验证词 → Exact;商业意图词 → Phrase;探索词 → Broad
|
|
498
|
-
→ 导出 JSON(--json)供批量导入或进一步加工
|
|
498
|
+
→ 导出 JSON(--json-out)供批量导入或进一步加工
|
|
499
499
|
```
|
|
500
500
|
|
|
501
501
|
### 16.5 与其他章节的协同
|
package/dist/skill/references/{google-ads-rules → google-ads/rules}/google-ads-keyword-taxonomy.md
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Google 搜索广告关键词分层与数量规范(Agent 参考)
|
|
2
2
|
|
|
3
3
|
> 所属 skill:`siluzan-tso`。本文为**方案撰写参考**,**不由** `ad campaign-validate` / `ad campaign-create` 强制执行。
|
|
4
|
-
> 建户 JSON 契约与 CLI 硬约束见 `assets/campaign-create-template.md`、`references/google-ads-campaign-plan.md`。
|
|
4
|
+
> 建户 JSON 契约与 CLI 硬约束见 `assets/campaign-create-template.md`、`references/google-ads/google-ads-campaign-plan.md`。
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
| 技术词 | api/sdk/integration | payment sdk integration |
|
|
55
55
|
| 问题词 | how to + 问题 | how to reduce failed payments |
|
|
56
56
|
|
|
57
|
-
拓词编排见 `references/keyword-planner-workflows.md`;Planner 出价见 `averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid` 与根级、每条 `bidAmountCurrency`。
|
|
57
|
+
拓词编排见 `references/analytics/keyword-planner-workflows.md`;Planner 出价见 `averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid` 与根级、每条 `bidAmountCurrency`。
|
|
58
58
|
|
|
59
59
|
---
|
|
60
60
|
|