# Bilibili Video MCP Server
一个用于从 Bilibili 视频中提取内容的 MCP (Model Context Protocol) 服务器。
## 功能特性
- 🎬 **视频下载**: 使用 you-get 下载 Bilibili 视频
- 📝 **字幕提取**: 智能提取和处理视频弹幕字幕
- 🎙️ **音频转文本**: 使用 ASR API 从音频中提取文案
- 🤖 **智能分析**: 使用大模型进行内容分析和总结
- 🔄 **自动清理**: 自动清理临时文件
## 安装
### 从 PyPI 安装
```bash
pip install bilibili-video-mcp
```
### 从源代码安装
```bash
git clone https://github.com/yzfly/bilibili-video-mcp.git
cd bilibili-video-mcp
pip install -e .
```
## 系统依赖
确保系统已安装以下依赖:
1. **FFmpeg**: 用于音频处理
```bash
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
# Windows
# 下载 FFmpeg 并添加到 PATH
```
2. **you-get**: 用于下载 Bilibili 视频
```bash
pip install you-get
```
## 配置
### 环境变量
设置以下环境变量:
- `AI_API_KEY`: SiliconFlow API 密钥(用于 ASR 和大模型调用)
### Claude Desktop 配置
在 Claude Desktop 的配置文件中添加:
```json
{
"mcpServers": {
"bilibili-video-mcp": {
"command": "bilibili-video-mcp-server",
"env": {
"AI_API_KEY": "your-siliconflow-api-key-here"
}
}
}
}
```
或者使用 uvx:
```json
{
"mcpServers": {
"bilibili-video-mcp": {
"command": "uvx",
"args": ["bilibili-video-mcp"],
"env": {
"AI_API_KEY": "your-siliconflow-api-key-here"
}
}
}
}
```
## 获取 API 密钥
1. 访问 [SiliconFlow](https://cloud.siliconflow.cn/i/TxUlXG3u)
2. 注册账号并获取 API 密钥
3. 将密钥设置为环境变量 `AI_API_KEY`
## 使用方法
### 可用工具
1. **download_bilibili_video_info**
- 下载视频并获取基本信息
- 参数:`video_url` (Bilibili 视频链接)
2. **extract_bilibili_subtitles**
- 提取并智能处理字幕内容
- 参数:`video_url` (Bilibili 视频链接)
3. **extract_bilibili_audio_text**
- 从音频提取文案
- 参数:`video_url`,可选参数:`asr_api_base_url`,`asr_model`
4. **extract_bilibili_complete_content**
- 完整内容提取和分析(推荐)
- 参数:`video_url`,可选参数:`asr_api_base_url`,`asr_model`,`llm_model`
### 使用示例
```python
# 完整内容提取
result = extract_bilibili_complete_content("https://www.bilibili.com/video/BV1xx411c7mu")
# 仅提取字幕
subtitles = extract_bilibili_subtitles("https://www.bilibili.com/video/BV1xx411c7mu")
# 仅提取音频文案
audio_text = extract_bilibili_audio_text("https://www.bilibili.com/video/BV1xx411c7mu")
```
## 技术架构
- **FastMCP**: 基于 FastMCP 框架构建 MCP 服务器
- **you-get**: 下载 Bilibili 视频和字幕文件
- **FFmpeg**: 音频处理和格式转换
- **SiliconFlow API**: ASR 语音识别和大模型调用
- **OpenAI SDK**: 统一的大模型调用接口
## 支持的模型
### ASR 模型
- `FunAudioLLM/SenseVoiceSmall` (默认)
### 大语言模型
- `Qwen/Qwen3-8B` (默认,免费)
- `Qwen/QwQ-32B`
- 其他 SiliconFlow 支持的模型
## 开发
### 安装开发依赖
```bash
pip install -e ".[dev]"
```
### 代码格式化
```bash
black src/
isort src/
```
### 运行测试
```bash
pytest
```
## 注意事项
1. **网络要求**: 需要能够访问 Bilibili 和 SiliconFlow API
2. **存储空间**: 下载视频需要临时存储空间,文件会自动清理
3. **API 配额**: ASR 和大模型调用会消耗 API 配额
4. **视频格式**: 支持大部分 Bilibili 视频格式
5. **字幕可用性**: 并非所有视频都有字幕文件
## 许可证
MIT License - 详见 [LICENSE](LICENSE) 文件
## 贡献
欢迎提交 Issue 和 Pull Request!
## 作者
- **yzfly** - [GitHub](https://github.com/yzfly)
- 邮箱: yz.liu.me@gmail.com
Raw data
{
"_id": null,
"home_page": null,
"name": "bilibili-video-mcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "mcp, bilibili, video, asr, subtitle, server",
"author": null,
"author_email": "yzfly <yz.liu.me@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/d5/3a/b0e665f99e6c553711b4fe0dec55885572d47d1f87ce678c6f1e8c5679cc/bilibili_video_mcp-0.1.0.tar.gz",
"platform": null,
"description": "# Bilibili Video MCP Server\n\n\u4e00\u4e2a\u7528\u4e8e\u4ece Bilibili \u89c6\u9891\u4e2d\u63d0\u53d6\u5185\u5bb9\u7684 MCP (Model Context Protocol) \u670d\u52a1\u5668\u3002\n\n## \u529f\u80fd\u7279\u6027\n\n- \ud83c\udfac **\u89c6\u9891\u4e0b\u8f7d**: \u4f7f\u7528 you-get \u4e0b\u8f7d Bilibili \u89c6\u9891\n- \ud83d\udcdd **\u5b57\u5e55\u63d0\u53d6**: \u667a\u80fd\u63d0\u53d6\u548c\u5904\u7406\u89c6\u9891\u5f39\u5e55\u5b57\u5e55\n- \ud83c\udf99\ufe0f **\u97f3\u9891\u8f6c\u6587\u672c**: \u4f7f\u7528 ASR API \u4ece\u97f3\u9891\u4e2d\u63d0\u53d6\u6587\u6848\n- \ud83e\udd16 **\u667a\u80fd\u5206\u6790**: \u4f7f\u7528\u5927\u6a21\u578b\u8fdb\u884c\u5185\u5bb9\u5206\u6790\u548c\u603b\u7ed3\n- \ud83d\udd04 **\u81ea\u52a8\u6e05\u7406**: \u81ea\u52a8\u6e05\u7406\u4e34\u65f6\u6587\u4ef6\n\n## \u5b89\u88c5\n\n### \u4ece PyPI \u5b89\u88c5\n\n```bash\npip install bilibili-video-mcp\n```\n\n### \u4ece\u6e90\u4ee3\u7801\u5b89\u88c5\n\n```bash\ngit clone https://github.com/yzfly/bilibili-video-mcp.git\ncd bilibili-video-mcp\npip install -e .\n```\n\n## \u7cfb\u7edf\u4f9d\u8d56\n\n\u786e\u4fdd\u7cfb\u7edf\u5df2\u5b89\u88c5\u4ee5\u4e0b\u4f9d\u8d56\uff1a\n\n1. **FFmpeg**: \u7528\u4e8e\u97f3\u9891\u5904\u7406\n ```bash\n # macOS\n brew install ffmpeg\n \n # Ubuntu/Debian\n sudo apt update && sudo apt install ffmpeg\n \n # Windows\n # \u4e0b\u8f7d FFmpeg \u5e76\u6dfb\u52a0\u5230 PATH\n ```\n\n2. **you-get**: \u7528\u4e8e\u4e0b\u8f7d Bilibili \u89c6\u9891\n ```bash\n pip install you-get\n ```\n\n## \u914d\u7f6e\n\n### \u73af\u5883\u53d8\u91cf\n\n\u8bbe\u7f6e\u4ee5\u4e0b\u73af\u5883\u53d8\u91cf\uff1a\n\n- `AI_API_KEY`: SiliconFlow API \u5bc6\u94a5\uff08\u7528\u4e8e ASR \u548c\u5927\u6a21\u578b\u8c03\u7528\uff09\n\n### Claude Desktop \u914d\u7f6e\n\n\u5728 Claude Desktop \u7684\u914d\u7f6e\u6587\u4ef6\u4e2d\u6dfb\u52a0\uff1a\n\n```json\n{\n \"mcpServers\": {\n \"bilibili-video-mcp\": {\n \"command\": \"bilibili-video-mcp-server\",\n \"env\": {\n \"AI_API_KEY\": \"your-siliconflow-api-key-here\"\n }\n }\n }\n}\n```\n\n\u6216\u8005\u4f7f\u7528 uvx\uff1a\n\n```json\n{\n \"mcpServers\": {\n \"bilibili-video-mcp\": {\n \"command\": \"uvx\",\n \"args\": [\"bilibili-video-mcp\"],\n \"env\": {\n \"AI_API_KEY\": \"your-siliconflow-api-key-here\"\n }\n }\n }\n}\n```\n\n## \u83b7\u53d6 API \u5bc6\u94a5\n\n1. \u8bbf\u95ee [SiliconFlow](https://cloud.siliconflow.cn/i/TxUlXG3u)\n2. \u6ce8\u518c\u8d26\u53f7\u5e76\u83b7\u53d6 API \u5bc6\u94a5\n3. \u5c06\u5bc6\u94a5\u8bbe\u7f6e\u4e3a\u73af\u5883\u53d8\u91cf `AI_API_KEY`\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n### \u53ef\u7528\u5de5\u5177\n\n1. **download_bilibili_video_info**\n - \u4e0b\u8f7d\u89c6\u9891\u5e76\u83b7\u53d6\u57fa\u672c\u4fe1\u606f\n - \u53c2\u6570\uff1a`video_url` (Bilibili \u89c6\u9891\u94fe\u63a5)\n\n2. **extract_bilibili_subtitles**\n - \u63d0\u53d6\u5e76\u667a\u80fd\u5904\u7406\u5b57\u5e55\u5185\u5bb9\n - \u53c2\u6570\uff1a`video_url` (Bilibili \u89c6\u9891\u94fe\u63a5)\n\n3. **extract_bilibili_audio_text**\n - \u4ece\u97f3\u9891\u63d0\u53d6\u6587\u6848\n - \u53c2\u6570\uff1a`video_url`\uff0c\u53ef\u9009\u53c2\u6570\uff1a`asr_api_base_url`\uff0c`asr_model`\n\n4. **extract_bilibili_complete_content**\n - \u5b8c\u6574\u5185\u5bb9\u63d0\u53d6\u548c\u5206\u6790\uff08\u63a8\u8350\uff09\n - \u53c2\u6570\uff1a`video_url`\uff0c\u53ef\u9009\u53c2\u6570\uff1a`asr_api_base_url`\uff0c`asr_model`\uff0c`llm_model`\n\n### \u4f7f\u7528\u793a\u4f8b\n\n```python\n# \u5b8c\u6574\u5185\u5bb9\u63d0\u53d6\nresult = extract_bilibili_complete_content(\"https://www.bilibili.com/video/BV1xx411c7mu\")\n\n# \u4ec5\u63d0\u53d6\u5b57\u5e55\nsubtitles = extract_bilibili_subtitles(\"https://www.bilibili.com/video/BV1xx411c7mu\")\n\n# \u4ec5\u63d0\u53d6\u97f3\u9891\u6587\u6848\naudio_text = extract_bilibili_audio_text(\"https://www.bilibili.com/video/BV1xx411c7mu\")\n```\n\n## \u6280\u672f\u67b6\u6784\n\n- **FastMCP**: \u57fa\u4e8e FastMCP \u6846\u67b6\u6784\u5efa MCP \u670d\u52a1\u5668\n- **you-get**: \u4e0b\u8f7d Bilibili \u89c6\u9891\u548c\u5b57\u5e55\u6587\u4ef6\n- **FFmpeg**: \u97f3\u9891\u5904\u7406\u548c\u683c\u5f0f\u8f6c\u6362\n- **SiliconFlow API**: ASR \u8bed\u97f3\u8bc6\u522b\u548c\u5927\u6a21\u578b\u8c03\u7528\n- **OpenAI SDK**: \u7edf\u4e00\u7684\u5927\u6a21\u578b\u8c03\u7528\u63a5\u53e3\n\n## \u652f\u6301\u7684\u6a21\u578b\n\n### ASR \u6a21\u578b\n- `FunAudioLLM/SenseVoiceSmall` (\u9ed8\u8ba4)\n\n### \u5927\u8bed\u8a00\u6a21\u578b\n- `Qwen/Qwen3-8B` (\u9ed8\u8ba4\uff0c\u514d\u8d39)\n- `Qwen/QwQ-32B`\n- \u5176\u4ed6 SiliconFlow \u652f\u6301\u7684\u6a21\u578b\n\n## \u5f00\u53d1\n\n### \u5b89\u88c5\u5f00\u53d1\u4f9d\u8d56\n\n```bash\npip install -e \".[dev]\"\n```\n\n### \u4ee3\u7801\u683c\u5f0f\u5316\n\n```bash\nblack src/\nisort src/\n```\n\n### \u8fd0\u884c\u6d4b\u8bd5\n\n```bash\npytest\n```\n\n## \u6ce8\u610f\u4e8b\u9879\n\n1. **\u7f51\u7edc\u8981\u6c42**: \u9700\u8981\u80fd\u591f\u8bbf\u95ee Bilibili \u548c SiliconFlow API\n2. **\u5b58\u50a8\u7a7a\u95f4**: \u4e0b\u8f7d\u89c6\u9891\u9700\u8981\u4e34\u65f6\u5b58\u50a8\u7a7a\u95f4\uff0c\u6587\u4ef6\u4f1a\u81ea\u52a8\u6e05\u7406\n3. **API \u914d\u989d**: ASR \u548c\u5927\u6a21\u578b\u8c03\u7528\u4f1a\u6d88\u8017 API \u914d\u989d\n4. **\u89c6\u9891\u683c\u5f0f**: \u652f\u6301\u5927\u90e8\u5206 Bilibili \u89c6\u9891\u683c\u5f0f\n5. **\u5b57\u5e55\u53ef\u7528\u6027**: \u5e76\u975e\u6240\u6709\u89c6\u9891\u90fd\u6709\u5b57\u5e55\u6587\u4ef6\n\n## \u8bb8\u53ef\u8bc1\n\nMIT License - \u8be6\u89c1 [LICENSE](LICENSE) \u6587\u4ef6\n\n## \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4 Issue \u548c Pull Request\uff01\n\n## \u4f5c\u8005\n\n- **yzfly** - [GitHub](https://github.com/yzfly)\n- \u90ae\u7bb1: yz.liu.me@gmail.com\n",
"bugtrack_url": null,
"license": null,
"summary": "MCP server for downloading and extracting content from Bilibili videos",
"version": "0.1.0",
"project_urls": {
"Homepage": "https://github.com/yzfly/bilibili-video-mcp",
"Issues": "https://github.com/yzfly/bilibili-video-mcp/issues",
"Repository": "https://github.com/yzfly/bilibili-video-mcp"
},
"split_keywords": [
"mcp",
" bilibili",
" video",
" asr",
" subtitle",
" server"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "2fccc6a2d264efb02a4bc2a5adf61ac9a85d68490a4622f1233d73f09b85636d",
"md5": "35f0321c50c33879a60d9b2733b83107",
"sha256": "970ad106c09ea53083a29ff86d5a7dafc6f008b3cb916eae0dd2a8443c41164b"
},
"downloads": -1,
"filename": "bilibili_video_mcp-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "35f0321c50c33879a60d9b2733b83107",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 9873,
"upload_time": "2025-09-14T02:06:19",
"upload_time_iso_8601": "2025-09-14T02:06:19.398470Z",
"url": "https://files.pythonhosted.org/packages/2f/cc/c6a2d264efb02a4bc2a5adf61ac9a85d68490a4622f1233d73f09b85636d/bilibili_video_mcp-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d53ab0e665f99e6c553711b4fe0dec55885572d47d1f87ce678c6f1e8c5679cc",
"md5": "4d256a2b2c7483700d879596471fe2ec",
"sha256": "235f30e472f55ce59e1fc5211dbfff9049eef21e5fe40b166d14e5034a4cdc41"
},
"downloads": -1,
"filename": "bilibili_video_mcp-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "4d256a2b2c7483700d879596471fe2ec",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 15484,
"upload_time": "2025-09-14T02:06:21",
"upload_time_iso_8601": "2025-09-14T02:06:21.186925Z",
"url": "https://files.pythonhosted.org/packages/d5/3a/b0e665f99e6c553711b4fe0dec55885572d47d1f87ce678c6f1e8c5679cc/bilibili_video_mcp-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-14 02:06:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yzfly",
"github_project": "bilibili-video-mcp",
"github_not_found": true,
"lcname": "bilibili-video-mcp"
}