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
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.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.Configure video settings
Choose aspect ratio, clip duration, concat mode, transitions, and voice options. See the parameter reference below for all available settings.
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.Wait for processing
The pipeline runs in order: script → terms → audio → subtitles → footage → final render. Progress is reported as a percentage (0–100).
Aspect ratios
- Portrait 9:16
- Landscape 16:9
- Square 1:1
Resolution: 1080 × 1920Optimized for vertical short-form platforms (TikTok, Instagram Reels, YouTube Shorts). This is the default.
Parameter reference
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.Full narration script. When provided, the LLM script-generation step is skipped entirely and this text is used as-is for voiceover and subtitles.
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.
Output aspect ratio. One of
"9:16" (portrait), "16:9" (landscape), or "1:1" (square).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.
Transition effect applied between clips.
| Value | Effect |
|---|---|
none | Hard cut, no transition |
Shuffle | Randomly picks a different transition per cut |
FadeIn | Clip fades in from black |
FadeOut | Clip fades out to black |
SlideIn | Clip slides in from a random edge |
SlideOut | Clip slides out to a random edge |
Maximum duration in seconds that each footage clip appears on screen. Longer values mean fewer cuts; shorter values create a faster-paced edit.
Number of video variants to generate in one task run. Each variant uses a different random clip selection. See Batch generation.
Where to source footage. Built-in options are
"pexels" and "pixabay". Use "local" together with video_materials to supply your own clips.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.
Language hint for script and subtitle generation. Leave blank to auto-detect from the subject. Example values:
"zh-CN", "en-US".API example
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
Setvideo_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.