siluzan-tso-cli 1.0.0-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.
Files changed (65) hide show
  1. package/README.md +66 -0
  2. package/assets/siluzan-ads/SKILL.md +123 -0
  3. package/assets/siluzan-ads/references/accounts.md +644 -0
  4. package/assets/siluzan-ads/references/aigc.md +176 -0
  5. package/assets/siluzan-ads/references/finance.md +303 -0
  6. package/assets/siluzan-ads/references/google-ads-test.md +162 -0
  7. package/assets/siluzan-ads/references/google-ads.md +918 -0
  8. package/assets/siluzan-ads/references/open-account-by-media.md +61 -0
  9. package/assets/siluzan-ads/references/open-account-google-ui.md +121 -0
  10. package/assets/siluzan-ads/references/reporting.md +511 -0
  11. package/assets/siluzan-ads/references/setup.md +79 -0
  12. package/assets/siluzan-ads/references/tips.md +236 -0
  13. package/assets/siluzan-ads/references/tso-home.md +96 -0
  14. package/assets/siluzan-ads/references/workflows.md +969 -0
  15. package/dist/commands/account-history.d.ts +13 -0
  16. package/dist/commands/account-history.js +87 -0
  17. package/dist/commands/account-manage.d.ts +253 -0
  18. package/dist/commands/account-manage.js +817 -0
  19. package/dist/commands/ad.d.ts +378 -0
  20. package/dist/commands/ad.js +1169 -0
  21. package/dist/commands/ai-creation.d.ts +54 -0
  22. package/dist/commands/ai-creation.js +208 -0
  23. package/dist/commands/aigc.d.ts +27 -0
  24. package/dist/commands/aigc.js +222 -0
  25. package/dist/commands/balance.d.ts +9 -0
  26. package/dist/commands/balance.js +68 -0
  27. package/dist/commands/clue.d.ts +16 -0
  28. package/dist/commands/clue.js +103 -0
  29. package/dist/commands/config.d.ts +18 -0
  30. package/dist/commands/config.js +135 -0
  31. package/dist/commands/forewarning.d.ts +78 -0
  32. package/dist/commands/forewarning.js +275 -0
  33. package/dist/commands/init.d.ts +10 -0
  34. package/dist/commands/init.js +141 -0
  35. package/dist/commands/invoice-info.d.ts +43 -0
  36. package/dist/commands/invoice-info.js +159 -0
  37. package/dist/commands/invoice.d.ts +55 -0
  38. package/dist/commands/invoice.js +212 -0
  39. package/dist/commands/keyword.d.ts +14 -0
  40. package/dist/commands/keyword.js +125 -0
  41. package/dist/commands/list-accounts.d.ts +11 -0
  42. package/dist/commands/list-accounts.js +219 -0
  43. package/dist/commands/login.d.ts +13 -0
  44. package/dist/commands/login.js +122 -0
  45. package/dist/commands/open-account.d.ts +291 -0
  46. package/dist/commands/open-account.js +988 -0
  47. package/dist/commands/optimize.d.ts +39 -0
  48. package/dist/commands/optimize.js +143 -0
  49. package/dist/commands/report.d.ts +55 -0
  50. package/dist/commands/report.js +274 -0
  51. package/dist/commands/stats.d.ts +13 -0
  52. package/dist/commands/stats.js +109 -0
  53. package/dist/commands/transfer.d.ts +37 -0
  54. package/dist/commands/transfer.js +124 -0
  55. package/dist/config/defaults.d.ts +6 -0
  56. package/dist/config/defaults.js +11 -0
  57. package/dist/index.d.ts +2 -0
  58. package/dist/index.js +1973 -0
  59. package/dist/templates/load-templates.d.ts +5 -0
  60. package/dist/templates/load-templates.js +60 -0
  61. package/dist/types/ads.d.ts +138 -0
  62. package/dist/types/ads.js +4 -0
  63. package/dist/utils/auth.d.ts +40 -0
  64. package/dist/utils/auth.js +277 -0
  65. package/package.json +48 -0
