この記事ではAI自動化の中でも「動画自動生成OSS」に焦点を絞って解説します。AI自動化・DevOps全般の俯瞰は AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較 をご覧ください。

MoneyPrinterTurboとは:テキスト一つでAI短編動画を生成するOSSの全体像

MoneyPrinterTurboはテーマを1行入力するだけで台本生成・素材収集・音声合成・字幕生成・動画合成までを自動化するオープンソースツールで、GitHubで58,000スター以上を獲得している。リポジトリの説明文は「利用AI大模型,一键生成高清短视频 / Generate short videos with one click using AI LLM.」と簡潔だが、内部では大規模言語モデル・TTS・Pexels素材検索・ffmpeg合成を1プロセスに束ねた複合パイプラインが動いている。

YouTube Shorts・TikTok・Instagram Reelsといった縦型短編動画市場は、2024年から2026年にかけて広告単価が安定上昇し、個人クリエイター・小規模法人にとって有力な収益源になった。一方で、1本作るのに必要な工程は「テーマ選定→台本→ナレーション収録→素材集め→字幕→編集→書き出し」と多く、1本に2〜4時間かかるのが普通だ。MoneyPrinterTurboはこのフロー全体をクラウドLLMとTTS APIの組み合わせで自動化し、Webブラウザから「テーマ」「動画の長さ」「言語」「縦/横」を選ぶだけで完成形のmp4を出力する。

リポジトリは2024年初頭に公開され、原型となるMoneyPrinter(FujiwaraChoki氏)のフォークから出発しているが、中文UI、複数LLMプロバイダー対応、WebUI、REST API、Docker構成、Streamlit対応などを大幅に拡張しており、現在はオリジナルを大きく上回るスター数を獲得している。MITライセンスで配布されており、商用利用も可能だ。

この記事で扱う範囲
初心者がローカルPCにMoneyPrinterTurboを導入し、テーマを入れて1本目の動画を書き出すまでに必要な情報を、READMEの一次情報と公式リポジトリの構成に沿って解説する。インストール3方式・LLM/TTS/字幕プロバイダー比較・APIキー設定・トラブルシューティング・商用利用の境界を扱う。

なぜMoneyPrinterTurboが急速に注目されたのか:背景と特徴

短編動画自動生成のOSSはこの2年で複数登場した。MoneyPrinterTurboが頭ひとつ抜けた理由を、READMEに記載された機能と、コミュニティでの言及から整理する。

第一に、LLMプロバイダーの選択肢が圧倒的に多い。 READMEに明示されているだけでもOpenAI、Moonshot、Azure、gpt4free、one-api、通義千問(Qwen)、Google Gemini、Ollama、DeepSeek、MiniMax、文心一言(ERNIE)、Pollinations、ModelScopeの13系統に対応する。中国国内ユーザー向けにはDeepSeekやMoonshotの推奨が明記されており、海外API直叩きを避けたいユーザーへの導線が用意されている。Ollama対応により、APIキー無しのローカル運用も可能だ。

第二に、Webブラウザ完結のUIである。 StreamlitベースのWebUIが標準で、ローカルにポート8501で起動し、ブラウザから「テーマ」「言語」「動画の縦横比」「動画時間」「字幕色」「BGM音量」などをGUIで指定するだけで動画を生成できる。CLIやAPIも別途用意されており、自動化のために定期実行したい上級者にも対応している。

第三に、出力品質が実用レベルである。 動画解像度は縦9:16(1080×1920)と横16:9(1920×1080)の両方に対応し、字幕は位置・色・サイズ・縁取りまで細かく調整可能。BGMはランダム選曲または指定ファイル、音量も0〜1の範囲で調整できる。Azure NeuralやEdge TTSの音声品質は2024年以降のモデル更新で人間と区別が難しいレベルに達しており、短編動画の音声としては十分すぎる。

第四に、デプロイのハードルが低い。 Windowsユーザー向けにワンクリック起動パッケージ(解凍してbatファイルをダブルクリック)、macOS/Linuxユーザー向けにuv sync --frozen一発の依存解決、Docker派にはdocker-compose upの3経路が公式に用意されている。Google Colabノートブックも公開されており、PC環境を汚さずに試せる。

類似プロジェクトとの位置付け
動画自動生成系OSSにはVideoLingo(字幕翻訳・吹き替え特化)、ShortGPT(英語特化・小規模)、youtube-automation-agent(YouTube投稿まで自動化)などがある。MoneyPrinterTurboは「テーマ→完成動画」までの単一動画生成に特化し、投稿自動化やローカライゼーションは含まない代わりに、生成品質とプロバイダー選択肢の幅で差別化されている。

アーキテクチャ:LLM・TTS・素材・字幕・合成の5層パイプライン

MoneyPrinterTurboが内部で何をしているかを理解すると、APIキーの設定漏れや不具合の切り分けが格段に楽になる。生成フローを5層に分解した図が以下である。

