一键生成短视频:MoneyPrinterTurbo 开源项目深度解析

一键生成短视频:MoneyPrinterTurbo 开源项目深度解析

一行命令,让 AI 帮你写文案、找素材、配音、剪辑------全自动视频生产流水线,56K+ Star 验证。


引子

我的中转站:https://api.aiseo.one/register?channel=c_0qyhisw6

你有没有这样的经历:

想做一个知识类短视频账号,但每次都要------

"写脚本、录配音、找素材、剪视频..."

一个 2 分钟的视频,花了 3 个小时。一个月下来,累得半死,产出还不到 10 条。

试过 AI 视频工具?要么只能生成几张图片轮播,要么配音像机器人,要么素材和文案对不上。想找个真正能用的"全自动"方案,折腾了一圈发现还是要自己动手。

这不是你的问题,而是视频制作的门槛本来就高。 文案、配音、画面、字幕、剪辑------每个环节都是独立技能。

直到我发现了 MoneyPrinterTurbo------这个项目把"一句话生成视频"这件事,变成了现实。


项目简介

MoneyPrinterTurbo 是一个开源的 AI 视频生成工具(MIT 协议),作者是 harry0703。它的定位非常清晰:

一句话生成视频:输入主题,自动完成文案→配音→素材→字幕→合成。

一句话概括:本地运行、免费开源、支持 15+ LLM 提供商、9 种 TTS 方案、三种运行模式(Web UI / API / CLI),从脚本到成片全程自动化。

核心特性

特性 说明
一键生成 输入主题,自动完成文案→配音→素材→字幕→视频全流程
15+ LLM 支持 OpenAI、Claude、Gemini、DeepSeek、Ollama 等主流模型
9 种 TTS Edge-TTS(免费)、Azure、OpenAI、Fish TTS、阿里云、火山引擎等
多尺寸 竖屏 9:16(抖音/小红书)、横屏 16:9(B站/YouTube)
三种模式 Web UI(可视化)、API(集成)、CLI(批量)
零成本 默认配置下完全免费,Edge-TTS + Pexels 免费素材
国内友好 支持国内 LLM、中英文视频、无需FQ
Docker 部署 一键 Docker Compose 启动,开箱即用

技术架构

核心理念:视频生产流水线

MoneyPrinterTurbo 的设计哲学是:把视频制作拆解成标准化的流水线,每个环节独立可替换。

复制代码
┌─────────────────────────────────────────────────────────────┐
│                      用户输入主题                            │
│              "如何用 AI 提高工作效率"                         │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                 Step 1: 文案生成 (LLM)                      │
│   OpenAI / Claude / DeepSeek / Ollama / ...                 │
│   输入主题 → 输出结构化脚本(标题 + 分镜文案)                  │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                 Step 2: 配音合成 (TTS)                       │
│   Edge-TTS(免费)/ Azure / OpenAI / Fish TTS / ...         │
│   文案 → 音频文件 + 时间轴                                    │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                 Step 3: 素材匹配                             │
│   Pexels / Pixabay / 本地素材库                              │
│   分镜关键词 → 视频/图片素材                                   │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                 Step 4: 字幕生成                             │
│   自动对齐时间轴 + 样式渲染                                    │
│   输出 SRT 格式 + 内嵌字幕                                    │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│                 Step 5: 视频合成                             │
│   MoviePy + FFmpeg                                           │
│   素材 + 配音 + 字幕 → 最终视频                                │
└─────────────────────────────────────────────────────────────┘

项目结构

复制代码
MoneyPrinterTurbo/
├── app/                    # 主应用
│   ├── controllers/        # API 路由控制器
│   │   └── video.py        # 视频生成 API
│   ├── services/           # 核心业务逻辑
│   │   ├── llm/           # LLM 服务(15+ 提供商)
│   │   ├── tts/           # TTS 服务(9 种方案)
│   │   └── material.py    # 素材匹配服务
│   ├── models/            # 数据模型
│   └── utils/             # 工具函数
├── resource/              # 静态资源
│   ├── fonts/             # 字体文件
│   └── html/              # 模板文件
├── webui/                 # 前端(Streamlit)
│   └── Main.py            # Web UI 入口
├── config.toml            # 配置文件
├── Dockerfile             # Docker 构建
└── docker-compose.yml     # 一键启动

