You need at least one LLM provider API key (e.g. OpenAI) and a video source API key (e.g. Pexels) before generating your first video. Both services offer free tiers.
Configure the application
Copy Configuration notes:
config.example.toml to config.toml in the project root, then fill in the minimum required values:video_source— set to"pexels","pixabay", or"local". Each source requires its own API key.llm_provider— set to any supported provider (e.g."openai","deepseek","gemini"). Add the matching*_api_keyfield.subtitle_provider—"edge"is faster and works without any additional downloads. Use"whisper"for higher accuracy (requires a ~3 GB model download).- Leave
subtitle_providerempty to skip subtitle generation entirely.
Start the application
- Docker
- Manual (Windows)
- Manual (macOS / Linux)
Make sure Docker Desktop is installed, then run:
On newer Docker versions the command is
docker compose up (without the hyphen).- Web UI → http://localhost:8501
- API docs → http://localhost:8080/docs
Generate your first video
Open the Web UI at http://localhost:8501 and follow these steps:
- Enter a video topic in the “Video Subject” field, for example:
benefits of morning exercise - Select the video aspect ratio from the “Video Ratio” dropdown:
- Portrait (9:16) — for TikTok, Instagram Reels, YouTube Shorts
- Landscape (16:9) — for YouTube or standard video players
- Choose a voice from the “Speech Synthesis” dropdown. You can click Play Voice to preview before generating.
- Optionally adjust clip duration, number of videos to generate simultaneously, subtitle settings, and background music.
- Click the Generate Video button at the bottom of the page.
storage/tasks/<task-id>/ within the project directory.Next steps
Docker installation
Full Docker setup guide with environment variables and troubleshooting
Manual installation
Python virtual environment setup, ImageMagick, and FFmpeg configuration
LLM providers
Configure OpenAI, Gemini, DeepSeek, Ollama, and other providers
Video sources
Set up Pexels, Pixabay, or use your own local footage