flowchart TD A["ユーザー入力
テーマ・言語・尺・縦横比"] --> B["1. LLM層
台本生成
OpenAI/DeepSeek/Gemini/Ollama 等"] B --> C["キーワード抽出
素材検索クエリ生成"] C --> D["2. 素材層
Pexels API
HD動画クリップ取得"] A --> E["3. TTS層
Edge/Azure/SiliconFlow
音声合成"] B --> E E --> F["4. 字幕層
Edge字幕 or Whisper
テキスト→タイミング"] D --> G["5. 合成層
moviepy + ffmpeg + ImageMagick
動画+音声+字幕+BGM"] E --> G F --> G G --> H["出力
storage/tasks/[task_id]/
final-1.mp4"]

1. LLM層(台本生成):ユーザーが入力した「テーマ」と「言語」「想定する動画の長さ」をもとに、選択されたLLMプロバイダーに対して数百〜千文字程度のナレーション台本を生成させる。同時に、後段の素材検索で使うキーワードリスト(例:英語動画なら “sunset, ocean, mountain”)も抽出する。プロバイダー選択はconfig.tomlllm_providerで切り替える。

2. 素材層(Pexels):抽出されたキーワードを使い、Pexels APIで該当する高画質動画クリップを複数取得する。Pexelsは商用利用可・帰属表示不要のフリー素材プラットフォームで、APIキーは無料登録で取得できる。取得したクリップは指定された片あたりの長さ(例:3秒)でランダムに繋ぎ合わされる。

3. TTS層(音声合成):生成された台本を音声に変換する。Edge TTS(Microsoft Edge内蔵のオンラインTTS、無料)、Azure Cognitive Services(高品質・有料)、SiliconFlow(中国系・低価格)などが選べる。READMEには「2024-04-16 v1.1.2 でAzure音声9種類を追加」と記載されており、Azureは追加投資する価値がある選択肢として案内されている。

4. 字幕層:字幕の生成方法はREADMEで2種類が明示されている。edgeモードはEdge TTSの結果からテキストとタイミングを直接取得するため高速だが品質が不安定、whisperモードはローカルでWhisper Large v3モデル(約3GB)を動かしてmp3を再認識するため遅いがタイミングが正確だ。WebUIから切り替え可能で、subtitle_providerを空にすれば字幕生成自体をスキップできる。

5. 合成層:moviepy・ffmpeg・ImageMagickを使って、動画クリップ・ナレーション音声・字幕・BGMを1本のmp4に合成する。出力はstorage/tasks/<task_id>/final-1.mp4に保存され、WebUIのプレビューで確認できる。バッチ生成を指定すればfinal-1.mp4final-N.mp4が一気に出力され、ユーザーが好きなものを選べる仕組みになっている。

この5層構造を頭に入れておくと、「動画が真っ黒で出力される=素材取得が失敗(Pexels APIキーまたは帯域)」「音声だけ出ない=TTS設定」「字幕がずれる=Whisperに切り替えるべき」といった切り分けが直感的にできる。

動作環境とシステム要件:CPU・GPU・OSの目安

READMEの「配置要求 📦」セクションに、最低・推奨・理想構成の3段階が明記されている。これを表に整理する。

項目 最低構成 推奨構成 理想構成
CPU 4コア 6〜8コア 8コア以上
RAM 4GB 8GB 16GB以上
GPU 不要 VRAM 4GB以上 VRAM 8GB以上
OS Windows 10以上 / macOS 11以上 / 主要Linux 同左 同左
Python 3.11推奨(pyproject.tomlで固定) 3.11 3.11
ディスク 5GB(whisperモデル含めると8GB) 20GB 50GB

GPUは原則必須ではない。 クラウドLLM(OpenAI/DeepSeek等)とEdge TTSとPexelsを使う限り、計算はクラウド側で済むので、ローカルはほぼffmpeg合成のみがCPU負荷になる。READMEも「如果你主要依赖云端 LLM、云端 TTS 和在线素材源,CPU 与内存比 GPU 更重要(クラウドLLM/TTS/素材を使うならGPUよりCPUとRAM優先)」と明記している。

GPUが効くのは2ケースに限られる。第一がfaster-whisperモードでローカル字幕生成する場合で、CTranslate2バックエンドがCUDAで2〜5倍高速化する。第二がOllamaやModelScopeでローカルLLMを動かす場合だが、これは別途VRAM 8GB以上が現実的な下限になる。

OSはWindows優先で開発されている雰囲気がある。 ワンクリック起動パッケージや動画チュートリアル(抖音/Douyin)はWindows向けで、ImageMagickのインストール手順もWindowsだけ「静的ライブラリ版を選ぶこと」など詳細だ。macOS/Linuxユーザーはbrew install imagemagickまたはapt-get install imagemagickで導入する。

インストール手順:3つの方法から自分に合うものを選ぶ

READMEは推奨経路として「Windowsユーザー:ワンクリック起動パッケージ/macOS・Linuxユーザー:uv sync --frozen/隔離環境希望:Docker」の3経路を提示している。それぞれの手順をまとめる。

選び方の早見表
・とにかく最短で試したい → Windows一键启动包 or Google Colab
・macOS / Linuxで本格運用 → uv sync --frozen(手動デプロイ)
・PC環境を汚したくない / サーバー運用 → Docker Compose
・GPU活用してWhisperやOllamaを動かしたい → 手動デプロイ(CUDA環境込み)

Windowsワンクリック起動パッケージ

READMEに記載のリンクから一键启动包(ワンクリック起動パッケージ)をダウンロードし、解凍する。解凍先のパスに中国語・特殊文字・空白を含めないことがREADMEで強調されている(例:D:\MoneyPrinterTurboは良いが、D:\私のツール\MoneyPrinterTurboはNG)。現行パッケージはv1.2.6の旧版なので、先にupdate.batを実行して最新コードに更新してからstart.batを起動する流れだ。

:: 解凍後のディレクトリで実行
update.bat
start.bat

ブラウザが自動で開かない場合はChrome/Edgeでhttp://localhost:8501を開く。Streamlitは初回起動時に「Welcome to Streamlit!」プロンプトでメールアドレスを尋ねるが、Enterで空送信して問題ない。

uvによる手動デプロイ(推奨:macOS / Linux / Windows上級者)

READMEはPython管理にuv(Astral社のRust製パッケージマネージャ)を推奨している。pip + venvより10〜100倍速く、uv.lockで依存関係が固定されるため再現性が高い。

# 1. uvをインストール(macOS / Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. リポジトリをクローン
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo

# 3. Python 3.11をインストール(uvが管理)
uv python install 3.11

# 4. 依存関係をロックファイルから同期
uv sync --frozen

# 5. ImageMagickをインストール(OS別)
brew install imagemagick          # macOS
sudo apt-get install imagemagick  # Ubuntu/Debian
sudo yum install ImageMagick      # CentOS/RHEL

# 6. WebUIを起動
uv run streamlit run ./webui/Main.py --browser.gatherUsageStats=False

uvが使えない環境では従来通りpip + venvでも動く(READMEに後方互換手順あり)が、READMEは「requirements.txtはpip互換のために残しているだけで、主依存定義はpyproject.toml」と明言しており、新規セットアップはuv sync --frozenがベストプラクティスだ。

Docker Composeによる隔離デプロイ

PCの環境を汚したくない、複数バージョンを同時に試したい、社内サーバーで稼働させたい場合はDockerが最も安全だ。

# Docker Desktopをインストール後
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo

# 最新のDocker Desktopはcompose v2が同梱されている
docker compose up
# 古い環境では `docker-compose up`

起動後は以下のURLにアクセスする。

  • WebUI: http://0.0.0.0:8501
  • REST API: http://0.0.0.0:8080/docs(Swagger UI) または http://0.0.0.0:8080/redoc

Docker構成は同梱のdocker-compose.ymlにwebUI(Streamlit)とAPI(FastAPI)の2サービスが定義されている。ホスト側でconfig.tomlを編集してマウントすれば、コンテナ再起動なしで設定変更を反映できる。

APIキーの設定:LLMプロバイダーと素材ソースの両方が必要

MoneyPrinterTurboは「LLMプロバイダー」と「Pexels(素材)」の2つのAPIキーが最低限必要だ。READMEの設定手順を整理する。

WebUI右上の「Settings」または、config.example.tomlconfig.tomlにコピーして直接編集する。以下は最小限の設定例だ。

[app]
# LLMプロバイダーの選択
llm_provider = "deepseek"  # または openai, moonshot, gemini, ollama, pollinations 等

# Pexels APIキー(必須・無料登録)
# https://www.pexels.com/api/ から取得
pexels_api_keys = ["your_pexels_api_key_here"]

# LLMプロバイダー別のAPIキー
[app.deepseek]
deepseek_api_key = "sk-xxxxxxxxxxxxxxxx"
deepseek_base_url = "https://api.deepseek.com"
deepseek_model_name = "deepseek-chat"

[app.openai]
openai_api_key = "sk-xxxxxxxxxxxxxxxx"
openai_base_url = "https://api.openai.com/v1"
openai_model_name = "gpt-4o-mini"

[app.ollama]
ollama_base_url = "http://localhost:11434/api"
ollama_model_name = "qwen2.5:7b"

# TTSの選択
subtitle_provider = "edge"  # edge or whisper
無料で動かすミニマム構成
予算ゼロで試すなら、LLMは pollinations(APIキー不要・OpenAI互換無料エンドポイント)、TTSは edge(Edge TTSは無料)、字幕は edge、素材はPexels無料APIキーで完結する。Ollama+ローカルWhisperにすればAPIキー類は一切不要でオフライン運用も可能だ。

APIキーの取得先一覧:

  • Pexels(必須): https://www.pexels.com/api/ にメール登録 → 即時発行
  • DeepSeek(中国系・コスパ最強): https://platform.deepseek.com/ → 中国国内ユーザーは登録時にクレジット付与
  • OpenAI: https://platform.openai.com/api-keys
  • Google Gemini: https://aistudio.google.com/apikey
  • Moonshot: https://platform.moonshot.cn/console/api-keys
  • MiniMax: https://www.minimax.io/platform/
  • Pollinations: APIキー不要、pollinationsを選ぶだけ

中国本土からのアクセスではOpenAI/Gemini系がVPN必須になるため、READMEは「中国用户建议使用 DeepSeek 或 Moonshot 作为大模型提供商」と明示している。日本からアクセスする場合はDeepSeek API(コスト約$0.14/1M tokens)かGemini 2.0 Flash(無料枠で十分回せる)がコストパフォーマンス上のスイートスポットだ。

対応するLLM・TTS・字幕プロバイダーの比較表

選択肢が多すぎて迷うので、用途別に整理する。

プロバイダー 種類 コスト目安 APIキー 中国本土からの可用性 日本人ユーザーへの推奨度
OpenAI (gpt-4o-mini) LLM 約$0.15/1M入力 必須 VPN必須 高(品質安定)
DeepSeek (deepseek-chat) LLM 約$0.14/1M 必須 直接アクセス可 高(コスパ)
Moonshot (moonshot-v1) LLM 約¥12/1M 必須 直接アクセス可 中(中国語特化)
Gemini 2.0 Flash LLM 無料枠あり 必須 VPN必須 高(無料枠大)
Ollama(ローカル) LLM 0円 不要 - 中(GPU推奨)
Pollinations LLM 0円 不要 - 中(試用向け)
ModelScope LLM 無料枠あり 必須 直接アクセス可 低(中国登録必要)
Edge TTS TTS 0円 不要 直接アクセス可 高(標準推奨)
Azure TTS TTS 従量課金 必須 直接アクセス可 中(高品質)
SiliconFlow TTS TTS 低価格 必須 直接アクセス可 低(中国語特化)
Edge字幕モード 字幕 0円 不要 - 高(速い)
Whisper Large v3 字幕 0円(ローカル) 不要 - 中(精度高・遅い)

初心者の現実的な組み合わせは、LLM=Gemini 2.0 Flash(無料)、TTS=Edge TTS(無料)、字幕=Edge mode(速い)、素材=Pexels(無料)の完全無料セットアップ。月に数十本作るだけならAPI料金は0円で済む。

品質を上げたい中級者向けは、LLM=DeepSeek、TTS=Azure Neural、字幕=Whisper Large v3。1本あたり数円〜数十円程度のAPIコストで、人の手で作ったレベルに近いナレーションと正確な字幕が得られる。

実際に動画を生成する:初心者向けステップバイステップ

ここからは、起動後のWebUIで実際に1本動画を生成する手順を、画面の操作順に沿って解説する。

Step 1: WebUIにアクセスする

uv run streamlit run ./webui/Main.pyを実行するか、Windowsならwebui.bat、macOS/Linuxならsh webui.shをダブルクリック相当で起動する。ブラウザが自動で開き、http://localhost:8501にStreamlitのMoneyPrinterTurbo画面が表示される。空白ページが出る場合はChromeかEdgeで開き直す(Safariは一部のJSが動かないことがREADMEで報告されている)。

Step 2: 基本設定を確認する

画面上部または左サイドバーから以下を設定する。

  • LLM Provider: deepseek / openai / pollinationsなど、APIキーを設定済みのプロバイダーを選択
  • Subtitle Provider: edge(推奨)またはwhisperまたは空欄(字幕なし)
  • Pexels API Key: 取得済みのキーを入力(複数入れてラウンドロビン可能)

初回はLLMとPexelsのキーが正しいか、簡単なテーマ(例:「コーヒーの歴史」)で動作確認するのが安全だ。

Step 3: 動画パラメータを指定する

「Video Subject(動画のテーマ)」入力欄に1〜2文でテーマを入れる。日本語ユーザー向けの例:

  • 「在宅勤務を集中するための5つの習慣」
  • 「東京の隠れた絶景スポット3選」
  • 「Pythonエンジニアが転職前に押さえるべきAIスキル」

その下のオプションで以下を選ぶ。

  • Video Language: zh-CN / en / ja などのテーマ言語
  • Video Aspect Ratio: 9:16(縦・TikTok/Shorts向け)または 16:9(横・YouTube向け)
  • Video Clip Duration: 各素材クリップの長さ(秒)。3〜5秒が一般的
  • Video Count: 一度に生成する本数(複数生成して気に入ったものを採用)
  • Video Voice: 音声の言語と声種(”zh-CN-XiaoxiaoNeural”など)
  • Subtitle Font/Color/Size: 字幕の見た目調整
  • Background Music: ランダム選曲または特定ファイル指定、音量0〜1.0

Step 4: 「Generate Video」を押して待つ

生成ボタンを押すと、画面下部のプログレスバーで進捗が表示される。フローは以下の通り。

  1. LLM呼び出し(10〜30秒):台本とキーワード生成
  2. Pexels素材取得(10〜60秒):複数クリップDL
  3. TTS呼び出し(10〜30秒):音声合成
  4. 字幕生成(5〜120秒):edgeなら数秒、whisperなら数分
  5. 動画合成(30〜180秒):moviepy + ffmpegでmp4書き出し

合計で短編1本あたり3〜10分程度が目安だ(クラウドLLM/TTS + Edge字幕の構成)。完了するとプレビュー再生ができ、storage/tasks/<task_id>/配下にmp4が保存される。

Step 5: 出力ファイルを確認する

生成された動画は以下のパスに出力される。

MoneyPrinterTurbo/
├── storage/
│   └── tasks/
│       └── <task_id>/        # ランダムなID
│           ├── audio.mp3     # ナレーション音声
│           ├── subtitle.srt  # 字幕ファイル
│           ├── script.json   # 生成された台本
│           ├── combined.mp4  # 素材結合動画(音声なし)
│           ├── final-1.mp4   # 最終動画(バッチ生成時は1, 2, 3...)
│           └── final-2.mp4

複数本生成した場合はfinal-1.mp4final-N.mp4を見比べて好きなものを使う。素材クリップの選択順がランダムなので、同じ台本でも雰囲気が変わる。

トラブルシューティング:初心者が躓きやすい5つの落とし穴

READMEの「FAQ」セクションとIssue trackerで頻出する問題を整理する。

1. RuntimeError: No ffmpeg exe could be found

通常はimageio-ffmpegが自動でffmpegをダウンロードするが、ネットワーク制限環境(中国本土・社内プロキシ)では失敗する。手動でgyan.devからffmpeg実行ファイルをダウンロードし、config.tomlに絶対パスを設定する。

[app]
# Windowsの場合は\\で区切る
ffmpeg_path = "C:\\Users\\harry\\Downloads\\ffmpeg.exe"
# macOS / Linux
# ffmpeg_path = "/usr/local/bin/ffmpeg"

2. ImageMagick security policy ... /tmp/tmpXXX.txt

Linux環境でImageMagickのpolicy.xmlがデフォルトでテキストファイルの読み書きをブロックしているケース。/etc/ImageMagick-7/policy.xml(バージョン番号は環境による)を編集し、pattern="@"を含む行のrights="none"rights="read|write"に変更する。

sudo sed -i 's/rights="none" pattern="@"/rights="read|write" pattern="@"/' \
  /etc/ImageMagick-7/policy.xml

Docker環境でこれが起きる場合は、Dockerfileに同等のsed処理を追加するか、コンテナ起動時にpolicy.xmlをマウント差し替えする。

3. OSError: [Errno 24] Too many open files

macOS/Linuxで複数動画を同時生成すると発生しやすい。シェルのファイルディスクリプタ上限を引き上げる。

# 現在の上限を確認
ulimit -n
# 引き上げる(このシェル限定)
ulimit -n 10240

恒久化したい場合は/etc/security/limits.conf(Linux)または/Library/LaunchDaemons/limit.maxfiles.plist(macOS)に設定する。

4. Whisperモデルのダウンロード失敗

subtitle_provider = "whisper"を指定した場合、初回実行時にHuggingFaceからWhisper Large v3モデル(約3GB)をダウンロードしようとする。中国本土からはHuggingFaceがブロックされており、READMEは百度网盘・夸克网盘のミラーURLを案内している。日本からは通常アクセス可能だが、回線が細い環境では分割DLにフォールバックする方が安全だ。

ダウンロード後は以下のパス構造で配置する。

MoneyPrinterTurbo/
└── models/
    └── whisper-large-v3/
        ├── config.json
        ├── model.bin
        ├── preprocessor_config.json
        ├── tokenizer.json
        └── vocabulary.json

5. APIキーは正しいのに「LLMからの応答が空」

LLMプロバイダー側のレート制限、またはbase_urlの指定ミスが大半。config.tomlで以下を確認する。

  • <provider>_base_urlが正しいか(DeepSeekはhttps://api.deepseek.com、Ollamaはhttp://localhost:11434/apiなど)
  • <provider>_model_nameが当該プロバイダーで実在するか(gpt-4o-mini、deepseek-chat、qwen2.5:7bなど)
  • レート制限:Gemini無料枠は60RPM、OpenAI Tier 1は500RPMなど。短時間に複数本生成するならスループット制限を確認

Streamlitターミナル側にスタックトレースが流れているので、エラーメッセージを直接読むのが最短だ。

商用利用と著作権:素材ソースとライセンスの境界

MoneyPrinterTurboで生成した動画をYouTubeやTikTokで広告収益化したい場合、3つの権利レイヤーを意識する必要がある。

1. MoneyPrinterTurbo本体のライセンス:MITライセンス。改変・商用利用・再配布いずれも自由で、著作権表示の維持のみが条件。コードを社内で改造して使うのも問題ない。

2. Pexels素材のライセンス:Pexelsライセンスは「商用利用可・帰属表示不要」だが、いくつか禁止事項がある。同サイト利用規約から要点を抜粋する。

  • 特定可能な人物・著作物・商標を主要な被写体として使う場合、それらの権利は別途確認が必要
  • 素材そのままを再販する(例:素材集として転売)行為は禁止
  • 不快感を与える使い方や、被写体の評判を貶める使い方は禁止

短編動画の背景映像として使う通常用途は基本的にOKだが、人物の顔がアップで写る素材を「特定の主張・批判」に使うのは避けるべきだ。

3. BGMのライセンス:READMEはresource/songs/配下のデフォルトBGMについて「来自于 YouTube 视频,如有侵权,请删除(YouTube動画由来。権利侵害があれば削除してほしい)」と明記している。商用配信する場合はこの同梱BGMを使うべきでなく、自前で著作権フリーBGM(YouTube Audio Library、DOVA-SYNDROME等)に差し替える必要がある。

YouTube・TikTokのAIコンテンツポリシーにも注意
YouTubeは2024年から「ユーザーを欺くことを意図した大量生成・反復・再利用コンテンツ」をスパムと位置付け、Made-for-Kids要件と組み合わせて広告剥奪・チャンネル停止の対象にしている。MoneyPrinterTurbo自体は規約違反ではないが、AIで自動生成したものをそのまま大量投稿するとアルゴリズムから不利な扱いを受けやすい。テーマ選定・台本のレビュー・サムネ差別化は人間が必ず通す運用が現実的だ。

APIモードとバッチ実行:上級者向けの自動化

WebUIだけでなく、REST APIモードでスケジュール実行や別アプリ連携も可能だ。uv run python main.pyでFastAPI(Uvicorn)が0.0.0.0:8080で起動する。

# 動画生成エンドポイントの例(curl)
curl -X POST "http://localhost:8080/api/v1/videos" \
  -H "Content-Type: application/json" \
  -d '{
    "video_subject": "在宅勤務を集中するための5つの習慣",
    "video_aspect": "9:16",
    "video_clip_duration": 3,
    "video_count": 1,
    "video_language": "ja",
    "voice_name": "ja-JP-NanamiNeural",
    "subtitle_enabled": true,
    "n_threads": 2
  }'

レスポンスにはタスクIDが返るので、ポーリングまたはWebSocketで進捗確認し、完了したらstorage/tasks/<task_id>/final-1.mp4を取得する。

/docs(Swagger UI)または/redocにアクセスすれば、全エンドポイントとパラメータ仕様がインタラクティブに確認できる。cronで毎日定時にトピックを投げ、生成完了後に自動でYouTubeにアップロードする、といったパイプラインを組むのは難しくない。

プロバイダー別の完全な設定例:OpenAI / Azure / Gemini / Ollama / DeepSeek

WebUIの「Settings」で入力するキー群は、最終的にconfig.tomlに書き出される。プロバイダーごとに「どのキーが必須か」「base_urlの正しい綴り」「model_nameの命名規則」が微妙に違い、ここを外すと「APIキーは正しいのに応答が空」状態に陥る。READMEのconfig.example.tomlと各プロバイダーの公式ドキュメントを突き合わせた、コピペで動く最小構成を5系統分まとめる。

OpenAI(GPT-4o-mini / GPT-4.1 mini)

[app]
llm_provider = "openai"
pexels_api_keys = ["YOUR_PEXELS_KEY"]
subtitle_provider = "edge"

[app.openai]
openai_api_key = "sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
openai_base_url = "https://api.openai.com/v1"
openai_model_name = "gpt-4o-mini"

公式エンドポイントは末尾に/v1を必ず付ける。gpt-4o-miniは短編動画台本(300〜800字程度)には十分すぎる性能で、コストも$0.15/1M入力・$0.6/1M出力と安い。1本生成で消費するのは平均2,000〜5,000トークン程度なので、1本あたり0.1〜0.3円規模に収まる。Azure経由で叩く場合は次節を参照。

Azure OpenAI Service

[app]
llm_provider = "azure"

[app.azure]
azure_api_key = "your-azure-key"
# Azure リソースエンドポイント(resource_name は自分のものに置換)
azure_base_url = "https://YOUR_RESOURCE_NAME.openai.azure.com/"
# Azure はデプロイ名を指定する(モデル名ではない点に注意)
azure_model_name = "your-deployment-name"
azure_api_version = "2024-08-01-preview"
Azure固有のハマりどころ
Azure OpenAIは「モデル名」ではなく「デプロイ名」を指定する仕様で、ここをgpt-4o-miniのような汎用名にすると404になる。Azure Portalの「Azure OpenAI Studio → Deployments」で実際にデプロイした名前(例:my-gpt4o-mini-prod)を入れること。azure_api_versionも日付付き文字列で、古い値だと429や404が返る。

Google Gemini(2.0 Flash 無料枠)

[app]
llm_provider = "gemini"

[app.gemini]
gemini_api_key = "AIzaSyXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
gemini_model_name = "gemini-2.0-flash"

base_urlの指定は不要(公式SDKがハンドリング)。Gemini 2.0 Flashの無料枠は15 RPM・1Mトークン/日とMoneyPrinterTurboの用途には潤沢で、API料金ゼロで月100本以上回せる。日本リージョンから直叩き可能。gemini-2.0-flash-thinking-expを指定すれば推論モードに切り替わるが、台本生成には過剰なので通常版で十分だ。

Ollama(ローカルLLM・APIキー不要)

[app]
llm_provider = "ollama"

[app.ollama]
ollama_base_url = "http://localhost:11434/v1"
ollama_model_name = "qwen2.5:7b"

Ollamaを別ターミナルでollama serveし、事前にollama pull qwen2.5:7bしてモデルをDLしておく。base_urlの末尾は/v1(OpenAI互換エンドポイント)であって/apiではない点に注意。VRAM 8GB以上のGPUがあればqwen2.5:14bに上げると台本品質が一段上がる。完全オフライン運用したい場合はTTSもedgeの代わりに別のローカルTTS(Kokoro等)に差し替える必要がある。

DeepSeek(コスト最安・中国本土直アクセス)

[app]
llm_provider = "deepseek"

[app.deepseek]
deepseek_api_key = "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
deepseek_base_url = "https://api.deepseek.com/v1"
deepseek_model_name = "deepseek-chat"

DeepSeek-V3ベースのdeepseek-chatは$0.14/1M入力・$0.28/1M出力でGPT-4o-miniよりさらに安い。中国語ナレーション台本の自然さは中華系プロバイダー随一で、Moonshot/Qwen より日本語の流暢さも高い印象がある。日本からは直叩き可能(VPN不要)。deepseek-reasonerに切り替えれば思考過程付きで台本生成できるが、コストも7倍程度跳ねるので通常用途ではdeepseek-chatで十分だ。

マルチプロバイダーフォールバックの工夫

config.tomlは1ファイル1プロバイダーが原則だが、本番運用ではcron実行のたびにconfig.deepseek.tomlconfig.gemini.tomlを環境変数で切り替えるラッパースクリプトを書いておくと、API障害時に自動でフォールバックできる。pexels_api_keys = [...]にキーを複数並べるとラウンドロビン的に消費されるので、Pexels無料枠(200req/h)を超える運用ではキーを2〜3本登録しておくと安心だ。

字幕・BGM・解像度のカスタマイズ:細部の調整ノブ

短編動画の「視聴維持率」は字幕の読みやすさとBGMで大きく変わる。MoneyPrinterTurboはWebUIから直感的に調整できるが、API/CLIで自動化するならconfig.tomlの指定を把握しておく必要がある。READMEとconfig.example.tomlの主要キーを実例付きでまとめる。

動画の解像度・尺・素材クリップ

設定キー 取りうる値 説明
video_aspect 9:16 / 16:9 / 1:1 縦/横/正方形。Shorts・TikTokは9:16、YouTube本編は16:9、Instagramフィードは1:1
video_clip_duration 2〜10(秒) 各Pexels素材の表示秒数。3〜4秒が一般的。長すぎると単調、短すぎるとちらつく
video_count 1〜N 1リクエストで何本生成するか。素材ランダム選択なので3本生成して気に入った1本を採用が定番
video_concat_mode random / sequential 素材の繋ぎ方。デフォルトのrandomで十分
n_threads 1〜CPU論理コア数 ffmpeg合成のスレッド数。CPUが詰まる場合は手動で増やす

字幕スタイルの詳細指定

[app]
subtitle_provider = "edge"     # edge / whisper / ""(無効)
subtitle_position = "bottom"   # top / bottom / center / custom
subtitle_font = "STHeitiMedium.ttc"  # resource/fonts/ 配下のファイル名
font_size = 60                 # 1080p縦動画なら50〜80が読みやすい
text_fore_color = "#FFFFFF"    # 字幕本体の色
stroke_color = "#000000"       # 縁取りの色(背景が動く動画では必須)
stroke_width = 1.5             # 縁取りの太さ
custom_position = 70.0         # subtitle_position="custom" 時の画面上端からの%

resource/fonts/配下に同梱されているフォントは中華フォント中心なので、日本語ナレーションを使う場合はNoto Sans JPなどの日本語フォントを追加してsubtitle_fontで指定する。フォントを変更しても字幕がそのままになる場合はWebUI再起動が必要だ。

BGMの差し替えと音量バランス

[app]
bgm_type = "random"            # random / "" / カスタムファイルパス
bgm_file = ""                  # bgm_type="" の時に使う特定ファイル
bgm_volume = 0.2               # 0.0〜1.0。0.2前後がナレーションを邪魔しない
voice_volume = 1.0             # ナレーションの音量
voice_rate = 1.0               # 0.5(遅い)〜2.0(早い) Edge TTSの速度

同梱BGMはYouTube由来でライセンス的にグレーなので、商用配信時はYouTube Audio LibraryDOVA-SYNDROMEからダウンロードした著作権フリー楽曲をresource/songs/配下に置き、bgm_type = ""bgm_file = "resource/songs/your_track.mp3"で指定する。bgm_volume = 0.2はナレーション音量1.0との対比で経験的に最適で、これより上げるとナレーションが埋もれる。

音声(声種)の選び方

voice-list.txtにEdge TTS・Azure TTS両系統の対応Voice IDが全て列挙されている。日本語向けによく使われるのは以下。

  • ja-JP-NanamiNeural:女性・標準・落ち着いた声(ナレーション向き)
  • ja-JP-KeitaNeural:男性・標準・落ち着いた声(解説向き)
  • ja-JP-AoiNeural:女性・若め・親しみやすい声(HowTo向き)
  • ja-JP-DaichiNeural:男性・若め・カジュアル(バラエティ向き)

Azure NeuralはEdge TTSと声優は同じだが、追加の感情パラメータ(style="cheerful"等)をSSML経由で渡せる点で表現力が上だ。MoneyPrinterTurboのWebUIから直接SSML指定はできないので、app/services/voice.pyを改造して<speak><voice><prosody>を組み立てる必要がある。

MoneyPrinter / MoneyPrinterV2 との違い:3プロジェクトの位置付け

「MoneyPrinter」と名の付くOSSが3つあり混同されやすいので、関係を整理する。

プロジェクト 作者 スター ライセンス 主機能 カバー範囲
MoneyPrinter(無印) FujiwaraChoki 約14k MIT YouTube Shorts自動生成 1動画生成のみ
MoneyPrinterTurbo(本記事) harry0703 58k+ MIT 短編動画自動生成・WebUI・API 1動画生成+WebUI+REST API
MoneyPrinterV2 FujiwaraChoki 約30k AGPL-3.0 動画+Twitter Bot+アフィリエイト+コールドメール 動画生成+SNS投稿+営業自動化

MoneyPrinter(無印) は2023年末に登場した元祖プロジェクトで、英語ナレーション・最小限のCLIで動く。シンプルで読みやすいコードベースだが、機能拡張は止まっている。学習目的でAI動画生成の最小実装を読むには向く。

MoneyPrinterTurbo(本記事の主題) はMoneyPrinter(無印)から派生した中国コミュニティ製フォークで、13系統のLLM対応・Streamlit WebUI・FastAPI・Dockerサポートを追加し、原型を大きく上回るスター数を獲得した。MITライセンスのため商用フォークや組み込み利用も自由。「動画を1本作るだけ」のスコープは無印を踏襲しており、SNS投稿フローは持たない。

MoneyPrinterV2 はFujiwaraChoki氏が無印を作り直した新作で、動画生成に加えてTwitter Bot・Amazonアフィリエイト・コールドメール送信までを1ツールに統合した「全自動収益化」志向のプロジェクトだ。ライセンスがAGPL-3.0なのでSaaS化や社内専用ツールへの組込みは要注意。詳細な機能比較とToSリスクの分析は MoneyPrinterV2完全ガイド で扱っている。

選び方の指針
・短編動画OSSを学習用に読みたい → MoneyPrinter(無印)
・動画自動生成を実用・商用フォーク・社内利用したい → MoneyPrinterTurbo(本記事)
・動画+SNS投稿+アフィリエイトを1ツールで回したい → MoneyPrinterV2(ToSリスク要評価)
・字幕翻訳・吹き替えを加えたい → 上記いずれかに [VideoLingo](/automation/huansherevideolingo/) を組み合わせる
・YouTube投稿フローまで自動化したい → 上記いずれかに [youtube-automation-agent](/automation/youtube-automation-agent/) を組み合わせる

実運用パイプライン:cron + APIで毎朝1本自動生成する例

WebUIで触り終えたら、次のステップはバッチ実行の自動化だ。MoneyPrinterTurboのREST APIにcronから日次でリクエストを投げ、完成したmp4を取得するだけの最小パイプラインを示す。

#!/bin/bash
# daily_video.sh — 毎日08:00 JSTに1本生成して /var/videos/ にコピー
set -euo pipefail

API="http://localhost:8080/api/v1/videos"
TOPICS=("在宅勤務を集中するための5つの習慣"
        "東京の隠れた絶景スポット3選"
        "Pythonエンジニア向けAIスキル"
        "今週学べる便利なターミナルTips")
TOPIC="${TOPICS[$RANDOM % ${#TOPICS[@]}]}"

# 1. ジョブ投入
TASK_ID=$(curl -sS -X POST "$API" \
  -H "Content-Type: application/json" \
  -d "{
    \"video_subject\": \"$TOPIC\",
    \"video_aspect\": \"9:16\",
    \"video_clip_duration\": 3,
    \"video_count\": 1,
    \"video_language\": \"ja\",
    \"voice_name\": \"ja-JP-NanamiNeural\",
    \"subtitle_enabled\": true,
    \"n_threads\": 4
  }" | jq -r '.data.task_id')

echo "[INFO] task_id=$TASK_ID topic=$TOPIC"

# 2. 完了までポーリング(最大15分)
for i in $(seq 1 90); do
  STATE=$(curl -sS "http://localhost:8080/api/v1/tasks/$TASK_ID" | jq -r '.data.state')
  echo "[$(date +%H:%M:%S)] state=$STATE"
  [ "$STATE" = "completed" ] && break
  [ "$STATE" = "failed" ] && { echo "[ERROR] generation failed"; exit 1; }
  sleep 10
done

# 3. 出力ファイルをコピー
cp "storage/tasks/$TASK_ID/final-1.mp4" "/var/videos/$(date +%F)_$TASK_ID.mp4"
echo "[OK] saved /var/videos/$(date +%F)_$TASK_ID.mp4"

crontabには以下を仕込む。

# 毎朝8時に1本生成(生成所要は5〜10分)
0 8 * * * /home/user/MoneyPrinterTurbo/daily_video.sh >> /var/log/daily_video.log 2>&1

この最小パイプラインに後段を足すと、yt-dlpの逆向き(YouTube Data API v3でアップロード)・S3アップロード・Slack通知などへ素直に拡張できる。注意点として、Pexelsの無料APIは200req/h制限があるので、video_countを大きくしたり並行ジョブを増やす場合はキーを複数登録するか、有料プランへの切替を検討する。

YouTubeへの自動アップロードを併せて組みたい場合はyoutube-automation-agent解説が公開フェーズまでカバーしている。MoneyPrinterTurboで動画本体を作り、youtube-automation-agentの公開モジュールにファイルを渡す、というハイブリッド構成が安定する。

まとめ:MoneyPrinterTurboはどんな人に向くか

MoneyPrinterTurboはAI動画自動生成のOSSとして、機能の網羅性・LLMプロバイダーの選択肢の幅・デプロイの容易さの3点で頭ひとつ抜けたプロジェクトだ。商用クラウドサービスの月額料金(Pictory、Synthesia等で月$30〜100)と比べると、APIキー実費のみで動かせるコスト優位性は無視できない。

向くユーザー:

  • YouTube Shorts/TikTok/Reelsで日次・週次に短編動画を量産したい個人クリエイター
  • AI動画生成の内部構造を理解しながら使いたい開発者
  • 商用SaaSではカスタマイズが効かない法人ユーザー(自前APIキー・自前LLM)
  • 中国国内ユーザーで、DeepSeek/Moonshotで安価に運用したい層

向かないユーザー:

  • 完全GUI操作のみで設定ファイルを触りたくない非エンジニア
  • フルアニメーション・トーク主体・複雑な編集効果が必要なコンテンツ作成者
  • 「素材選びと演出が動画の本質」と考える品質重視クリエイター

エコシステム的には、字幕翻訳・吹き替えに強い VideoLingo解説 や、5エージェント構成でYouTube投稿まで自動化する youtube-automation-agent解説 と組み合わせて使うパイプラインも現実的だ。MoneyPrinterTurboで動画本体を作り、VideoLingoで多言語化し、youtube-automation-agentで投稿フローに乗せる、といった構成は実運用でも安定する。本家系列の MoneyPrinterV2解説 は動画生成に加えてSNS投稿・アフィリエイトまでスコープに入る別系統のフォークで、用途で使い分けると無駄がない。

短編動画市場で勝負したいなら、まずは無料セット(Gemini Flash + Edge TTS + Pexels + Edge字幕)で1本作ってみて、品質の手応えを掴むのが入り口として最も低リスクだ。Google ColabノートブックがREADMEに用意されているので、PC環境を汚さずに30分以内で1本目を生成できる。

参照ソース