實戰手冊 · Field Manual 2026-05-30 版本快照
github.com/harry0703/MoneyPrinterTurbo · 70.6k ★
$
開源短影音工廠 / AI Video Automation

輸入主題,輸出可發布短影音的自動化管線。

MoneyPrinterTurbo 是一套 Python 短影音自動化系統:輸入主題或關鍵字,交給 LLM 產生文案與搜尋詞,再下載或接入本地素材,產生 TTS、字幕、背景音樂,最後合成直式、橫式或方形影片。它同時提供 WebUI 與 FastAPI,適合做內容工廠原型、自動化剪輯後台,或私有部署的短影音生產線。

70.6k
GitHub Stars
1.2.8
Project Version
3
Video Aspects
MIT
Open Source License
01
系統概覽

以 FastAPI 為核心的短影音工作流伺服器。

MoneyPrinterTurbo 把短影音製作拆成一條可自動化的管線:產生腳本、產生搜尋詞、找素材、產生旁白、產生字幕、拼接素材、套字幕與背景音樂、輸出成片。這些步驟在 `app/services/task.py` 裡被明確排成任務流程,也能透過 API 分段停在 script、terms、audio、subtitle、materials 或完整 video。

README 直接把 Web 介面、API 介面、Windows 一鍵包、Docker、Google Colab、本地 `uv` 部署都列出來,適用對象涵蓋內容團隊、YouTube Shorts/TikTok 操盤手、社群小編,以及想把短影音生產嵌進自家後台的工程團隊。

從 repo 結構看,這是一個標準化後端專案:`FastAPI` 負責 API,`Streamlit` 負責 WebUI,`MoviePy` 與 ffmpeg 負責影像合成,`edge-tts` 與多種 TTS/provider 設定負責聲音,`faster-whisper` 可做字幕替代方案。專案定位為可自架、可改造的內容生成引擎,非 SaaS 成品。

MoneyPrinterTurbo Pipeline
Topic Script Terms Voice Subtitle Materials Final MP4
02
安裝與啟動

四種部署路線對應不同環境。

官方 README 對新手的建議很清楚:Windows 優先用一鍵啟動包,macOS / Linux 優先用 `uv sync --frozen`,想隔離環境就用 Docker。`pyproject.toml` 指定 Python 版本為 >=3.11 且 <3.13,專案版本是 1.2.8,主依賴包含 FastAPI、Streamlit、MoviePy、OpenAI SDK、faster-whisper、LiteLLM、edge-tts、Redis 與多個雲端模型 SDK。

git clone https://github.com/harry0703/MoneyPrinterTurbo.git cd MoneyPrinterTurbo uv python install 3.11 uv sync --frozen # WebUI uv run streamlit run ./webui/Main.py --browser.gatherUsageStats=False # API server uv run python main.py
git clone https://github.com/harry0703/MoneyPrinterTurbo.git cd MoneyPrinterTurbo docker compose up # docker-compose.yml 會啟動兩個服務 WebUI: http://127.0.0.1:8501 API: http://127.0.0.1:8080/docs
安裝前先處理路徑。README 特別提醒不要把專案放在中文、特殊字元或空白路徑下。影片處理會經過 ffmpeg、ImageMagick、字型與本地素材檔案,路徑問題通常比程式碼問題更早把新手卡住。
03
能力地圖

九個模組,各負責管線的一個環節

01 · LLM Script

主題變文案

若沒有自訂 `video_script`,任務會呼叫 LLM 依 `video_subject`、語言與段落數產生腳本;也能只停在 `/script` 類型的輸出階段。

02 · Search Terms

文案變素材關鍵字

非本地素材模式下,系統會從影片主題與腳本推導搜尋詞,再交給素材服務下載影片片段。

03 · Materials

Pexels、Pixabay 或本地素材

`config.example.toml` 預設 `video_source = "pexels"`,也支援 Pixabay 與本地素材。API 允許上傳 mp4、mov、avi、flv、mkv、jpg、jpeg、png。

04 · Voice

TTS 旁白

可用 edge-tts、Azure Speech、MiniMax/MiMo/OpenAI 相關設定與自訂音訊檔。若給 `custom_audio_file`,任務會跳過 TTS,直接用使用者提供的聲音。

05 · Subtitle

字幕與 Whisper 備援

`subtitle_provider` 支援 `edge` 或 `whisper`。README 建議先用速度較快的 edge,品質不穩時再切 whisper;whisper 模型可能需要額外下載大約 3GB 的模型檔。

06 · Render

MoviePy + ffmpeg 合成

`app/services/video.py` 會裁切、縮放、串接素材,套入字幕、背景音樂與轉場,輸出 `final-1.mp4` 這類任務結果。

07 · API

可嵌入後台

FastAPI 提供 `/videos`、`/subtitle`、`/audio`、`/tasks/{task_id}`、BGM 與本地素材上傳/查詢等端點,產物可透過 `/tasks/...`、`/stream/...`、`/download/...` 存取。

08 · Queue

記憶體或 Redis 任務管理

`enable_redis` 可切換 RedisTaskManager;設定裡也有最大並發任務數與最大排隊任務數,避免匿名請求無限堆積。

09 · Cross Post

Upload-Post 整合

設定檔列出 TikTok/Instagram cross-post 選項。任務完成後若服務已設定且開啟自動上傳,會嘗試把成片送到外部發布服務。

