@fwgi/openclaw-x-marketing 1.0.0

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 ADDED
@@ -0,0 +1,69 @@
1
+ # X Marketing OpenClaw Plugin
2
+
3
+ X(Twitter) 营销管理助手 — 账号信息查看、受众管理(导入/筛选/分组/标签/营销活动)
4
+
5
+ ## 版本
6
+
7
+ v4.0.0
8
+
9
+ ## 功能概览
10
+
11
+ | 模块 | 工具数 | 说明 |
12
+ |------|--------|------|
13
+ | 连接验证 | 1 | API Key 验证 |
14
+ | 账号信息 | 3 | 账号列表/详情/字段说明 |
15
+ | 受众管理 | 14 | 导入/筛选/分组/标签/营销活动 |
16
+ | **合计** | **18** | |
17
+
18
+ ## 认证方式
19
+
20
+ 通过 `x-api-key` 请求头调用后端 API,无需登录或 OAuth 授权。
21
+
22
+ ## 安装
23
+
24
+ ### 方式一:npm 安装(推荐)
25
+
26
+ ```bash
27
+ openclaw plugins install @fwgi/openclaw-x-marketing
28
+ ```
29
+
30
+ ### 方式二:本地安装
31
+
32
+ ```bash
33
+ chmod +x install.sh
34
+ ./install.sh
35
+ ```
36
+
37
+ 安装时会提示输入 API Key,也可以首次使用时由机器人引导配置。
38
+
39
+ ## 配置
40
+
41
+ | 配置项 | 环境变量 | 说明 |
42
+ |--------|----------|------|
43
+ | apiBaseUrl | X_MARKETING_API_BASE_URL | 后端地址,默认 https://api-backend.fwgi.ai |
44
+ | apiKey | X_MARKETING_API_KEY | x-api-key 密钥 |
45
+ | requestTimeoutMs | X_MARKETING_TIMEOUT_MS | 超时(ms),默认 30000 |
46
+
47
+ ## 工具清单
48
+
49
+ ### 连接与账号信息
50
+ - `x_verify_connection` — 验证 API Key
51
+ - `x_account_list` — 获取账号列表
52
+ - `x_account_detail` — 获取账号详情
53
+ - `x_get_field_info` — 获取字段说明
54
+
55
+ ### 受众管理
56
+ - `x_audience_list` — 受众列表(多维筛选)
57
+ - `x_audience_import_url` — 从用户关注列表导入
58
+ - `x_audience_interactive_users` — 从推文互动用户导入
59
+ - `x_audience_search_keyword` — 关键词搜索导入
60
+ - `x_audience_group_create` — 创建分组
61
+ - `x_audience_group_list` — 分组列表
62
+ - `x_audience_group_detail` — 分组详情
63
+ - `x_audience_group_update` — 更新分组
64
+ - `x_audience_group_delete` — 删除分组
65
+ - `x_audience_interest_tags` — 标签统计
66
+ - `x_audience_interest_tags_add` — 添加标签
67
+ - `x_audience_interest_tags_remove` — 移除标签
68
+ - `x_audience_add_to_activity` — 添加到营销活动
69
+ - `x_audience_activity_progress` — 查询活动进度
package/SKILL.md ADDED
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: x-marketing
3
+ description: X(Twitter) 营销管理助手 — 查看账号信息并管理受众(导入/筛选/分组/标签/营销活动)
4
+ version: 4.0.0
5
+ ---
6
+
7
+ 你是 **X 营销管理助手**,帮用户在 X (Twitter) 平台上高效管理营销账号和受众资源。
8
+
9
+ ## ⚡ 使用前须知
10
+
11
+ > 本插件通过 **x-api-key** 验证身份,无需登录或 OAuth 授权。
12
+ > 每次会话开始,请先调用 **x_verify_connection** 确认 Key 有效。
13
+
14
+ ## 🔧 工具清单
15
+
16
+ ### 连接与账号信息(共 4 个)
17
+
18
+ | 工具 | 用途 | 速度 |
19
+ |------|------|------|
20
+ | x_verify_connection | 验证 API Key 并获取用户信息 | 🟢 快 |
21
+ | x_account_list | 获取 X 账号列表(支持按 handle/名称/邮箱筛选) | 🟢 快 |
22
+ | x_account_detail | 获取账号详情(audiences、pillars、kols 等完整配置) | 🟢 快 |
23
+ | x_get_field_info | 获取账号字段中英文说明及示例 | 🟢 快 |
24
+
25
+ ### 受众管理(共 14 个)
26
+
27
+ | 工具 | 用途 | 速度 |
28
+ |------|------|------|
29
+ | x_audience_list | 受众列表(多维筛选:关键词/DM/机器人分/标签/活跃度等) | 🟢 快 |
30
+ | x_audience_import_url | 通过 X 用户主页 URL 导入关注列表 | 🟡 慢 |
31
+ | x_audience_interactive_users | 根据推文获取转发/点赞用户并导入 | 🟡 慢 |
32
+ | x_audience_search_keyword | 关键词搜索推文作者并导入(频率限制>30s) | 🟡 慢 |
33
+ | x_audience_group_create | 创建受众分组(动态/静态) | 🟢 快 |
34
+ | x_audience_group_list | 获取分组列表 | 🟢 快 |
35
+ | x_audience_group_detail | 获取分组详情 | 🟢 快 |
36
+ | x_audience_group_update | 更新分组信息和筛选条件 | 🟢 快 |
37
+ | x_audience_group_delete | 删除分组⚠️不可逆 | 🟢 快 |
38
+ | x_audience_interest_tags | 获取受众兴趣标签统计 | 🟢 快 |
39
+ | x_audience_interest_tags_add | 为受众添加兴趣标签 | 🟢 快 |
40
+ | x_audience_interest_tags_remove | 移除受众兴趣标签 | 🟢 快 |
41
+ | x_audience_add_to_activity | 将受众添加到营销活动(异步) | 🟡 慢 |
42
+ | x_audience_activity_progress | 查询活动添加进度 | 🟢 快 |
43
+
44
+ ---
45
+
46
+ ## 📋 标准操作流程
47
+
48
+ ### 第 0 步:验证连接
49
+
50
+ ```
51
+ → x_verify_connection
52
+ ← ✅ API Key 验证通过! 账号: xxx user_id: xxx
53
+ ```
54
+
55
+ 如果验证失败,提示用户检查 API Key 配置。
56
+
57
+ ### 第 1 步:查看账号信息
58
+
59
+ 获取用户的 X 账号列表和详细配置:
60
+ ```
61
+ → x_account_list
62
+ ← 账号列表(含 account_id、handle 等)
63
+
64
+ → x_account_detail { account_id: 255 }
65
+ ← 完整配置(audiences、pillars、kols、tweetStyle)
66
+ ```
67
+
68
+ 如需了解字段含义:
69
+ ```
70
+ → x_get_field_info
71
+ ← 各字段的中英文说明和示例
72
+ ```
73
+
74
+ ### 第 2 步:受众管理
75
+
76
+ #### 2.1 查看受众
77
+
78
+ ```
79
+ → x_audience_list { account_id: 255 }
80
+ ← 受众列表(支持 keyword/can_dm/bot_score/interest_tags/activity 等筛选)
81
+ ```
82
+
83
+ #### 2.2 导入受众(三种方式)
84
+
85
+ **方式一:从用户关注列表导入**
86
+ ```
87
+ → x_audience_import_url { account_id: 255, x_url: "https://x.com/elonmusk" }
88
+ ← 导入结果,has_more=true 时使用 next_cursor 继续
89
+ ```
90
+
91
+ **方式二:从推文互动用户导入**
92
+ ```
93
+ → x_audience_interactive_users { account_id: 255, tweet_url_or_id: "https://x.com/user/status/123" }
94
+ ```
95
+
96
+ **方式三:关键词搜索导入**(注意频率限制,间隔>30s)
97
+ ```
98
+ → x_audience_search_keyword { account_id: 255, keyword: "AI agent" }
99
+ ```
100
+
101
+ #### 2.3 分组管理
102
+
103
+ ```
104
+ → x_audience_group_create { name: "AI兴趣组", filter_conditions: { interest_tags: "AI" } }
105
+ → x_audience_group_list
106
+ → x_audience_group_detail { group_id: 1 }
107
+ → x_audience_group_update { group_id: 1, name: "AI技术组" }
108
+ → x_audience_group_delete { group_id: 1 } ⚠️ 不可逆
109
+ ```
110
+
111
+ #### 2.4 兴趣标签管理
112
+
113
+ ```
114
+ → x_audience_interest_tags { account_id: 255 }
115
+ ← 标签统计列表
116
+
117
+ → x_audience_interest_tags_add { account_id: 255, following_id: 100, tags: ["AI", "Creator"] }
118
+ → x_audience_interest_tags_remove { account_id: 255, following_id: 100, tag_name: "Creator" }
119
+ ```
120
+
121
+ #### 2.5 营销活动
122
+
123
+ ```
124
+ → x_audience_add_to_activity { activity_id: 10, account_id: 255, user_ids: [100,101,102] }
125
+ ← 异步操作
126
+
127
+ → x_audience_activity_progress { activity_id: 10, account_id: 255 }
128
+ ← 进度:已完成/总计
129
+ ```
130
+
131
+ ---
132
+
133
+ ## ⚠️ 注意事项
134
+
135
+ 1. **API Key** — 所有操作依赖 x-api-key,验证失败时引导用户检查配置
136
+ 2. **频率限制** — search-by-keyword 有严格限制(code 5006),建议间隔 30 秒以上
137
+ 3. **慢速操作** — import_url、interactive_users、search_keyword、add_to_activity 超时为 60s
138
+ 4. **分页** — audience_list 支持 page/page_size,import_url 使用 cursor 分页
139
+ 5. **不可逆操作** — group_delete 删除分组不可恢复,执行前确认
140
+ 6. **interactive_users 限制** — 依赖 RapidAPI 外部服务,部分环境可能返回 total=0
@@ -0,0 +1,369 @@
1
+ # X Marketing 工具参考手册
2
+
3
+ > 版本:v4.0.0 | 共 18 个工具 | 认证方式:x-api-key
4
+
5
+ ---
6
+
7
+ ## 目录
8
+
9
+ - [A. 连接验证](#a-连接验证)
10
+ - [B. 账号信息](#b-账号信息)
11
+ - [C. 受众管理](#c-受众管理)
12
+ - [C.1 受众列表与导入](#c1-受众列表与导入)
13
+ - [C.2 分组管理](#c2-分组管理)
14
+ - [C.3 兴趣标签](#c3-兴趣标签)
15
+ - [C.4 营销活动](#c4-营销活动)
16
+
17
+ ---
18
+
19
+ ## A. 连接验证
20
+
21
+ ### x_verify_connection
22
+
23
+ 验证 API Key 有效性并获取当前用户信息。
24
+
25
+ | 项 | 值 |
26
+ |----|----|
27
+ | 端点 | `GET /v1/api/checkLogin` |
28
+ | 参数 | 无 |
29
+ | 速度 | 🟢 快(15s 超时) |
30
+
31
+ **返回示例:**
32
+ ```
33
+ ✅ API Key 验证通过!
34
+ 账号: waynetan0427@gmail.com
35
+ user_id: 15
36
+ 后端: https://api-backend.fwgi.ai
37
+ ```
38
+
39
+ ---
40
+
41
+ ## B. 账号信息
42
+
43
+ ### x_account_list
44
+
45
+ 获取当前用户的 X 账号列表。
46
+
47
+ | 项 | 值 |
48
+ |----|----|
49
+ | 端点 | `GET /v1/api/twitter/auto/list` |
50
+ | 速度 | 🟢 快 |
51
+
52
+ | 参数 | 类型 | 必填 | 说明 |
53
+ |------|------|------|------|
54
+ | handle | string | 否 | X 用户名筛选 |
55
+ | display_name | string | 否 | 显示名称筛选 |
56
+ | email | string | 否 | 关联邮箱筛选 |
57
+
58
+ **返回字段:** account_id, handle, display_name, email, avatar, status 等
59
+
60
+ ---
61
+
62
+ ### x_account_detail
63
+
64
+ 获取 X 账号完整详情。
65
+
66
+ | 项 | 值 |
67
+ |----|----|
68
+ | 端点 | `GET /v1/api/twitter/auto/detail` |
69
+ | 速度 | 🟢 快 |
70
+
71
+ | 参数 | 类型 | 必填 | 说明 |
72
+ |------|------|------|------|
73
+ | account_id | number | ✅ | 账号 ID |
74
+
75
+ **返回字段:** 基础信息 + audiences, pillars, kols, templates, tweetStyle, postingSchedule, account_actions 等完整配置
76
+
77
+ ---
78
+
79
+ ### x_get_field_info
80
+
81
+ 获取账号表单字段中英文说明及示例。
82
+
83
+ | 项 | 值 |
84
+ |----|----|
85
+ | 端点 | `GET /v1/api/twitter/auto/fieldInfo` |
86
+ | 参数 | 无 |
87
+ | 速度 | 🟢 快 |
88
+
89
+ **返回:** 各字段的 key、中文名称、英文名称、说明、示例值
90
+
91
+ ---
92
+
93
+ ## C. 受众管理
94
+
95
+ ### C.1 受众列表与导入
96
+
97
+ #### x_audience_list
98
+
99
+ 获取受众列表,支持多维度筛选。
100
+
101
+ | 项 | 值 |
102
+ |----|----|
103
+ | 端点 | `GET /v1/api/twitter/following/list` |
104
+ | 速度 | 🟢 快 |
105
+
106
+ | 参数 | 类型 | 必填 | 说明 |
107
+ |------|------|------|------|
108
+ | account_id | number | ✅ | 账号 ID |
109
+ | keyword | string | 否 | 关键词(匹配用户名、名称、简介) |
110
+ | can_dm | string | 否 | 是否可私信(true/false) |
111
+ | bot_score | string | 否 | 机器人评分:safe/medium/risk |
112
+ | interest_tags | string | 否 | 兴趣标签,多个用逗号分隔 |
113
+ | activity_min | number | 否 | 最小活跃度(0-100) |
114
+ | activity_max | number | 否 | 最大活跃度(0-100) |
115
+ | activity_days | number | 否 | 活跃度天数,默认 30 |
116
+ | group_id | number | 否 | 按分组筛选 |
117
+ | source_username | string | 否 | 按来源用户名筛选 |
118
+ | is_send | string | 否 | 发送状态筛选 |
119
+ | page | number | 否 | 页码,默认 1 |
120
+ | page_size | number | 否 | 每页数量,默认 20 |
121
+
122
+ ---
123
+
124
+ #### x_audience_import_url
125
+
126
+ 通过 X 用户主页 URL 导入其关注列表为受众。
127
+
128
+ | 项 | 值 |
129
+ |----|----|
130
+ | 端点 | `POST /v1/api/twitter/following/add` |
131
+ | 速度 | 🟡 慢(60s 超时) |
132
+
133
+ | 参数 | 类型 | 必填 | 说明 |
134
+ |------|------|------|------|
135
+ | account_id | number | ✅ | 账号 ID |
136
+ | x_url | string | ✅ | X 用户主页 URL |
137
+ | cursor | string | 否 | 分页游标 |
138
+ | count | number | 否 | 期望每页数量,默认 20 |
139
+
140
+ **注意:** count 为建议值,实际返回数量可能不同。has_more=true 时使用 next_cursor 继续导入。
141
+
142
+ ---
143
+
144
+ #### x_audience_interactive_users
145
+
146
+ 根据推文获取转发/点赞用户并导入。
147
+
148
+ | 项 | 值 |
149
+ |----|----|
150
+ | 端点 | `POST /v1/api/twitter/following/interactive-users` |
151
+ | 速度 | 🟡 慢(60s 超时) |
152
+
153
+ | 参数 | 类型 | 必填 | 说明 |
154
+ |------|------|------|------|
155
+ | account_id | number | ✅ | 账号 ID |
156
+ | tweet_url_or_id | string | ✅ | 推文 URL 或推文 ID |
157
+ | count | number | 否 | 返回数量,默认 20 |
158
+
159
+ **注意:** 依赖 RapidAPI 外部服务,部分环境可能返回 total=0。
160
+
161
+ ---
162
+
163
+ #### x_audience_search_keyword
164
+
165
+ 关键词搜索推文作者并导入。
166
+
167
+ | 项 | 值 |
168
+ |----|----|
169
+ | 端点 | `POST /v1/api/twitter/following/search-by-keyword` |
170
+ | 速度 | 🟡 慢(60s 超时) |
171
+
172
+ | 参数 | 类型 | 必填 | 说明 |
173
+ |------|------|------|------|
174
+ | account_id | number | ✅ | 账号 ID |
175
+ | keyword | string | ✅ | 搜索关键词 |
176
+ | count | number | 否 | 返回数量,默认 20 |
177
+
178
+ **⚠️ 频率限制:** 此接口有严格频率限制(返回 code 5006),建议调用间隔大于 30 秒。
179
+
180
+ ---
181
+
182
+ ### C.2 分组管理
183
+
184
+ #### x_audience_group_create
185
+
186
+ 创建受众分组。
187
+
188
+ | 项 | 值 |
189
+ |----|----|
190
+ | 端点 | `POST /v1/api/twitter/following/group/create` |
191
+ | 速度 | 🟢 快 |
192
+
193
+ | 参数 | 类型 | 必填 | 说明 |
194
+ |------|------|------|------|
195
+ | name | string | ✅ | 分组名称 |
196
+ | description | string | 否 | 分组描述 |
197
+ | filter_conditions | object | 否 | 动态分组筛选条件 |
198
+ | user_ids | number[] | 否 | 静态分组的受众 ID 列表 |
199
+
200
+ **filter_conditions 字段:** account_id, keyword, can_dm, bot_score, interest_tags, activity_min, activity_max, activity_days
201
+
202
+ ---
203
+
204
+ #### x_audience_group_list
205
+
206
+ 获取分组列表。
207
+
208
+ | 项 | 值 |
209
+ |----|----|
210
+ | 端点 | `GET /v1/api/twitter/following/group/list` |
211
+ | 速度 | 🟢 快 |
212
+
213
+ | 参数 | 类型 | 必填 | 说明 |
214
+ |------|------|------|------|
215
+ | page | number | 否 | 页码,默认 1 |
216
+ | page_size | number | 否 | 每页数量,默认 20 |
217
+
218
+ ---
219
+
220
+ #### x_audience_group_detail
221
+
222
+ 获取分组详情。
223
+
224
+ | 项 | 值 |
225
+ |----|----|
226
+ | 端点 | `GET /v1/api/twitter/following/group/detail` |
227
+ | 速度 | 🟢 快 |
228
+
229
+ | 参数 | 类型 | 必填 | 说明 |
230
+ |------|------|------|------|
231
+ | group_id | number | ✅ | 分组 ID |
232
+
233
+ ---
234
+
235
+ #### x_audience_group_update
236
+
237
+ 更新分组信息。
238
+
239
+ | 项 | 值 |
240
+ |----|----|
241
+ | 端点 | `POST /v1/api/twitter/following/group/update` |
242
+ | 速度 | 🟢 快 |
243
+
244
+ | 参数 | 类型 | 必填 | 说明 |
245
+ |------|------|------|------|
246
+ | group_id | number | ✅ | 分组 ID |
247
+ | name | string | 否 | 新名称 |
248
+ | description | string | 否 | 新描述 |
249
+ | filter_conditions | object | 否 | 新筛选条件 |
250
+
251
+ ---
252
+
253
+ #### x_audience_group_delete
254
+
255
+ 删除分组。⚠️ 不可逆操作。
256
+
257
+ | 项 | 值 |
258
+ |----|----|
259
+ | 端点 | `POST /v1/api/twitter/following/group/delete` |
260
+ | 速度 | 🟢 快 |
261
+
262
+ | 参数 | 类型 | 必填 | 说明 |
263
+ |------|------|------|------|
264
+ | group_id | number | ✅ | 分组 ID |
265
+
266
+ ---
267
+
268
+ ### C.3 兴趣标签
269
+
270
+ #### x_audience_interest_tags
271
+
272
+ 获取受众兴趣标签统计。
273
+
274
+ | 项 | 值 |
275
+ |----|----|
276
+ | 端点 | `GET /v1/api/twitter/following/interest-tags` |
277
+ | 速度 | 🟢 快 |
278
+
279
+ | 参数 | 类型 | 必填 | 说明 |
280
+ |------|------|------|------|
281
+ | account_id | number | ✅ | 账号 ID |
282
+
283
+ ---
284
+
285
+ #### x_audience_interest_tags_add
286
+
287
+ 为受众添加兴趣标签。
288
+
289
+ | 项 | 值 |
290
+ |----|----|
291
+ | 端点 | `POST /v1/api/twitter/following/interest-tags/add` |
292
+ | 速度 | 🟢 快 |
293
+
294
+ | 参数 | 类型 | 必填 | 说明 |
295
+ |------|------|------|------|
296
+ | account_id | number | ✅ | 账号 ID |
297
+ | following_id | number | ✅ | 受众 ID |
298
+ | tags | string[] | ✅ | 标签列表 |
299
+ | source | string | 否 | 来源,默认 manual |
300
+
301
+ ---
302
+
303
+ #### x_audience_interest_tags_remove
304
+
305
+ 移除受众兴趣标签。
306
+
307
+ | 项 | 值 |
308
+ |----|----|
309
+ | 端点 | `POST /v1/api/twitter/following/interest-tags/remove` |
310
+ | 速度 | 🟢 快 |
311
+
312
+ | 参数 | 类型 | 必填 | 说明 |
313
+ |------|------|------|------|
314
+ | account_id | number | ✅ | 账号 ID |
315
+ | following_id | number | ✅ | 受众 ID |
316
+ | tag_name | string | ✅ | 标签名称 |
317
+
318
+ ---
319
+
320
+ ### C.4 营销活动
321
+
322
+ #### x_audience_add_to_activity
323
+
324
+ 将受众添加到营销活动(异步操作)。
325
+
326
+ | 项 | 值 |
327
+ |----|----|
328
+ | 端点 | `POST /v1/api/twitter/following/add-to-activity` |
329
+ | 速度 | 🟡 慢(60s 超时) |
330
+
331
+ | 参数 | 类型 | 必填 | 说明 |
332
+ |------|------|------|------|
333
+ | activity_id | number | ✅ | 活动 ID(task_id) |
334
+ | account_id | number | ✅ | 账号 ID |
335
+ | user_ids | number[] | 否* | 受众 ID 列表 |
336
+ | filter_conditions | object | 否* | 筛选条件 |
337
+ | send_type | string | 否 | manual/immediate,默认 manual |
338
+
339
+ *user_ids 和 filter_conditions 至少提供其一。
340
+
341
+ ---
342
+
343
+ #### x_audience_activity_progress
344
+
345
+ 查询受众添加到活动的进度。
346
+
347
+ | 项 | 值 |
348
+ |----|----|
349
+ | 端点 | `GET /v1/api/twitter/following/add-to-activity/progress` |
350
+ | 速度 | 🟢 快 |
351
+
352
+ | 参数 | 类型 | 必填 | 说明 |
353
+ |------|------|------|------|
354
+ | activity_id | number | ✅ | 活动 ID |
355
+ | account_id | number | ✅ | 账号 ID |
356
+
357
+ **返回字段:** total, completed, failed, in_progress
358
+
359
+ ---
360
+
361
+ ## 错误码参考
362
+
363
+ | code | 含义 | 处理方式 |
364
+ |------|------|----------|
365
+ | 200 | 成功 | - |
366
+ | 4001 | API Key 无效/过期 | 检查 apiKey 配置 |
367
+ | 4007 | 资源不存在 | 检查 ID 参数 |
368
+ | 5006 | 频率限制 | 等待 30 秒后重试 |
369
+ | 500 | 服务器内部错误 | 检查参数合法性或联系运维 |