@wecode-ai/weibo-openclaw-plugin 2.2.5 → 2.2.7

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.
@@ -4,6 +4,9 @@
4
4
 
5
5
  const { Duplex } = require('stream');
6
6
  const { randomFillSync } = require('crypto');
7
+ const {
8
+ types: { isUint8Array }
9
+ } = require('util');
7
10
 
8
11
  const PerMessageDeflate = require('./permessage-deflate');
9
12
  const { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');
@@ -200,8 +203,10 @@ class Sender {
200
203
 
201
204
  if (typeof data === 'string') {
202
205
  buf.write(data, 2);
203
- } else {
206
+ } else if (isUint8Array(data)) {
204
207
  buf.set(data, 2);
208
+ } else {
209
+ throw new TypeError('Second argument must be a string or a Uint8Array');
205
210
  }
206
211
  }
207
212
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ws",
3
- "version": "8.20.0",
3
+ "version": "8.20.1",
4
4
  "description": "Simple to use, blazing fast and thoroughly tested websocket client and server for Node.js",
5
5
  "keywords": [
6
6
  "HyBi",
@@ -9,6 +9,14 @@
9
9
  "additionalProperties": false,
10
10
  "properties": {}
11
11
  },
12
+ "contracts": {
13
+ "tools": [
14
+ "weibo_token",
15
+ "weibo_status",
16
+ "weibo_search",
17
+ "weibo_hot_search"
18
+ ]
19
+ },
12
20
  "channelConfigs": {
13
21
  "weibo": {
14
22
  "label": "Weibo",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wecode-ai/weibo-openclaw-plugin",
3
- "version": "2.2.5",
3
+ "version": "2.2.7",
4
4
  "type": "module",
5
5
  "description": "OpenClaw Weibo DM channel plugin",
6
6
  "license": "MIT",
@@ -2,11 +2,13 @@
2
2
  name: weibo-creator
3
3
  description: |
4
4
  微博创作者数据工具。获取创作者中心的综合数据摘要,包含近30天阅读/发博/互动趋势、
5
- 近7天粉丝与铁粉数据、铁粉画像(分布/性别/年龄/地区/兴趣/来源)以及近期热门博文详情。
5
+ 近7天粉丝与铁粉数据、铁粉画像(分布/性别/年龄/地区/兴趣/来源)、近期热门博文详情
6
+ 以及最近4周 V影响力榜周榜得分与排名数据。
6
7
  当用户需要了解自己的创作数据、粉丝增长情况、内容表现或铁粉画像时激活;
7
- 或当用户询问如何升级橙V/金V、距离升级还差多少、需要多长时间能达标时激活。
8
+ 或当用户询问如何升级橙V/金V、距离升级还差多少、需要多长时间能达标时激活;
9
+ 或当用户询问自己的 V榜排名、得分、与同领域博主对比、哪些方面需要提升时激活。
8
10
  metadata:
9
- version: "1.0.1"
11
+ version: "1.0.2"
10
12
  ---
11
13
 
12
14
  # 微博创作者数据工具
@@ -134,6 +136,52 @@ node scripts/weibo-creator.js summary --token=<token>
134
136
 
135
137
  ---
136
138
 
139
+ ### 7. V榜周榜数据
140
+
141
+ #### `data.rankDetails` — KOL 周度排名评分列表(数组,最近4次周榜,最多4条)
142
+
143
+ 每条记录对应一个自然周的榜单数据:
144
+
145
+ | 字段 | 类型 | 说明 |
146
+ |------|------|------|
147
+ | `dt` | string | 数据日期(格式:yyyyMMdd,如 "20260427") |
148
+ | `fieldId` | number | 领域 ID |
149
+ | `fieldName` | string | 领域名称(如 "科技") |
150
+ | `period` | string | 周期描述(如 "2026年第18周") |
151
+ | `scorePeriod` | string | 评分周期(如 "04/27-05/03") |
152
+ | `rank` | string | 本周排名 |
153
+ | `totalScore` | string | 综合总分 |
154
+ | `details` | array | 各维度评分明细(共9项,见下表) |
155
+
156
+ #### `data.rankDetails[].details` — 各维度评分明细(9项)
157
+
158
+ 每项结构如下:
159
+
160
+ | 字段 | 类型 | 说明 |
161
+ |------|------|------|
162
+ | `name` | string | 指标名称 |
163
+ | `score` | string | 用户自己的得分 |
164
+ | `fullScore` | string | 该项满分(无满分时为空字符串) |
165
+ | `avgScore` | string | 同领域同层级博主均值(无均值时为空字符串) |
166
+
167
+ 9项指标的层级结构如下:
168
+
169
+ ```
170
+ 传播影响力得分
171
+ ├── 私域流量得分
172
+ ├── 公域流量得分
173
+ └── 内容效率得分
174
+ 内容吸引力得分
175
+ ├── 被互动得分
176
+ └── 粉丝吸引力得分
177
+ 主动活跃度得分
178
+ └── 主动活跃得分
179
+ ```
180
+
181
+ > `details` 数组中共9项,按上述层级顺序排列,包含3个父级维度和6个子维度。
182
+
183
+ ---
184
+
137
185
  ## 使用示例
138
186
 
139
187
  ```bash
@@ -199,6 +247,28 @@ node scripts/weibo-creator.js help
199
247
  "likeTotal": 2100,
200
248
  "interactTotal": 3000
201
249
  }
250
+ ],
251
+ "rankDetails": [
252
+ {
253
+ "dt": "20260427",
254
+ "fieldId": 10,
255
+ "fieldName": "科技",
256
+ "period": "2026年第18周",
257
+ "scorePeriod": "04/27-05/03",
258
+ "rank": "128",
259
+ "totalScore": "76.5",
260
+ "details": [
261
+ { "name": "传播影响力得分", "score": "32.1", "fullScore": "40", "avgScore": "28.6" },
262
+ { "name": "私域流量得分", "score": "12.4", "fullScore": "", "avgScore": "11.2" },
263
+ { "name": "公域流量得分", "score": "10.8", "fullScore": "", "avgScore": "9.5" },
264
+ { "name": "内容效率得分", "score": "8.9", "fullScore": "", "avgScore": "7.9" },
265
+ { "name": "内容吸引力得分", "score": "28.4", "fullScore": "35", "avgScore": "24.1" },
266
+ { "name": "被互动得分", "score": "16.2", "fullScore": "", "avgScore": "13.8" },
267
+ { "name": "粉丝吸引力得分", "score": "12.2", "fullScore": "", "avgScore": "10.3" },
268
+ { "name": "主动活跃度得分", "score": "16.0", "fullScore": "25", "avgScore": "14.5" },
269
+ { "name": "主动活跃得分", "score": "16.0", "fullScore": "", "avgScore": "14.5" }
270
+ ]
271
+ }
202
272
  ]
203
273
  }
204
274
  }
@@ -213,66 +283,98 @@ node scripts/weibo-creator.js help
213
283
  3. `fansTotal` 字段仅昨日(T-1)有值,其余日期可能为 `null`
214
284
  4. 铁粉画像数据为截止昨日的当前值,非趋势数据
215
285
  5. `topBlogs` 最多返回5条近期热门博文
286
+ 6. `rankDetails` 返回最近4次周榜数据;若用户尚未上榜或数据不足,可能少于4条
287
+ 7. `details` 中 `fullScore` 和 `avgScore` 为空字符串时表示该项无满分/均值数据
216
288
 
217
289
  ---
218
290
 
219
- ## 金橙V 升级分析
291
+ ## 数据分析能力
292
+
293
+ 本技能在基础数据之上,提供以下加工数据和分析能力。当用户询问创作数据分析、金橙V升级、V榜排名等问题时,综合运用以下能力输出分析报告。
294
+
295
+ ---
296
+
297
+ ### 一、加工数据
298
+
299
+ 以下数据由基础数据计算得出,可在分析报告中直接使用:
300
+
301
+ #### 互动效率数据
302
+
303
+ | 加工数据 | 计算方式 | 数据来源 |
304
+ |----------|----------|----------|
305
+ | 日互动总数 | 当日转发数 + 评论数 + 点赞数 | `interactTrend30Days` 各日 |
306
+ | 日千阅互动数 | 日互动总数 ÷ 日总排水阅读数 × 1000 | `interactTrend30Days` + `readTrend30Days` |
307
+ | 单条博文互动总数 | 转发总数 + 评论总数 + 赞总数 | `topBlogs[].repostTotal` + `commentTotal` + `likeTotal` |
308
+ | 单条博文千阅互动数 | 单条博文互动总数 ÷ 单条博文阅读总数 × 1000 | `topBlogs[]` |
309
+
310
+ > **千阅互动数**(每千次阅读带来的互动数)是衡量内容质量的核心指标,数值越高说明内容越能引发读者互动。
311
+
312
+ #### 博文排行数据
313
+
314
+ 从 `topBlogs` 中按不同维度排序,找出 TOP5 博文:
315
+
316
+ | 排行类型 | 排序依据 | 说明 |
317
+ |----------|----------|------|
318
+ | 高阅读量博文 | `readTotal` 降序 | 近期阅读量最高的博文 |
319
+ | 高互动量博文 | 单条博文互动总数降序 | 近期互动量最高的博文 |
320
+ | 高千阅互动博文 | 单条博文千阅互动数降序 | 近期内容质量最高的博文 |
321
+
322
+ #### 增长速率数据
323
+
324
+ | 加工数据 | 计算方式 | 数据来源 |
325
+ |----------|----------|----------|
326
+ | 近30天条均阅读量 | 近30天总阅读量 ÷ 近30天发博总数 | `readTrend30Days` + `postTrend30Days` |
327
+ | 日均新增铁粉数 | 近7天 `newBigFanCount` 求和 ÷ 7 | `fanTrend7Days` |
328
+ | 日均新增粉丝数 | 近7天 `newFansCount` 求和 ÷ 7 | `fanTrend7Days` |
329
+ | 近30天阅读量趋势 | 对比前15天与后15天均值,判断上升/下降/平稳 | `readTrend30Days` |
330
+
331
+ ---
332
+
333
+ ### 二、金橙V 升级分析
220
334
 
221
335
  > 升级标准详见:[金橙V 升级标准](references/creator-v-upgrade.md)
222
336
 
223
- 获取到创作者数据摘要后,若用户询问金V/橙V升级相关问题,请按以下步骤进行分析:
337
+ 若用户询问金V/橙V升级相关问题,请按以下步骤进行分析:
338
+
339
+ #### 升级标准速查
224
340
 
225
- ### 第一步:判断当前状态
341
+ | 等级 | 条件 |
342
+ |------|------|
343
+ | **橙V** | 已认证黄V + 铁粉数 ≥ 100 + 近30天排水阅读量 ≥ 30 万 |
344
+ | **金V** | 已认证黄V + 粉丝量 ≥ 1 万 + 铁粉数 ≥ 1000 + 近30天排水阅读量 ≥ 1000 万 |
226
345
 
227
- 根据升级标准,结合数据判断用户所处阶段:
346
+ #### 分析步骤
347
+
348
+ **第一步:判断当前状态**
228
349
 
229
350
  - **已是黄V,尚未达到橙V**:铁粉数 < 100 或近30天排水阅读量 < 30 万
230
351
  - **已是橙V,尚未达到金V**:粉丝量 < 1 万 或 铁粉数 < 1000 或 近30天排水阅读量 < 1000 万
231
352
 
232
- ### 第二步:计算各项达标差距
233
-
234
- 对未达标的指标,计算还差多少:
353
+ **第二步:计算各项达标差距**
235
354
 
236
355
  | 指标 | 数据来源 | 计算方式 |
237
356
  |------|----------|----------|
238
- | 近30天排水阅读量 | `readTrend30Days` 中所有 `totalReadCount` 求和 | 目标值 − 当前值 |
239
- | 铁粉数 | `fanTrend7Days` 中最新一条的 `bigFanTotal` | 目标值 − 当前值 |
240
- | 粉丝量 | `fanTrend7Days` 中最新一条的 `fansTotal` | 目标值 − 当前值 |
357
+ | 近30天排水阅读量 | `readTrend30Days` 所有 `totalReadCount` 求和 | 目标值 − 当前值 |
358
+ | 铁粉数 | `fanTrend7Days` 最新一条的 `bigFanTotal` | 目标值 − 当前值 |
359
+ | 粉丝量 | `fanTrend7Days` 最新一条的 `fansTotal` | 目标值 − 当前值 |
241
360
 
242
- ### 第三步:计算增长速率
243
-
244
- | 指标 | 计算方式 |
245
- |------|----------|
246
- | 日均新增铁粉数 | `fanTrend7Days` 中所有 `newBigFanCount` 求和 ÷ 7 |
247
- | 日均新增粉丝数 | `fanTrend7Days` 中所有 `newFansCount` 求和 ÷ 7 |
248
- | 近30天条均阅读量 | `readTrend30Days` 总阅读量 ÷ `postTrend30Days` 中发博总数 |
249
- | 近30天排水阅读量变化趋势 | 对比 `readTrend30Days` 前15天与后15天的均值,判断上升/下降/平稳 |
250
- | 近7天铁粉数变化趋势 | 对比 `fanTrend7Days` 首尾两端的 `bigFanTotal`,判断增长速度 |
251
-
252
- ### 第四步:预估达标时间
253
-
254
- 对每个未达标指标,按当前增长速率估算所需天数:
361
+ **第三步:预估达标时间**
255
362
 
256
363
  ```
257
364
  距离达标天数 = 差距值 ÷ 日均增长量
258
365
  ```
259
366
 
260
- > 若日均增长量为 0 或负数,则说明当前趋势下无法自然达标,需要提升内容质量或发博频率。
367
+ - 阅读量:差距 ÷ (条均阅读量 × 日均发博数)
368
+ - 铁粉数:差距 ÷ 日均新增铁粉数
369
+ - 粉丝量:差距 ÷ 日均新增粉丝数
261
370
 
262
- ### 第五步:输出分析报告
371
+ > 若日均增长量为 0 或负数,则说明当前趋势下无法自然达标,需要提升内容质量或发博频率。
263
372
 
264
- 分析报告应包含以下内容:
373
+ **第四步:输出分析报告**
265
374
 
266
- 1. **当前状态**:已达到哪个等级,距离下一级还差哪些指标
267
- 2. **各项达标情况**:逐项列出已达标 ✅ / 未达标 ❌ 及差距数值
268
- 3. **增长速率**:日均新增粉丝、日均新增铁粉、条均阅读量
269
- 4. **预估达标时间**:按当前速率,各项指标预计还需多少天
270
- 5. **提升建议**:
271
- - 若阅读量不足:建议提高发博频率或优化内容质量(参考条均阅读量)
272
- - 若铁粉数不足:建议增加与粉丝的互动,提升粉丝活跃度
273
- - 若粉丝量不足:建议扩大内容传播,提升公域流量占比
375
+ 报告包含:当前状态、各项达标情况(✅/❌ + 差距数值)、增长速率、预估达标时间、提升建议。
274
376
 
275
- ### 示例分析输出
377
+ #### 示例输出
276
378
 
277
379
  ```
278
380
  📊 金橙V 升级分析报告
@@ -294,3 +396,79 @@ node scripts/weibo-creator.js help
294
396
  - 保持每天 2 条以上的发博频率,重点提升单条阅读量
295
397
  - 多发互动性强的内容,加速铁粉积累
296
398
  ```
399
+
400
+ ---
401
+
402
+ ### 三、V榜数据分析
403
+
404
+ 若用户询问 V榜排名、得分、与同领域博主对比等问题,请按以下步骤进行分析:
405
+
406
+ #### 分析步骤
407
+
408
+ **第一步:整理最近4周榜单数据**
409
+
410
+ 从 `rankDetails` 中按 `dt` 升序排列(最旧 → 最新),对每周提取综合总分、排名、9项明细得分及均值。
411
+
412
+ **第二步:分析总分与排名趋势**
413
+
414
+ | 判断维度 | 方法 |
415
+ |----------|------|
416
+ | 总分趋势 | 对比首周与末周总分,判断上升/下降/平稳 |
417
+ | 排名趋势 | 对比首周与末周排名(数字越小越靠前),判断进步/退步/稳定 |
418
+ | 波动情况 | 观察中间两周是否有明显波动 |
419
+
420
+ **第三步:分析9项明细数据**
421
+
422
+ 将用户得分(`score`)与同领域同层级均值(`avgScore`)对比:
423
+
424
+ > 若 `avgScore` 为空字符串、缺失或无法解析为有效数值,则**跳过横向对比**,仅分析该项近4周的变化趋势,并在报告中注明"同领域均值缺失,无法进行横向对比"。
425
+
426
+ 差距计算公式(`avgScore` 为有效正数时):
427
+
428
+ ```
429
+ 差距 = |用户得分 - avgScore| ÷ avgScore
430
+ ```
431
+
432
+ - **领先**:用户得分 > `avgScore`,且差距 ≥ 10%
433
+ - **持平**:差距 < 10%
434
+ - **落后**:用户得分 < `avgScore`,且差距 ≥ 10%
435
+
436
+ 同时对比最近4周该项得分变化趋势:
437
+ - **进步**:末周得分 > 首周得分
438
+ - **退步**:末周得分 < 首周得分
439
+ - **稳定**:末周得分 ≈ 首周得分(差距 < 5%)
440
+
441
+ **第四步:输出分析报告**
442
+
443
+ 报告包含:总分与排名趋势、领先项(优势)、落后项(需加强)、进步项、退步项、提升建议。
444
+
445
+ #### 示例输出
446
+
447
+ ```
448
+ 📊 V榜数据分析报告(科技领域)
449
+
450
+ 最近4周总分与排名:
451
+ 第15周(04/06-04/12):总分 71.2,排名 #156
452
+ 第16周(04/13-04/19):总分 73.8,排名 #142
453
+ 第17周(04/20-04/26):总分 75.1,排名 #135
454
+ 第18周(04/27-05/03):总分 76.5,排名 #128
455
+ → 总分持续上升(+5.3分),排名稳步提升(进步28位)✅
456
+
457
+ 各维度对比(第18周 vs 同领域均值):
458
+ 传播影响力:32.1 vs 均值 28.6 → 领先 12.2% ✅(近4周持续进步)
459
+ 内容吸引力:28.4 vs 均值 24.1 → 领先 17.8% ✅(近4周稳定)
460
+ 主动活跃度:16.0 vs 均值 14.5 → 领先 10.3% ✅
461
+
462
+ 子维度详情:
463
+ ├ 私域流量:12.4 vs 均值 11.2 → 领先 10.7% ✅
464
+ ├ 公域流量:10.8 vs 均值 9.5 → 领先 13.7% ✅(近4周进步最大)
465
+ ├ 内容效率:8.9 vs 均值 7.9 → 领先 12.7% ✅
466
+ ├ 被互动: 16.2 vs 均值 13.8 → 领先 17.4% ✅
467
+ ├ 粉丝吸引:12.2 vs 均值 10.3 → 领先 18.4% ✅
468
+ └ 主动活跃:16.0 vs 均值 14.5 → 领先 10.3% ✅
469
+
470
+ 总结:
471
+ - 各维度全面领先同领域均值,整体表现优秀
472
+ - 公域流量得分近4周进步最为显著,建议继续保持
473
+ - 主动活跃度满分25分,当前得分16.0,仍有较大提升空间,建议增加发博频率
474
+ ```