@jiangzhx/adcli 0.1.2 → 0.1.4

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 (4) hide show
  1. package/README.md +144 -36
  2. package/dist/cli.js +4661 -1231
  3. package/docs/commands.md +271 -4
  4. package/package.json +26 -2
package/README.md CHANGED
@@ -1,94 +1,202 @@
1
1
  # AdCLI
2
2
 
3
- 面向 IDE Agent 和 LLM 的广告平台 API 文档包。当前主线是把已采集的广告平台文档生成 `llms.txt`、`llms-full.txt` 和静态 Markdown 文档包。
3
+ AdCLI 是一个广告平台 API 文档查询 CLI。它默认使用线上发布的文档包,帮助开发者和 AI Agent 快速定位快手磁力引擎、巨量引擎、腾讯广告等平台的接口文档。
4
+
5
+ 线上文档入口:
6
+
7
+ ```text
8
+ https://adcli.jiangzhx.com/llms.txt
9
+ https://adcli.jiangzhx.com/llms-full.txt
10
+ https://adcli.jiangzhx.com/search-index.json
11
+ ```
4
12
 
5
13
  项目当前是 Bun + TypeScript CLI,不使用 Next.js。
6
14
 
7
- ## 安装 CLI
15
+ ## Monorepo
16
+
17
+ 当前仓库使用 Bun workspace 管理:
8
18
 
9
- 发布到 npm 后:
19
+ - 根包:`@jiangzhx/adcli`,负责 CLI 和文档包生成。
20
+ - SDK 子包:`packages/*`,每个媒体平台 SDK 独立维护。
21
+
22
+ 已存在的 SDK:
23
+
24
+ - `packages/oceanengine-ad-open-sdk`: 巨量广告开放平台 OpenAPI SDK。
25
+
26
+ 后续新增广点通等媒体 SDK 时,按平台官方 API 名称放到独立子包,例如 `packages/tencentad-marketing-api-sdk/`。
27
+
28
+ ## 安装
10
29
 
11
30
  ```bash
12
31
  node --version
13
32
  npm install -g @jiangzhx/adcli
14
- adcli doc search "广点通 广告消耗"
15
33
  ```
16
34
 
17
- 从 GitHub 安装当前版本:
35
+ 安装后确认:
18
36
 
19
37
  ```bash
20
- npm install -g github:jiangzhx/adcli
38
+ adcli list
21
39
  adcli doc search "广告消耗"
22
40
  ```
23
41
 
24
- 本地开发安装:
42
+ 也可以从 GitHub 安装当前代码:
25
43
 
26
44
  ```bash
27
- bun install
28
- bun run build:cli
29
- npm install -g .
30
- adcli doc search "广告消耗"
45
+ npm install -g github:jiangzhx/adcli
31
46
  ```
32
47
 
33
- `adcli doc search` 默认读取线上索引:
48
+ ## 常用命令
34
49
 
35
- ```text
36
- https://adcli.jiangzhx.com/search-index.json
50
+ 列出当前支持的平台和能力:
51
+
52
+ ```bash
53
+ adcli list
54
+ adcli list kuaishou
37
55
  ```
38
56
 
39
- 首次搜索会下载索引并缓存到系统标准缓存目录。也可以手动更新:
57
+ 搜索文档:
40
58
 
41
59
  ```bash
42
- adcli doc sync
43
- adcli doc search "广告消耗" --refresh
60
+ adcli doc search "广点通 广告消耗"
61
+ adcli doc search "广告消耗" --platform tencent_ads
62
+ adcli doc search "广告消耗" --limit 5
63
+ adcli doc search "广告消耗" --json
44
64
  ```
45
65
 
46
- 本地调试可指定索引:
66
+ 刷新本地搜索索引缓存:
47
67
 
48
68
  ```bash
49
- adcli doc search "广告消耗" --index public/search-index.json
69
+ adcli doc sync
70
+ adcli doc search "广告消耗" --refresh
50
71
  ```
51
72
 
52
- AI / Agent 使用文档包:
73
+ 输出给 AI / Agent 使用的文档入口:
53
74
 
54
75
  ```bash
55
- adcli list
56
- adcli list kuaishou
57
76
  adcli llms
58
77
  adcli prompt
