Transform video ideas into complete videos using AI agent teams
Project description
sip-videogen
CLI tool that transforms vague video ideas into complete videos using an AI agent team.
How It Works
User Idea → AI Agent Script Team → Reference Images → Video Clips → Final Video
- You provide a video idea (e.g., "A cat astronaut explores Mars")
- AI agents collaborate to write a script with scenes and shared visual elements
- Reference images are generated for visual consistency (characters, props, environments)
- Video clips are generated for each scene using Google VEO 3.1 (8 seconds per clip)
- Clips are assembled into a final video with background music via FFmpeg
Installation
Option 1: Install from PyPI (Recommended)
# Install pipx if you don't have it
pip install pipx
# Install sip-videogen
pipx install sip-videogen
# Run - first time will prompt for configuration
sipvid
On first run, you'll be prompted to paste your configuration. Just paste the entire config block and press Enter twice.
Option 2: Run from Source
# Clone the repo
git clone https://github.com/chufeng-huang-sipaway/sip-videogen.git
cd sip-videogen
# Copy and fill in your API keys
cp .env.example .env
# Run (installs everything automatically on first run)
./start.sh
Prerequisites
- Python 3.11+ (
brew install python@3.11on macOS) - FFmpeg (
brew install ffmpegon macOS)
API Keys Required
Get these API keys:
| Key | Where to get it |
|---|---|
OPENAI_API_KEY |
OpenAI Platform |
GEMINI_API_KEY |
Google AI Studio |
GOOGLE_CLOUD_PROJECT |
Google Cloud Console |
SIP_GCS_BUCKET_NAME |
Create via gsutil mb -l us-central1 gs://your-bucket |
Google Cloud Setup (one-time)
gcloud auth login
gcloud auth application-default login
gcloud config set project YOUR_PROJECT
gcloud services enable aiplatform.googleapis.com storage.googleapis.com
gsutil mb -l us-central1 gs://YOUR_BUCKET_NAME
Configuration
First-Time Setup
On first run, sipvid will prompt you to configure your environment. You can either:
-
Paste a config block (recommended) - Paste all your keys at once:
OPENAI_API_KEY=sk-... GEMINI_API_KEY=AIza... GOOGLE_CLOUD_PROJECT=my-project SIP_GCS_BUCKET_NAME=my-bucket -
Enter keys individually - Follow the interactive prompts
Configuration is stored in ~/.sip-videogen/.env and works from any directory.
Managing Configuration
sipvid config # Interactive config editor
sipvid config --show # Show current configuration status
sipvid config --reset # Replace config with a new config block
Usage
Interactive Menu
sipvid
This launches a simplified interactive menu:
? Use arrow keys to navigate, Enter to select:
❯ Generate Video Create a new video from your idea
View History See previous generations
More Options... Settings, resume, and other tools
Exit
Director's Pitch Workflow
When you select "Generate Video", you'll experience a streamlined creative workflow:
- Enter your idea - Describe your video concept
- Select duration - Choose from 15s, 30s, 45s, or 60s
- Review the pitch - The AI presents a "Director's Pitch" with:
- Title and logline
- Tone and visual style
- Key elements and scene breakdown
- Approve or refine - Accept the pitch, provide feedback for revision, or cancel
- Generate - Once approved, full video generation begins
The AI agent team decides the optimal scene count based on your story's complexity.
View History
Access all your previous video generations from the main menu:
- See title, date, duration, and completion status
- Resume or regenerate from any previous script
- Open output folders directly
Direct Commands
# Generate a video (uses interactive pitch flow)
sipvid generate "A cat astronaut explores Mars"
# Regenerate videos from an existing run (reuse saved script + images)
sipvid resume output/sip_20251210_123855_e9a845e4
# Generate with specific number of scenes
sipvid generate "Epic space battle" --scenes 5
# Dry run (script only, no video generation)
sipvid generate "Underwater adventure" --dry-run
# Skip cost confirmation
sipvid generate "Robot dance party" --yes
# Check configuration status
sipvid status
Automatic Updates
The tool automatically checks for updates on each run. When a new version is available, you'll see a notification:
┌─────────────────────────────────────────────────┐
│ Update available! │
│ Current version: 0.1.0 │
│ Latest version: 0.2.0 │
│ Run: sipvid update │
└─────────────────────────────────────────────────┘
Update commands:
sipvid update # Check and install updates
sipvid update --check # Only check, don't install
Architecture
The tool uses a hub-and-spoke agent pattern:
- Showrunner (orchestrator) - Coordinates the script development process
- Screenwriter - Creates scene breakdown with professional cinematography
- Production Designer - Identifies shared visual elements for consistency
- Continuity Supervisor - Validates consistency and optimizes prompts
- Music Director - Designs complementary background music
VEO 3.1 Prompt Optimization
Prompts are structured following Google's VEO 3.1 best practices:
- Prompt order:
[Cinematography] → [Subject+Action] → [Setting] → [Style] → [Audio] - Professional camera terminology: dolly, tracking, crane shots with depth of field control
- Dialogue integration: Quotes and speaker attribution for natural delivery
- Audio design:
Ambient:andSFX:prefixes for precise sound control
Clip Duration & Clip Patterns
When using reference images for visual consistency (standard workflow), VEO generates fixed 8-second clips. To create rhythm and shot variety within this duration, the system uses clip patterns - pre-defined shot duration combinations that guarantee the math always works:
| Pattern | Name | Best For |
|---|---|---|
[8] |
Single continuous | Establishing shots, emotional moments |
[6, 2] |
Long + quick | Build-up with quick ending beat |
[2, 6] |
Quick + long | Hook attention, then develop |
[4, 4] |
Two equal | Action-reaction, call-response |
[4, 2, 2] |
Medium + two quick | Building intensity |
[2, 4, 2] |
Sandwich | Bookended emphasis |
[2, 2, 4] |
Two quick + medium | Quick start, sustained finish |
[2, 2, 2, 2] |
Four quick | Montage, high energy, rapid cuts |
The Showrunner selects patterns for each scene based on pacing needs, and the Screenwriter creates matching sub_shots using timestamp prompting:
[00:00-00:02] Wide establishing shot of the food truck
[00:02-00:04] Medium shot, the vendor prepares ingredients
[00:04-00:06] Close-up of sizzling grill
[00:06-00:08] Medium shot, vendor plates the food
This creates dynamic multi-shot sequences within a single clip, similar to professional editing - while ensuring shots never split across clips.
Seamless Scene Flow
Video clips are generated in parallel for speed, but the system ensures smooth transitions:
- Flow Context: Each clip receives position-aware instructions (first/middle/last) to avoid awkward pauses
- Scene Continuity: Screenwriter creates scenes that flow seamlessly:
- First scene: May open naturally, must end with action in progress
- Middle scenes: Must begin AND end mid-action (no pauses)
- Last scene: Must begin mid-action, may conclude naturally
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
python -m pytest
# Run specific test
python -m pytest tests/test_models.py -v
# Lint and format
ruff check .
ruff format .
# Type check
mypy src/
Publishing New Versions
# 1. Bump version in pyproject.toml
# 2. Run publish script
./scripts/publish.sh
Cost Estimation
Before generating videos, the tool displays estimated costs:
- Gemini image generation: ~$0.13-0.24 per image
- VEO video generation: Check current Vertex AI pricing
Use --yes to skip the cost confirmation prompt.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sip_videogen-0.3.0.tar.gz.
File metadata
- Download URL: sip_videogen-0.3.0.tar.gz
- Upload date:
- Size: 140.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
931666e14d5412d485bdfc0a3b5e11f1fd1142cd479b5f42f528534b62641f18
|
|
| MD5 |
842493fa78843f64f71d4d66c00913d9
|
|
| BLAKE2b-256 |
483b9fdd566be800e7ca969ed4dd8095174f57a38e19a4e2dc431f9ca85d5c78
|
File details
Details for the file sip_videogen-0.3.0-py3-none-any.whl.
File metadata
- Download URL: sip_videogen-0.3.0-py3-none-any.whl
- Upload date:
- Size: 132.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
378958f23e8ed5a557d64aa3dfdbcb5aadf68a64d580b4e22b0cc78aed2af163
|
|
| MD5 |
0b23fe0703a711acab6936ba23c82426
|
|
| BLAKE2b-256 |
cb35608ed8105a61702de5ea03e1212054850ca196f66ff910365986bdd006de
|