MoneyPrinterTurbo + Ollama: Faceless Shorts, Free and (Almost) Fully Local
Want to go deeper than this article?
Free account unlocks the first chapter of all 25 courses — RAG, agents, MCP, voice AI, MLOps, real GitHub repos.
Ollama’s running. Here’s what to build with it. Go from “ollama run” to RAG apps, agents, and fine-tuned models — structured and hands-on. First chapter free.
Short answer: MoneyPrinterTurbo (101,900+ GitHub stars, MIT license, per the GitHub API in early August 2026) turns one topic line into a finished, subtitled faceless short — script, voiceover, stock footage, and render — and the script step runs fully on your machine once you set llm_provider = "ollama" in config.toml. Install is Python 3.11 + uv sync --frozen, launch is sh webui.sh, and the WebUI lands on 127.0.0.1:8501. It needs no GPU (the project's minimum is a 4-core CPU and 4GB RAM). The honest part most tutorials skip: the default pipeline is free but not fully local — Edge TTS voiceover and Pexels footage are cloud calls. A genuinely offline variant exists, and we cover it below.
That combination — one-click output, MIT license, and an officially supported Ollama backend — is why this repo sits at 101K+ stars while most "faceless video generator" tools are $29/mo SaaS with a watermark. This guide is the setup we would run ourselves: exact commands checked against the repo's docs in August 2026, the config.toml keys that matter, which components are truly local versus quietly cloud, and where the whole faceless-shorts format hits its ceiling.
What MoneyPrinterTurbo Actually Does
One input ("topic or keyword") triggers a five-stage pipeline: LLM writes a script → LLM extracts search terms → TTS reads the script → stock clips are fetched to match the terms → ffmpeg assembles clips, voice, subtitles, and background music into a vertical or horizontal MP4. No model generates a single video frame — which is exactly why it runs on ordinary hardware.
Concretely, the stages and what powers them:
- Script — an LLM writes 60-90 seconds of narration on your topic. Twenty provider integrations are listed in the config, from OpenAI and Gemini to Groq — and, critically for us, Ollama, which makes this stage free and local.
- Search terms — the same LLM derives stock-footage queries from the script.
- Voiceover — Edge TTS by default (free, no API key), with Azure Speech, SiliconFlow, ElevenLabs, Google Gemini, and a self-hosted Chatterbox server as alternatives, per the project README.
- Footage — clips pulled from Pexels, Pixabay, or Coverr via free API keys, or from a local folder if you set
video_source = "local". - Assembly — subtitles (from TTS timestamps, or locally via faster-whisper), background music, and an ffmpeg render. ffmpeg is auto-downloaded if missing, per the README.
You drive all of it from a Streamlit WebUI, a REST API (FastAPI, docs at /docs), or a CLI (python cli.py --video-subject "...") for scripted batch runs. The project is Chinese-first but ships complete English docs (README-en.md) and an English interface.
If what you actually want is AI-generated video — novel frames from a text prompt, not stock-clip assembly — that is a different and far heavier workflow; see our local AI video generation guide for what that takes.
Reading articles is good. Building is better.
Free account = the first chapter of all 25 courses, with a per-chapter AI tutor. No card.
How Local Is It, Really?
Three of the five pipeline stages can run 100% on your hardware today; footage is local-capable if you bring your own clips; only the default voice and footage settings touch the cloud. Most reviews either call this tool "fully local" (false by default) or dismiss it as cloud-dependent (false too). Here is the accurate map, compiled from the project's README and config.example.toml as of August 2026:
| Pipeline stage | Default setting | Cloud or local? | Fully-local option |
|---|---|---|---|
| Script (LLM) | your configured provider | depends | Yes — llm_provider = "ollama", officially supported |
| Search terms | same LLM | depends | Yes — same Ollama config |
| Voiceover (TTS) | Edge TTS (free, no key) | Cloud (Microsoft endpoint) | Yes — Chatterbox server on 127.0.0.1:4123 |
| Stock footage | Pexels / Pixabay / Coverr API | Cloud (free key required) | Partial — video_source = "local" uses your own clips |
| Subtitles | "edge" (TTS timestamps) | Local either way | Yes — subtitle_provider = "whisper" (faster-whisper, on-device) |
| Render (ffmpeg) | ffmpeg | Local | Already local |
Source: MoneyPrinterTurbo README-en.md and config.example.toml (main branch, checked August 2026).
The takeaway: a zero-cloud MoneyPrinterTurbo is genuinely achievable — Ollama script, Chatterbox voice, whisper subtitles, local footage folder — but nobody gets it by accident. The default experience sends your script text to Microsoft's TTS endpoint and your search terms to Pexels. Neither costs money; both require internet and both are services you don't control. We flag this because "free" and "local" get conflated constantly in this niche, and if your reason for going local is privacy or reliability rather than price, the defaults don't deliver it.
Install in 5 Minutes
Fastest path: clone, uv sync --frozen on Python 3.11, copy the example config, run sh webui.sh, open 127.0.0.1:8501. These commands are from the repo's current README (checked August 2026); the project moves fast, so if something diverges, trust the repo.
The uv route (recommended by the project):
git clone https://github.com/harry0703/MoneyPrinterTurbo.git
cd MoneyPrinterTurbo
uv python install 3.11
uv sync --frozen
cp config.example.toml config.toml
sh webui.sh # Windows: .\webui.bat
The classic venv route if you don't use uv:
python3.11 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
sh webui.sh
Docker, if you'd rather not manage Python at all — there is a prebuilt image (ghcr.io/harry0703/moneyprinterturbo:latest):
cd MoneyPrinterTurbo
docker compose -f docker-compose.release.yml up
Where things land:
- WebUI: http://127.0.0.1:8501
- API service (run separately with
python main.py): docs at http://127.0.0.1:8080/docs - Headless CLI:
uv run python cli.py --video-subject "Your topic"—--helplists every parameter
Two gotchas the README itself warns about: use Python 3.11 or later (3.11 is the recommended version), and on Windows keep the project path free of spaces and non-ASCII characters. ffmpeg is downloaded automatically on first run; if that fails behind a proxy, set ffmpeg_path in config.toml manually.
Wire It to Ollama
Three lines in config.toml move script generation onto your own hardware: llm_provider = "ollama", ollama_base_url = "" (empty uses the project's environment-aware local default), and ollama_model_name set to any model from ollama list. An 8B instruct model is all this task needs.
Assuming Ollama is already installed and serving (if not, start with our complete Ollama guide):
ollama pull qwen3:8b
Then in config.toml:
[app]
llm_provider = "ollama"
ollama_base_url = "" # empty = environment-aware local default
ollama_model_name = "qwen3:8b"
Notes from the config file itself: leaving ollama_base_url empty makes the app resolve a local default appropriate to how it's running — which matters in Docker, where localhost inside the container is not your host. If you do set it explicitly from inside Docker, the standard fix applies: http://host.docker.internal:11434 instead of http://localhost:11434.
On model choice: writing 90 seconds of listicle narration is one of the easiest jobs you can give a local LLM — short output, no tool use, no long context. qwen3:8b or llama3.1:8b are more than enough, and both fit comfortably in 6-8GB of VRAM; our 8GB VRAM model picks cover the tier in detail, and the broader best Ollama models roundup is the place to look if you want one model that also handles your other workloads. Don't burn a 70B on this — the scripts don't get meaningfully better, because the format's ceiling is the format, not the model.
Have the whole stack running before your coffee goes cold
Ten Compose files that come up with one command — instead of an afternoon of debugging YAML and CUDA flags.
Voiceover: Edge TTS (Default) vs Chatterbox (Local)
Default Edge TTS is free and needs no API key, but every script you voice is sent to a Microsoft cloud endpoint. The local alternative is the project's Chatterbox integration: an OpenAI-compatible TTS server on your own machine at 127.0.0.1:4123.
The supported voice providers, per the README: Edge TTS, Azure TTS V2, SiliconFlow TTS, Google Gemini TTS, Xiaomi MiMo TTS, ElevenLabs TTS, and self-hosted Chatterbox TTS — with real-time voice previews in the WebUI. Everything on that list except Chatterbox is a cloud service.
The Chatterbox path is the one that matters for a local-first setup. MoneyPrinterTurbo's config ships pointed at a self-hosted server, and the default base_url matches the port used by the travisvn/chatterbox-tts-api project:
[chatterbox]
base_url = "http://127.0.0.1:4123/v1"
api_key = "" # not needed for a local server
model_id = "chatterbox"
voices = ["default-Female"]
Chatterbox itself is Resemble AI's open-source TTS model — voice cloning included — and it runs entirely on your GPU. Our Chatterbox TTS setup guide walks through getting the model running; the chatterbox-tts-api wrapper then exposes it on port 4123 in the OpenAI API shape MoneyPrinterTurbo expects. If you're weighing local voice engines more broadly, our Kokoro vs XTTS vs Chatterbox comparison covers the trade-offs — but for this pipeline, Chatterbox is the one with a first-party integration, so it's the path of least resistance.
Practical advice: start with Edge TTS to validate your pipeline end-to-end, then swap in Chatterbox once you care about privacy or throughput. Edge TTS output quality is genuinely decent for faceless shorts, and it costs you nothing to prototype with. Just go in knowing it's a free cloud service you don't control — it requires internet, and its behavior can change without notice.
Footage and Subtitles
Footage: register a free Pexels API key (pexels.com/api), paste it into pexels_api_keys, done. Subtitles: switch subtitle_provider from "edge" to "whisper" for local, accuracy-first transcription — the large-v3-turbo model is a ~1.6GB download, per the project docs.
Footage. The config accepts comma-separated key lists for both Pexels and Pixabay (it rotates through them — useful because free keys are rate-limited), and video_source accepts "pexels", "pixabay", "coverr", or "local":
[app]
video_source = "pexels"
pexels_api_keys = ["your-key-here"] # free at pexels.com/api
Both Pexels and Pixabay keys are free with registration. This is a cloud dependency with no hosted workaround — there's no such thing as a local stock-footage API. The offline answer is video_source = "local": point the app at your own clip library (screen recordings, drone footage, purchased packs) and the pipeline never leaves your machine. As a bonus, local footage is also the strongest lever against the every-short-looks-the-same problem covered under limitations.
Subtitles. Two modes, per the README: "edge" (default) derives timings from the TTS stream — fast, no GPU, runs locally either way — and "whisper" re-transcribes the voiceover with faster-whisper for tighter, word-accurate subtitles:
[app]
subtitle_provider = "whisper"
[whisper]
model_size = "large-v3-turbo" # ~1.6GB; default large-v3 is ~3GB
device = "cpu" # or "cuda"
compute_type = "int8"
The model auto-downloads from Hugging Face on first use. If you have a CUDA GPU, set device = "cuda" — whisper transcription is the slowest local step on CPU. For what faster-whisper can do beyond this pipeline (it's one of the best local speech tools, full stop), see our faster-whisper guide.
Hardware Requirements
Minimum per the project: 4 CPU cores, 4GB RAM, no GPU. Recommended: 8 cores, 8-16GB RAM. Add a GPU only for the local extras — an 8B Ollama model wants 6-8GB VRAM, and whisper + Chatterbox both like CUDA.
The project's own requirements table (README, August 2026):
| Component | Minimum | Recommended | Optimal |
|---|---|---|---|
| CPU | 4 cores | 6-8 cores | 8+ cores |
| RAM | 4GB | 8GB | 16GB+ |
| GPU | not required | 4GB+ VRAM | 8GB+ VRAM |
Source: MoneyPrinterTurbo README-en.md.
Read that table for what it is: the assembly pipeline is lightweight because it never runs a diffusion model — it's LLM text, TTS audio, and ffmpeg. The GPU column only matters once you localize the stack the way this guide recommends. A single 8GB card covers everything at once: script model, whisper subtitles, and Chatterbox TTS (though on 8GB you'll want to run script generation and TTS sequentially rather than resident together, which is how the pipeline works anyway). If you're speccing a machine for this plus heavier local AI work, start at our hardware hub.
Honest Limitations
The tool works as advertised. The format is where expectations need managing — and the default config is less local than the marketing around this niche implies.
- It doesn't generate video. Every clip is stock footage matched by keyword. Your short about "5 productivity habits" will use the same aerial city shots and laptop-typing clips as ten thousand other shorts, because everyone is querying the same free Pexels pool. Custom local footage is the fix; AI generation is a different workflow with different hardware costs.
- Faceless-shorts economics are worse than the YouTube thumbnails claim. Platforms actively demote mass-produced, low-originality content, and monetization reviews look for added value beyond TTS-over-stock-clips. Treat this as an automation tool for content you'd stand behind — scripts you edit, footage you curate — not a passive-income machine. The name is a joke; don't build a business plan on it.
- The default pipeline is cloud-dependent at two stages. Edge TTS and stock-footage APIs both require internet, both are free tiers of services you don't control, and either can throttle or change behavior without notice. The fully-local variant above exists precisely to remove that fragility.
- Script quality has a low ceiling. An 8B model writes serviceable listicle narration; nothing writes interesting narration from a two-word topic. The gap between watchable and good is still your editing.
- It's a fast-moving, Chinese-first project. 101K+ stars, pushed the week we checked (early August 2026), and config keys have churned before. English docs (README-en.md) are complete, but a chunk of the issue tracker is in Chinese. We verified every command and key in this guide against the main branch in August 2026 — if the repo and this page ever disagree, the repo wins.
- Voice cloning cuts both ways. Chatterbox supports cloning; clone only voices you have rights to. Obvious, but this niche attracts people who skip that paragraph.
Verdict
MoneyPrinterTurbo is the best open-source faceless-shorts pipeline right now, and the only mainstream one with first-class Ollama support — use it with the local stack (Ollama + Chatterbox + whisper) and your own judgment on content quality.
The recommendation in three tiers:
- Prototype (10 minutes): default config + Ollama for scripts + free Pexels key + Edge TTS. Free, two cloud touchpoints, instant results.
- Local-first (an evening): add
chatterbox-tts-apion port 4123 andsubtitle_provider = "whisper". Now only footage fetching leaves your machine. - Fully offline:
video_source = "local"with your own clip library. Zero cloud calls, and — not coincidentally — the only tier whose output doesn't look like everyone else's.
For a 101K-star MIT project that runs on a 4-core CPU, the floor is remarkably low and the honest ceiling is exactly where we drew it: the tool automates production, not originality.
Sources
- MoneyPrinterTurbo repository — README-en.md and config.example.toml, main branch; star count and activity via the GitHub API (August 5, 2026)
- chatterbox-tts-api — the self-hosted OpenAI-compatible TTS server MoneyPrinterTurbo's Chatterbox config targets by default
- Pexels API and Pixabay API — free stock-footage keys referenced in config.example.toml
FAQ
Ollama’s running. Here’s what to build with it.
Go from “ollama run” to RAG apps, agents, and fine-tuned models — structured and hands-on. First chapter free.
Stop piecing Ollama together from blog posts
Ollama Mastery is 15 chapters end to end — install, model choice, Modelfiles, GPU offload, the API, and the 20 errors that actually happen. Plus 24 more courses.
Liked this? 25 full AI courses are waiting.
From fundamentals to RAG, agents, MCP servers, voice AI, and production deployment with real GitHub repos. First chapter free, every course.
Build Real AI on Your Machine
RAG, agents, NLP, vision, and MLOps - chapters across 25 courses that take you from reading about AI to building AI.
Want structured AI education?
25 courses, 519+ chapters, from $9. Understand AI, don't just use it.
Continue Your Local AI Journey
- PILLARBest Ollama Models 2026: 15 Ranked (Coding, Reasoning, Chat)
- AI on Steam Deck: Run Local LLMs with Ollama on SteamOS
- Air-Gapped AI Deployment: Install Ollama With No Internet
- Best Free Local AI Models to Run With Ollama (No API Key)
- Best Ollama Embedding Models Compared for Local RAG
- Best Ollama Models for 8GB RAM 2026: 12 Tested Local Picks
- Best Ollama Models for AI Agents 2026: Ranked by Tool Use
- Best Ollama Models for Tool Calling: BFCL Ranked (2026)
- Best Uncensored Local LLMs: Abliterated Ollama Models
- Build a Local AI Slack & Discord Bot with Ollama + Python
Comments (0)
No comments yet. Be the first to share your thoughts!