Skip to main content
MoneyPrinterTurbo takes a topic or keyword and turns it into a complete short video: AI-written script, sourced footage, synthesized voiceover, subtitles, and background music — all in one run.

AI script writing

Provide a topic and an LLM writes the full narration script.

Automatic footage search

The LLM generates search terms; matching clips are downloaded from Pexels or Pixabay.

Multiple aspect ratios

Portrait, landscape, and square presets targeting different platforms.

Batch variants

Generate several videos in one run and pick the best result.

How it works

1

Provide a topic or script

Enter a short topic or keyword (e.g., “benefits of morning exercise”). If you leave the script field blank, the LLM generates a narration script from your topic. To use your own wording, paste the full script directly into the video_script field — the LLM step is skipped.
2

AI generates search terms

After the script is ready, the LLM produces a list of search terms (default: 5 terms) used to find relevant stock footage. You can override these by supplying your own video_terms list.
3

Configure video settings

Choose aspect ratio, clip duration, concat mode, transitions, and voice options. See the parameter reference below for all available settings.
4

Click Generate (or call the API)

In the Web UI click Generate. Via the API, POST /api/v1/videos with your parameters. The task runs asynchronously; poll GET /api/v1/tasks/{task_id} for progress.
5

Wait for processing

The pipeline runs in order: script → terms → audio → subtitles → footage → final render. Progress is reported as a percentage (0–100).
6

Download the finished video

When state reaches complete, the response contains URLs for each final-N.mp4 and a combined-N.mp4 (footage only, no audio overlay). Download directly from the Web UI or via the returned URLs.

Aspect ratios

Resolution: 1080 × 1920Optimized for vertical short-form platforms (TikTok, Instagram Reels, YouTube Shorts). This is the default.
video_aspect = "9:16"

Parameter reference

video_subject
string
required
The topic or keyword for the video. Used by the LLM to generate the script and search terms. Required even when providing a custom video_script.
video_script
string
Full narration script. When provided, the LLM script-generation step is skipped entirely and this text is used as-is for voiceover and subtitles.
video_terms
string | array
Search terms used to find stock footage. When omitted, the LLM generates them automatically from the subject and script. Supply a comma-separated string or a JSON array to override.
video_aspect
string
default:"9:16"
Output aspect ratio. One of "9:16" (portrait), "16:9" (landscape), or "1:1" (square).
video_concat_mode
string
default:"random"
How footage clips are ordered before rendering.
  • "random" — clips are shuffled into a random order each run, producing a different result every time.
  • "sequential" — clips appear in the order they were downloaded, one segment per source video.
video_transition_mode
string
default:"none"
Transition effect applied between clips.
ValueEffect
noneHard cut, no transition
ShuffleRandomly picks a different transition per cut
FadeInClip fades in from black
FadeOutClip fades out to black
SlideInClip slides in from a random edge
SlideOutClip slides out to a random edge
video_clip_duration
integer
default:"5"
Maximum duration in seconds that each footage clip appears on screen. Longer values mean fewer cuts; shorter values create a faster-paced edit.
video_count
integer
default:"1"
Number of video variants to generate in one task run. Each variant uses a different random clip selection. See Batch generation.
video_source
string
default:"pexels"
Where to source footage. Built-in options are "pexels" and "pixabay". Use "local" together with video_materials to supply your own clips.
custom_audio_file
string
Absolute path to a pre-recorded MP3 file. When set, the TTS step is skipped and this audio is used directly. Subtitles are also disabled when a custom audio file is provided, since there is no word-boundary data from TTS.
video_language
string
Language hint for script and subtitle generation. Leave blank to auto-detect from the subject. Example values: "zh-CN", "en-US".

API example

{
  "video_subject": "Benefits of morning exercise",
  "video_aspect": "9:16",
  "video_concat_mode": "random",
  "video_transition_mode": "FadeIn",
  "video_clip_duration": 5,
  "video_count": 2,
  "voice_name": "en-US-AriaNeural-Female",
  "bgm_type": "random",
  "bgm_volume": 0.2,
  "subtitle_enabled": true,
  "font_size": 60
}
When video_count is greater than 1, video_concat_mode is forced to "random" for all variants regardless of what you set, so each video gets a unique clip arrangement.

Using custom footage

Set video_source to "local" and pass a list of file paths in video_materials. The pipeline preprocesses each file — images are converted to short video clips with a gentle zoom effect, then all clips are concatenated to match the audio length.
{
  "video_subject": "My travel highlights",
  "video_source": "local",
  "video_materials": [
    {"provider": "local", "url": "/path/to/clip1.mp4"},
    {"provider": "local", "url": "/path/to/clip2.mp4"},
    {"provider": "local", "url": "/path/to/photo.jpg"}
  ]
}
Images placed in video_materials are automatically animated with a slow zoom and converted to MP4 before being used as footage.

Build docs developers (and LLMs) love