@vocmarket/voc-skill 0.3.39 → 0.3.41

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "voc-intelligence",
3
3
  "description": "VOC intelligence skills for Claude Code: end-to-end VOC business workflows, Xiaohongshu/Douyin/WeChat Channels collection and trend reports, live social VOC collection, Fmode Doubao image analysis, token/recharge checks, evidence-card outputs, prioritized issue pools, single-problem deep dives, competitor maps, 7-day content plans, VOC-backed speaking script co-creation, boss/operator action plans, and multi-turn memory.",
4
- "version": "0.3.39",
4
+ "version": "0.3.41",
5
5
  "author": {
6
6
  "name": "nkkj-BrainHack"
7
7
  }
@@ -10510,7 +10510,7 @@
10510
10510
  "group": "app-v2",
10511
10511
  "channel": "social",
10512
10512
  "title": "获取用户笔记列表",
10513
- "summary": "获取指定用户已发布的笔记列表,使用游标分页 参数: - user_id: 用户ID,如 \"61b46d790000000010008153\" - share_text: 小红书分享链接(支持APP和Web端分享链接) - 优先使用`user_id`,如果没有则使用`share_t",
10513
+ "summary": "按达人主页拉取已发布笔记。这是「指定达人/作者笔记」的现用入口:user_id 与分享链接二选一,首页 cursor 留空,下一页透传返回的 cursor。不要猜 get_user_note_list 或其他未登记路径。",
10514
10514
  "proxyPath": "xiaohongshu/app_v2/get_user_posted_notes",
10515
10515
  "method": "GET",
10516
10516
  "paramsIn": "query",
@@ -10521,7 +10521,11 @@
10521
10521
  "v2"
10522
10522
  ],
10523
10523
  "requiredParams": [],
10524
- "recommendationPriority": 50
10524
+ "recommendationPriority": 95,
10525
+ "recommendedFor": [
10526
+ "creator_homepage"
10527
+ ],
10528
+ "responseHint": "返回 notes、has_more、cursor。翻页时把 cursor 原样传回,直到 has_more=false。"
10525
10529
  },
10526
10530
  {
10527
10531
  "id": "xiaohongshu.app_v2.get_user_faved_notes",
@@ -10568,7 +10572,7 @@
10568
10572
  "group": "app-v2",
10569
10573
  "channel": "social",
10570
10574
  "title": "搜索用户",
10571
- "summary": "根据关键词搜索小红书用户,每页返回 20 条结果,支持分页 参数: - keyword: 搜索关键词(必需),如 \"美食博主\" - page: 页码,从 1 开始 - search_id: 搜索ID,翻页时传入首次搜索返回的值 - source: 来源,默认 \"explore_f",
10575
+ "summary": "按达人昵称搜索小红书用户。返回项里的 userid 是 24 位 hex,可直接传给 app_v2/get_user_posted_notes。不要把数字小红书号或主页 URL 当作 user_id。",
10572
10576
  "proxyPath": "xiaohongshu/app_v2/search_users",
10573
10577
  "method": "GET",
10574
10578
  "paramsIn": "query",
@@ -10580,6 +10584,10 @@
10580
10584
  ],
10581
10585
  "requiredParams": [
10582
10586
  "keyword"
10587
+ ],
10588
+ "recommendationPriority": 85,
10589
+ "recommendedFor": [
10590
+ "creator_homepage"
10583
10591
  ]
10584
10592
  },
