MoneyPrinterTurbo 是一套 Python 短影音自動化系統:輸入主題或關鍵字,交給 LLM 產生文案與搜尋詞,再下載或接入本地素材,產生 TTS、字幕、背景音樂,最後合成直式、橫式或方形影片。它同時提供 WebUI 與 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 成品。
官方 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。
若沒有自訂 `video_script`,任務會呼叫 LLM 依 `video_subject`、語言與段落數產生腳本;也能只停在 `/script` 類型的輸出階段。
非本地素材模式下,系統會從影片主題與腳本推導搜尋詞,再交給素材服務下載影片片段。
`config.example.toml` 預設 `video_source = "pexels"`,也支援 Pixabay 與本地素材。API 允許上傳 mp4、mov、avi、flv、mkv、jpg、jpeg、png。
可用 edge-tts、Azure Speech、MiniMax/MiMo/OpenAI 相關設定與自訂音訊檔。若給 `custom_audio_file`,任務會跳過 TTS,直接用使用者提供的聲音。
`subtitle_provider` 支援 `edge` 或 `whisper`。README 建議先用速度較快的 edge,品質不穩時再切 whisper;whisper 模型可能需要額外下載大約 3GB 的模型檔。
`app/services/video.py` 會裁切、縮放、串接素材,套入字幕、背景音樂與轉場,輸出 `final-1.mp4` 這類任務結果。
FastAPI 提供 `/videos`、`/subtitle`、`/audio`、`/tasks/{task_id}`、BGM 與本地素材上傳/查詢等端點,產物可透過 `/tasks/...`、`/stream/...`、`/download/...` 存取。
`enable_redis` 可切換 RedisTaskManager;設定裡也有最大並發任務數與最大排隊任務數,避免匿名請求無限堆積。
設定檔列出 TikTok/Instagram cross-post 選項。任務完成後若服務已設定且開啟自動上傳,會嘗試把成片送到外部發布服務。
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 與設定檔都明確提到中國使用者的模型與網路替代路徑。 |
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` 參數整理出的最小請求骨架。
先用 WebUI 測不同主題、語言、聲音、字幕樣式、背景音樂與素材來源,找出你品牌可接受的基準品質。不要一開始就寫後台整合,先確認成片風格能用。
接到內部 CMS 或內容排程工具時,建議使用 `/videos` 建任務,輪詢 `/tasks/{task_id}`,把 `script.json`、`final-1.mp4`、`combined-1.mp4` 等產物回寫到審稿流程。
如果你不想依賴 Pexels/Pixabay 搜尋品質,可以改用本地素材。`video.py` 已經有本地素材目錄與檔案安全限制,適合整理成品牌素材庫。
公開服務至少需要認證、CORS 白名單、Redis、任務配額、日誌留存、輸出檔清理、LLM/TTS key 保護與錯誤告警。MoneyPrinterTurbo 給你引擎,不會替你完成營運防線。
差異化來自腳本結構、素材選詞、旁白語氣、字幕節奏與品牌視覺,而非單純能否產生影片。建議 fork 後將品牌內容方法論寫入 LLM 提示、TTS 設定與 WebUI 預設值。