Install and Run MoneyPrinterTurbo on Windows (v1.2.7, April 2026 Guide)
Last updated April 2026 — refreshed for the current MoneyPrinterTurbo release (tag v1.2.7 on the upstream repo at the time of writing), Python 3.11, the new uv dependency workflow, and current ImageMagick/FFmpeg PATH guidance for Windows 10 and Windows 11.
This is a deployment guide for getting MoneyPrinterTurbo — the open-source AI short-video generator (22k+ GitHub stars, 3.3k forks) — running cleanly on a Windows machine. It covers the three supported install paths (one-click package, Docker Desktop, manual conda + uv), the config.toml fields you actually have to fill in, and the PATH/firewall pitfalls that account for most "it doesn't start" tickets on the upstream repo.
What changed in 2026The current upstream tag is v1.2.7, which restored Edge TTS compatibility, hardened the video-merge pipeline, and adopteduv+pyproject.tomlas the primary dependency manifest.requirements.txtstill works for legacy installs.Default Gemini model is nowgemini-2.5-flashinconfig.example.toml; theopenai_model_namedefault isgpt-4o-mini;deepseek_model_namedefaults todeepseek-chat(DeepSeek-V3.2 / V4 depending on the upstream alias).13+ LLM providers are now wired in: OpenAI, Azure, Moonshot, Qwen, Gemini, DeepSeek, Ollama, g4f, OneAPI, Cloudflare Workers AI, MiniMax, ERNIE, ModelScope, Pollinations, SiliconFlow.Pixabay is now a first-class video source alongside Pexels (video_source = "pexels"or"pixabay"inconfig.toml).WebUI default port is 8501 (Streamlit), API default port is 8080 (FastAPI). Older guides referencing only port 8080 missed the WebUI port — both must be free or remapped.The static-library ImageMagick build is now mandatory on Windows; the dynamic build silently fails inside MoviePy. Use theQ16-x64-staticinstaller.
Want the full picture? Read our continuously-updated AI Coding Agents: Complete Guide (2026) — Cursor, Cline, Aider, OpenHands, Claude Code — how engineering teams pick and deploy AI coding agents..
TL;DR — which install path should you pick?
| Path | Best for | Setup time | Updates | Pain points |
|---|---|---|---|---|
Windows one-click package (v1.2.6 base + update.bat) | Non-developers, quick demos | ~10 min | update.bat pulls latest main | Older binary; some users hit update.bat lock errors |
Docker Desktop + docker compose up | Anyone with WSL2 already enabled | ~15 min | docker compose pull | Needs Docker Desktop license for >250-employee orgs; first build is ~3 GB |
Manual: conda + uv sync | Developers iterating on the code | ~25 min | git pull && uv sync | You manage ImageMagick + FFmpeg + PATH yourself |
If you just want videos out the door, take Docker. If you want to hack on the code, take the manual path. The one-click package is a third option, but you will hit the same PATH issues described below the moment something breaks.
What MoneyPrinterTurbo actually does
MoneyPrinterTurbo takes a topic or keyword and produces a finished short-form video (9:16 portrait or 16:9 landscape) by chaining four steps:
- Script generation — an LLM (your choice of provider) writes the voice-over copy.
- Material sourcing — the script is segmented into search terms and B-roll clips are pulled from Pexels or Pixabay.
- Voice + subtitles — Microsoft Edge TTS (default, free) or local Whisper handles the audio and captions; SiliconFlow is the optional paid alternative.
- Compositing — MoviePy + FFmpeg + ImageMagick stitch the clips, audio, captions, and background music into a 1080×1920 (or 1920×1080) MP4.
The architecture is two services: a Streamlit WebUI on port 8501 for interactive use and a FastAPI REST API on port 8080 with Swagger docs at /docs. Both can run side-by-side; Docker Compose ships them as separate containers.
System prerequisites (verified for v1.2.7)
- OS: Windows 10 (build 19045+) or Windows 11. WSL2 is required only for the Docker path.
- CPU / RAM: 4 cores / 4 GB minimum; 6–8 cores / 8 GB recommended. No GPU is required if you use cloud LLMs and Edge TTS.
- Disk: ~6 GB free for the venv + Whisper models + clip cache.
- Python: 3.11 (3.12 currently breaks one of the audio dependencies — stay on 3.11).
- Miniconda: the latest installer from Anaconda. Used for environment isolation;
venvworks, but conda makes Python pinning easier on Windows. - Git for Windows: 2.45+.
- ImageMagick:
ImageMagick-7.x-Q16-x64-static.exe. The static build is mandatory on Windows; the dynamic build silently fails inside MoviePy. - FFmpeg: optional — MoneyPrinterTurbo will auto-download a portable build on first run if FFmpeg is not on your PATH.
Path A — Windows one-click package (fastest)
- Open the README on the official MoneyPrinterTurbo repo and follow the Baidu Netdisk or Google Drive link in the "Windows Integrated Package" section.
- Extract the archive to a path that contains only ASCII characters, no spaces, and no Chinese/Korean/accented characters.
C:\MPTis a safe choice;C:\Users\名前\Downloads\MoneyPrinterTurbois not. - Run
update.batonce. This pulls the latestmainbranch on top of the v1.2.6 binary and is the only way to get the v1.2.7 patches into the bundled distribution today. - Edit
config.toml— see the configuration reference below. - Run
start.bat. The WebUI opens athttp://localhost:8501.
Path B — Docker Compose (most reliable)
Install Docker Desktop with WSL2 backend enabled. Then:
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo
copy config.example.toml config.toml
notepad config.toml
docker compose up -dThe compose file launches two services: webui on :8501 and api on :8080. Both bind to 0.0.0.0 inside the container, so make sure neither host port is in use. To remap, edit the ports: stanza in docker-compose.yml before the first up.
Gotchas:
- If
docker compose uphangs at "Pulling fs layer" for >5 min, it's almost always Docker Desktop's DNS getting wedged. Restart Docker Desktop and retry. - The first build downloads ~3 GB of layers (Python base + FFmpeg + Whisper). Subsequent
docker compose pullcalls are incremental. - You do not need ImageMagick installed on the host — it's baked into the container image.
Path C — Manual install with conda and uv (developer mode)
Step 1 — Install Python, Miniconda, Git, ImageMagick
- Python 3.11.x — tick Add Python to PATH on the first installer screen.
- Miniconda — accept the default "Just me" install; do not tick "Add Miniconda3 to PATH" (it conflicts with the system Python on a lot of corporate images). Instead, always launch the "Anaconda Prompt" shortcut from the Start menu.
- Git for Windows — defaults are fine.
- ImageMagick 7.x Q16-x64-static — during install, tick Install development headers and libraries for C and C++ and Add application directory to your system path. The default install path is
C:\Program Files\ImageMagick-7.1.x-Q16.
Step 2 — Verify your PATH (the step that fixes 80% of issues)
Open a fresh Command Prompt (not a leftover one from before the installs) and run:
python --version
git --version
magick --version
ffmpeg -versionExpected: Python 3.11.x, git version 2.45+, ImageMagick 7.1.x, and either an FFmpeg version banner or "not recognized" (FFmpeg is optional — MoneyPrinterTurbo will fetch a portable build on first run).
If magick --version fails:
- Press
Win, type "environment variables", open Edit the system environment variables → Environment Variables…. - Under System variables, select
Path→ Edit…. - Confirm
C:\Program Files\ImageMagick-7.1.x-Q16is present. If not, add it. - If it's present but
magickstill fails, the ImageMagick installer added the entry at the top ofPath; some Windows shells truncate after a duplicate entry. Move the ImageMagick line to the bottom of the list. - Open a brand-new Command Prompt — the old one keeps the stale environment.
If magick works but convert calls something else, that's the Windows built-in convert.exe (filesystem conversion utility). MoneyPrinterTurbo on v1.2.7 calls magick directly via MoviePy, so this no longer matters — but old imagemagick_path entries pointing at convert.exe will fail. Point at magick.exe instead.
Step 3 — Clone, create the env, install dependencies
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo
conda create -n MoneyPrinterTurbo python=3.11 -y
conda activate MoneyPrinterTurbov1.2.7 standardised on uv for dependency resolution. Install once with:
pip install uv
uv sync --frozenThe legacy path still works if you need it:
pip install -r requirements.txtuv sync --frozen is meaningfully faster (~40s vs ~3 min on a typical Windows laptop) and resolves against the committed uv.lock, so you get the exact dependency versions the maintainers tested.
Step 4 — Configure config.toml
Copy the example file and edit it:
copy config.example.toml config.toml
notepad config.tomlThe fields you actually have to set:
| Field | What it controls | Example |
|---|---|---|
video_source | B-roll provider | "pexels" or "pixabay" |
pexels_api_keys | One or more Pexels keys (rotated round-robin) | ["abcd1234..."] |
pixabay_api_keys | Same, for Pixabay | ["wxyz5678..."] |
llm_provider | Which LLM the script generator hits | "openai", "deepseek", "gemini", "ollama", "g4f", … |
openai_api_key / openai_model_name | If llm_provider = "openai" | "sk-..." / "gpt-4o-mini" |
deepseek_api_key / deepseek_model_name | If llm_provider = "deepseek" | "sk-..." / "deepseek-chat" |
gemini_api_key / gemini_model_name | If llm_provider = "gemini" | "AIza..." / "gemini-2.5-flash" |
imagemagick_path | Full path to magick.exe if the auto-detect fails | "C:\\Program Files\\ImageMagick-7.1.1-Q16\\magick.exe" |
ffmpeg_path | Full path to ffmpeg.exe if not on PATH | "C:\\ffmpeg\\bin\\ffmpeg.exe" |
subtitle_provider | Caption engine | "edge" (fast, free) or "whisper" (more accurate, local model download) |
How to get the keys:
- Pexels: sign in at pexels.com/api → "Your API Key" → copy. Free tier is 200 requests/hour, 20,000/month — plenty for solo creators.
- Pixabay: pixabay.com/api/docs after sign-in. Free tier is 100 requests/60s.
- OpenAI: platform.openai.com/api-keys.
gpt-4o-miniat the time of writing is the cheapest viable model — verify pricing on the OpenAI pricing page before committing to a model. - DeepSeek: platform.deepseek.com. Cheapest cloud-LLM option at this scale.
- Gemini: Google AI Studio.
gemini-2.5-flashhas a generous free tier. - Ollama: no API key — run a local model (
llama3.1:8b,qwen2.5:7b, etc.) and setollama_base_url = "http://127.0.0.1:11434".
Step 5 — Launch
WebUI:
webui.batThis wraps streamlit run webui/Main.py --server.port 8501 and opens http://localhost:8501 in your default browser.
API:
python main.pySwagger UI lands at http://127.0.0.1:8080/docs; ReDoc is at /redoc.
Calling the API programmatically
Once the API service is up, the canonical generation request looks like this:
import requests
url = "http://127.0.0.1:8080/api/v1/videos"
payload = {
"video_subject": "Why vetted remote developers ship faster",
"video_aspect": "9:16",
"voice_name": "en-US-JennyNeural",
"voice_volume": 1.0,
"subtitle_enabled": True,
"video_source": "pexels",
"video_count": 1,
"video_language": "en",
}
r = requests.post(url, json=payload, timeout=300)
print(r.json())The endpoint returns a task_id; poll GET /api/v1/tasks/{task_id} for status and the final MP4 path. The exact endpoint shape can drift between point releases — always cross-check against your local /docs page.
If you're building this into a content pipeline and need engineers who can wire the API into a publishing workflow without you having to babysit the integration, Codersera can help you hire vetted remote developers for that work.
Troubleshooting — the issues people actually hit
"magick is not recognised"
Re-read the PATH section above. The most common root cause is that the user opened a Command Prompt before installing ImageMagick and never opened a fresh one. Restart the shell.
"RuntimeError: No ffmpeg exe could be found"
Either install FFmpeg from gyan.dev and add C:\ffmpeg\bin to your PATH, or set ffmpeg_path in config.toml to the full path of ffmpeg.exe. The auto-download path requires outbound HTTPS to GitHub Releases — corporate proxies sometimes block it.
"OSError: [WinError 10048] only one usage of each socket address … is normally permitted"
Port 8080 (or 8501) is already in use. Find and kill the process:
netstat -ano | findstr :8080
taskkill /PID <pid> /FOr change the port in main.py / webui.bat. Hyper-V's reserved port ranges on Windows 11 also bite here — netsh int ipv4 show excludedportrange protocol=tcp shows what's been pre-claimed.
"FileNotFoundError: ... config.toml"
You forgot to copy config.example.toml to config.toml. The application refuses to start without it.
"Invalid API key" from the LLM
Quote your keys properly in TOML — openai_api_key = "sk-…" with double-quotes, not single-quotes. TOML parsers are strict about this and the failure mode looks like an upstream auth error.
Edge TTS request fails with "no audio received"
v1.2.7 fixed a long-standing Edge TTS regression — if you're on the v1.2.6 base distribution, run update.bat (one-click package) or git pull && uv sync (manual). Microsoft also occasionally throttles the free Edge TTS endpoint; the standard fix is to retry after 60 s or set tts_provider = "siliconflow" if you've configured a SiliconFlow key.
WebUI loads but generation hangs at "Searching materials"
Almost always the Pexels/Pixabay key — check the API request log in storage/logs/. If the key is fine, your search terms might be returning zero results; switch video_source or refine the topic.
Non-ASCII characters in the install path
MoviePy's subprocess invocation on Windows still doesn't handle UTF-8 paths reliably. Move the project to C:\MPT or similar.
Performance — what to expect on real hardware
MoneyPrinterTurbo's bottleneck on Windows is the FFmpeg encode at the end, not the LLM call. Rough numbers from the v1.2.7 default settings (60-second 1080×1920 video, Edge TTS, Pexels source, 6 clips concatenated):
| Hardware | End-to-end time | Notes |
|---|---|---|
| Ryzen 7 7840U laptop, 16 GB RAM, NVMe SSD, no GPU | ~90–120 s | Encode is CPU-bound; ~70% on the FFmpeg step |
| i5-1240P, 16 GB, no GPU | ~150–180 s | Same workload, ~30% slower |
| Docker on the same Ryzen 7 | ~95–130 s | WSL2 overhead is small for CPU work |
These are observational ranges from community reports and our own runs; the upstream repo doesn't publish a benchmark suite. If you need deterministic numbers for capacity planning, generate 10 videos, average the elapsed time from the API task_id log, and use that — anything else is noise.
Cost per video (cloud LLM only)
- OpenAI
gpt-4o-mini: ~$0.0005–$0.001 per 60-second script (the script is only ~150 tokens of output, plus a small prompt). - DeepSeek
deepseek-chat: roughly half ofgpt-4o-miniat current pricing. - Gemini 2.5 Flash: free tier covers most hobby workloads; paid tier is in the same range as
gpt-4o-mini. - Edge TTS: free.
- Pexels / Pixabay: free at the volumes a single user generates.
Verify on each vendor's pricing page before basing a business model on these numbers — LLM pricing has been moving every quarter and any number that's a month old is suspect.
Security and content-policy notes
- Don't commit
config.toml— it has plaintext API keys. The repo's.gitignoreexcludes it; keep it that way. - Pexels and Pixabay licences permit commercial use without attribution, but neither covers identifiable people — be careful with AI-generated voice-overs that put words in someone's mouth visually.
- Edge TTS is intended for end-user accessibility scenarios; Microsoft's terms restrict redistributing the audio as a standalone TTS service. Using it as part of generated video content is fine in practice but read the current terms before scaling.
- YouTube auto-upload at scale will get you flagged — YouTube's spam policy explicitly targets "mass-produced" content. Generate sparingly, edit before posting, and add a human-narrated intro if you care about monetisation eligibility.
Alternatives and when to skip MoneyPrinterTurbo
- FujiwaraChoki/MoneyPrinterV2 — same broad idea, simpler scope, less actively maintained.
- Asad-Ismail/MoneyPrinterTurbo-Extended — community fork with extra clip filters.
- elebumm/RedditVideoMakerBot — Reddit-specific story format with TTS narration; better fit if your output is "AITA"-style story videos.
- HeyGen, Pictory, Synthesia, Runway — commercial SaaS with avatars and stock libraries; pay-per-video, no install. Pick if you don't want to operate the pipeline.
MoneyPrinterTurbo is the right choice when you want full control over the prompt, voice, B-roll source, and aspect ratio — and you're comfortable owning the failure modes. If you'd rather not, a SaaS is cheaper than the engineering hours.
Related Codersera deep-dives
- Installing and Running MoneyPrinterTurbo on macOS — the same tool with Homebrew,
brew install imagemagick ffmpeg, and the macOS-specific permissions wrinkles. - Run Microsoft OmniParser V2 on Ubuntu — adjacent open-source AI tooling, server-side rather than desktop.
- Run DeepSeek Janus-Pro 7B on Mac with ComfyUI — relevant if you're swapping the cloud LLM for a local one.
FAQ
Is MoneyPrinterTurbo free?
The software is MIT-licensed and free. You pay for the LLM (cents per video at gpt-4o-mini rates), and Pexels/Pixabay/Edge TTS are free at hobbyist volumes.
Do I need a GPU?
No, not if you use cloud LLMs and Edge TTS. A GPU helps only if you switch to local Whisper for subtitles or run an Ollama LLM locally.
Can I run it without Docker on Windows 10?
Yes — Path A (one-click) and Path C (manual conda + uv) both work on Windows 10. WSL2 is only required if you want Docker.
Why does the video have black bars / wrong aspect ratio?
Set video_aspect to "9:16" for portrait or "16:9" for landscape in the API payload (or pick it in the WebUI). The default is portrait. Black bars usually mean the source clip's aspect ratio didn't match and MoviePy padded it; switching the source clip selection in config.toml typically fixes it.
Can I use a local LLM instead of OpenAI?
Yes. Install Ollama, pull a model (ollama pull qwen2.5:7b), then set llm_provider = "ollama", ollama_model_name = "qwen2.5:7b", and ollama_base_url = "http://127.0.0.1:11434" in config.toml.
How do I update from v1.2.6 to v1.2.7?
For the one-click package, run update.bat. For the manual install, git pull then uv sync --frozen (or pip install -r requirements.txt). For Docker, docker compose pull && docker compose up -d.
Why is there no v1.3.x yet?
The maintainer's release cadence is irregular and the main branch is where active development happens, which is why update.bat exists in the bundled distribution. Check the releases page for the current state.
Can I deploy this to a server and call it from a SaaS?
Yes — the FastAPI service at :8080 is designed for this. Front it with Caddy/Nginx, lock down the /docs endpoint behind auth, and queue requests with Redis (the v1.2.7 release added Redis-based task state). If your team isn't sure how to productionise this, that's the kind of work where a vetted remote engineer shaves weeks off the timeline.
References & further reading
- harry0703/MoneyPrinterTurbo — official repository, README, source.
- MoneyPrinterTurbo releases — version history; verify the current tag here.
- config.example.toml — canonical reference for all configuration fields.
- DeepWiki: MoneyPrinterTurbo Installation & Setup — auto-generated structured docs of the upstream repo.
- ImageMagick Windows binaries — official download page; pick the
Q16-x64-staticbuild. - FFmpeg Windows builds (gyan.dev) — the maintained official-mirror build for Windows.
- Astral
uvdocumentation — the new dependency manager v1.2.7 standardised on. - MoneyPrinterTurbo issue tracker — community-reported errors and fixes; the first place to search when something breaks.