04
實戰調校

依場景選取最小可行配置

MoneyPrinterTurbo 的設定面很廣,因為它同時接 LLM、素材站、TTS、字幕、ffmpeg、ImageMagick、WebUI、API 與任務佇列。不要一開始就改全部。實務上可以用下面這張表切出最小可行配置。

場景 優先配置 原因
只想快速看效果 WebUI、Pexels API key、OpenAI-compatible LLM、edge 字幕 避開 Docker、Redis、whisper 模型與本地素材管理,最少變數。
在公司內部後台整合 FastAPI、Redis 任務管理、`endpoint`、CORS、素材上傳限制 後台整合需要可查詢任務、可下載結果、可控佇列,單機 WebUI 不足以滿足這些需求。
大量批次生產 `max_concurrent_tasks`、`max_queued_tasks`、BGM/素材快取、GPU 或高核心 CPU 瓶頸會出現在下載素材、TTS、字幕、影片合成與檔案 IO。
重視字幕品質 `subtitle_provider = "whisper"`、本地 whisper-large-v3、足夠記憶體/GPU README 說 edge 快但品質可能不穩,whisper 慢但更可靠。
中國網路環境 DeepSeek/Moonshot/Qwen/ModelScope、代理設定、HuggingFace 模型離線下載 README 與設定檔都明確提到中國使用者的模型與網路替代路徑。
05
API 實例

透過 FastAPI 端點直接呼叫影片生成後端

Docker 或本地 `main.py` 啟動後,API 文件在 `http://127.0.0.1:8080/docs`。`app/controllers/v1/video.py` 顯示 `/videos` 會建立背景任務,回傳 `task_id`;接著用 `/tasks/{task_id}` 查詢狀態與影片 URL。下面是根據 `app/models/schema.py` 參數整理出的最小請求骨架。

curl -X POST http://127.0.0.1:8080/api/v1/videos \ -H "Content-Type: application/json" \ -d '{ "video_subject": "AI 如何改變小型企業行銷", "video_aspect": "9:16", "video_language": "zh-TW", "voice_name": "zh-CN-XiaoxiaoNeural-Female", "voice_rate": 1.0, "bgm_type": "random", "bgm_volume": 0.2, "subtitle_enabled": true, "font_size": 60, "video_count": 1, "video_source": "pexels" }'
curl http://127.0.0.1:8080/api/v1/tasks/<task_id> # response 會包含 state、progress、videos、combined_videos 等欄位。 # 影片靜態檔會由 /tasks 掛載,也能走 /stream 或 /download 端點。
06
先看清楚這些

部署前應確認的風險與限制

  • 素材與音樂授權仍要自己負責。README 說素材來源高清且無版權,也提到背景音樂位於 `resource/songs`,但任何商用發布都應再次核對素材、音樂、字型與平台政策。
  • API 預設沒有強制驗證。`app/controllers/v1/video.py` 裡的驗證依賴被註解掉;如果公開到網路,必須自行加上反向代理、認證、配額與任務限制。
  • CORS 預設很寬。`app/asgi.py` 在沒有 `CORS_ALLOWED_ORIGINS` 時允許 `*`,內部工具可以接受,公開服務要收斂來源。
  • Whisper 模型不是小依賴。README 提醒 whisper-large-v3 大約 3GB,下載與推論都會吃網路、磁碟與算力。
  • Windows 路徑與 ImageMagick 最容易出錯。README 特別列出 ImageMagick 安全策略、ffmpeg 找不到、中文路徑、空白路徑等問題,部署前先用乾淨英文路徑。
  • 批次生成不是免費午餐。影片合成會開檔、轉碼、下載素材、跑 TTS 與字幕;若要多人共用,請打開 Redis 或至少調整佇列上限。
  • 跨平台自動發布要謹慎。Upload-Post 整合可以把影片送到 TikTok/Instagram,但平台規範、帳號風控與內容品質仍是營運責任。
07
進階路徑

從原型到生產環境的進階路徑

1. 從 WebUI 驗證內容模板

先用 WebUI 測不同主題、語言、聲音、字幕樣式、背景音樂與素材來源,找出你品牌可接受的基準品質。不要一開始就寫後台整合,先確認成片風格能用。

2. 把 API 包成內部任務系統

接到內部 CMS 或內容排程工具時,建議使用 `/videos` 建任務,輪詢 `/tasks/{task_id}`,把 `script.json`、`final-1.mp4`、`combined-1.mp4` 等產物回寫到審稿流程。

3. 建立素材白名單

如果你不想依賴 Pexels/Pixabay 搜尋品質,可以改用本地素材。`video.py` 已經有本地素材目錄與檔案安全限制,適合整理成品牌素材庫。

4. 針對商業場景硬化部署

公開服務至少需要認證、CORS 白名單、Redis、任務配額、日誌留存、輸出檔清理、LLM/TTS key 保護與錯誤告警。MoneyPrinterTurbo 給你引擎,不會替你完成營運防線。

5. 客製 LLM 提示與字幕風格

差異化來自腳本結構、素材選詞、旁白語氣、字幕節奏與品牌視覺,而非單純能否產生影片。建議 fork 後將品牌內容方法論寫入 LLM 提示、TTS 設定與 WebUI 預設值。