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
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# 各媒体开户
|
|
2
|
+
|
|
3
|
+
> 对应页面:`/accountOpeningHistory`
|
|
4
|
+
> 网页链接:`{webUrl}/v3/foreign_trade/tso/accountOpeningHistory?tso=%2Fv3umijs%2Ftso%2FaccountOpeningHistory`
|
|
5
|
+
> 多命令串联见 `references/core/workflows.md` § 流程一。
|
|
6
|
+
|
|
7
|
+
## Agent 注意
|
|
8
|
+
|
|
9
|
+
- **`open-account google-wizard` 需要真实 TTY**,Agent 环境无法使用,始终用非交互 `open-account <media> ...`。
|
|
10
|
+
- 各媒体所需资料和参数**完全不同**,不要混用。
|
|
11
|
+
- 提交后轮询:`account-history -m <Media>`;通过后 `list-accounts -m <Media>`。
|
|
12
|
+
- 充值激活**必须在网页**完成(见 `references/accounts/finance.md`)。
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Google
|
|
17
|
+
|
|
18
|
+
**所需信息**:公司名称、推广网址、推广类型(b2b/b2c/app)、账户名称、币种(CNY/USD)、时区、邀请邮箱
|
|
19
|
+
|
|
20
|
+
**网页对照**(字段映射):`references/accounts/open-account-google-ui.md`
|
|
21
|
+
|
|
22
|
+
**常用时区**(完整:`siluzan-tso open-account google-timezones`):
|
|
23
|
+
|
|
24
|
+
| Code | 含义 |
|
|
25
|
+
| ---- | ---- |
|
|
26
|
+
| `Asia/Shanghai` | CNY 默认 |
|
|
27
|
+
| `Asia/Hong_Kong` | USD 默认 |
|
|
28
|
+
| `America/New_York` | 美东 |
|
|
29
|
+
| `America/Los_Angeles` | 美西 |
|
|
30
|
+
| `Europe/London` | 伦敦 |
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
siluzan-tso open-account google \
|
|
34
|
+
--company "Brand A Inc." \
|
|
35
|
+
--promotion-link "https://www.brand-a.com" \
|
|
36
|
+
--promotion-type b2c \
|
|
37
|
+
--account-name "品牌A美国推广账户" \
|
|
38
|
+
--currency USD \
|
|
39
|
+
--timezone "America/New_York" \
|
|
40
|
+
--invite-email "marketing@brand-a.com"
|
|
41
|
+
|
|
42
|
+
siluzan-tso account-history -m Google
|
|
43
|
+
siluzan-tso list-accounts -m Google
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## TikTok
|
|
49
|
+
|
|
50
|
+
**所需信息**:营业执照图片路径、执照编号、公司名、注册地代码、行业 ID(叶子节点)、推广链接、账户名称、币种、时区
|
|
51
|
+
|
|
52
|
+
> CLI 不做执照 OCR,需用户手动提供 `--company` 和 `--license-no`。
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
siluzan-tso open-account tiktok-areas --keyword China
|
|
56
|
+
siluzan-tso open-account tiktok-industries --keyword "电商"
|
|
57
|
+
siluzan-tso open-account tiktok-timezones --keyword Shanghai
|
|
58
|
+
|
|
59
|
+
siluzan-tso open-account tiktok \
|
|
60
|
+
--company "Brand A Inc." \
|
|
61
|
+
--account-name "品牌A TikTok账户" \
|
|
62
|
+
--currency USD \
|
|
63
|
+
--timezone "Asia/Shanghai" \
|
|
64
|
+
--industry-id <叶子节点 ID> \
|
|
65
|
+
--registered-area CN \
|
|
66
|
+
--promotion-link "https://www.brand-a.com" \
|
|
67
|
+
--license-no "91440300XXXXXXXXXX" \
|
|
68
|
+
--license-file "/path/to/license.jpg"
|
|
69
|
+
|
|
70
|
+
siluzan-tso account-history -m TikTok
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Yandex
|
|
76
|
+
|
|
77
|
+
**所需信息**:公司名称、Yandex 登录名、邮箱、税号(TIN)、电话
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
siluzan-tso open-account yandex \
|
|
81
|
+
--company "Brand A Inc." \
|
|
82
|
+
--login "brandainc_yandex" \
|
|
83
|
+
--first-name "San" \
|
|
84
|
+
--last-name "Zhang" \
|
|
85
|
+
--email "contact@brand-a.com" \
|
|
86
|
+
--tin "XXXXXXXXXX" \
|
|
87
|
+
--phone "+86XXXXXXXXXXX"
|
|
88
|
+
|
|
89
|
+
siluzan-tso account-history -m Yandex
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## BingV2
|
|
95
|
+
|
|
96
|
+
**所需信息**:广告主全称/简称、地址(省市区)、推广链接、行业名称、营业执照图片路径
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
siluzan-tso open-account bing-industries --keyword "科技"
|
|
100
|
+
|
|
101
|
+
siluzan-tso open-account bing \
|
|
102
|
+
--advertiser-name "深圳XX科技有限公司" \
|
|
103
|
+
--name-short "XX科技" \
|
|
104
|
+
--province "广东省" \
|
|
105
|
+
--city "深圳市" \
|
|
106
|
+
--address "南山区科技园XX路XX号" \
|
|
107
|
+
--promotion-link "https://www.brand-a.com" \
|
|
108
|
+
--trade-id "IT/消费电子-其他" \
|
|
109
|
+
--license-file "/path/to/license.jpg"
|
|
110
|
+
|
|
111
|
+
siluzan-tso account-history -m BingV2
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Kwai
|
|
117
|
+
|
|
118
|
+
**所需信息**:公司名称、主体信息、行业多级 ID、产品网址、账户类型、营业执照图片路径
|
|
119
|
+
|
|
120
|
+
> **双上传**(与网页 `KwaiOpenAnAccount.vue` 一致):CLI 先 `POST /command/attachment` 得 `imageId`(更新广告主组 MAG),再 `POST /KwaiAccount/Management/Upload` 得 `blobstoreKey`(写入 `KwaiAccountInfo.mainCertPhotos`)。二者不可混用。
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
siluzan-tso open-account kwai \
|
|
124
|
+
--company-name "深圳XX科技有限公司" \
|
|
125
|
+
--licence-id "91440300XXXXXXXXXX" \
|
|
126
|
+
--licence-country CN \
|
|
127
|
+
--licence-location "广东省深圳市南山区XX路XX号" \
|
|
128
|
+
--business-scope "电商零售" \
|
|
129
|
+
--product "品牌A" \
|
|
130
|
+
--ad-type 1 \
|
|
131
|
+
--product-url "https://www.brand-a.com" \
|
|
132
|
+
--licence-id-type ENTERPRISE \
|
|
133
|
+
--account-name "品牌A Kwai账户" \
|
|
134
|
+
--industry-id1 "1234" \
|
|
135
|
+
--industry-id2 "5678" \
|
|
136
|
+
--expire-type 2 \
|
|
137
|
+
--target-country US \
|
|
138
|
+
--license-file "/path/to/license.jpg"
|
|
139
|
+
|
|
140
|
+
siluzan-tso account-history -m Kwai
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 审核结果
|
|
146
|
+
|
|
147
|
+
| 状态 | 含义 | 下一步 |
|
|
148
|
+
| ---- | ---- | ------ |
|
|
149
|
+
| 审核中 | 等待媒体审核 | 继续 `account-history` 轮询 |
|
|
150
|
+
| 已通过 | 账户可用 | `list-accounts` 确认 + 网页充值 |
|
|
151
|
+
| 已拒绝 | 资料问题 | 查看拒绝原因,修正后重新提交 |
|
|
152
|
+
|
|
153
|
+
完整参数:`siluzan-tso open-account <subcommand> -h`
|
package/dist/skill/references/{open-account-google-ui.md → accounts/open-account-google-ui.md}
RENAMED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
| ② | 填写申请 | 网页里完成第 1、2 步表单并提交 | **`open-account google-wizard`** 或 **`open-account google`** |
|
|
9
9
|
| ③ | 等待审核 | 等待媒体/平台审核 | **`account-history -m Google`** 轮询 |
|
|
10
10
|
| ④ | 审核通过 | 查看通过结果 | 同上 |
|
|
11
|
-
| ⑤ | 充值并激活 | **必须在网页完成充值** | 引导 `config show` → `webUrl` + 充值路径(见 `finance.md`) |
|
|
11
|
+
| ⑤ | 充值并激活 | **必须在网页完成充值** | 引导 `config show` → `webUrl` + 充值路径(见 `accounts/finance.md`) |
|
|
12
12
|
|
|
13
13
|
页面上还有提示:**美元账户最低充值约 100 USD、人民币约 700 CNY**(以实际页面为准)。
|
|
14
14
|
|
|
@@ -115,4 +115,4 @@ siluzan-tso account-history -m Google
|
|
|
115
115
|
| `open-account google` | 非交互一次性提交 |
|
|
116
116
|
| `account-history -m Google` | 开户审核进度 |
|
|
117
117
|
|
|
118
|
-
更完整的参数表见 `accounts.md` → **open-account** 章节。
|
|
118
|
+
更完整的参数表见 `accounts/accounts.md` → **open-account** 章节。
|
|
@@ -117,11 +117,11 @@ siluzan-tso audit restore-apply \
|
|
|
117
117
|
|
|
118
118
|
## 自主回退工作流(Agent / 人类)
|
|
119
119
|
|
|
120
|
-
1. **定位 audit**:`siluzan-tso audit list --days 14 --match "关键词" --json`。
|
|
121
|
-
2. **看完整审计行**:`siluzan-tso audit show --id <auditId> --json`,确认 `preSnapshotFileReadable === true`。
|
|
122
|
-
3. **生成回退计划**:`siluzan-tso audit restore-plan --id <auditId> --json`。
|
|
120
|
+
1. **定位 audit**:`siluzan-tso audit list --days 14 --match "关键词" --json-out ./snap`。
|
|
121
|
+
2. **看完整审计行**:`siluzan-tso audit show --id <auditId> --json-out ./snap`,确认 `preSnapshotFileReadable === true`。
|
|
122
|
+
3. **生成回退计划**:`siluzan-tso audit restore-plan --id <auditId> --json-out ./snap`。
|
|
123
123
|
- 检查 `plan.supportability.code === "ready_put_patch"`。
|
|
124
|
-
- **必读** `plan.subsequentWrites`:若存在成功的后续写,意味着回退会覆盖那些更晚的修改;按需可先用 `siluzan-tso audit list --resource-key "<plan.resourceKey>" --json` 把同资源全量历史拉出来交叉确认。
|
|
124
|
+
- **必读** `plan.subsequentWrites`:若存在成功的后续写,意味着回退会覆盖那些更晚的修改;按需可先用 `siluzan-tso audit list --resource-key "<plan.resourceKey>" --json-out ./snap` 把同资源全量历史拉出来交叉确认。
|
|
125
125
|
- 决定是接受这个覆盖,还是放弃回退/换另一种修复路径。
|
|
126
126
|
4. **执行**:`siluzan-tso audit restore-apply --id <auditId> --i-confirm --ack-subsequent-writes <N>`,N 来自 plan.guardChecks.ackSubsequentWrites。
|
|
127
127
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 账户分析数据拉取与周期报告
|
|
2
2
|
|
|
3
|
-
> 所属 skill:`siluzan-tso`。本文档说明如何通过 CLI 拉取 Google / Meta / TikTok / Bing 的账户分析数据并撰写报告。TSO 平台优化报告见 `references/reporting.md`。
|
|
3
|
+
> 所属 skill:`siluzan-tso`。本文档说明如何通过 CLI 拉取 Google / Meta / TikTok / Bing 的账户分析数据并撰写报告。TSO 平台优化报告见 `references/analytics/reporting.md`。
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -80,23 +80,23 @@ CLI 出口的所有 JSON / 表格金额已统一为**元**,关键字段:
|
|
|
80
80
|
|
|
81
81
|
| 命令 / Section | 元字段 |
|
|
82
82
|
| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
83
|
-
| `ad campaigns --json` | `budget`(元,与 `--budget` 写参同口径) |
|
|
84
|
-
| `ad groups --json` | `maxCPCAmountYuan`、`targetCpaAmountYuan` |
|
|
83
|
+
| `ad campaigns --json-out ./snap` | `budget`(元,与 `--budget` 写参同口径) |
|
|
84
|
+
| `ad groups --json-out ./snap` | `maxCPCAmountYuan`、`targetCpaAmountYuan` |
|
|
85
85
|
| `google-analysis campaigns` 落盘 `campaigns-*.json` | `budgetAmountYuan`、`campaignTargetCpaYuan`、`maximizeConversionsTargetCpaYuan`;同行 `spend` / `averageCpc` / `costPerConversion` 也是元 |
|
|
86
|
-
| `keyword suggest --json` | `averageCpc`、`lowTopOfPageBid`、`highTopOfPageBid`;根级与每条 `bidAmountCurrency`(有 `-a` 为账户币;无 `-a` 为 USD) |
|
|
86
|
+
| `keyword suggest --json-out ./snap` | `averageCpc`、`lowTopOfPageBid`、`highTopOfPageBid`;根级与每条 `bidAmountCurrency`(有 `-a` 为账户币;无 `-a` 为 USD) |
|
|
87
87
|
| `balance` 等账户余额接口 | 余额字段为`remainingAccountBudget`(元) |
|
|
88
88
|
|
|
89
|
-
旧字段 `budgetAmount`(分)、`maxCPCAmountDisplay`、`*Micros`(微元)**已不再落盘**,下游脚本无需做单位换算。金额保留 2 位小数,带货币代码(如 `¥50.00 CNY`、`$50.00 USD`),`currencyCode` 从响应读取,跨币种账户分表;细则见 `references/currency.md`。
|
|
89
|
+
旧字段 `budgetAmount`(分)、`maxCPCAmountDisplay`、`*Micros`(微元)**已不再落盘**,下游脚本无需做单位换算。金额保留 2 位小数,带货币代码(如 `¥50.00 CNY`、`$50.00 USD`),`currencyCode` 从响应读取,跨币种账户分表;细则见 `references/accounts/currency.md`。
|
|
90
90
|
|
|
91
91
|
### 预算建议
|
|
92
92
|
|
|
93
|
-
基于当前实际预算(如 `ad campaigns --json` 的 `budget`(元)或 `google-analysis campaigns-*.json` 的 `budgetAmountYuan`(元))、历史日均消耗、用户给的预算上限给出建议。数据不足以判断时,在报告里写明「建议区间需用户确认」而非直接给高风险数字。
|
|
93
|
+
基于当前实际预算(如 `ad campaigns --json-out ./snap` 的 `budget`(元)或 `google-analysis campaigns-*.json` 的 `budgetAmountYuan`(元))、历史日均消耗、用户给的预算上限给出建议。数据不足以判断时,在报告里写明「建议区间需用户确认」而非直接给高风险数字。
|
|
94
94
|
|
|
95
95
|
---
|
|
96
96
|
|
|
97
97
|
## Google 账户分析:`google-analysis` 命令
|
|
98
98
|
|
|
99
|
-
> **重要**:`google-analysis` 是统一入口,所有
|
|
99
|
+
> **重要**:`google-analysis` 是统一入口,所有 25 个维度都通过 `--sections` 选取。关键词维度用 `--sections keywords`,**不要**用 `ad keywords` 代替。涉及「今天/当天」消耗的口径见本文顶部「数据时效性」表。
|
|
100
100
|
|
|
101
101
|
```bash
|
|
102
102
|
# 单维度
|
|
@@ -106,7 +106,7 @@ siluzan-tso google-analysis -a <id> --sections overview --json-out <dir>
|
|
|
106
106
|
siluzan-tso google-analysis -a <id> --start YYYY-MM-DD --end YYYY-MM-DD \
|
|
107
107
|
--sections overview,campaigns,devices,geographic,keywords,daily-metrics --json-out <dir>
|
|
108
108
|
|
|
109
|
-
# 全量
|
|
109
|
+
# 全量 25 个(省略 --sections)
|
|
110
110
|
siluzan-tso google-analysis -a <id> --json-out <dir>
|
|
111
111
|
|
|
112
112
|
# 排除慢/不需要的维度
|
|
@@ -119,41 +119,43 @@ siluzan-tso google-analysis -a <id> --exclude materials,gold-account --json-out
|
|
|
119
119
|
| --------------------------- | ------------------------------------------------------------------------------------ |
|
|
120
120
|
| `-a, --account <id>` | Google `mediaCustomerId`(必填) |
|
|
121
121
|
| `--json-out <dir>` | 必填;每维一个 `<section>-<accountId>.json` + `manifest-<accountId>.json` |
|
|
122
|
-
| `--sections <list>` | 仅执行指定维度(逗号分隔);省略=全部
|
|
122
|
+
| `--sections <list>` | 仅执行指定维度(逗号分隔);省略=全部 25 个 |
|
|
123
123
|
| `--exclude <list>` | 排除指定维度;与 `--sections` 可叠加 |
|
|
124
124
|
| `--start` / `--end` | 统计区间(YYYY-MM-DD);省略=近 7 天截至昨天;`final-urls`/`campaign-types` 自动忽略 |
|
|
125
125
|
| `--concurrency <n>` | 并发数,默认 5,上限 16 |
|
|
126
|
-
| `--limit <n>` | 透传给 `keywords`/`search-terms`(默认 **
|
|
126
|
+
| `--limit <n>` | 透传给 `keywords`/`search-terms`(默认 **0**=不封顶;`orderByCost=true`) |
|
|
127
127
|
| `--level <lvl>` | 透传给 `extensions`(Account/Campaign/Ad Group) |
|
|
128
128
|
| `--audience-type <type>` | 透传给 `audience`(SystemDefined/UserDefined) |
|
|
129
129
|
| `--no-order-by-cost` | 透传给 `keywords`/`search-terms` |
|
|
130
|
-
| `--cost-greater <n>` | 仅 **`campaign-geo`**:网关 `costGreater`(整数,单位以后端为准)
|
|
131
|
-
| `--click-greater <n>` | 仅 **`campaign-geo`**:网关 `clickGreater`
|
|
132
|
-
| `--conversions-greater <n>` | 仅 **`campaign-geo`**:网关 `conversionsGreater`
|
|
130
|
+
| `--cost-greater <n>` | 仅 **`geo-matched` / `campaign-geo` / `campaign-geo-matched`**:网关 `costGreater`(整数,单位以后端为准) |
|
|
131
|
+
| `--click-greater <n>` | 仅 **`geo-matched` / `campaign-geo` / `campaign-geo-matched`**:网关 `clickGreater` |
|
|
132
|
+
| `--conversions-greater <n>` | 仅 **`geo-matched` / `campaign-geo` / `campaign-geo-matched`**:网关 `conversionsGreater` |
|
|
133
133
|
| `--verbose` | 打印详细错误 |
|
|
134
134
|
|
|
135
|
-
### 维度列表(
|
|
136
|
-
|
|
137
|
-
| 维度
|
|
138
|
-
|
|
|
139
|
-
| `overview`
|
|
140
|
-
| `keywords`
|
|
141
|
-
| `search-terms`
|
|
142
|
-
| `campaigns`
|
|
143
|
-
| `campaign-hour`
|
|
144
|
-
| `ads`
|
|
145
|
-
| `extensions`
|
|
146
|
-
| `devices`
|
|
147
|
-
| `geographic`
|
|
148
|
-
| `
|
|
149
|
-
| `campaign-
|
|
135
|
+
### 维度列表(25 个)
|
|
136
|
+
|
|
137
|
+
| 维度 | 说明 |
|
|
138
|
+
| ------------------------ | --------------------------------------------------------------------------------------------------- |
|
|
139
|
+
| `overview` | 总览(实时,可查当天;当天高消耗账号排行首选) |
|
|
140
|
+
| `keywords` | 关键词;默认 `costGreater=0`(仅有消耗)、`limit=0`(不封顶)、`orderByCost=true`;可用 `--limit` 限制 Top N |
|
|
141
|
+
| `search-terms` | 搜索词;默认 `limit=0`(不封顶)、`orderByCost=true`;落盘前过滤 `spend>0`;含 `queryTargetingStatus` / `queryTargetingStatusZh`(已添加/已排除/都没有);可用 `--limit` 限制 Top N |
|
|
142
|
+
| `campaigns` | 广告系列 |
|
|
143
|
+
| `campaign-hour` | 系列按小时(根为 JSON 数组) |
|
|
144
|
+
| `ads` | 广告;与 `ad list` 同源 |
|
|
145
|
+
| `extensions` | 附加信息;可选 `--level` |
|
|
146
|
+
| `devices` | 设备分布(账户级 `DeviceSectionData`) |
|
|
147
|
+
| `geographic` | 地域分布(账户级 `GeographicSectionData`,网关侧常按国家聚合) |
|
|
148
|
+
| `geo-matched` | 相符地理位置(Matched locations,`user_location_view`)账户级按国家/地区汇总 |
|
|
149
|
+
| `campaign-geo` | 广告系列维度地理(可选 `--cost-greater` / `--click-greater` / `--conversions-greater` 与网关一致) |
|
|
150
|
+
| `campaign-geo-matched` | 相符地理位置(Matched locations)系列级明细(可选同上阈值参数) |
|
|
151
|
+
| `campaign-device` | 广告系列维度设备(行可含系列/组) |
|
|
150
152
|
| `audience` | 受众;可选 `--audience-type` |
|
|
151
153
|
| `asset-images` | 图片素材 |
|
|
152
154
|
| `videos` | 视频 |
|
|
153
155
|
| `materials` | 合并图片+视频 `{ images, videos }` |
|
|
154
156
|
| `resource-counts` | 结构统计 |
|
|
155
157
|
| `conversion-actions` | 转化动作 |
|
|
156
|
-
| `daily-metrics` | 按日指标(主平台 `GET …/report/media-account/google/account-daily-reports`,`--json`
|
|
158
|
+
| `daily-metrics` | 按日指标(主平台 `GET …/report/media-account/google/account-daily-reports`,`--json-out` 落盘为按日数组) |
|
|
157
159
|
| `gold-account` | 黄金账户 |
|
|
158
160
|
| `ads-index` | 质量指标 |
|
|
159
161
|
| `final-urls` | 最终到达网址(不传 `--start`/`--end`) |
|
|
@@ -168,8 +170,8 @@ siluzan-tso google-analysis -a <id> --exclude materials,gold-account --json-out
|
|
|
168
170
|
"absoluteSnapshotDir": "/abs/path/to/snap-google",
|
|
169
171
|
"manifestFile": "manifest-9526903813.json",
|
|
170
172
|
"accountId": "9526903813",
|
|
171
|
-
"totalSections":
|
|
172
|
-
"succeeded":
|
|
173
|
+
"totalSections": 25,
|
|
174
|
+
"succeeded": 25,
|
|
173
175
|
"failed": 0,
|
|
174
176
|
"concurrency": 5,
|
|
175
177
|
"elapsedMs": 18712,
|
|
@@ -202,7 +204,10 @@ CLI 在落盘前为以下维度自动补「中文译名字段」(**原英文
|
|
|
202
204
|
| -------------- | ------------------ | -------------------- | --------------------------------------------------------------- |
|
|
203
205
|
| `keywords` | `keywordMatchType` | `keywordMatchTypeZh` | `match-type-en2zh.json`(覆盖 `BROAD/PHRASE/EXACT` 大小写写法) |
|
|
204
206
|
| `search-terms` | `matchType` | `matchTypeZh` | `match-type-en2zh.json` |
|
|
205
|
-
| `
|
|
207
|
+
| `search-terms` | `queryTargetingStatus` | `queryTargetingStatusZh` | 网关 `Added`→已添加、`Excluded`→已排除、`None`→都没有(写 Excel「已添加/已排除」列用此字段) |
|
|
208
|
+
| `campaign-geo` | `countryOrRegion` | `countryOrRegionZh` | `geo-en2zh.json`(覆盖 105 个国家/地区) |
|
|
209
|
+
| `geo-matched` | `countryOrRegion` | `countryOrRegionZh` | `geo-en2zh.json` |
|
|
210
|
+
| `campaign-geo-matched` | `countryOrRegion` | `countryOrRegionZh` | `geo-en2zh.json` |
|
|
206
211
|
|
|
207
212
|
写 Excel / 报表脚本可直接读 `keywordMatchTypeZh` / `matchTypeZh` / `countryOrRegionZh` 输出中文,**不要**自己维护字典或在线翻译。判断覆盖率用 `if (row.xxxZh)` 即可。
|
|
208
213
|
|
package/dist/skill/references/{google-analysis-batch.md → analytics/google-analysis-batch.md}
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> 适用:账户数 ≥ 5 且需拉 ≥ 2 个 google-analysis 维度。**禁止**外层 for-loop 替代。中断后**必须** `resume`,不得重跑 `run`。
|
|
4
4
|
>
|
|
5
|
-
> **数据时效性**:维度的实时 / 每日同步口径见 `references/account-analytics.md` 顶部「数据时效性」表。当天高消耗排行只能用 `--sections overview`,且**禁止**加 `--min-spend`(其预筛选来自非实时 `accountsoverview`)。
|
|
5
|
+
> **数据时效性**:维度的实时 / 每日同步口径见 `references/analytics/account-analytics.md` 顶部「数据时效性」表。当天高消耗排行只能用 `--sections overview`,且**禁止**加 `--min-spend`(其预筛选来自非实时 `accountsoverview`)。
|
|
6
6
|
|
|
7
7
|
单 Node 进程,复用 keep-alive,双层并发(账户级 × 维度级),断点续跑,错误自动分类重试。
|
|
8
8
|
|
|
@@ -69,7 +69,7 @@ siluzan-tso google-analysis-batch status --json-out ./snap-batch --run-id <runId
|
|
|
69
69
|
| `--run-id <id>` | 自定义 runId | 自动 `run-YYYYMMDD-HHmmss-<rand4>` |
|
|
70
70
|
| `-a, --accounts <ids>` | 显式 ID 列表;传入则跳过清单拉取与 `--min-spend` | 省略时自动拉全量 Google 账号 |
|
|
71
71
|
| `--start` / `--end` | 统计区间(YYYY-MM-DD) | 近 7 天截至昨天 |
|
|
72
|
-
| `--sections <list>` | 维度(逗号分隔),合法值见 `references/account-analytics.md` | `campaigns,geographic,keywords` |
|
|
72
|
+
| `--sections <list>` | 维度(逗号分隔),合法值见 `references/analytics/account-analytics.md` | `campaigns,geographic,keywords` |
|
|
73
73
|
| `--account-concurrency <n>` | 账户级并发(1~16) | 4 |
|
|
74
74
|
| `--section-concurrency <n>` | 单账户内维度并发(1~16) | 6 |
|
|
75
75
|
| `--keyword-limit <n>` | keywords / search-terms 条数上限 | google-analysis 默认 |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 关键词规划师工作流
|
|
2
2
|
|
|
3
|
-
> **拓词命令**读本文;**建户 JSON + validate + create** 读 `references/google-ads-campaign-plan.md`。关键词数量规则:`google-ads
|
|
3
|
+
> **拓词命令**读本文;**建户 JSON + validate + create** 读 `references/google-ads/google-ads-campaign-plan.md`。关键词数量规则:`google-ads/rules/google-ads-keyword-taxonomy.md`。
|
|
4
4
|
>
|
|
5
5
|
> **数据口径**:`siluzan-tso keyword` 默认走 `keywordidea/google`(共享 MCC,出价 **USD**);传 **`-a <mediaCustomerId>`** 时走 `keywordrecommendation/recommend/{id}/google`,出价币种为 `list-accounts` 的 **`currencyCode`**(如 CNY)。可选 `--url` 叠加 **网址拓词**(`websitereco`)。与 **`google-analysis` 投放表现**不是同一套数据。
|
|
6
6
|
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
| 4 | 账户关键词表现 + 市场侧指标:`google-analysis` keywords → 抽词 → 分批 `keyword` | §3 |
|
|
61
61
|
| 5 | 搜索词 + 拓词:浪费流量 / 否词线索 | §4 |
|
|
62
62
|
| 6 | 高商业意图粗筛:CPC、竞争度、搜索量 | §5 |
|
|
63
|
-
| 7 | 否词或否词根落地:`ad keyword-negative-create` 等 | §4 + `google-ads.md` |
|
|
63
|
+
| 7 | 否词或否词根落地:`ad keyword-negative-create` 等 | §4 + `google-ads/google-ads.md` |
|
|
64
64
|
| 8 | Campaign → AdGroup → JSON:`ad campaign-validate` → `ad campaign-create` | §6 |
|
|
65
65
|
| 9 | 拓词结果导出:`keyword … --json-out`,供脚本消费 | §7 |
|
|
66
66
|
|
|
@@ -119,8 +119,8 @@ siluzan-tso keyword -k "pipe" --geo 2840,2826 --json-out ./snap-kw-merged
|
|
|
119
119
|
|
|
120
120
|
## 通用执行规范
|
|
121
121
|
|
|
122
|
-
- **一律**对可复用中间结果使用 `--json-out <目录>`(或等价快照参数),再读 `cli-manifest*.json` / 各 section 的 `*.outline.txt` 了解字段;详见 **`references/tips.md`**。
|
|
123
|
-
- **写账户**(新建系列/加词/加否词):新建系列走 **`references/google-ads-campaign-plan.md`**(含 `campaign-validate`);其余写操作先与用户确认,写后用成对读命令复核(命令见 `google-ads.md`)。
|
|
122
|
+
- **一律**对可复用中间结果使用 `--json-out <目录>`(或等价快照参数),再读 `cli-manifest*.json` / 各 section 的 `*.outline.txt` 了解字段;详见 **`references/core/tips.md`**。
|
|
123
|
+
- **写账户**(新建系列/加词/加否词):新建系列走 **`references/google-ads/google-ads-campaign-plan.md`**(含 `campaign-validate`);其余写操作先与用户确认,写后用成对读命令复核(命令见 `google-ads/google-ads.md`)。
|
|
124
124
|
|
|
125
125
|
---
|
|
126
126
|
|
|
@@ -128,19 +128,19 @@ siluzan-tso keyword -k "pipe" --geo 2840,2826 --json-out ./snap-kw-merged
|
|
|
128
128
|
|
|
129
129
|
### 0)先知识库、再市场侧拓词(推荐)
|
|
130
130
|
|
|
131
|
-
当用户给出**客户/品牌**或需要**产品型号、英文类目、应用场景**才能写出靠谱种子词时,**先**走 `references/rag.md`,**再**调用 `keyword`(市场侧指标与账户内表现仍须区分,见文首「数据口径」)。
|
|
131
|
+
当用户给出**客户/品牌**或需要**产品型号、英文类目、应用场景**才能写出靠谱种子词时,**先**走 `references/analytics/rag.md`,**再**调用 `keyword`(市场侧指标与账户内表现仍须区分,见文首「数据口径」)。
|
|
132
132
|
|
|
133
133
|
1. 选定客户知识库:
|
|
134
|
-
`siluzan-tso rag list --rag-only --json`
|
|
134
|
+
`siluzan-tso rag list --rag-only --json-out ./snap`
|
|
135
135
|
2. 检索产品/行业背景(锁定 `--folder-id`,长正文优先 `--partition wiki`):
|
|
136
|
-
`siluzan-tso rag query -q "产品型号 英文类目 应用场景 认证" --folder-id <id> --partition wiki --top-k 12 --json`
|
|
136
|
+
`siluzan-tso rag query -q "产品型号 英文类目 应用场景 认证" --folder-id <id> --partition wiki --top-k 12 --json-out ./snap`
|
|
137
137
|
3. 从 RAG 片段归纳 **2–8 个种子词**(含官网/画册中的英文写法),再拓词:
|
|
138
138
|
`siluzan-tso keyword -k "种子1,种子2,..." [--url "<落地页>"] --json-out ./snap-kw`
|
|
139
139
|
4. 报告/词包说明中标注:**卖点与术语来自知识库片段**;搜索量/CPC/竞争度来自 `keyword`(市场参考)。
|
|
140
140
|
|
|
141
141
|
```bash
|
|
142
|
-
siluzan-tso rag list --rag-only --json
|
|
143
|
-
siluzan-tso rag query -q "结构胶 型号 SG 建筑幕墙" --folder-id <id> --partition wiki --top-k 12 --json
|
|
142
|
+
siluzan-tso rag list --rag-only --json-out ./snap
|
|
143
|
+
siluzan-tso rag query -q "结构胶 型号 SG 建筑幕墙" --folder-id <id> --partition wiki --top-k 12 --json-out ./snap
|
|
144
144
|
siluzan-tso keyword -k "structural adhesive,SG-200,curtain wall bonding" --url "https://example.com/products" --json-out ./snap-kw
|
|
145
145
|
```
|
|
146
146
|
|
|
@@ -174,7 +174,7 @@ siluzan-tso keyword -k "structural adhesive,SG-200,curtain wall bonding" --url "
|
|
|
174
174
|
|
|
175
175
|
1. `siluzan-tso google-analysis -a <id> --sections search-terms --start <S> --end <E> --json-out ./snap-st`
|
|
176
176
|
2. 与 `keyword` 拓词结果对照,由 AI 列否词根或精确否词;落地执行:
|
|
177
|
-
`siluzan-tso ad keyword-negative-create …`(见 `references/google-ads.md`)。
|
|
177
|
+
`siluzan-tso ad keyword-negative-create …`(见 `references/google-ads/google-ads.md`)。
|
|
178
178
|
|
|
179
179
|
### 5)高商业意图粗筛(出价 + 竞争度 + 搜索量)
|
|
180
180
|
|
|
@@ -183,22 +183,22 @@ siluzan-tso keyword -k "structural adhesive,SG-200,curtain wall bonding" --url "
|
|
|
183
183
|
|
|
184
184
|
### 6)词包 → campaign-create JSON
|
|
185
185
|
|
|
186
|
-
拓词落盘结果 + `google-ads-keyword-taxonomy.md` 分层建议 → 填 JSON(`KeywordsForBatchJob`、`campaign-validate`、`campaign-create`)见 **`references/google-ads-campaign-plan.md`** § 标准流水线 **步 3–7**。
|
|
186
|
+
拓词落盘结果 + `google-ads-keyword-taxonomy.md` 分层建议 → 填 JSON(`KeywordsForBatchJob`、`campaign-validate`、`campaign-create`)见 **`references/google-ads/google-ads-campaign-plan.md`** § 标准流水线 **步 3–7**。
|
|
187
187
|
|
|
188
188
|
### 7)拓词结果标准化导出
|
|
189
189
|
|
|
190
190
|
1. ```bash
|
|
191
191
|
siluzan-tso keyword -k "..." [--url ...] [--include ...] [--exclude ...] --json-out ./snap-kw
|
|
192
192
|
```
|
|
193
|
-
2. 消费顺序:**先**读该目录下 `cli-manifest*.json` 与 **`*.outline.txt`(字段结构)**,**再**用脚本 `require()` 或聚合逻辑读真实数据 JSON;禁止跳过 outline 猜字段。总约定见 **`references/tips.md`**。
|
|
193
|
+
2. 消费顺序:**先**读该目录下 `cli-manifest*.json` 与 **`*.outline.txt`(字段结构)**,**再**用脚本 `require()` 或聚合逻辑读真实数据 JSON;禁止跳过 outline 猜字段。总约定见 **`references/core/tips.md`**。
|
|
194
194
|
|
|
195
195
|
---
|
|
196
196
|
|
|
197
197
|
## 单命令速查
|
|
198
198
|
|
|
199
199
|
```bash
|
|
200
|
-
siluzan-tso keyword -k "<必填,逗号分隔多词>" [-a <mediaCustomerId>] [--geo <id[,id...]>] [--url <url>] [--google-only] [--include <words>] [--exclude <words>] [--json] [--json-out <dir>] [--verbose]
|
|
201
|
-
siluzan-tso keyword geo-list [--country-code <codes>] [--name-contains <text>] [--json] [--json-out <dir>]
|
|
200
|
+
siluzan-tso keyword -k "<必填,逗号分隔多词>" [-a <mediaCustomerId>] [--geo <id[,id...]>] [--url <url>] [--google-only] [--include <words>] [--exclude <words>] [--json-out ./snap] [--json-out <dir>] [--verbose]
|
|
201
|
+
siluzan-tso keyword geo-list [--country-code <codes>] [--name-contains <text>] [--json-out ./snap] [--json-out <dir>]
|
|
202
202
|
```
|
|
203
203
|
|
|
204
204
|
`-a`:走 `keywordrecommendation/recommend/{id}/google`;先 `list-accounts -m Google -k <id>` 确认账户与 **`currencyCode`**;出价金额字段为 `averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid`(**账户币种「元」**,非汇率换算)。
|
|
@@ -207,4 +207,4 @@ siluzan-tso keyword geo-list [--country-code <codes>] [--name-contains <text>] [
|
|
|
207
207
|
|
|
208
208
|
**返回字段**(与后端 `Samm.Core.Service.KeywordRecommendation` 对齐):根级与每条 **`bidAmountCurrency`**(无账户=`USD`;有账户=`list-accounts` 的 `currencyCode`);`averageCpc` / `lowTopOfPageBid` / `highTopOfPageBid`(微元 ÷1,000,000,**与 `bidAmountCurrency` 一致**)。另有 `keyword` / `montlySearch` / `competition` / `competitionV2` / `source` 等。
|
|
209
209
|
|
|
210
|
-
与只读账户关键词列表、否词 CRUD 的对照仍归 **`references/google-ads.md`** 中 `ad keywords` / `ad keyword-*` 各节。
|
|
210
|
+
与只读账户关键词列表、否词 CRUD 的对照仍归 **`references/google-ads/google-ads.md`** 中 `ad keywords` / `ad keyword-*` 各节。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# rag:知识库检索(TSO 广告投放辅助)
|
|
2
2
|
|
|
3
|
-
知识库管理页面在 https://www.siluzan.com/knowledge-base/
|
|
3
|
+
知识库管理页面在 https://www-ci.siluzan.com/knowledge-base/
|
|
4
4
|
|
|
5
5
|
为 **广告投放、账户分析、拓词、诊断报告** 等 TSO 业务提供**企业已入库**的产品、行业、客户背景事实依据。
|
|
6
6
|
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
16
|
# 1. 列出已建索引的知识库(按客户/品牌选 folder)
|
|
17
|
-
siluzan-tso rag list --rag-only --json
|
|
17
|
+
siluzan-tso rag list --rag-only --json-out ./snap
|
|
18
18
|
|
|
19
19
|
# 2. 检索产品/行业资料(建议锁定 --folder-id)
|
|
20
20
|
siluzan-tso rag query -q "产品核心卖点 应用场景 目标客群" --folder-id <id> --partition wiki --top-k 12
|
|
@@ -27,12 +27,12 @@ siluzan-tso rag query -q "行业术语 英文类目" --folder-id <id> --top-k 10
|
|
|
27
27
|
|
|
28
28
|
| 选项 | 默认 | 说明 |
|
|
29
29
|
| ------------- | --------- | --------------------------------------------------------------- |
|
|
30
|
-
| `-q, --query` | 必填 | 检索词。含空白时按词分检、去重合并(`--json` 含 `subQueries`) |
|
|
30
|
+
| `-q, --query` | 必填 | 检索词。含空白时按词分检、去重合并(`--json-out` 含 `subQueries`) |
|
|
31
31
|
| `--folder-id` | 全库 | 文件夹 ID,逗号分隔;**已识别客户/品牌时强烈建议锁定** |
|
|
32
32
|
| `--tags` | 不过滤 | 不传 = 全库无标签限制 |
|
|
33
33
|
| `--partition` | `default` | 仅 `wiki` 或 `default`;长正文优先 `wiki`,缺细节再补 `default` |
|
|
34
34
|
| `--top-k` | 7 | 每分检 3–30 条;多词合并上限 `min(30, topK×词数)` |
|
|
35
|
-
| `--json` | false | 机器可读输出(含 `score` 0–1,越大越相关) |
|
|
35
|
+
| `--json-out` | false | 机器可读输出(含 `score` 0–1,越大越相关) |
|
|
36
36
|
|
|
37
37
|
`belongToId` 默认从 `GET /query/account/me` 的 `companyId` 解析;`csoBaseUrl` 从 TSO API 自动推导(`tso-api` → `cso`),可用 `SILUZAN_CSO_BASE` 覆盖。
|
|
38
38
|
|
|
@@ -42,14 +42,14 @@ siluzan-tso rag query -q "行业术语 英文类目" --folder-id <id> --top-k 10
|
|
|
42
42
|
|
|
43
43
|
| 用户意图 | 建议检索词(示例) | 后续 TSO 命令 |
|
|
44
44
|
| ------------------------------ | ----------------------------------------- | ----------------------------------------------------------------- |
|
|
45
|
-
| Google 搜索广告方案 / 批量草稿 | 产品卖点、应用行业、目标国家、竞品差异 | `google-ads-campaign-plan.md` + `keyword` / `campaign-create`;草稿发布见 `google-ads.md` § ad batch |
|
|
46
|
-
| 关键字拓词补语境 | 产品型号、英文类目、行业术语、应用场景 | `keyword suggest -k "..."`;编排见 `keyword-planner-workflows.md` |
|
|
45
|
+
| Google 搜索广告方案 / 批量草稿 | 产品卖点、应用行业、目标国家、竞品差异 | `google-ads/google-ads-campaign-plan.md` + `keyword` / `campaign-create`;草稿发布见 `google-ads/google-ads.md` § ad batch |
|
|
46
|
+
| 关键字拓词补语境 | 产品型号、英文类目、行业术语、应用场景 | `keyword suggest -k "..."`;编排见 `analytics/keyword-planner-workflows.md` |
|
|
47
47
|
| 账户诊断 / 周期报告「背景」段 | 公司简介、主营产品、目标市场、认证资质 | `google-analysis` + `report-templates/` 对应模板 |
|
|
48
48
|
| 询盘分析报告 | 产品线、出口市场、客户画像、大洲业务侧重 | `report-templates/google-inquiry-analysis.md` |
|
|
49
|
-
| 开户行业/资质核对 | 营业执照经营范围、行业描述、品牌全称 | `open-account-by-media.md` 对应媒体开户流 |
|
|
49
|
+
| 开户行业/资质核对 | 营业执照经营范围、行业描述、品牌全称 | `accounts/open-account-by-media.md` 对应媒体开户流 |
|
|
50
50
|
| 优化建议解释 | 产品毛利结构、旺季、转化路径(表单/电话) | `optimize` 记录 + 人工解读;数据仍来自 `google-analysis` |
|
|
51
51
|
|
|
52
|
-
检索结果**只作事实参考**:广告标题/描述须符合 `google-ads
|
|
52
|
+
检索结果**只作事实参考**:广告标题/描述须符合 `google-ads/rules/google-ads-compliance.md`;数值指标仍以 CLI 拉数为准。
|
|
53
53
|
|
|
54
54
|
---
|
|
55
55
|
|
|
@@ -57,7 +57,7 @@ siluzan-tso rag query -q "行业术语 英文类目" --folder-id <id> --top-k 10
|
|
|
57
57
|
|
|
58
58
|
### 1. 先锁客户库
|
|
59
59
|
|
|
60
|
-
- 运行 `rag list --rag-only --json`,按知识库**名称**匹配用户说的公司/品牌。
|
|
60
|
+
- 运行 `rag list --rag-only --json-out ./snap`,按知识库**名称**匹配用户说的公司/品牌。
|
|
61
61
|
- 多客户代运营:每个客户单独 `--folder-id`,**禁止**混库检索后张冠李戴。
|
|
62
62
|
|
|
63
63
|
### 2. 改写为「检索型」问句
|
|
@@ -79,7 +79,7 @@ siluzan-tso rag query -q "目标市场 国家 行业" --folder-id <id> --partiti
|
|
|
79
79
|
典型编排:
|
|
80
80
|
|
|
81
81
|
```
|
|
82
|
-
rag list --rag-only --json
|
|
82
|
+
rag list --rag-only --json-out ./snap
|
|
83
83
|
→ rag query(产品/行业背景)
|
|
84
84
|
→ list-accounts -k <id>
|
|
85
85
|
→ keyword suggest / google-analysis / ad campaigns
|
|
@@ -99,6 +99,6 @@ rag list --rag-only --json
|
|
|
99
99
|
| 维度 | siluzan-tso `rag` | siluzan-cso `rag` |
|
|
100
100
|
| --------- | ----------------------------------------- | --------------------------------------------- |
|
|
101
101
|
| 主要用途 | 广告投放、分析、拓词、报告背景 | 社媒文案、三库素材、口播写稿 |
|
|
102
|
-
| 默认 tags | 不过滤(按 folder 锁客户) | 常配合三库 tags(见 CSO `references/rag.md`) |
|
|
102
|
+
| 默认 tags | 不过滤(按 folder 锁客户) | 常配合三库 tags(见 CSO `references/analytics/rag.md`) |
|
|
103
103
|
| 后续命令 | `ad` / `keyword` / `google-analysis` | `publish` / 写稿工作流 |
|
|
104
104
|
| API | 相同 `cutapi/v1/material/queryknowledges` | 相同 |
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
> 所属 skill:`siluzan-tso`。
|
|
4
4
|
>
|
|
5
5
|
> 本文档仅覆盖 **TSO steward 优化报告**:列表、生成、删除、邮件推送与网页查看。
|
|
6
|
-
> **账户分析拉数**(`google-analysis`、`report tiktok-*`、`report bing-*`、`report meta-overview`)与**周期/诊断报告纲要**见 `references/account-analytics.md`。
|
|
7
|
-
> **异步批量创建记录**(`ad batch`)见 `references/google-ads.md` § ad batch。
|
|
8
|
-
> **AI 广告优化**(`optimize`)见 `references/optimize.md`。
|
|
9
|
-
> **广告线索**(`clue`)见 `references/clue.md`。
|
|
6
|
+
> **账户分析拉数**(`google-analysis`、`report tiktok-*`、`report bing-*`、`report meta-overview`)与**周期/诊断报告纲要**见 `references/analytics/account-analytics.md`。
|
|
7
|
+
> **异步批量创建记录**(`ad batch`)见 `references/google-ads/google-ads.md` § ad batch。
|
|
8
|
+
> **AI 广告优化**(`optimize`)见 `references/operations/optimize.md`。
|
|
9
|
+
> **广告线索**(`clue`)见 `references/operations/clue.md`。
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
@@ -25,7 +25,7 @@ siluzan-tso report list -m <媒体> [选项]
|
|
|
25
25
|
| `-s, --status <ready>` | 是否已生成:`true \| false` |
|
|
26
26
|
| `-k, --keyword <text>` | 报告名称关键字 |
|
|
27
27
|
| `--start / --end <date>` | 日期范围(YYYY-MM-DD) |
|
|
28
|
-
| `--json` | 输出原始 JSON |
|
|
28
|
+
| `--json-out` | 输出原始 JSON |
|
|
29
29
|
|
|
30
30
|
**仅 JSON 交付**:若用户明确要求「只输出一个 JSON / 不要解释」,回复中**只放一个** JSON 代码块(与本次 CLI stdout 一致),前后不加说明文字;分页结果以 JSON 内 `page` / `pageSize` / `total` / `itemCount` 为准,需全量时再翻页执行。
|
|
31
31
|
|
|
@@ -39,7 +39,7 @@ siluzan-tso report list -m Google
|
|
|
39
39
|
siluzan-tso report list -m TikTok -t Daily --start 2026-03-01 --end 2026-03-31
|
|
40
40
|
|
|
41
41
|
# 只看已生成完成的报告
|
|
42
|
-
siluzan-tso report list -m Google --status true --json
|
|
42
|
+
siluzan-tso report list -m Google --status true --json-out ./snap
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
---
|
|
@@ -113,7 +113,7 @@ siluzan-tso report push list -m <媒体> [选项]
|
|
|
113
113
|
| `--stopped` | 仅已停用 |
|
|
114
114
|
| `--start` / `--end` | 日期筛选 |
|
|
115
115
|
| `-p` / `--page-size` | 分页 |
|
|
116
|
-
| `--json` | 原始 JSON(列表信封 + `items`) |
|
|
116
|
+
| `--json-out` | 原始 JSON(列表信封 + `items`) |
|
|
117
117
|
|
|
118
118
|
#### create — 新建推送
|
|
119
119
|
|
|
@@ -145,12 +145,12 @@ siluzan-tso report push update -m Google --id <配置UUID> \
|
|
|
145
145
|
#### history — 推送记录
|
|
146
146
|
|
|
147
147
|
`GET {apiBaseUrl}/query/report-push/settings/{Media}/{settingId}/push-history?...`
|
|
148
|
-
路径中的 **`settingId`** = 推送规则的 **`entityId`**(与 `push list --json` 的 `items[].entityId` 一致;网页点「推送记录」带入路由的 `entityId`)。
|
|
148
|
+
路径中的 **`settingId`** = 推送规则的 **`entityId`**(与 `push list --json-out ./snap` 的 `items[].entityId` 一致;网页点「推送记录」带入路由的 `entityId`)。
|
|
149
149
|
|
|
150
150
|
Query:`pageIndex`、`pageSize`、`startDate` / `endDate`(未传时空串;传 `YYYY-MM-DD` 时 CLI 会加成 `T00:00:00+08:00`)、`ReceiveEmail`、`ReportType`、`MediaAccountId`(筛选账户时为账户 **entityId**)。
|
|
151
151
|
|
|
152
152
|
```bash
|
|
153
|
-
siluzan-tso report push history -m Google --setting-id <规则entityId> [--json]
|
|
153
|
+
siluzan-tso report push history -m Google --setting-id <规则entityId> [--json-out ./snap]
|
|
154
154
|
siluzan-tso report push history -m Google --setting-id <规则entityId> \
|
|
155
155
|
--start 2026-03-01 --end 2026-03-31 \
|
|
156
156
|
--receive-email x@y.com --report-type Daily --media-account-id <账户entityId>
|
|
@@ -169,7 +169,7 @@ siluzan-tso report push delete -m Google --id <entityId>
|
|
|
169
169
|
**示例:**
|
|
170
170
|
|
|
171
171
|
```bash
|
|
172
|
-
siluzan-tso report push list -m Google --page-size 10 --json
|
|
172
|
+
siluzan-tso report push list -m Google --page-size 10 --json-out ./snap
|
|
173
173
|
|
|
174
174
|
siluzan-tso report push create -m Google --name "测试" \
|
|
175
175
|
--media-accounts 6659e68b-973c-40bb-980c-6af20fbefe7d \
|
|
@@ -180,7 +180,7 @@ siluzan-tso report push update -m Google --id be5e4a03-2e0f-4bb2-bcad-e9dd86250e
|
|
|
180
180
|
--media-accounts 6659e68b-973c-40bb-980c-6af20fbefe7d \
|
|
181
181
|
--emails liuqi@chenggongyi.com --types Daily
|
|
182
182
|
|
|
183
|
-
siluzan-tso report push history -m Google --setting-id be5e4a03-2e0f-4bb2-bcad-e9dd86250e18 --json
|
|
183
|
+
siluzan-tso report push history -m Google --setting-id be5e4a03-2e0f-4bb2-bcad-e9dd86250e18 --json-out ./snap
|
|
184
184
|
```
|
|
185
185
|
|
|
186
186
|
#### receive-emails — 历史收件邮箱(网页下拉同源)
|
|
@@ -188,7 +188,7 @@ siluzan-tso report push history -m Google --setting-id be5e4a03-2e0f-4bb2-bcad-e
|
|
|
188
188
|
`GET /query/report-push/settings/{Media}/all/receive-emails` 返回 `string[]`:当前租户下推送配置曾使用过的收件邮箱,供创建/编辑推送或筛选记录时联想(与网页下拉一致)。
|
|
189
189
|
|
|
190
190
|
```bash
|
|
191
|
-
siluzan-tso report push receive-emails -m Google [--json]
|
|
191
|
+
siluzan-tso report push receive-emails -m Google [--json-out ./snap]
|
|
192
192
|
```
|
|
193
193
|
|
|
194
194
|
---
|
|
@@ -203,19 +203,19 @@ siluzan-tso report push receive-emails -m Google [--json]
|
|
|
203
203
|
| Google | 小时报(Hourly) | `{webUrl}/media-report/hour/{entityId}?culture=zh-CN` |
|
|
204
204
|
| TikTok | 日报 | `{webUrl}/media-report/publish/{entityId}?culture=zh-CN` |
|
|
205
205
|
|
|
206
|
-
`entityId` 来自 `siluzan-tso report list --json` 中每条记录的 `entityId` 字段。
|
|
206
|
+
`entityId` 来自 `siluzan-tso report list --json-out ./snap` 中每条记录的 `entityId` 字段。
|
|
207
207
|
|
|
208
208
|
**示例流程:**
|
|
209
209
|
|
|
210
210
|
```bash
|
|
211
211
|
# 第一步:查询报告,获取 entityId
|
|
212
|
-
siluzan-tso report list -m Google --json
|
|
212
|
+
siluzan-tso report list -m Google --json-out ./snap
|
|
213
213
|
# 从输出中找到目标报告的 entityId,如 "rpt_abc123"
|
|
214
214
|
|
|
215
215
|
# 第二步:查看 webUrl
|
|
216
216
|
siluzan-tso config show
|
|
217
|
-
# webUrl: https://www.siluzan.com
|
|
217
|
+
# webUrl: https://www-ci.siluzan.com
|
|
218
218
|
|
|
219
219
|
# 第三步:拼接链接(Google 日报)
|
|
220
|
-
# https://www.siluzan.com/media-report/publish/rpt_abc123?culture=zh-CN
|
|
220
|
+
# https://www-ci.siluzan.com/media-report/publish/rpt_abc123?culture=zh-CN
|
|
221
221
|
```
|