架构分层

层级 职责 技术选型
接入层 用户交互 Streamlit Web UI / FastAPI / CLI
编排层 流程调度 主控制器协调各服务
服务层 核心能力 LLM / TTS / 素材 / 字幕
基础设施 底层依赖 MoviePy / FFmpeg / Redis

核心代码解析

1. 视频生成流水线

整个视频生成流程由 VideoService 统一编排:

复制代码
# app/services/video_service.py(简化版逻辑)

classVideoService:
    async defgenerate_video(self, topic: str, config: VideoConfig):
        # Step 1: 生成文案
        script = await self.llm_service.generate_script(
            topic=topic,
            style=config.style,
            language=config.language
        )

        # Step 2: 合成配音
        audio_segments = []
        for scene in script.scenes:
            audio = await self.tts_service.synthesize(
                text=scene.narration,
                voice=config.voice
            )
            audio_segments.append(audio)

        # Step 3: 匹配素材
        materials = await self.material_service.match(
            keywords=[scene.keywords for scene in script.scenes],
            source=config.material_source
        )

        # Step 4: 生成字幕
        subtitles = self.subtitle_service.generate(
            audio_segments=audio_segments,
            style=config.subtitle_style
        )

        # Step 5: 合成视频
        final_video = self.compose_video(
            materials=materials,
            audio=audio_segments,
            subtitles=subtitles,
            aspect_ratio=config.aspect_ratio
        )

        return final_video

精妙之处:

  • 每个步骤独立可替换------不满意某个 TTS?换成 Azure 只需改配置

  • 异步设计------支持并发处理多个场景

  • 配置驱动------所有参数通过 config.toml 控制

2. LLM 服务抽象

项目支持 15+ LLM 提供商,核心是统一的接口抽象:

复制代码
# app/services/llm/base.py

classLLMProvider(ABC):
    @abstractmethod
    async defgenerate_script(
        self, 
        topic: str,
        language: str = "zh-CN",
        style: str = "professional"
    ) -> VideoScript:
"""生成视频脚本"""
        pass

# app/services/llm/openai.py
classOpenAIProvider(LLMProvider):
    async defgenerate_script(self, topic: str, **kwargs) -> VideoScript:
        response = await self.client.chat.completions.create(
            model=self.model,
            messages=[
                {"role": "system", "content": SCRIPT_SYSTEM_PROMPT},
                {"role": "user", "content": f"主题:{topic}"}
            ]
        )
        return VideoScript.from_json(response.choices[0].message.content)

# app/services/llm/ollama.py(本地模型)
classOllamaProvider(LLMProvider):
    async defgenerate_script(self, topic: str, **kwargs) -> VideoScript:
        # Ollama 本地推理,零成本
        response = await self.client.generate(
            model=self.model,
            prompt=f"生成视频脚本:{topic}"
        )
        return VideoScript.from_json(response)

支持的 LLM 提供商:

提供商 特点 适用场景
OpenAI 质量最高 追求效果
Claude 长文本优秀 复杂脚本
DeepSeek 国产便宜 预算有限
Ollama 本地免费 隐私敏感
Gemini 谷歌出品 多语言
Moonshot 国产长文本 中文优化

3. TTS 服务矩阵

配音是视频的灵魂,项目支持多种 TTS 方案:

复制代码
# app/services/tts/edge_tts.py(免费方案)

classEdgeTTSProvider(TTSProvider):
    async defsynthesize(self, text: str, voice: str) -> AudioSegment:
        # 微软 Edge-TTS,完全免费
        # 支持中英文,多种音色
        communicate = edge_tts.Communicate(text, voice)
        await communicate.save("temp.mp3")
        return AudioSegment.from_mp3("temp.mp3")

# app/services/tts/azure_tts.py(专业方案)
classAzureTTSProvider(TTSProvider):
    async defsynthesize(self, text: str, voice: str) -> AudioSegment:
        # Azure 语音服务,情感丰富
        # 需要订阅 Key,但效果最好
        speech_config = SpeechConfig(
            subscription=self.key,
            region=self.region
        )
        synthesizer = SpeechSynthesizer(speech_config)
        result = synthesizer.speak_text_async(text).get()
        return AudioSegment(result.audio_data)