10585
10593
  {
@@ -23262,7 +23270,7 @@
23262
23270
  "platform": "xiaohongshu",
23263
23271
  "channel": "ecommerce",
23264
23272
  "title": "小红书·用户发布笔记",
23265
- "summary": "获取小红书用户发布笔记数据,包括笔记元数据、封面、发布时间、分页游标和互动信号,用于账号监控、创作者研究和内容分析。",
23273
+ "summary": "电商通道的达人主页笔记列表。社媒 app_v2/get_user_posted_notes 不可用时使用。入参是 userId,翻页透传 lastCursor。不要调用无版本号的 get_user_note_list。",
23266
23274
  "method": "GET",
23267
23275
  "paramsIn": "query",
23268
23276
  "proxyPath": "xiaohongshu/get-user-note-list/v1",
@@ -23283,7 +23291,11 @@
23283
23291
  "ecommerce",
23284
23292
  "电商"
23285
23293
  ],
23286
- "billing": 1
23294
+ "billing": 1,
23295
+ "recommendationPriority": 80,
23296
+ "recommendedFor": [
23297
+ "creator_homepage"
23298
+ ]
23287
23299
  },
23288
23300
  {
23289
23301
  "id": "xiaohongshu.get_user_note_list_v2",
package/mcp/src/server.js CHANGED
@@ -66,7 +66,7 @@ function normalizeToolResult(result = {}) {
66
66
  function createServer() {
67
67
  const server = new McpServer({
68
68
  name: 'voc-intelligence',
69
- version: '0.3.39'
69
+ version: '0.3.41'
70
70
  });
71
71
 
72
72
  server.registerTool(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vocmarket/voc-skill",
3
- "version": "0.3.39",
3
+ "version": "0.3.41",
4
4
  "description": "Claude Code VOC intelligence skills for Xiaohongshu, Douyin and WeChat Channels trend/content collection, live social VOC, Fmode image analysis, single-issue deep dives, boss/operator action plans, and multi-turn memory.",
5
5
  "type": "commonjs",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-voc-intelligence",
3
- "version": "0.3.39",
3
+ "version": "0.3.41",
4
4
  "capabilities": {
5
5
  "summary": "三类情报源同源接入:①社媒内容(含抖音/小红书/微信视频号等)②国内电商+创作者情报 ③海外选品。统一 search→doc→call、鉴权计费一致。",
6
6
  "channels": [
@@ -48,7 +48,34 @@ VOC 后端是一个**通用转发网关**(`https://server.fmode.cn/api/voc-soc
48
48
 
49
49
  ## 小红书现用接口(V2)
50
50
 
51
- 小红书社媒采集只走下面这些健康的 V2 接口。`voc_api_search` 会把它们排在前面;标了 `deprecated` 的旧接口不要调用,也不要在给用户的说明里提到。
51
+ 客户 Agent 处理小红书时,先按任务选接口,再用下表的 `id` 调 `voc_api_call`。不要手写未登记路径,不要给路径自行追加版本号,也不要把标了 `deprecated` 的旧接口告诉用户。
52
+
53
+ | 用户任务 | 第一步 | 下一步 | 不能下的结论 |
54
+ |---|---|---|---|
55
+ | 找某话题/关键词下的笔记 | `xiaohongshu.app_v2.search_notes` | 按 `type` 取详情,再取评论 | 这是搜索样本,不是达人主页全量 |
56
+ | 看某条笔记完整内容和素材 | 视频用 `xiaohongshu.app_v2.get_video_note_detail`,图文用 `xiaohongshu.app_v2.get_image_note_detail` | 用 `note_id` 拉评论 | 类型不明时先试视频,空结果再试图文 |
57
+ | 看用户怎么评价 | `xiaohongshu.note_comments` | 有回复时用 `xiaohongshu.sub_comments` | 只拉一级评论时,不能称已看完全部讨论 |
58
+ | 找某个达人/账号 | `xiaohongshu.app_v2.search_users` | 取 24 位 hex `userid` 后拉资料和主页 | 昵称搜索结果不是该账号全部笔记 |
59
+ | 拉达人主页历史 | `xiaohongshu.app_v2.get_user_posted_notes` | 翻完后再补详情和评论 | 关键词搜索不能代替主页列表 |
60
+ | 看话题内容 | 从笔记详情取得话题 `id` 后调用 `xiaohongshu.app_v2.get_topic_feed` | 话题详情接口当前会返回参数错误,不要用它判断平台是否可用 | 没有话题 `id` 时不能猜话题接口 |
61
+ | 找站内商品 | `xiaohongshu.app_v2.search_products` | 用返回的商品字段继续读取 | 这是商品搜索,不是笔记口碑 |
62
+ | 看蒲公英创作者经营数据 | `xiaohongshu.pgy.creator_search` | 用返回的 `userId` 补画像、粉丝、笔记绩效 | 这是创作者生态数据,不是投放采买建议 |
63
+
64
+ ### 字段怎么接
65
+
66
+ - 笔记:搜索或主页结果里的 `note.id` / `id` 作为后续 `note_id`;`type` 含 `video` 走视频详情,否则走图文详情。
67
+ - 评论:一级评论返回的 `comments[].id` 作为楼中楼的 `comment_id`。`sub_comment_count > 0` 才需要继续拉楼中楼。
68
+ - 用户:笔记结果使用 24 位 hex 的 `user.userid`;用户搜索结果使用 24 位 hex 的 `users[].id`。数字 `red_id`、昵称、主页 URL 都不是 `user_id`。
69
+ - 话题:从笔记详情的 `topics` 或 `hash_tag` 读取 `id`,作为 `page_id`。搜索卡片里的展示标签不一定有这个 ID。
70
+ - 翻页字段必须原样透传。笔记搜索用 `page`、`search_id`、`search_session_id`;达人主页先看顶层 `cursor`,没有时再用本页最后一条笔记的 `cursor`,并用 `has_more` 判断停止;电商主页备用接口用 `lastCursor`;楼中楼用 `start`。
71
+
72
+ ### 参数边界
73
+
74
+ - 笔记搜索:`sort_type` 只取 `general`、`time_descending`、`popularity_descending`;`note_type` 只取 `不限`、`视频笔记`、`普通笔记`。
75
+ - 话题流:`sort` 只取 `trend`、`time`。
76
+ - 详情、用户资料、达人主页都是 `note_id`/`user_id` 与 `share_text` 二选一,不能两个都空着。
77
+ - 一次调用只取一页。需要多关键词、多账号或持续翻页时,先用 `voc_cost_estimate` 估算,结束后用 `voc_usage_report` 核对。
78
+ - 空列表要保留为「本次查询无结果」。只有缺少必填参数时才是 `needs_input`,不要改关键词来掩盖参数错误。
52
79
 
53
80
  | 用途 | 接口 id | proxyPath | 必填 |
54
81
  |---|---|---|---|
@@ -57,13 +84,113 @@ VOC 后端是一个**通用转发网关**(`https://server.fmode.cn/api/voc-soc
57
84
  | 视频详情 | `xiaohongshu.app_v2.get_video_note_detail` | `xiaohongshu/app_v2/get_video_note_detail` | `note_id` 或 `share_text` |
58
85
  | 一级评论 | `xiaohongshu.note_comments` | `xiaohongshu/app_v2/get_note_comments` | `note_id` |
59
86
  | 楼中楼 | `xiaohongshu.sub_comments` | `xiaohongshu/app_v2/get_note_sub_comments` | `note_id` + `comment_id` |
87
+ | 用户搜索 | `xiaohongshu.app_v2.search_users` | `xiaohongshu/app_v2/search_users` | `keyword` |
60
88
  | 用户资料 | `xiaohongshu.app_v2.get_user_info` | `xiaohongshu/app_v2/get_user_info` | `user_id` |
61
89
  | 用户笔记 | `xiaohongshu.app_v2.get_user_posted_notes` | `xiaohongshu/app_v2/get_user_posted_notes` | `user_id` |
62
90
  | 话题详情 | `xiaohongshu.app_v2.get_topic_info` | `xiaohongshu/app_v2/get_topic_info` | `page_id` |
63
91
  | 话题笔记 | `xiaohongshu.app_v2.get_topic_feed` | `xiaohongshu/app_v2/get_topic_feed` | `page_id` |
64
92
  | 商品搜索 | `xiaohongshu.app_v2.search_products` | `xiaohongshu/app_v2/search_products` | `keyword` |
65
93
 
66
- 搜索先用 `xiaohongshu.app_v2.search_notes` 拿 `note_id`,再按笔记类型选图文或视频详情,评论和楼中楼继续用上表两条。不确定类型时先试视频详情,空结果再试图文详情。具体参数用 `voc_api_doc` 读取,不要手写旧路径。
94
+ 不要手写未登记路径,也不要在路径后面自己加 `/v1`。先用下面的 `id` 调 `voc_api_call`;参数拿不准时再跑 `voc_api_doc`。一次只拉一页,批量翻页前用 `voc_cost_estimate` 估算,结束后用 `voc_usage_report` 核对。
95
+
96
+ ### 按关键词找笔记
97
+
98
+ `sort_type` 只用 `general`、`time_descending`、`popularity_descending`。`note_type` 只用 `不限`、`视频笔记`、`普通笔记`。翻页时递增 `page`,并透传首次返回的 `search_id`、`search_session_id`。
99
+
100
+ ```json
101
+ { "id": "xiaohongshu.app_v2.search_notes", "params": { "keyword": "防晒", "page": 1, "sort_type": "popularity_descending", "note_type": "不限" } }
102
+ ```
103
+
104
+ 从返回里取 `note.id` 和笔记类型。关键词搜索只代表「被搜到的样本」,不能当成某个达人主页的完整历史。
105
+
106
+ ### 笔记详情与评论
107
+
108
+ 视频笔记用视频详情,图文笔记用图文详情。类型不清楚时先调视频详情,没有正文再调图文详情。`note_id` 与 `share_text` 二选一,不要两个都空着。
109
+
110
+ ```json
111
+ { "id": "xiaohongshu.app_v2.get_video_note_detail", "params": { "note_id": "<note_id>" } }
112
+ ```
113
+
114
+ ```json
115
+ { "id": "xiaohongshu.app_v2.get_image_note_detail", "params": { "note_id": "<note_id>" } }
116
+ ```
117
+
118
+ 一级评论用 `note_id`。楼中楼再把一级评论返回的 `comment_id` 传进去,首页 `start` 留空。
119
+
120
+ ```json
121
+ { "id": "xiaohongshu.note_comments", "params": { "note_id": "<note_id>" } }
122
+ ```
123
+
124
+ ```json
125
+ { "id": "xiaohongshu.sub_comments", "params": { "note_id": "<note_id>", "comment_id": "<comment_id>", "start": "" } }
126
+ ```
127
+
128
+ ### 用户、话题、商品
129
+
130
+ 用户资料和达人主页都要 24 位 hex `user_id`。只有昵称时,先走下面的达人主页链路,不要把小红书号或主页 URL 直接当 ID。
131
+
132
+ ```json
133
+ { "id": "xiaohongshu.app_v2.get_user_info", "params": { "user_id": "<24位hex user_id>" } }
134
+ ```
135
+
136
+ 话题内容从笔记详情的 `topics[].id` 读取,传给话题流的 `page_id`。`sort` 只用 `trend` 或 `time`。`xiaohongshu.app_v2.get_topic_info` 目前用该 ID 会返回参数错误,不能作为话题能力是否可用的依据;先使用话题流结果。
137
+
138
+ ```json
139
+ { "id": "xiaohongshu.app_v2.get_topic_info", "params": { "page_id": "<page_id>" } }
140
+ ```
141
+
142
+ ```json
143
+ { "id": "xiaohongshu.app_v2.get_topic_feed", "params": { "page_id": "<page_id>", "sort": "trend" } }
144
+ ```
145
+
146
+ 商品搜索按页递增,翻页透传返回的 `search_id`。
147
+
148
+ ```json
149
+ { "id": "xiaohongshu.app_v2.search_products", "params": { "keyword": "防晒", "page": 1 } }
150
+ ```
151
+
152
+ ### 按达人主页采集
153
+
154
+ 用户要「某达人主页的笔记 / 按作者拉笔记 / 补齐某账号历史」时,不要猜 `get_user_note_list`、`/v1` 或其他未登记路径。先查清单,再按下面的链路调用。
155
+
156
+ 1. 只有昵称时,先用 `xiaohongshu.app_v2.search_users` 拿 24 位 hex `user_id`。不要把数字小红书号、昵称或主页 URL 直接当 `user_id`。
157
+ 2. 拉主页笔记优先用 `xiaohongshu.app_v2.get_user_posted_notes`。它走社媒网关,首页 `cursor` 留空,下一页透传上次返回的 `cursor`,直到 `has_more=false`。
158
+ 3. 这条社媒接口翻不完、或明确要电商通道的账号笔记时,改用 `xiaohongshu.get_user_note_list_v1`(`channel=ecommerce`)。入参是 `userId`,翻页透传 `lastCursor`。不要调用无版本号的 `get_user_note_list`。
159
+ 4. 拿到 `note_id` 后,再走上面的图文/视频详情和评论接口。关键词搜索只能证明「这些笔记被搜到」,不能代替达人主页全量列表。
160
+
161
+ 可直接传给 `voc_api_call` 的示例:
162
+
163
+ ```json
164
+ { "id": "xiaohongshu.app_v2.search_users", "params": { "keyword": "达人昵称", "page": 1 } }
165
+ ```
166
+
167
+ ```json
168
+ { "id": "xiaohongshu.app_v2.get_user_posted_notes", "params": { "user_id": "<24位hex user_id>", "cursor": "" } }
169
+ ```
170
+
171
+ ```json
172
+ { "id": "xiaohongshu.get_user_note_list_v1", "params": { "userId": "<24位hex user_id>", "lastCursor": "" } }
173
+ ```
174
+
175
+ 一次只拉一页。批量拉多个达人、多个关键词或持续翻页前,先用 `voc_cost_estimate` 估算次数,跑完用 `voc_usage_report` 核对实际消耗。
176
+
177
+ ### 单次失败时怎么处理
178
+
179
+ 一次 404、500 或空结果,只能说明「这一次请求或这一条路径失败」,不能据此说小红书能力不可用。先用同一凭证调用 `xiaohongshu.app_v2.search_notes` 做一次最小探测;它成功就说明采集通道仍可用,然后按失败类型处理:
180
+
181
+ | 看到的结果 | 实际含义 | 下一步 |
182
+ |---|---|---|
183
+ | 404,或路径是自己拼的 `get_user_note_list`、无版本号路径 | 路径不存在,不是平台没有此能力 | 回到本表选择现用 `id`。达人主页改用 `xiaohongshu.app_v2.get_user_posted_notes` |
184
+ | 500,且路径包含旧的 `xiaohongshu/app/` | 旧接口失效 | 改用同用途的 `app_v2` 接口,不要把旧路径报告给用户 |
185
+ | `needs_input`、参数错误 | 入参不完整或类型不对 | 用 `voc_api_doc` 核对。不要改关键词,也不要换一条路径碰运气 |
186
+ | 视频详情无正文 | 笔记类型可能判断错 | 再用 `xiaohongshu.app_v2.get_image_note_detail` 试一次 |
187
+ | 详情或主页没有 `page_id` | 当前结果没带话题 ID | 到笔记详情的 `topics`、`hash_tag` 中提取;仍没有就说明本次不能做话题分析 |
188
+ | 空列表且参数正确 | 本次查询没有匹配数据 | 如实说无结果。不要声称接口损坏或该行业不支持 |
189
+ | `upstream_unstable`、5xx、超时 | 上游波动 | 用原参数重试,不要改成 WebSearch 或其它抓取方式 |
190
+ | `needs_token`、`needs_valid_token` | 凭证没读到或无效 | 按错误码速查自救,不要说功能下线 |
191
+ | 只有 HTTP 402 | 当前 VOC 账户额度不足 | 转述充值入口。内层业务码或其它账户的额度问题不能混报成用户余额不足 |
192
+
193
+ 探测请求也算一次调用。通道确认可用后,不要重复探测;回到用户原始任务继续。若现用接口和清单里的替代接口都按文档重试后仍失败,才说明是本次采集失败,并保留工具返回的 `status`,不能扩大成「小红书不可用」。
67
194
 
68
195
  ## 创作者侧情报(channel=ecommerce)
69
196
 
@@ -71,6 +71,7 @@ node "<插件目录>/mcp/src/tools/xiaohongshu-trend-run.js" --collection-mode l
71
71
  - `references/user-workflow.md`:用户交互流程——第一次使用要问清的三件事、澄清话术、样例 vs 真实采集的判断。
72
72
  - `references/output-format.md`:第一轮趋势情报的推荐输出结构与段落格式。
73
73
  - `references/live-mode.md`:live 真实采集模式的接入说明与执行细节(先 sample 跑通再 live)。
74
+ - 指定达人主页、单条笔记、话题或商品时,读取 voc-api-catalog 的「小红书现用接口」:先按任务选接口,再按 `note_id`、24 位 `userid`、`comment_id`、`page_id` 和对应游标衔接。
74
75
  - 错误码 / 充值计费的完整权威对照见 voc-api-catalog 技能的 `references/error-codes.md`。
75
76
 
76
77
  ## 推荐用户启动话术
@@ -16,11 +16,15 @@ live 模式默认保持小规模:
16
16
 
17
17
  ## 接口优先级
18
18
 
19
- live 采集只走健康的 V2:
19
+ live 采集只走健康的 V2。指定达人、话题或商品等精确任务,先按 voc-api-catalog 的「小红书现用接口」选择链路,不要猜路径:
20
20
 
21
- - 搜索:`app_v2/search_notes`,空结果再降级 `web_v3/fetch_search_notes`
22
- - 详情:视频笔记用 `app_v2/get_video_note_detail`,图文笔记用 `app_v2/get_image_note_detail`
23
- - 评论:`app_v2/get_note_comments`
21
+ - 关键词样本:`app_v2/search_notes`,空结果再降级 `web_v3/fetch_search_notes`。这只是搜索结果,不是达人主页全量。
22
+ - 达人主页:只有昵称时先用 `app_v2/search_users` 获取 24 位 hex `userid`,再调用 `app_v2/get_user_posted_notes` 并按 `cursor` 翻页。
23
+ - 详情:`type` 含 `video` 时用 `app_v2/get_video_note_detail`,否则用 `app_v2/get_image_note_detail`。
24
+ - 评论:一级评论用 `app_v2/get_note_comments`;`sub_comment_count > 0` 时,再用该评论的 `id` 调用 `app_v2/get_note_sub_comments`。
25
+ - 话题:从笔记详情的话题字段取得 `page_id` 后,依次调用 `app_v2/get_topic_info` 和 `app_v2/get_topic_feed`。
26
+
27
+ 一条路径 404、500 或空结果,只说明该次请求或旧路径失败。先按 voc-api-catalog 的失败处理表改用同用途的现用 V2 接口、核对参数或原参重试;`app_v2/search_notes` 仍能返回时,不得说小红书能力不可用。只有工具明确返回 `needs_token`、`needs_valid_token` 或 HTTP 402 时,才按对应的凭证或充值流程处理。
24
28
 
25
29
  ## 媒体持久化
26
30