59
78
  ```
60
79
 
61
- ## 常用命令
80
+ 调用巨量引擎 SDK。可以先保存一次 token,后续命令会自动读取:
81
+
82
+ | 命令 | 作用 | 默认输出 |
83
+ | --- | --- | --- |
84
+ | `adcli oceanengine auth <token>` | 保存巨量引擎 access token | 保存结果 |
85
+ | `adcli oceanengine advertiser list` | 拉取当前 token 授权的广告主列表 | `advertiser_id`、`name` |
86
+ | `adcli oceanengine project list --advertiser-id <id>` | 拉取广告主下的项目列表 | `project_id`、`name` |
87
+ | `adcli oceanengine promotion list --advertiser-id <id>` | 拉取广告主下的广告列表 | `promotion_id`、`name` |
88
+
89
+ 常用示例:
90
+
91
+ ```bash
92
+ adcli oceanengine auth <token>
93
+ adcli oceanengine advertiser list --json
94
+ adcli oceanengine project list --advertiser-id <advertiser_id> --page 1 --page-size 20
95
+ adcli oceanengine project list --advertiser-id <advertiser_id> --filtering '{"status":"PROJECT_STATUS_ALL"}'
96
+ adcli oceanengine promotion list --advertiser-id <advertiser_id> --project-id <project_id>
97
+ ```
98
+
99
+ token 优先级为 `--access-token`、`OCEANENGINE_ACCESS_TOKEN`、本地保存的 token。
100
+ 本地 token 会保存到同一个 AdCLI 缓存目录,例如 macOS 上是 `~/Library/Caches/adcli/oceanengine.json`。
101
+ 巨量 `project/list` 默认不返回已删除项目;需要包含已删除时传 `--filtering '{"status":"PROJECT_STATUS_ALL"}'`。
102
+
103
+ 调用腾讯广告 SDK。命令名按腾讯广告 v3 API 资源定义,`--advertiser-id` 可作为 `--account-id` 的别名:
104
+
105
+ | 命令 | 作用 | 默认输出 |
106
+ | --- | --- | --- |
107
+ | `adcli tencent-ads auth <token>` | 保存腾讯广告 access token | 保存结果 |
108
+ | `adcli tencent-ads advertiser list` | 拉取账号列表 | `account_id`、`name` |
109
+ | `adcli tencent-ads advertiser get --account-id <id>` | 拉取单个账号详情 | `account_id`、`name` |
110
+ | `adcli tencent-ads adgroup list --account-id <id>` | 拉取账号下的营销单元列表 | `adgroup_id`、`name` |
111
+ | `adcli tencent-ads dynamic-creative list --account-id <id>` | 拉取账号下的创意列表 | `dynamic_creative_id`、`name` |
112
+
113
+ ```bash
114
+ adcli tencent-ads auth <token>
115
+ adcli tencent-ads advertiser list --json
116
+ adcli tencent-ads advertiser get --account-id <account_id> --json
117
+ adcli tencent-ads adgroup list --account-id <account_id> --page 1 --page-size 20
118
+ adcli tencent-ads dynamic-creative list --account-id <account_id> --filtering '{"adgroup_id":"<adgroup_id>"}'
119
+ ```
120
+
121
+ token 优先级为 `--access-token`、`TENCENT_ADS_ACCESS_TOKEN`、本地保存的 token。
122
+ `advertiser list` 对齐 fujian,走 `organization_account_relation/get`;`advertiser get` 才走 `advertiser/get`。
123
+ 腾讯广告 CLI 不做跨平台层级别名,`adgroup` 对应 v3.0 `adgroups/get`,`dynamic-creative` 对应 v3.0 `dynamic_creatives/get`。资源过滤统一传 `--filtering` JSON。
124
+
125
+ 完整命令说明见 [docs/commands.md](docs/commands.md)。
126
+
127
+ ## 搜索索引缓存
128
+
129
+ `adcli doc search` 默认读取线上索引:
130
+
131
+ ```text
132
+ https://adcli.jiangzhx.com/search-index.json
133
+ ```
134
+
135
+ 第一次搜索会下载索引并缓存到系统标准缓存目录:
136
+
137
+ - macOS: `~/Library/Caches/adcli/search-index.json`
138
+ - Linux: `${XDG_CACHE_HOME:-~/.cache}/adcli/search-index.json`
139
+ - Windows: `%LOCALAPPDATA%/adcli/Cache/search-index.json`
140
+
141
+ 巨量引擎 token 也按缓存处理,保存到同目录的 `oceanengine.json`。
142
+
143
+ 本地调试可指定索引文件:
144
+
145
+ ```bash
146
+ adcli doc search "广告消耗" --index public/search-index.json
147
+ ```
148
+
149
+ ## 维护者工作流
150
+
151
+ 安装开发依赖:
62
152
 
63
153
  ```bash
