bilibili-video-mcp


Namebilibili-video-mcp JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryMCP server for downloading and extracting content from Bilibili videos
upload_time2025-09-14 02:06:21
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords mcp bilibili video asr subtitle server
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 0.87334s