Model or dataset
harry0703/MoneyPrinterTurbo avatar
harry0703/MoneyPrinterTurbo

MoneyPrinterTurbo: a Python pipeline that turns a topic into a finished short video

MoneyPrinterTurbo uses language models and an automated media pipeline to create short videos from a topic or keyword.

126,642 stars19,774 forksPythonMIT

At a glance

What is it?
MoneyPrinterTurbo generates a script, matches stock footage, synthesizes narration, burns in subtitles and renders a 1080x1920 or 1920x1080 file from a topic or keyword. It is a self-hosted Python application with WebUI, API, CLI and agent entry points, and it assumes you already have model API keys.
Who is it for?
Adopt MoneyPrinterTurbo if you can run Python 3.11 or Docker, already pay for an LLM API, and want a repeatable batch pipeline rather than a hosted editor. Do not adopt it if you need an SLA, cannot expose a local Streamlit port, or expect the tool to source footage you have the rights to.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 28, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What MoneyPrinterTurbo actually produces, and for whom

The pitch is a single input: a topic or a keyword. The output is a finished vertical or horizontal video. Everything in between is the product. The README describes the pipeline as generating a video script, matching footage, generating subtitles and background music, then compositing a high definition short video. The supported outputs are 1080x1920 for 9:16 and 1920x1080 for 16:9.

The audience is narrower than the name suggests. This is a self-hosted Python application. The README itself links to a third party online service for people who find deployment and use too demanding, which is an admission that the setup is not trivial. If you want a browser tab and a render button, this is not that. If you want a pipeline you can script, batch and modify, it is.

Four entry points are listed: an AI Agent, a WebUI, an API and a CLI. The repository layout backs this up. There is a webui directory with a Streamlit entry point, a main.py that the compose file runs as the API service, and a cli.py at the repository root. The pyproject.toml comments describe the code as layered by responsibility into controllers, services and models. That layering is the reason the CLI and API can coexist without duplicating the pipeline.

The pipeline: script, keyword extraction, footage search, TTS, subtitles, composite

MoneyPrinterTurbo does not generate video frames with a diffusion model. It assembles a video from parts. The language model writes the narration and, per the sponsor note in the README, also extracts the search keywords used to find footage and decides on the final imagery. That keyword extraction step is the part that determines whether the output looks coherent or looks like random stock clips under a voiceover.

Footage comes from Pexels, Pixabay and Coverr, or from local assets you supply. The README lists all four as supported sources, and the local option matters: it is the only way to control what appears on screen without depending on what a stock API returns for your keyword.

Audio is handled by a set of TTS backends: Edge TTS, Azure Speech, SiliconFlow, Google Gemini, Xiaomi MiMo, ElevenLabs, Chatterbox and Fish Audio. The README states that previews can be auditioned in real time. Subtitle generation supports font, position, colour, size, stroke and background style adjustments. Background music can be randomly selected or specified, with an adjustable volume.

The dependency list confirms the assembly approach. moviepy is pinned at 2.2.1, pydub at 0.25.1, and faster-whisper at 1.1.0 for transcription. The Dockerfile installs ffmpeg as a system dependency alongside git. So the render step is ffmpeg-backed compositing, not model inference. That is a real constraint on quality: the ceiling is set by the footage you can obtain, not by the generator.

Batch generation is supported, described as generating several videos at once so you can pick the best. Segment duration is configurable, which controls how often the footage cuts. Neither of those is a quality feature; they are throughput and pacing controls.

Installing MoneyPrinterTurbo and rendering a first video

The project requires Python 3.11 or newer, per pyproject.toml. Dependencies are pinned in pyproject.toml and locked in uv.lock, and the project ships a requirements.txt that the file itself describes as legacy pip support. The Dockerfile is based on python:3.11-slim-bullseye.

The compose file defines two services. The webui service builds from the repository Dockerfile, publishes 127.0.0.1:8501 and runs Streamlit against ./webui/Main.py. The api service publishes 127.0.0.1:8080 and runs python3 main.py. Both mount the repository root into /MoneyPrinterTurbo.

bash
docker compose up

After that command, the Streamlit interface is reachable at http://127.0.0.1:8501 and the API at http://127.0.0.1:8080. Both ports bind to the loopback address in the compose file, so they are not exposed to your network by default. That is a sensible default for a tool that holds API keys.

Configuration is read from config.example.toml, which is present at the repository root. Copy it and fill in the keys for the model provider and the footage provider you intend to use. The repository does not document a rollback path for a bad render, so treat each run as independent output rather than a resumable job.

The optional TwelveLabs integration is the one dependency that is not installed by default. The pyproject.toml comment states it is only needed when twelvelabs_api_keys is configured, and that it installs with uv sync --extra twelvelabs.

bash
uv sync --extra twelvelabs

For a non-Docker install, the repository also ships webui.sh and webui.bat as entry scripts. The README does not document a single canonical install command outside the container path, so the compose route is the one with the fewest assumptions.

Where MoneyPrinterTurbo breaks, and when it is the wrong tool

The failure mode people search for is in the related searches themselves: an OSError with errno 16, device or resource busy, tied to the config toml. That error points at file handling on the configuration path, and it is the kind of thing that happens when a mounted volume or a file handle is held open by another process. The repository's own issue tracker is where that belongs; the README does not document it.

