关于 bilitrack
bilitrack 是用于读取 Bilibili 公开数据的命令行工具和 MCP 服务,适合跟踪用户及其内容,包括动态、评论和可选的视频字幕。
主要功能
- 01搜索用户并查看资料
- 02列出视频、动态和专栏
- 03查看关注列表
- 04读取内容评论及回复
- 05获取视频字幕信息或文本
适用场景
- 01查看 Bilibili 用户近期发布内容
- 02按关键词搜索创作者的视频
- 03阅读视频或专栏评论
- 04获取视频字幕
MCP 相关
其 stdio MCP 服务通过公开 Web API 提供 Bilibili 用户搜索,以及用户、视频、专栏、动态、评论和字幕数据查询工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
12收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 要返回的用户数上限(默认值为 20)。 |
| keyword | string | 是 | 用于搜索 Bilibili 用户的关键词。 |
详细介绍
bilitrack
bilitrack 可追踪 Bilibili 上的用户和内容:查找用户,查看他们最近发布的内容——视频、动态和专栏——查看他们关注了谁,还可以阅读视频、动态或专栏下的评论串,并在需要时获取视频字幕文本。所有数据均来自 Bilibili 的公开 Web API。
此软件包是对 12-tool BiliStalkerMCP 工具列表的洁净室重建,完全按照其公开 README 规范重新编写。
它如何与服务交互
每个工具都对应 https://api.bilibili.com/x/... 下的一个公开端点,并返回该端点的 data 负载:
# Optional: a logged-in session raises limits and unlocks gated reads.
export SESSDATA="your SESSDATA cookie value"
export BILI_JCT="your bili_jct cookie value (optional)"
export BUVID3="your buvid3 cookie value (optional)"
# Optional override (default: https://api.bilibili.com)
export BILIBILI_API_URL="https://api.bilibili.com"
Cookie 确实是可选的。不设置 Cookie 时,请求会以无 Cookie 的方式发送,而 Bilibili 接受大多数公开读取请求——仅仅因为缺少 SESSDATA 并不会导致失败。当 API 返回非零 code 时,调用会连同该代码和消息一起报错;上游 HTTP 错误则会附带其状态码和响应正文摘录。
用户名解析: 工具接受 user_id_or_username。数值会直接用作用户的 mid;其他值则通过用户搜索解析,并且只接受完全匹配的用户名——相似匹配会报错,而不会猜测。
字幕简化: 设置 fetch_subtitles 后,get_video_detail 会使用播放器 API 列出字幕轨道,并返回轨道元数据(subtitle_scope: "metadata"),或所选轨道的合并文本(根据 subtitle_lang 选择,或选择第一个轨道);如果提供了 subtitle_max_chars,文本会被截断。它不会像完整播放器客户端那样拼接多段字幕或 AI 生成的字幕轨道。
安装
npx @reneturcios/bilitrack search_users '{"keyword":"example"}'
或者运行容器镜像:
docker run -i ghcr.io/cloudcorprecords/bilitrack
容器默认启动 MCP 服务。传入 CLI 参数即可将其用作 CLI。
CLI
CLI 与工具一一对应:每个工具都有一个子命令,参数以单个 JSON 对象的形式传入。
bilitrack search_users '{"keyword":"example","limit":5}'
bilitrack get_user_info '{"user_id_or_username":"12345"}'
bilitrack get_user_snapshot '{"user_id_or_username":"example"}'
bilitrack get_user_videos '{"user_id_or_username":"12345","page":2}'
bilitrack get_video_detail '{"bvid":"BV1xx411c7mD","fetch_subtitles":true,"subtitle_lang":"zh-CN"}'
bilitrack get_content_comments '{"content_type":"video","content_id":"12345","sort":"hot"}'
bilitrack --version
退出码:成功时为 0,API 或验证错误时为 1(错误会指出问题),用法错误时为 2。
MCP 服务
一个二进制文件同时提供这两种用法。mcp 子命令会启动一个 stdio MCP 服务:
npx -y @reneturcios/bilitrack mcp
MCP 客户端配置:
{
"mcpServers": {
"bilitrack": {
"command": "npx",
"args": ["-y", "@reneturcios/bilitrack", "mcp"],
"env": { "SESSDATA": "your cookie value (optional)" }
}
}
}
工具
此处架构中的所有 ID 参数均为字符串。
| 工具 | 输入 | 功能 |
|---|---|---|
search_users | keyword(必需)、limit | 按关键词搜索 Bilibili 用户。 |
get_user_snapshot | user_id_or_username(必需)、video_limit、dynamic_limit、article_limit | 获取 Bilibili 用户的综合快照:个人资料、视频、动态和文章。 |
get_user_info | user_id_or_username(必需) | 获取 Bilibili 用户的个人资料信息。 |
get_user_videos | user_id_or_username(必需)、page、limit | 分页列出 Bilibili 用户的视频。 |
search_user_videos | user_id_or_username(必需)、keyword(必需)、page、limit | 按关键词搜索 Bilibili 用户的视频。 |
get_video_detail | bvid(必需)、fetch_subtitles、subtitle_scope、subtitle_page、subtitle_cid、subtitle_mode、subtitle_lang、subtitle_max_chars | 根据 BVID 获取 Bilibili 视频详情,可选择获取字幕。 |
get_user_dynamics | user_id_or_username(必需)、cursor、limit、dynamic_type | 通过游标分页列出 Bilibili 用户的动态(动态信息流帖子)。 |
get_user_articles | user_id_or_username(必需)、page、limit | 分页列出 Bilibili 用户的文章。 |
get_article_content | article_id(必需;数字或带 cv 前缀) | 获取 Bilibili 文章的完整内容。 |
get_user_followings | user_id_or_username(必需)、page、limit | 分页列出 Bilibili 用户关注的账号。 |
get_content_comments | content_type(必需)、content_id(必需)、cursor、limit、sort | 列出 Bilibili 视频、动态或文章的评论。 |
get_content_comment_replies | content_type(必需)、content_id(必需)、root_rpid(必需)、page、limit | 列出 Bilibili 内容中某条根评论下的回复。 |
content_type 接受 video、article、dynamic、audio、
album、course 或作为字符串的 Bilibili 数字回复类型。
开发
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, fake fetch only, no network
npm run dev # run the CLI from source via tsx
许可证
MIT — 参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。