内容
# 短视频 MCP 服务器
**停止阅读长篇 AI 答案。改为观看。**
将任何 Claude 答案、PDF、PowerPoint、电子邮件或主题转换为类似 TikTok 的短视频,由 **彼得·格里芬** 和 **斯图伊·格里芬** 讲述,并配有游戏背景、角色动画和同步字幕。

## 为什么?
Claude 给你一个 2 页的答案?不要读它。说 **"生成一个短视频"**,彼得和斯图伊将用 60 秒解释给你。
**这不限于一种用例。** 它可以将 *任何* 答案转换为视频:
- **不想阅读 Claude 的长答案?** → 只需添加 "生成一个短视频" 然后观看
- **老师给了你 60 页的 PowerPoint?** → 上传它,让 Claude 为每张幻灯片生成一个视频 — 现在可以滚动浏览短视频而不是幻灯片
- **想从 PDF 中学习?** → 上传它,生成一个视频 — 每个关键事实、日期和细节都被包含在内,这样你就不会错过任何内容
- **设置了 Gmail MCP?** → 让 Claude 读取你的收件箱并生成一个短视频 — 彼得和斯图伊为你总结电子邮件
- **每日简报?** → 设置一个时间表,获取一个每日视频总结你的新闻、收件箱和 Whoop 健康统计数据,由彼得和斯图伊讲述
- **任何 LLM 答案,任何地方** → 与 Claude Desktop、Claude Code 或任何 MCP 兼容的客户端配合使用
对于学习,它涵盖 **每个重要细节** — 名称、日期、数字、关键要点 — 没有任何内容被省略。幽默元素让知识点更容易记住。
## 工作原理
```
你提出问题 → Claude 回答 → 调用 generate_short_video
│
├── 1. 脚本:Claude 编写 Peter/Stewie 对话
├── 2. 音频:ElevenLabs 为每行生成语音
└── 3. 视频:FFmpeg 组合最终 MP4
├── 随机游戏背景
├── 角色 PNG 图片配情绪叠加层
└── 与音频同步的字幕
```
**输出:** 一个 30-90 秒的竖屏 MP4 视频,完成后自动打开。
## 快速设置
### 先决条件
| 需求 | 获取方式 |
|---|---|
| **Python 3.10+** | [python.org](https://www.python.org/downloads/) |
| **FFmpeg** | `brew install ffmpeg` (macOS) 或 `sudo apt install ffmpeg` (Linux) |
| **Anthropic API 密钥** | [console.anthropic.com](https://console.anthropic.com/) |
| **ElevenLabs API 密钥** | [elevenlabs.io](https://elevenlabs.io/) (免费层可用) |
### 1. 克隆并安装
```bash
git clone https://github.com/matedort/short-video-mcp.git
cd short-video-mcp
pip install -r requirements.txt
```
### 2. 配置 API 密钥
```bash
cp .env.example .env
# 编辑 .env 文件,填写你的 API 密钥和 ElevenLabs 语音 ID
```
你的 `.env` 文件应如下所示:
```
ANTHROPIC_API_KEY=sk-ant-api03-your-key-here
ELEVENLABS_API_KEY=sk_your-elevenlabs-key-here
PETER_VOICE_ID=your-peter-voice-id
STEWIE_VOICE_ID=your-stewie-voice-id
```
**查找语音 ID:** 前往 [elevenlabs.io/voice-library](https://elevenlabs.io/voice-library),找到你喜欢的语音,将它们添加到你的账户,然后从语音设置中复制语音 ID。任何两个语音都可以使用 — 选择一个低音的语音用于 Peter,一个高音的语音用于 Stewie。
### 3. 添加资产
将你的文件放在:
```
assets/
├── background/ ← .mp4 游戏视频(至少一个)
│ ├── subwaysurfers.mp4
│ ├── minecraft.mp4
│ └── ...
└── characters/ ← 角色 PNG 图片
├── peter.png ← 必需
├── stewie.png ← 必需
├── peter_excited.png ← 可选的情绪变体
├── peter_confused.png
├── peter_teaching.png
├── stewie_angry.png
└── stewie_excited.png
```
背景视频应为 **竖屏方向** (否则将被裁剪以适应)。角色 PNG 图片应具有 **透明背景**。
### 4. 连接到 Claude
**Claude Desktop** — 添加到 `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)或 `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"short-video": {
"command": "python3",
"args": ["/full/path/to/short-video-mcp/server.py"],
"env": {}
}
}
}
```
**Claude Code** — 添加到 `~/.claude.json` 下的 `mcpServers`:
```json
{
"mcpServers": {
"short-video": {
"command": "python3",
"args": ["/full/path/to/short-video-mcp/server.py"],
"env": {}
}
}
}
```
然后重启 Claude。
## 使用示例
**基本 — 任何问题:**
> "解释量子计算并生成一个关于它的短视频"
**PDF 学习:**
> *[上传 PDF]* "总结这个并生成一个短视频 — 包括每个关键细节"
**PowerPoint 幻灯片:**
> *[上传 PPT]* "为每张幻灯片生成一个短视频,这样我可以滚动浏览它们"
**电子邮件总结(使用 Gmail MCP):**
> "读取我的收件箱并生成一个总结我的未读电子邮件的短视频"
**每日简报(使用定时任务):**
> "每天早上 8 点,读取我的收件箱,检查我的 Whoop 状态,并生成一个简报视频"
**Claude Code 输出:**
> *[Claude 进行代码更改后]* "生成一个解释你刚刚更改内容的短视频"
## 主提示(一步设置)
将此提示复制并粘贴到 **Claude Code** 或 **Claude Desktop** 中,以自动设置所有内容:
```
我想设置 GitHub 上的 short-video MCP 服务器。
开始前,我需要确认:
1. 你有 Anthropic API 密钥吗?(在 console.anthropic.com 上获取)
2. 你有 ElevenLabs API 密钥吗?(在 elevenlabs.io 上获取 — 免费层可用)
确认后,请:
1. 克隆 https://github.com/matedort/short-video-mcp.git 到我的主目录
2. 运行:pip install -r requirements.txt
3. 从 .env.example 创建 .env 文件,并向我询问我的 API 密钥和语音 ID
4. 询问我提供游戏背景视频(.mp4)和角色 PNG 图片,或帮助我查找/下载一些
5. 将 short-video MCP 服务器添加到我的 Claude 配置中:
- Claude Desktop:~/Library/Application Support/Claude/claude_desktop_config.json
- Claude Code:~/.claude.json
使用 python3 作为命令,使用 /full/path/to/short-video-mcp/server.py 作为完整路径
6. 告诉我重启 Claude,然后使用以下命令测试: "解释为什么披萨是最好的食物并生成一个关于它的短视频"
```
## 项目结构
```
short-video-mcp/
├── server.py ← MCP 服务器(唯一的代码文件)
├── requirements.txt ← Python 依赖项
├── .env.example ← API 密钥的模板
├── .env ← 你实际的 API 密钥(git-ignored)
├── assets/
│ ├── background/ ← 游戏视频(.mp4)
│ └── characters/ ← 角色 PNG 图片,带有透明背景
├── output/ ← 生成的视频存放于此(git-ignored)
└── docs/
└── example_screenshot.png
```
## 视频制作流程
1. **脚本生成** — Claude(通过 Anthropic API)编写 Peter 和 Stewie 之间的对话,涵盖您内容的全部关键信息,保持角色特征,并带有一定的幽默。用于学习时,每个事实都被包含在内 — 没有任何内容被省略。
2. **语音合成** — 每行对话都被发送到 ElevenLabs TTS,并使用相应的语音 ID,然后将所有片段连接起来。
3. **视频组装** — FFmpeg 组合所有元素:
- 背景游戏视频(随机选择,循环播放)
- 角色 PNG 图片位于左下角(Stewie)和右下角(Peter)
- 角色根据谁在说话时出现/消失,并带有情绪特定的图像
- 字幕文本作为叠加层渲染,居中并与音频时间同步
## 配置
| 环境变量 | 描述 |
|---|---|
| `ANTHROPIC_API_KEY` | 你的 Anthropic API 密钥,用于脚本生成 |
| `ELEVENLABS_API_KEY` | 你的 ElevenLabs API 密钥,用于语音合成 |
| `PETER_VOICE_ID` | ElevenLabs 中 Peter Griffin 的语音 ID |
| `STEWIE_VOICE_ID` | ElevenLabs 中 Stewie Griffin 的语音 ID |
## 故障排除
| 问题 | 解决方法 |
|---|---|
| `ffmpeg not found` | 安装 FFmpeg:`brew install ffmpeg` (macOS)或 `sudo apt install ffmpeg` (Linux) |
| `ANTHROPIC_API_KEY not set` | 从 `.env.example` 创建 `.env` 并添加你的密钥 |
| 语音听起来不对 | 尝试不同的 ElevenLabs 语音 ID — 浏览 [语音库](https://elevenlabs.io/voice-library) |
| 视频太长 | 使用较短的内容,或者服务器默认使用 `ultrafast` FFmpeg 预设 |
| Claude 说 "credits" 或 "quota" | 那是 Claude 的幻觉 — 没有信用系统。服务器运行在本地。只需重试。 |
| 服务器在 Claude 中不显示 | 确保配置文件中的路径是绝对路径,并且指向 `server.py`。完全重启 Claude(Cmd+Q)。 |
## 致谢
该项目灵感来自 [@Jayyk09](https://github.com/Jayyk09) 的 [HackEmory-backend](https://github.com/Jayyk09/HackEmory-backend) — 最初的黑客马拉松项目,证明了 AI 生成的带有卡通角色的短视频确实可行。他们的方法启发了角色叠加层、TTS 旁白和视频组装。非常感谢他们开源并激发了这个想法。
使用以下技术构建:
- [Anthropic Claude API](https://www.anthropic.com/) — 脚本生成
- [ElevenLabs](https://elevenlabs.io/) — 语音合成
- [FFmpeg](https://ffmpeg.org/) — 视频组装
- [模型上下文协议(MCP)](https://modelcontextprotocol.io/) — Claude 集成
## 许可证
MIT