More structural limitations. First, the Dockerfile defaults to a Chinese package mirror via the DOCKER_BUILD_MIRROR build argument, with PIP_USE_OFFICIAL as a separate toggle. The comments explain the retry logic and why the build now fails hard instead of producing an image without git or ffmpeg. If your network cannot reach those mirrors, you need to override the build arguments, and the README does not walk through that.

Second, the compose file mounts the entire repository into the container as a read-write volume. Anything the pipeline writes lands in your working tree. That is convenient for inspecting output and inconvenient if you were expecting isolation.

Third, the quality ceiling is stock footage. A keyword that returns generic clips will produce a generic video, and no amount of prompt engineering fixes that. If your topic needs specific visual evidence, you must supply local assets.

Fourth, cost and rate limits sit entirely with your model provider. The README is dense with sponsor placements for API resellers, which tells you the project expects users to bring third party keys. There is no bundled model.

Finally, the licence is MIT, which covers the code. It does not cover the footage you pull from Pexels, Pixabay or Coverr, and it does not cover the voice of any commercial TTS provider you configure. Those are separate terms, and the README does not summarise them.

MoneyPrinterTurbo compared with scripted ffmpeg or a hosted editor

The honest alternative is not another AI video generator. It is a shell script around ffmpeg. If you already know your narration, your clips and your subtitle timing, ffmpeg concat plus a subtitle filter does the same compositing work that moviepy does here, with no Python dependency tree and no model API bill. The difference is that you write the script and pick the clips yourself. MoneyPrinterTurbo's contribution is the language model step that produces the script and the search keywords, plus the TTS and subtitle wiring that turns those into a render job.

If that language model step is the part you do not need, the project is overhead. If it is the part you do need, writing it yourself means handling provider differences across OpenAI, Gemini, DashScope and the rest, which is what litellm at 1.86.2 is doing in the dependency list.

The other alternative is a hosted editor. Those remove the install entirely, and the README acknowledges this by linking to one. The trade is control: you cannot batch, you cannot swap the TTS backend, and you cannot keep the pipeline in your own CI. MoneyPrinterTurbo's coverage configuration in pyproject.toml includes cli, webui, main and docs/skill in the measured source set with a stated branch coverage floor of 70 percent, which suggests the project is maintained as something you run in an automated context rather than click through by hand.

Maintenance, upgrade cost and what the MIT licence does not settle

The last push to the default branch was on 2026-08-22, which is also the date of the v1.3.5 release. The two prior releases, v1.3.4 and v1.3.3, landed on 2026-08-12 and 2026-07-24. The repository is not archived. Release cadence over that window is roughly every two to three weeks, which is frequent enough that pinning matters.

Upgrade cost is real because the pins are tight. moviepy is fixed at 2.2.1, streamlit at 1.59.1, litellm at 1.86.2, faster-whisper at 1.1.0. The pyproject.toml comment states the intent plainly: the runtime is fixed through uv.lock so different machines do not resolve different version combinations. That is a deliberate trade. You get reproducibility and you inherit the upgrade work when you move the lock. The requirements.txt is kept only for legacy pip support and is described as such in its own header comment.

The code is MIT licensed. That permits commercial use and modification of the source. It says nothing about the stock footage licences, the TTS provider terms, or the model provider terms, and those are where the actual obligations live for a video you publish. The README lists providers and links to them but does not collect their terms in one place. Check each one against how you intend to distribute the output. This is not legal advice, and the licence file is the authority on the code, not this article.

Editorial conclusion

Adopt MoneyPrinterTurbo if you can run Python 3.11 or Docker, already pay for an LLM API, and want a repeatable batch pipeline rather than a hosted editor. Do not adopt it if you need an SLA, cannot expose a local Streamlit port, or expect the tool to source footage you have the rights to. Before committing, verify that config.example.toml exists in your checkout and that the keys you intend to use are accepted by the provider endpoints you actually have access to, then run one video end to end and inspect the rendered file before wiring it into anything automated.

Frequently asked questions

How do I install MoneyPrinterTurbo?

The most documented route is Docker Compose: the repository ships a docker-compose.yml with a webui service on 127.0.0.1:8501 and an api service on 127.0.0.1:8080, both built from the included Dockerfile. For a local install you need Python 3.11 or newer, and the project also ships webui.sh and webui.bat entry scripts.

Can MoneyPrinterTurbo print money?

It generates short videos from a topic or keyword, and the README describes the output as a script, matched footage, subtitles, background music and a composited high definition video. Nothing in the repository describes a revenue mechanism. Any income depends on what you do with the rendered file.

How do I install moneyprinterturbo?

Same answer as the other install question: use the compose file for the webui and api services, or install the pinned dependencies from pyproject.toml on Python 3.11 or newer. The optional TwelveLabs extra installs with uv sync --extra twelvelabs and is only needed when twelvelabs_api_keys is configured.

Official sources

  1. Official README
  2. Project repository
  3. Release notes
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/harry0703-moneyprinterturbo.svg)](https://hysenlabs.com/projects/harry0703-moneyprinterturbo)
Community notes

Community notes