TTS 方案对比:

方案 费用 质量 适用场景
Edge-TTS 免费 良好 日常使用
Azure 付费 优秀 商业项目
OpenAI 付费 良好 已有订阅
Fish TTS 按量 优秀 情感配音
阿里云 付费 良好 国内合规

4. 素材智能匹配

素材匹配采用关键词搜索 + 智能筛选:

复制代码
# app/services/material.py

classMaterialService:
    async defmatch(self, keywords: List[str], source: str = "pexels"):
        materials = []
        for keyword in keywords:
            # 从 Pexels/Pixabay 搜索
            results = await self.search_media(keyword, source)

            # 智能筛选:时长、分辨率、相关性
            best_match = self.select_best(
                results,
                criteria={
                    "min_duration": 3,
                    "min_resolution": (1920, 1080),
                    "relevance_threshold": 0.8
                }
            )
            materials.append(best_match)

        return materials

    async defsearch_media(self, keyword: str, source: str):
        if source == "pexels":
            # Pexels API,免费高清素材
            async with httpx.AsyncClient() as client:
                resp = await client.get(
                    "https://api.pexels.com/videos/search",
                    params={"query": keyword, "per_page": 10},
                    headers={"Authorization": self.api_key}
                )
                return resp.json()["videos"]
        # 支持本地素材库
        elif source == "local":
            return self.local_db.search(keyword)

快速开始

方式一:Docker 一键启动(推荐)

复制代码
# 克隆项目
gitclonehttps://github.com/harry0703/MoneyPrinterTurbo.git
cdMoneyPrinterTurbo

# 配置环境变量
cpconfig.toml.exampleconfig.toml
# 编辑 config.toml,填入 API Key(可选)

# Docker 启动
docker-composeup-d

# 访问 Web UI
openhttp://localhost:8501

方式二:本地安装

复制代码
# 克隆项目
gitclonehttps://github.com/harry0703/MoneyPrinterTurbo.git
cdMoneyPrinterTurbo

# 创建虚拟环境
python-mvenvvenv
sourcevenv/bin/activate

# 安装依赖
pipinstall-rrequirements.txt

# 安装 ImageMagick(视频处理必需)
# macOS
brewinstallimagemagick
# Ubuntu
sudoaptinstallimagemagick

# 启动 Web UI
streamlitrunwebui/Main.py

最小配置(免费使用)

只需修改 config.toml

复制代码
[app]
language="zh-CN"# 中文

[llm]
provider="deepseek"# 或 "ollama" 本地运行
deepseek_api_key="your-key"# DeepSeek 很便宜

[tts]
provider="edge-tts"# 完全免费

[material]
provider="pexels"# 免费高清素材
pexels_api_key="your-key"# 免费申请

一键生成视频

Web UI:

复制代码
1.打开http://localhost:8501
2.输入主题:"如何提高工作效率的 5 个技巧"
3.选择配音风格、视频尺寸
4.点击"生成视频"
5.等待2-5分钟,下载成品

API 调用:

复制代码
importrequests

response = requests.post(
    "http://localhost:8080/api/v1/videos/generate",
    json={
        "topic": "AI 将如何改变未来工作",
        "language": "zh-CN",
        "voice": "zh-CN-XiaoxiaoNeural",
        "aspect_ratio": "9:16",
        "duration": 60
    }
)

video_url = response.json()["video_url"]

CLI 批量:

复制代码
pythonmain.py\
--topic"如何培养阅读习惯"\
--languagezh-CN\
--aspect-ratio9:16\
--output./videos/

实战案例

案例一:知识类短视频矩阵

目标:每天生产 10 条知识类短视频

复制代码
topics = [
    "如何提高专注力的 3 个方法",
    "睡眠质量差的真正原因",
    "为什么早起的人更成功",
    # ... 更多主题
]

for topic in topics:
    await video_service.generate_video(
        topic=topic,
        language="zh-CN",
        voice="zh-CN-YunyangNeural",
        aspect_ratio="9:16",  # 竖屏适合抖音
        style="knowledge"
    )

