以 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 成品。
Topic
Script
Terms
Voice
Subtitle
Materials
Final MP4
四種部署路線對應不同環境。
官方 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.pygit 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九個模組,各負責管線的一個環節。
LLM Script
主題變文案
若沒有自訂 `video_script`,任務會呼叫 LLM 依 `video_subject`、語言與段落數產生腳本;也能只停在 `/script` 類型的輸出階段。
Search Terms
文案變素材關鍵字
非本地素材模式下,系統會從影片主題與腳本推導搜尋詞,再交給素材服務下載影片片段。
Materials
Pexels、Pixabay 或本地素材
`config.example.toml` 預設 `video_source = "pexels"`,也支援 Pixabay 與本地素材。API 允許上傳 mp4、mov、avi、flv、mkv、jpg、jpeg、png。
Voice
TTS 旁白
可用 edge-tts、Azure Speech、MiniMax/MiMo/OpenAI 相關設定與自訂音訊檔。若給 `custom_audio_file`,任務會跳過 TTS,直接用使用者提供的聲音。
Subtitle
字幕與 Whisper 備援
`subtitle_provider` 支援 `edge` 或 `whisper`。README 建議先用速度較快的 edge,品質不穩時再切 whisper;whisper 模型可能需要額外下載大約 3GB 的模型檔。
Render
MoviePy + ffmpeg 合成
`app/services/video.py` 會裁切、縮放、串接素材,套入字幕、背景音樂與轉場,輸出 `final-1.mp4` 這類任務結果。
API
可嵌入後台
FastAPI 提供 `/videos`、`/subtitle`、`/audio`、`/tasks/{task_id}`、BGM 與本地素材上傳/查詢等端點,產物可透過 `/tasks/...`、`/stream/...`、`/download/...` 存取。
Queue
記憶體或 Redis 任務管理
`enable_redis` 可切換 RedisTaskManager;設定裡也有最大並發任務數與最大排隊任務數,避免匿名請求無限堆積。
Cross Post
Upload-Post 整合
設定檔列出 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 與設定檔都明確提到中國使用者的模型與網路替代路徑。 |
透過 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 端點。部署前應確認的風險與限制。
從原型到生產環境的進階路徑。
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 預設值。