@@ -0,0 +1,61 @@
1
+ # 各媒体开户:接口与参数技术细节
2
+
3
+ > 业务流程(步骤、所需资料、审核处理)见 `references/workflows.md` 流程一。
4
+ > 本文件仅记录各媒体的底层接口路径与请求体结构,供排查问题或深度定制时参考。
5
+
6
+ ---
7
+
8
+ ## 路由对照
9
+
10
+ | 媒体 | 前端路由(path) | 说明 |
11
+ |------|------------------|------|
12
+ | **Google** | `/openAnAccount?mediaType=Google` | 与 TikTok 共用 `openAnAccount.vue`;从开户记录进入 Google 时往往先弹 **GGwarn** 合规提示再进表单 |
13
+ | **TikTok** | `/openAnAccount?mediaType=TikTok` | 同上组件,`mediaType` 区分字段与提交流程 |
14
+ | **Yandex** | `/YandexOpenAnAccount` | 独立页面 `YandexOpenAnAccount_v2.vue` |
15
+ | **BingV2** | `/bingOpenAnAccount` | 独立页面 `bingOpenAnAccount.vue` |
16
+ | **Kwai** | `/KwaiOpenAnAccount` | 独立页面 `KwaiOpenAnAccount.vue` |
17
+
18
+ ---
19
+
20
+ ## 广告主组(magKey)接口
21
+
22
+ 所有媒体在提交开户前都需要一个广告主组,并取得 `magKey`(MediaAccountGroupId):
23
+
24
+ - **查询列表**:`GET {apiBaseUrl}/query/profile/steward-individual` → `profile.mediaAccountGroups[]`,项上 `key` 即 magKey
25
+ - **创建**:`PUT {apiBaseUrl}/command/profile/steward-individual`,Header `s-command-type: AddMediaAccountGroup`
26
+ - **更新**:`PUT {apiBaseUrl}/command/profile/steward-individual/{id}`,Header `s-command-type: UpdateMediaAccountGroup`
27
+
28
+ **Google 例外**:CLI 按 `--company` 自动创建或更新广告主组,无需手动查询。
29
+
30
+ ---
31
+
32
+ ## 各媒体提交接口
33
+
34
+ | CLI 子命令 | 提交接口 | Method | 关键 Header / 特点 |
35
+ |------------|----------|--------|--------------------|
36
+ | `open-account google` | `/command/media-account/google` | POST | `s-command-type: AddExistingMediaAccountList`;前置自动创建广告主组 |
37
+ | `open-account tiktok` | `/command/media-account`(不是 `/google`) | POST | 同上;前置 `POST .../tiktok/Upload` 上传执照图片;可选 `POST .../command/attachment` 存档、`GET .../CheckUnionpayInfo` |
38
+ | `open-account yandex` | `/command/media-account/AddAgencyClient` | POST | Body:`MediaAccountGroupId` + `AgencyClientInfo`(登录名、税号、电话等) |
39
+ | `open-account bing` | `/command/media-account/AddBingV2Account` | POST | Body:`BingCustomerInfo` / `BingV2AccountInfo` + 执照 `FileId`;前置 `POST .../command/attachment` |
40
+ | `open-account kwai` | `/command/media-account/AddKwaiAccount` | POST | Body:Kwai 专用主体/行业/执照结构 + `blobstoreKey`;前置 `POST .../KwaiAccount/Management/Upload` |
41
+
42
+ ---
43
+
44
+ ## 辅助接口
45
+
46
+ | 用途 | 接口 | CLI 命令 |
47
+ |------|------|---------|
48
+ | Google 时区列表 | `GET {apiBaseUrl}/query/media-account/Google/TimeZoneInfo/ReadFile` | `open-account google-timezones` |
49
+ | TikTok 时区列表 | `GET {apiBaseUrl}/query/media-account/tiktok/TikTokTimeZoneInfo/Read` | `open-account tiktok-timezones` |
50
+ | TikTok 行业列表 | `GET {apiBaseUrl}/query/media-account/tiktok/TikTokIndustryInfo/Read` | `open-account tiktok-industries` |
51
+ | TikTok 注册地列表 | `GET {apiBaseUrl}/query/media-account/tiktok/TikTokAreacode/Read` | `open-account tiktok-areas` |
52
+ | Bing 行业列表 | `GET {apiBaseUrl}/query/media-account/bing/BingTradeList/Read`(返回中文行业名,`name` 字段即为 `--trade-id` 的值) | `open-account bing-industries` |
53
+ | 修改 Google 申请 | `PUT .../command/media-account/google/{entityId}`,`s-command-type: UpdateMediaAccount` | — |
54
+ | 修改 TikTok 申请 | `PUT .../command/media-account/{entityId}`,`s-command-type: UpdateMediaAccount` | — |
55
+ | 修改 Yandex 申请 | `POST .../command/media-account/UpdateAgencyClient/{id}` | — |
56
+
57
+ ## 公司名称(广告主组)联想说明
58
+
59
+ 网页上「公司名称」下拉的数据来自 `GET {apiBaseUrl}/query/profile/steward-individual`(与 `open-account list-groups` 同一接口),**无搜索接口,为本地过滤**。
60
+
61
+ 选中已有广告主后,网页会自动回填推广链接、行业、推广类型等字段。CLI 的 `open-account google` 同样按 `--company` 名称自动匹配或创建广告主组,行为与网页一致。
@@ -0,0 +1,121 @@
1
+ # Google 开户:网页交互与 CLI 对照(/openAnAccount)
2
+
3
+ > 路由:`{webUrl}/v3/foreign_trade/tso/openAnAccount?mediaType=Google&...`
4
+ > 前端组件:`openAnAccount.vue` + 顶部流程条 `GGOPASteps.vue`
5
+
6
+ ---
7
+
8
+ ## 一、页面顶部「五步」是什么?
9
+
10
+ 与**表单分步**不是同一套数字,但语义连贯:
11
+
12
+ | 步骤 | 文案(意译) | 用户要做什么 | CLI / Skill 能做什么 |
13
+ |------|----------------|----------------|----------------------|
14
+ | ① | 准备开户资料 | 准备公司名、网址、类型、账户信息等 | 说明清单;**无法**代替用户准备资质 |
15
+ | ② | 填写申请 | 网页里完成第 1、2 步表单并提交 | **`open-account google-wizard`** 或 **`open-account google`** |
16
+ | ③ | 等待审核 | 等待媒体/平台审核 | **`account-history -m Google`** 轮询 |
17
+ | ④ | 审核通过 | 查看通过结果 | 同上 |
18
+ | ⑤ | 充值并激活 | **必须在网页完成充值** | 引导 `config show` → `webUrl` + 充值路径(见 `finance.md`) |
19
+
20
+ 页面上还有提示:**美元账户最低充值约 100 USD、人民币约 700 CNY**(以实际页面为准)。
21
+
22
+ ---
23
+
24
+ ## 二、网页里实际填表是「两步」
25
+
26
+ ### 第 1 步(企业 / 推广信息)
27
+
28
+ | 网页控件 | 说明 | CLI 对应 |
29
+ |----------|------|----------|
30
+ | 公司名称 | 文本,可联想已有广告主 | `--company` |
31
+ | 网址 | 左侧下拉 `https://` / `http://` + 右侧输入框 | `--promotion-link`(可只写域名,CLI 会补协议) |
32
+ | 类型 | 单选 **B2B / B2C / APP** | `--promotion-type`:`b2b` \| `b2c` \| `app` |
33
+ | 行业级联 | 当前前端已隐藏 | 可选 `--industry1` / `--industry2` |
34
+
35
+ 提交第 1 步后,后台会**创建或更新广告主组**并拿到 `magKey`;CLI 已内置该逻辑,**无需**用户自己查 `magKey`。
36
+
37
+ ### 第 2 步(广告账户表格,与下拉菜单一致)
38
+
39
+ | 网页控件 | 说明 | CLI 对应 |
40
+ |----------|------|----------|
41
+ | 账户名称 | 文本,默认与公司名一致 | `--account-name` |
42
+ | 币种 | 下拉:**CNY / USD**(HKD 对代理商场景为禁用) | `--currency`:`CNY` \| `USD` |
43
+ | 时区 | 下拉:文案为 **`(Time)Name`**,值为 **IANA Code** | `--timezone`;列表用 **`open-account google-timezones`** |
44
+ | 开户数量 | 1~3,且多行总和 ≤3(网页表格) | `--counts`(1~3) |
45
+ | 开户邮箱 | 建议 Gmail;网页校验 **`.com` 结尾** | `--invite-email` |
46
+
47
+ **币种 ↔ 默认时区(与网页 `changeCurrency` 一致)**
48
+
49
+ - 选 **CNY** → 默认 **`Asia/Shanghai`**
50
+ - 选 **USD**(或其它非 CNY)→ 默认 **`Asia/Hong_Kong`**
51
+
52
+ 其它时区请从 **`siluzan-tso open-account google-timezones`** 里取 **Code** 列(与网页下拉同一接口)。
53
+
54
+ ---
55
+
56
+ ## 三、推荐用法
57
+
58
+ ### 1)非交互提交(Agent / 脚本首选)
59
+
60
+ ```bash
61
+ # 常用时区速查(无需每次运行 google-timezones):
62
+ # Asia/Shanghai 北京/上海(CNY 默认)
63
+ # Asia/Hong_Kong 香港(USD 默认)
64
+ # America/New_York 美东
65
+ # America/Los_Angeles 美西
66
+ # Europe/London 伦敦
67
+ # 完整列表:siluzan-tso open-account google-timezones [--keyword <关键词>]
68
+
69
+ siluzan-tso open-account google \
70
+ --company "某某公司" \
71
+ --promotion-link "https://www.example.com" \
72
+ --promotion-type b2c \
73
+ --account-name "某某公司-美国投放" \
74
+ --currency USD \
75
+ --timezone "America/New_York" \
76
+ --invite-email "user@gmail.com" \
77
+ --counts 1
78
+ ```
79
+
80
+ ### 2)交互向导(人工终端操作,需要真实 TTY)
81
+
82
+ ```bash
83
+ # 注意:需要真实终端,CI / 管道 / AI Agent 环境下无法使用
84
+ siluzan-tso open-account google-wizard
85
+ ```
86
+
87
+ ### 3)审核与后续
88
+
89
+ ```bash
90
+ # 轮询审核进度
91
+ siluzan-tso account-history -m Google
92
+
93
+ # 审核通过后,充值激活(必须网页完成)
94
+ # siluzan-tso config show 取 webUrl,打开:{webUrl}/v3/foreign_trade/tso/recharge
95
+ # 美元账户最低约 100 USD,人民币账户约 700 CNY
96
+ ```
97
+
98
+ ---
99
+
100
+ ## 四、给 AI Agent 的简短指令模板
101
+
102
+ 当用户说「我要在丝路赞开 Google 户」时:
103
+
104
+ 1. 收集必填字段:公司名、推广网址、推广类型、账户名、币种、时区、邀请邮箱。
105
+ 2. 时区未知时,先给出常用时区表(见上方速查),或运行 `open-account google-timezones --keyword <关键词>` 辅助选择。
106
+ 3. 拼一条 `open-account google` 非交互命令提交。
107
+ 4. 提交后:`account-history -m Google` 轮询进度。
108
+ 5. 审核通过后:引导充值激活,给出充值网页路径(见第三步)。
109
+
110
+ ---
111
+
112
+ ## 五、相关命令速查
113
+
114
+ | 命令 | 作用 |
115
+ |------|------|
116
+ | `open-account google-wizard` | 交互向导(对齐网页两步表单 + 五步说明) |
117
+ | `open-account google-timezones` | 时区列表(网页下拉同源) |
118
+ | `open-account google` | 非交互一次性提交 |
119
+ | `account-history -m Google` | 开户审核进度 |
120
+
121
+ 更完整的参数表见 `accounts.md` → **open-account** 章节。
@@ -0,0 +1,511 @@
1
+ # 报告与优化命令详解
2
+
3
+ > 所属 skill:`siluzan-tso`。
4
+
5
+ ---
6
+
7
+ ## report — 优化报告
8
+
9
+ ### report list — 查询报告列表
10
+
11
+ ```bash
12
+ siluzan-tso report list -m <媒体> [选项]
13
+ ```
14
+
15
+ | 选项 | 说明 |
16
+ |------|------|
17
+ | `-m, --media` | 媒体类型(必填):`Google \| TikTok` |
18
+ | `-t, --type <type>` | 报告类型:`Daily \| Hourly` |
19
+ | `-s, --status <ready>` | 是否已生成:`true \| false` |
20
+ | `-k, --keyword <text>` | 报告名称关键字 |
21
+ | `--start / --end <date>` | 日期范围(YYYY-MM-DD) |
22
+ | `--json` | 输出原始 JSON |
23
+
24
+ **示例:**
25
+
26
+ ```bash
27
+ # 查询所有 Google 报告
28
+ siluzan-tso report list -m Google
29
+
30
+ # 查询本月 TikTok 日报
31
+ siluzan-tso report list -m TikTok -t Daily --start 2026-03-01 --end 2026-03-31
32
+
33
+ # 只看已生成完成的报告
34
+ siluzan-tso report list -m Google --status true --json
35
+ ```
36
+
37
+ ---
38
+
39
+ ### report create — 批量生成报告
40
+
41
+ ```bash
42
+ siluzan-tso report create -m <媒体> -a <账户ID列表> -t <类型> --start <date> --end <date>
43
+ ```
44
+
45
+ | 选项 | 说明 | 必填 |
46
+ |------|------|------|
47
+ | `-m, --media` | 媒体类型 | ✅ |
48
+ | `-a, --accounts <ids>` | 账户 `mediaCustomerId`(数字 ID),逗号分隔。**注意:不是 `entityId`**,内部会自动转换 | ✅ |
49
+ | `-t, --type` | 报告类型 | ✅ |
50
+ | `--start / --end` | 日期范围 | ✅ |
51
+
52
+ **示例:**
53
+
54
+ ```bash
55
+ # 为 Google 账户生成本月日报(传 mediaCustomerId)
56
+ siluzan-tso report create \
57
+ -m Google \
58
+ -a 6326027735 \
59
+ -t Daily \
60
+ --start 2026-03-01 \
61
+ --end 2026-03-31
62
+
63
+ # 多账户,生成昨天的小时报
64
+ siluzan-tso report create -m Google -a 6326027735,4545500137 -t Hourly --start 2026-03-19 --end 2026-03-19
65
+ ```
66
+
67
+ ---
68
+
69
+ ### report delete — 删除报告
70
+
71
+ ```bash
72
+ siluzan-tso report delete --id <entityId>
73
+ siluzan-tso report delete --ids <id1,id2,id3>
74
+ ```
75
+
76
+ **示例:**
77
+
78
+ ```bash
79
+ siluzan-tso report delete --id rpt_abc123
80
+
81
+ # 批量删除
82
+ siluzan-tso report delete --ids rpt_abc123,rpt_def456
83
+ ```
84
+
85
+ ---
86
+
87
+ ### report push — 推送管理
88
+
89
+ ```bash
90
+ siluzan-tso report push list -m <媒体> # 查询推送配置列表
91
+ siluzan-tso report push start -m <媒体> --id <id> # 启动推送
92
+ siluzan-tso report push stop -m <媒体> --id <id> # 停止推送
93
+ siluzan-tso report push delete -m <媒体> --id <id> # 删除推送配置
94
+ ```
95
+
96
+ **示例:**
97
+
98
+ ```bash
99
+ # 查询 Google 推送列表
100
+ siluzan-tso report push list -m Google
101
+
102
+ # 启动指定推送
103
+ siluzan-tso report push start -m Google --id push_abc123
104
+
105
+ # 停止推送
106
+ siluzan-tso report push stop -m Google --id push_abc123
107
+
108
+ # 删除推送配置
109
+ siluzan-tso report push delete -m Google --id push_abc123
110
+ ```
111
+
112
+ ---
113
+
114
+ ### 查看报告(引导打开网页)
115
+
116
+ 报告生成后,在网页查看。先用 `siluzan-tso config show` 获取 `webUrl`,再按以下规则拼接链接:
117
+
118
+ | 媒体 | 报告类型 | URL 模板 |
119
+ |------|---------|---------|
120
+ | Google | 日报(Daily) | `{webUrl}/media-report/publish/{entityId}?culture=zh-CN` |
121
+ | Google | 小时报(Hourly) | `{webUrl}/media-report/hour/{entityId}?culture=zh-CN` |
122
+ | TikTok | 日报 | `{webUrl}/media-report/publish/{entityId}?culture=zh-CN` |
123
+
124
+ `entityId` 来自 `siluzan-tso report list --json` 中每条记录的 `entityId` 字段。
125
+
126
+ **示例流程:**
127
+
128
+ ```bash
129
+ # 第一步:查询报告,获取 entityId
130
+ siluzan-tso report list -m Google --json
131
+ # 从输出中找到目标报告的 entityId,如 "rpt_abc123"
132
+
133
+ # 第二步:查看 webUrl
134
+ siluzan-tso config show
135
+ # webUrl: {{WEB_URL}}
136
+
137
+ # 第三步:拼接链接(Google 日报)
138
+ # {{WEB_URL}}/media-report/publish/rpt_abc123?culture=zh-CN
139
+ ```
140
+
141
+ ---
142
+
143
+ ## ai-creation — AI 智投记录
144
+
145
+ 对应页面:`/advertising/AICreationList`
146
+
147
+ ### list — 查询列表
148
+
149
+ ```bash
150
+ siluzan-tso ai-creation list [选项]
151
+ ```
152
+
153
+ | 选项 | 说明 |
154
+ |------|------|
155
+ | `-s, --state <state>` | 状态:`Creating \| Successfully \| Failed \| HasFailed \| Unpublished` |
156
+ | `--customer-id <id>` | Google mediaCustomerId |
157
+ | `--customer-name <name>` | 客户名称关键字 |
158
+ | `-k, --keyword <text>` | 关键字 |
159
+ | `--start / --end <date>` | 创建日期范围 |
160
+ | `-p, --page <n>` | 页码(默认 1) |
161
+ | `--page-size <n>` | 每页数量(默认 20) |
162
+ | `--json` | 输出原始 JSON |
163
+
164
+ **示例:**
165
+
166
+ ```bash
167
+ # 查询全部记录
168
+ siluzan-tso ai-creation list
169
+
170
+ # 按 Google 账户筛选
171
+ siluzan-tso ai-creation list --customer-id 6326027735
172
+
173
+ # 查询创建失败的记录
174
+ siluzan-tso ai-creation list --state Failed --json
175
+
176
+ # 查询本月草稿
177
+ siluzan-tso ai-creation list --state Unpublished --start 2026-03-01
178
+ ```
179
+
180
+ ---
181
+
182
+ ### get — 获取草稿详情
183
+
184
+ ```bash
185
+ siluzan-tso ai-creation get --id <recordId>
186
+ ```
187
+
188
+ 输出完整 JSON 草稿内容(包含广告系列、预算、关键词、定向位置等)。
189
+
190
+ **示例:**
191
+
192
+ ```bash
193
+ siluzan-tso ai-creation get --id rec_abc123
194
+ ```
195
+
196
+ ---
197
+
198
+ ### update — 更新草稿字段
199
+
200
+ 只有 `draftStatus === "Draft"` 的记录可更新。
201
+
202
+ ```bash
203
+ siluzan-tso ai-creation update --id <recordId> [选项]
204
+ ```
205
+
206
+ | 选项 | 说明 |
207
+ |------|------|
208
+ | `--budget <amount>` | 新预算(最小货币单位,如 `8500` = 85元 CNY) |
209
+ | `--url <url>` | 新推广链接 |
210
+ | `--campaign-name <name>` | 新广告系列名称 |
211
+
212
+ **示例:**
213
+
214
+ ```bash
215
+ # 修改预算为 500 元(CNY,单位为分)
216
+ siluzan-tso ai-creation update --id rec_abc123 --budget 50000
217
+
218
+ # 同时修改名称和推广链接
219
+ siluzan-tso ai-creation update --id rec_abc123 \
220
+ --campaign-name "品牌A春季促销" \
221
+ --url "https://www.brand-a.com/spring-sale"
222
+ ```
223
+
224
+ ---
225
+
226
+ ### publish — 发布草稿
227
+
228
+ 只有 `draftStatus === "Draft"` 的记录可发布。发布后状态变为 `Creating`,Google 后台异步执行创建。
229
+
230
+ ```bash
231
+ siluzan-tso ai-creation publish --id <recordId>
232
+ ```
233
+
234
+ **示例:**
235
+
236
+ ```bash
237
+ siluzan-tso ai-creation publish --id rec_abc123
238
+ ```
239
+
240
+ ---
241
+
242
+ ## optimize — AI 广告优化
243
+
244
+ 对应页面:`/advertising/AiGoogleOptimize`
245
+
246
+ ```bash
247
+ siluzan-tso optimize list [选项] # 账户级优化主列表
248
+ siluzan-tso optimize records [选项] # 优化操作记录列表
249
+ siluzan-tso optimize children --parent-id <id> # 广告系列级明细
250
+ ```
251
+
252
+ | 选项 | 说明 |
253
+ |------|------|
254
+ | `-a, --account <id>` | 账户 `mediaCustomerId` |
255
+ | `--start / --end <date>` | 日期范围(YYYY-MM-DD,自动附加 +08:00) |
256
+ | `--parent-id <id>` | 父级 ID(`children` 子命令专用) |
257
+ | `--json` | 输出原始 JSON |
258
+
259
+ **示例:**
260
+
261
+ ```bash
262
+ # 查询指定账户的优化建议列表
263
+ siluzan-tso optimize list -a 6326027735
264
+
265
+ # 查询所有账户本月优化记录
266
+ siluzan-tso optimize records --start 2026-03-01 --end 2026-03-31
267
+
268
+ # 查询某账户广告系列级明细
269
+ siluzan-tso optimize children --parent-id opt_parent_abc123
270
+
271
+ # JSON 输出
272
+ siluzan-tso optimize list -a 6326027735 --json
273
+ ```
274
+
275
+ ---
276
+
277
+ ## clue — 广告线索表单
278
+
279
+ 对应页面:`/clue-form`。支持 **TikTok** 和 **Meta(Facebook)** 两种媒体。
280
+
281
+ > **注意**:线索数据直接来自媒体 API,**不支持服务端分页**,数据量大时建议 `--json` 导出后自行处理。
282
+
283
+ ```bash
284
+ siluzan-tso clue -m <媒体> -a <账户ID> [选项]
285
+ ```
286
+
287
+ | 选项 | 说明 |
288
+ |------|------|
289
+ | `-m, --media` | `TikTok \| Meta`(默认 TikTok) |
290
+ | `-a, --account <id>` | TikTok:`advertiserId`(mediaCustomerId);Meta:Facebook 页面 ID |
291
+ | `--region <region>` | TikTok 专用:`eu \| us \| other \| ALL`(默认 ALL) |
292
+ | `--start <date>` | Meta 专用:开始日期(YYYY-MM-DD) |
293
+ | `--end <date>` | Meta 专用:结束日期(YYYY-MM-DD) |
294
+ | `--json` | 输出原始 JSON |
295
+
296
+ **TikTok 示例:**
297
+
298
+ ```bash
299
+ # 查询 TikTok 全部区域线索
300
+ siluzan-tso clue -m TikTok -a 1234567890
301
+
302
+ # 只查欧洲区线索
303
+ siluzan-tso clue -m TikTok -a 1234567890 --region eu
304
+
305
+ # 查美国区,JSON 输出
306
+ siluzan-tso clue -m TikTok -a 1234567890 --region us --json
307
+ ```
308
+
309
+ **Meta 示例:**
310
+
311
+ ```bash
312
+ # 查询 Meta 线索(3月份)
313
+ siluzan-tso clue -m Meta -a 987654321 --start 2026-03-01 --end 2026-03-31
314
+
315
+ # JSON 输出
316
+ siluzan-tso clue -m Meta -a 987654321 --start 2026-03-01 --json
317
+ ```
318
+
319
+ **输出字段说明(TikTok):**
320
+
321
+ | 字段 | 来源 |
322
+ |------|------|
323
+ | 姓名、邮箱、手机 | `custom_fields` |
324
+ | 表单名、广告名、区域、时间、lead_id | `system_fields` |
325
+
326
+ **输出字段说明(Meta):**
327
+
328
+ | 字段 | 来源 |
329
+ |------|------|
330
+ | 姓名、邮箱、手机 | `field_data` |
331
+ | 表单名、创建时间 | 顶层字段 |
332
+
333
+ ---
334
+
335
+ ## forewarning — 智能预警
336
+
337
+ 对应页面:`/advertising/forewarning`
338
+
339
+ ### list — 查询规则列表
340
+
341
+ ```bash
342
+ siluzan-tso forewarning list -m <媒体> [选项]
343
+ ```
344
+
345
+ | 选项 | 说明 |
346
+ |------|------|
347
+ | `-m, --media` | 媒体类型(必填):`Google \| TikTok` |
348
+ | `-a, --account <id>` | 账户 ID 筛选 |
349
+ | `-k, --keyword <text>` | 规则名称关键字 |
350
+ | `--start / --end <date>` | 日期范围 |
351
+ | `--json` | 输出原始 JSON |
352
+
353
+ **示例:**
354
+
355
+ ```bash
356
+ # 查询所有 Google 预警规则
357
+ siluzan-tso forewarning list -m Google
358
+
359
+ # 按账户筛选
360
+ siluzan-tso forewarning list -m TikTok -a entityId1
361
+
362
+ # 关键字搜索
363
+ siluzan-tso forewarning list -m Google -k "消费超限"
364
+ ```
365
+
366
+ ---
367
+
368
+ ### records — 查询预警触发记录
369
+
370
+ ```bash
371
+ siluzan-tso forewarning records -m <媒体> [选项]
372
+ ```
373
+
374
+ | 选项(额外) | 说明 |
375
+ |------|------|
376
+ | `-r, --rule-id <id>` | 规则 ID(留空查全部规则) |
377
+ | `-s, --status <result>` | 执行结果筛选 |
378
+
379
+ **示例:**
380
+
381
+ ```bash
382
+ # 查询所有 TikTok 预警触发记录
383
+ siluzan-tso forewarning records -m TikTok
384
+
385
+ # 查询本月触发记录
386
+ siluzan-tso forewarning records -m Google --start 2026-03-01
387
+
388
+ # 查询指定规则的触发记录
389
+ siluzan-tso forewarning records -m Google --rule-id rule_abc123
390
+ ```
391
+
392
+ ---
393
+
394
+ ### start / stop / delete — 启停/删除规则
395
+
396
+ ```bash
397
+ siluzan-tso forewarning start -m <媒体> --id <ruleEntityId> # 启动规则
398
+ siluzan-tso forewarning stop -m <媒体> --id <ruleEntityId> # 停止规则
399
+ siluzan-tso forewarning delete -m <媒体> --id <ruleEntityId> # 删除规则
400
+ ```
401
+
402
+ **示例:**
403
+
404
+ ```bash
405
+ siluzan-tso forewarning stop -m Google --id rule_abc123
406
+ siluzan-tso forewarning start -m Google --id rule_abc123
407
+ siluzan-tso forewarning delete -m TikTok --id rule_def456
408
+ ```
409
+
410
+ ---
411
+
412
+ ### create — 创建预警规则(自定义类型)
413
+
414
+ ```bash
415
+ siluzan-tso forewarning create \
416
+ -m Google \
417
+ --name "消费超限预警" \
418
+ --accounts "entityId1,entityId2" \
419
+ --field cost \
420
+ --operator GREATER_EQUALS \
421
+ --value 500 \
422
+ --days 1 \
423
+ --frequency QuarterHour \
424
+ --notify "notifyEntityId"
425
+ ```
426
+
427
+ | 选项 | 说明 | 必填 |
428
+ |------|------|------|
429
+ | `-m, --media` | `Google \| TikTok` | ✅ |
430
+ | `--name` | 规则名称 | ✅ |
431
+ | `--accounts <ids>` | 监控账户 `entityId`,逗号分隔 | ✅ |
432
+ | `--field <field>` | 监控指标(见下表) | ✅ |
433
+ | `--operator <op>` | 比较运算符(见下表) | ✅ |
434
+ | `--value <n>` | 阈值(数字) | ✅ |
435
+ | `--scope <type>` | 层级:`Campaign \| AdGroup \| Ad`(默认 `Campaign`) | |
436
+ | `--days <n>` | 统计周期(天):`1 \| 3 \| 7`(默认 1) | |
437
+ | `--frequency <freq>` | 检查频率:`QuarterHour \| HalfHour \| Hour`(默认 `QuarterHour`) | |
438
+ | `--notify <ids>` | 通知账户 `entityId`,逗号分隔 | |
439
+
440
+ **监控指标(--field):**
441
+
442
+ | 媒体 | 可选值 |
443
+ |------|--------|
444
+ | Google | `cost` `CPA` `CPM` `CPC` `conversions_count` `conversions_rate` `valid_click_count` `ctr` |
445
+ | TikTok | `spend` `cpc` `cpm` `cost_per_conversion` `conversion` `ctr` `clicks` `result` `result_rate` |
446
+
447
+ **比较运算符(--operator):**
448
+
449
+ `GREATER_EQUALS`(≥)、`GREATER`(>)、`LESS_EQUALS`(≤)、`LESS`(<)、`EQUALS`(=)
450
+
451
+ **典型场景示例:**
452
+
453
+ ```bash
454
+ # 场景1:Google 账户日消费超过 500 元时预警
455
+ siluzan-tso forewarning create \
456
+ -m Google \
457
+ --name "日消费超限" \
458
+ --accounts "entityId1" \
459
+ --field cost \
460
+ --operator GREATER_EQUALS \
461
+ --value 500
462
+
463
+ # 场景2:TikTok 广告组 CPM 低于 5 元时预警(每半小时检查一次)
464
+ siluzan-tso forewarning create \
465
+ -m TikTok \
466
+ --name "CPM 偏低预警" \
467
+ --accounts "entityId1,entityId2" \
468
+ --field cpm \
469
+ --operator LESS \
470
+ --value 5 \
471
+ --scope AdGroup \
472
+ --frequency HalfHour
473
+
474
+ # 场景3:Google 近 7 天转化数低于 10 时预警,并通知指定账户
475
+ siluzan-tso forewarning create \
476
+ -m Google \
477
+ --name "转化不足预警" \
478
+ --accounts "entityId1" \
479
+ --field conversions_count \
480
+ --operator LESS \
481
+ --value 10 \
482
+ --days 7 \
483
+ --notify "notifyEntityId"
484
+ ```
485
+
486
+ ---
487
+
488
+ ### update — 更新预警规则
489
+
490
+ 参数与 `create` 相同,**额外必填 `--id`**(规则 entityId)。
491
+
492
+ ```bash
493
+ siluzan-tso forewarning update \
494
+ -m Google \
495
+ --id rule_abc123 \
496
+ --name "日消费超限(修改版)" \
497
+ --accounts "entityId1" \
498
+ --field cost \
499
+ --operator GREATER_EQUALS \
500
+ --value 800
501
+ ```
502
+
503
+ ---
504
+
505
+ ### get — 查看单条规则详情
506
+
507
+ 编辑前用于获取规则的当前配置。
508
+
509
+ ```bash
510
+ siluzan-tso forewarning get -m Google --id rule_abc123
511
+ ```