效果:

  • 单条视频成本:< ¥0.5(DeepSeek + Edge-TTS + Pexels)

  • 日产 10 条,月产 300 条

  • 适合知识博主、企业号批量运营

案例二:产品宣传视频

需求:为新产品生成 60 秒宣传视频

复制代码
await video_service.generate_video(
    topic="""
    产品介绍:
    - 名称:智能水杯 Aqua
    - 卖点:自动提醒喝水、水温显示、健康追踪
    - 目标用户:办公室白领
    风格:简洁现代
    """,
    language="zh-CN",
    aspect_ratio="16:9",  # 横屏适合 B站
    material_source="local",  # 使用产品素材
    voice="zh-CN-XiaoxiaoNeural"
)

优化点:

  • 使用 material_source="local" 替换为产品实拍素材

  • 调整 style="commercial" 增加营销感

案例三:多语言视频批量生产

需求:同一内容生成中英文双语版本

复制代码
async defgenerate_multilingual(topic_zh: str, topic_en: str):
    # 中文版本
    video_zh = await video_service.generate_video(
        topic=topic_zh,
        language="zh-CN",
        voice="zh-CN-YunyangNeural"
    )

    # 英文版本
    video_en = await video_service.generate_video(
        topic=topic_en,
        language="en-US",
        voice="en-US-JennyNeural"
    )

    return video_zh, video_en

await generate_multilingual(
    "AI 如何改变教育行业",
    "How AI is Transforming Education"
)

与同类方案对比

方案 成本 功能完整度 自定义 部署难度
MoneyPrinterTurbo 免费开源 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
HeyGen $29/月起 ⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐⭐
Runway $12/月起 ⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐
Synthesia $22/月起 ⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐⭐
自己开发 时间成本 ⭐⭐ ⭐⭐⭐⭐⭐

MoneyPrinterTurbo 的核心优势:

  1. 真正免费 - Edge-TTS + DeepSeek/Ollama 零成本运行
  2. 源码可控 - 完全开源,可深度定制
  3. 本地运行 - 数据不出本地,隐私安全
  4. 模块化设计 - 每个环节独立可替换

适合人群:

  • ✅ 内容创作者(知识博主、自媒体运营)
  • ✅ 企业营销团队(批量视频生产)
  • ✅ 开发者(二次开发、API 集成)
  • ✅ AI 爱好者(学习视频生成技术)

不适合场景:

  • ❌ 需要真人出镜(这个做不到)
  • ❌ 高端商业广告(素材和配音还不够精致)
  • ❌ 实时直播(这是录播,不是直播)

最佳实践

1. 国内用户推荐配置

复制代码
[llm]
provider="deepseek"# 国产,便宜,中文好
deepseek_api_key="sk-xxx"

[tts]
provider="edge-tts"# 免费,中文效果好

[material]
provider="pexels"
pexels_api_key="xxx"# 免费申请

[proxy]
# 不需要代理,国内直连

2. 性能优化建议

复制代码
# 并发生成多个视频
uvicornmain:app--workers4

# 使用 Redis 缓存素材
redis-server&
# config.toml 添加
[cache]
provider="redis"
url="redis://localhost:6379"

3. 素材库建设

复制代码
# 定期下载高质量素材到本地
python scripts/download_materials.py \
    --keywords "办公,科技,城市,自然" \
    --output ./local_materials/

# 配置优先使用本地素材
[material]
provider = "local"
local_path = "./local_materials/"
fallback = "pexels"  # 本地没有时回退到 Pexels

总结

MoneyPrinterTurbo 是一个真正把"AI 视频生成"落地的项目。它没有追求花哨的功能,而是把生产效率做到了极致。

它的架构哲学值得称道:

  • 流水线思维 - 每个环节独立可替换
  • 配置驱动 - 改配置不用改代码
  • 多模式运行 - Web/API/CLI 适应不同场景
  • 成本可控 - 免费方案完全可用,付费方案效果更好

如果你是内容创作者,想在 AI 时代提升产能,这个项目值得花时间研究。它不会替代你的创意,但会把繁琐的执行工作全部自动化。

项目地址: https://github.com/harry0703/MoneyPrinterTurbo
安装: docker-compose up -d
协议: MIT(商业可用)


扩展阅读