64
154
  bun install
65
- bun run build
155
+ ```
156
+
157
+ 常用校验:
158
+
159
+ ```bash
66
160
  bun run test
67
161
  bun run typecheck
162
+ bun run sdk:test
163
+ bun run sdk:typecheck
68
164
  bun run lint
165
+ bun run build
69
166
  ```
70
167
 
71
- `bun run build` 校验已提交的 `public/` 静态产物,适合部署环境。重新采集后本地生成发布产物使用:
168
+ 重新生成发布产物:
72
169
 
73
170
  ```bash
74
171
  bun run build:llms all
75
172
  ```
76
173
 
77
- 只基于当前 `public/` 重新生成搜索索引:
174
+ 采集导航树未收录但可直达的单个官方文档:
78
175
 
79
176
  ```bash
80
- bun run build:search-index
177
+ bun run ingest:url https://open.oceanengine.com/labels/7/docs/<doc_id>
178
+ bun run ingest:url https://open.oceanengine.com/labels/7/docs/<doc_id> --platform oceanengine
179
+ bun run build:llms --url https://open.oceanengine.com/labels/7/docs/<doc_id>
81
180
  ```
82
181
 
83
- 本地搜索已发布文档:
182
+ `ingest:url` 会从 URL 自动识别平台并从页面解析标题,不支持手动传标题。
183
+
184
+ `build:llms --url` 只重写该 URL 对应的 Markdown 文档,并更新平台索引、manifest、`llms` 和搜索索引。
185
+
186
+ 只重建搜索索引:
84
187
 
85
188
  ```bash
86
- adcli doc search "广告消耗"
189
+ bun run build:search-index
87
190
  ```
88
191
 
89
- 完整命令清单见 [docs/commands.md](docs/commands.md)。
192
+ 构建 CLI 发布文件:
193
+
194
+ ```bash
195
+ bun run build:cli
196
+ npm pack --dry-run
197
+ ```
90
198
 
91
- ## 产物
199
+ ## 发布产物
92
200
 
93
201
  ```text
94
202
  public/llms.txt
@@ -99,18 +207,18 @@ public/{platform}/manifest.json
99
207
  public/{platform}/docs/{doc_id}.md
100
208
  ```
101
209
 
210
+ `public/` 是可发布文档包;`data/` 是维护者本地采集数据,不提交。
211
+
102
212
  ## 数据流
103
213
 
104
214
  ```text
105
215
  recipes/
106
216
  -> discover / ingest
107
- -> data/sources/{platform}/{source_id}/cleaned.md # local only, not committed
217
+ -> data/sources/{platform}/{source_id}/cleaned.md
108
218
  -> build:llms
109
219
  -> public/
110
220
  ```
111
221
 
112
- 详细说明见 [docs/llms.md](docs/llms.md)。
113
-
114
- ## 未来 MCP 服务
222
+ `discover:sources` 的 recipe 文件是平台级配置:顶层写一次 `platform`,多个发现来源放在 `sources` 数组。`recipes/oceanengine-open-platform-docs.json` 同时包含官方导航树 discovery 和飞书文档 URL 清单 discovery,维护时跑同一个文件即可。飞书文档来源依赖 `@larksuite/cli` 提供的 `lark-cli`;`bun install` 会安装它,首次使用前需要完成 `lark-cli config init --new` 和 `lark-cli auth login --recommend`。
115
223
 
116
- 如果后续需要 MCP,可以在当前 Bun/TypeScript 项目中增加独立服务入口,不需要恢复 Next.js。服务只读取 `public/` 下已经发布的静态文档和 manifest
224
+ 更多文档包说明见 [docs/llms.md](docs/llms.md)