> 关键词/正则/用户精准筛选|支持视频/番剧/动态评论区|扫码免配置登录|搜索结果自动总结+本地存档|AI Agent 一键调用
支持对B站视频、番剧、动态下的评论进行关键词搜索、正则匹配、用户筛选等多维度检索,并自动生成搜索总结和本地 JSON 存档。内置二维码扫码登录,无需手动配置 Cookie。
results/ 目录当用户要求搜索某个 B 站视频/番剧/动态的评论时:
BV1xxxxxxxxx)、EP 号或动态 ID(支持直接传入完整 B站链接,会自动解析)POST /api/search/stream 执行搜索(实时输出进度,避免长时间无响应)> ⚠️ 建议:评论搜索通常耗时 30-60 秒,推荐优先使用流式接口以获得更好的实时反馈体验。
> 使用 curl 调用流式接口时,需要加 -N 参数禁用缓冲,否则终端不会实时显示进度。
当搜索需要登录态或用户要求登录时:
qrcodeLogin 能力发起二维码登录当需要确认是否已登录时:
checkAuth 能力查看当前认证状态| 参数Key | 说明 | 默认值 |
|---|---|---|
| --------- | ------ | -------- |
| SESSDATA | B站登录 Cookie(可通过扫码自动获取) | — |
| BILI_JCT | B站 CSRF Token(可通过扫码自动获取) | — |
| PORT | 服务端口 | 3005 |
| MAX_LIMIT | 单次搜索最大返回数 | 100 |
| DEFAULT_LIMIT | 默认返回数 | 20 |
| REQUEST_INTERVAL_MS | 请求间隔(毫秒),防风控 | 500 |
| MAX_PAGES | 最大翻页数 | 50 |
| 能力名称 | 说明 | 参数 |
|---|---|---|
| ---------- | ------ | ------ |
| searchComments | 搜索评论(普通) | bvid/epid/dyid, keyword, uid, useRegex, sortMode, limit, searchSubReply, onlyWithPictures |
| searchCommentsStream | 搜索评论(流式,推荐) | 同上,实时输出进度和匹配结果 |
| qrcodeLogin | 发起二维码登录 | 无 |
| pollLoginStatus | 查询扫码状态 | 无 |
| checkAuth | 查看当前认证状态 | 无 |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ------ | ------ | ------ | ------ |
| bvid | string | 三选一 | B站视频 BV 号(支持传入完整链接,自动解析) |
| epid | string | 三选一 | 番剧集数 ID |
| dyid | string | 三选一 | 动态 ID |
| keyword | string | 否 | 搜索关键词 |
| uid | string | 否 | 指定用户 UID,仅搜索该用户的评论 |
| useRegex | boolean | 否 | 是否使用正则表达式匹配(默认 false) |
| sortMode | string | 否 | 排序方式:heat(热度)/ time(时间),默认 heat |
| limit | number | 否 | 每页返回数量(默认 20,最大 100),可配合 page 翻页查看更多 |
| page | number | 否 | 分页页码(从 1 开始,默认 1),搜索结果超过 limit 时可翻页 |
| searchSubReply | boolean | 否 | 是否搜索楼中楼回复(默认 false) |
| onlyWithPictures | boolean | 否 | 仅返回带图评论(默认 false) |
{
"success": true,
"data": {
"title": "视频标题",
"totalScanned": 1500,
"totalMatched": 8,
"replies": [
{
"rpid": 123456789,
"uid": 12345,
"username": "用户名",
"content": "评论内容",
"likes": 42,
"replyCount": 3,
"time": "2024-6-15 14:30",
"level": 5,
"location": "IP属地:广东",
"pictures": ["https://..."],
"children": []
}
]
},
"summary": "📊 搜索结果总结...",
"savedPath": "results/BV1xxx_keyword_2024-06-15T14-30-00.json"
}
> 用户:帮我搜索 https://www.bilibili.com/video/BV1xxxxxxxxx 这个视频下面提到 "教程" 的评论
推荐方式 — 流式接口(实时输出进度):
curl -N -X POST http://localhost:3005/api/search/stream \
-H "Content-Type: application/json" \
-d '{"bvid": "BV1xxxxxxxxx", "keyword": "教程", "limit": 50, "searchSubReply": true}'
> 💡 -N 参数禁用 curl 缓冲,确保 SSE 事件实时显示。流式接口会依次输出 progress(进度)、match(匹配项)、summary(总结)、complete(完成)事件。
备选方式 — 普通接口(等待全部完成后一次性返回):
curl -X POST http://localhost:3005/api/search \
-H "Content-Type: application/json" \
-d '{"bvid": "BV1xxxxxxxxx", "keyword": "教程", "limit": 50, "searchSubReply": true}'
> 💡 也可以直接传入完整 B站链接,服务会自动提取 BV 号:
> {"bvid": "https://www.bilibili.com/video/BV1xxxxxxxxx?p=1", "keyword": "教程"}
AI Function Calling 调用:
{
"name": "searchComments",
"arguments": {
"bvid": "BV1xxxxxxxxx",
"keyword": "教程",
"limit": 20
}
}
> 用户:搜索这个视频里所有提到年份的评论,包括回复
AI 调用:
{
"name": "searchComments",
"arguments": {
"bvid": "BV1xxxxxxxxx",
"keyword": "\\d{4}年",
"useRegex": true,
"searchSubReply": true
}
}
> 用户:看看 UID 12345678 在这个视频下发了什么评论
AI 调用:
{
"name": "searchComments",
"arguments": {
"bvid": "BV1xxxxxxxxx",
"uid": "12345678"
}
}
npm start 或 npm run devnpm run login(终端二维码扫码)npm installnpm run login 重新扫码即可搜索过程中有两层限制,分别控制“扫描范围”和“返回数量”:
| 参数 | 默认值 | 说明 |
|---|---|---|
| ------ | -------- | ------ |
| MAX_PAGES | 50 | 向B站API最多翻多少页(每页约20条根评论,50页≈扫描1000条) |
| MAX_LIMIT | 100 | 匹配结果最多收集多少条就停止 |
| page | 1 | 对已匹配结果的展示分页(不会突破 MAX_LIMIT 上限) |
实际流程:
B站API翻页(最多50页)→ 扫描约1000条根评论 → 匹配到最多100条就停止 → 用page参数对这100条分页展示
> ⚠️ 注意:page 参数是对已匹配结果的前端分页,不能突破 MAX_LIMIT 的上限。如果需要获取超过 100 条匹配结果,需要在 .env 中调大 MAX_LIMIT;如果需要扫描更多评论,需要调大 MAX_PAGES。
>
> 调大这些参数会增加耗时(500ms × 页数)和触发风控的风险。
.env 文件存储,不上传任何云端results/ 目录共 1 个版本