π¬ Autonomous AI Video Production Pipeline
Features β’ Installation Guide β’ Pipeline β’ Dashboard β’ Cost Optimization β’ Scheduling
π€ Automate AI-powered stickman animation production, from script to YouTube
| Feature | Description |
|---|---|
| π€ AI Scriptwriting | Gemini 2.5 Flash generates viral hooks + scene-by-scene storyboard |
| π¨ AI Image Generation | Imagen 3.0 creates consistent stickman characters across scenes |
| π¬ Slideshow Mode | Ken Burns zoom effect β $0 cost for video generation |
| π₯ Veo Mode | Google Veo 2.0 AI video clips (premium, allow-listed) |
| π£οΈ Free TTS | edge-tts β neural voiceovers 100% free, no API key |
| π΅ Background Music | Loop + duck BGM from assets/bgm.mp3 |
| π Subtitles | Lower-thirds with drop-shadow via MoviePy |
| π Streamlit Dashboard | Full GUI: generate, preview, download, publish |
| π Autonomous Scheduler | 30-day monthly plan with randomised 5β7h intervals |
| π YouTube Upload | OAuth 2.0 β auto-publish as public |
| π° Cost-Efficient | Slideshow + edge-tts = ~$0.02/video (Gemini + Imagen only) |
| π Local Caching | Re-runs skip all completed phases β 0s on cache hit |
| Requirement | Minimum | Recommended |
|---|---|---|
| OS | Windows 10, macOS 12+, Linux (Ubuntu 20.04+) | Any 64-bit OS |
| Python | 3.10 | 3.11+ |
| RAM | 4 GB | 8 GB+ |
| Disk Space | 500 MB (project) + 2 GB (cached videos) | 10 GB free |
| Internet | Broadband (for API calls) | 10+ Mbps |
| FFmpeg | v4.0 | v6.0+ |
Windows
- Go to python.org/downloads
- Download Python 3.11 or 3.12
- IMPORTANT: Check β "Add Python to PATH" during installation
- Click Install Now
- Verify:
python --version pip --version
macOS
# Using Homebrew (recommended)
brew install python@3.11
# Verify
python3 --version
pip3 --versionLinux (Ubuntu/Debian)
sudo apt update
sudo apt install python3 python3-pip python3-venv -y
python3 --versionFFmpeg is required for video assembly and the slideshow effect.
Windows
- Download from gyan.dev/ffmpeg/builds β ffmpeg-release-full.7z
- Extract to
C:\ffmpeg - Add to PATH:
- Search β "Environment Variables"
- Under System Variables β Path β Edit
- Add:
C:\ffmpeg\bin - OK all windows
- Verify:
ffmpeg -version
Alternative: Install via
winget:winget install "FFmpeg (Essentials Build)"
macOS
brew install ffmpeg
ffmpeg -versionLinux
sudo apt install ffmpeg -y
ffmpeg -versiongit clone https://github.com/saiedpod-bot/Stickman-Studio.git
cd Stickman-Studio# Create virtual environment
python -m venv .venv
# Activate it:
# Windows:
.venv\Scripts\activate
# macOS / Linux:
source .venv/bin/activate
# Upgrade pip
pip install --upgrade pip
# Install all dependencies
pip install -r requirements.txt
pip install edge-tts # Free local TTS (neural voices)You need a Google Cloud account to use Gemini (AI script) and Imagen (AI images). The $300 free trial gives you 90 days of free credits β enough to produce thousands of videos.
- Go to cloud.google.com/free
- Click "Get started for free"
- Sign in with your Google account (Gmail)
- Fill in:
- Country
- Name & address (billing info β your card will NOT be charged, used only for verification)
- Credit/Debit card (Google does a temporary $1 hold and refunds it)
- β You now have $300 in free credits + 90-day trial
β οΈ No charges without your consent. The free tier also includes many always-free products. You can set budgets and alerts in the console.
- Go to console.cloud.google.com
- At the top bar, click the project dropdown β New Project
- Enter project name (e.g.
stickman-studio) - Note the Project ID (e.g.
stickman-studio-123456) β you'll need it later - Click Create
Enable these APIs for your project:
| API | Purpose | Link |
|---|---|---|
| Vertex AI API | Gemini (scripts) + Imagen (images) | Enable |
| Cloud Storage | Store generated assets (optional) | Enable |
| YouTube Data API v3 | Upload videos (optional) | Enable |
To enable each:
- Click the Enable link above
- Make sure your project is selected (top bar)
- Click Enable
This is how the project authenticates with Google Cloud:
- Go to Service Accounts
- Click + Create Service Account
- Name:
stickman-studio-sa - Click Create and Continue
- Under Grant access β Add roles:
- Vertex AI User (
roles/aiplatform.user) - Storage Object Admin (
roles/storage.objectAdmin)
- Vertex AI User (
- Click Done
- In the service accounts list, click on the email of your new account
- Go to Keys tab β Add Key β Create New Key
- Choose JSON β Create
- A
.jsonfile will download automatically β keep it safe! - Rename it if you like (e.g.
stickman-studio-key.json)
-
Move the service account JSON key to the project root folder (
Stickman-Studio/) -
Copy the example env file:
cp .env.example .env
-
Open
.envin any text editor and fill in:# Your GCP project ID (from Step 7) GCP_PROJECT_ID=stickman-studio-123456 # Path to the service account key (from Step 9) GOOGLE_APPLICATION_CREDENTIALS=stickman-studio-key.json # GCP region (keep default) GCP_LOCATION=us-central1
-
Save the file
Why install gcloud CLI?
The gcloud CLI is helpful for:
- Debugging authentication issues
- Managing Google Cloud resources from the terminal
- Setting up Application Default Credentials (if not using a service account)
Not required for basic usage β the service account key is sufficient.
Windows
# Download installer
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe
# Run the installer (follow GUI prompts)
# After installation, authenticate:
gcloud auth application-default loginmacOS / Linux
# Install
curl https://sdk.cloud.google.com | bash
exec -l $SHELL
# Authenticate
gcloud auth application-default login# Make sure virtual environment is activated
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
# Generate a video with default slideshow mode:
python orchestrator.py "How black holes work" --video-mode slideshow
# Generate with Veo animation (premium, costs credits):
python orchestrator.py "Why the sky is blue" --video-mode animationWhat to expect:
[1/4] βοΈ Script β Gemini generates storyboard (5-10 sec)
[2/4] π¨ Images β Imagen generates scene images (30-60 sec)
[3/4] π¬ Video β ffmpeg Ken Burns zoom (10-20 sec)
[3.5] π£οΈ TTS β edge-tts generates narration (10-30 sec)
[4/4] ποΈ Assembly β ffmpeg combines everything (10-20 sec)
β
Video saved to: projects/how_black_holes_work/final.mp4
streamlit run app.pyOpens in your browser at http://localhost:8501
To enable automatic publishing to YouTube:
- Go to Google Cloud Console β Credentials
- Click + Create Credentials β OAuth Client ID
- Application type: Desktop app
- Name:
Stickman Studio YouTube Uploader - Click Create
- Click Download JSON β rename it to
client_secrets.json - Move
client_secrets.jsonto the project root folder - First upload will open your browser for OAuth consent:
- Sign in with your YouTube channel's Google account
- Click Advanced β Go to App (unsafe) β Allow
- Token is cached in
youtube_token.jsonfor future runs - β Done! All future uploads will be automatic.
Topic Input
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 1: Script (Gemini 2.5 Flash) β
β β Viral hook + scene-by-scene storyboard.json β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 2: Images (Imagen 3.0) β
β β Character reference + consistent scene images β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 3: Video β
β ββ slideshow: ffmpeg Ken Burns zoom (FREE) ββββββββ
β ββ animation: Veo 2.0 image-to-video (premium) ββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 3.5: Narration (edge-tts β FREE) β
β β Per-scene MP3 with neural voices β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 4: Assembly (ffmpeg β local) β
β β Concatenate + overlay audio + BGM β final.mp4 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 5: YouTube Upload (OAuth 2.0) β
β β Auto-publish as public with title, desc, tags β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Pre-generated example videos showing the pipeline output (also available on the Releases page):
| Slideshow Mode β "How Gravity Works" (2.3 MB) | Slideshow Mode β "How Magnets Work" (0.6 MB) |
|---|---|
| 3 scenes each β AI script (Gemini) + AI images (Imagen) + Ken Burns zoom (ffmpeg) + neural TTS (edge-tts) + subtitles (MoviePy) | |
All samples are in samples/ directory. Generate your own with:
python orchestrator.py "Your topic here" --video-mode slideshowLaunch the full GUI:
streamlit run app.pyTabs:
| Tab | Purpose |
|---|---|
| Studio | Select an idea, generate video, preview, publish |
| Gallery | Browse all previously generated projects |
| Ready to Upload | Videos from batch production, ready for YouTube |
| Schedule | Autonomous mode toggle, random 5β7h intervals |
| Monthly | 30-day production plan with kill switch & health monitor |
- Live logs β real-time pipeline output in
st.status - Progress bars β per-phase, per-video tracking
- System Health β π’ Green / π‘ Yellow / π΄ Red indicator
- Kill Switch β immediately halt all autonomous processes
- Estimated API Usage β remaining Gemini/Imagen calls
- System Logs β expandable panel with last 100 log lines
| Feature | Cost | Notes |
|---|---|---|
| Slideshow Mode | $0 | --video-mode slideshow β ffmpeg Ken Burns zoom |
| edge-tts | $0 | Free neural TTS, no API key needed |
| Local Caching | $0 | Re-runs skip completed phases entirely |
| Gemini 2.5 Flash | ~$0.0005/call | Script generation |
| Imagen 3.0 | ~$0.02/image | Image generation |
| Veo 2.0 | ~$0.05/clip | Only when using --video-mode animation |
| YouTube Upload | $0 | Free via OAuth 2.0 |
Default mode is slideshow to minimize costs.
# Via dashboard: Schedule tab β Toggle OnRandomised intervals avoid YouTube pattern detection.
# Via dashboard: Monthly tab β Start Monthly Plan- 1β3 videos/day, randomly assigned
- 5-day blocks with rotating publishing windows (08:00, 10:00, 14:00, 16:00, 20:00)
- Persists to
system_state.jsonβ survives server reboots - Kill switch available in the UI
# CLI: process all ideas in daily_plan.json
python -c "from scheduler import start_batch_production; start_batch_production()"
# Full autonomous cycle (plan β produce β upload)
python -c "from scheduler import run_autonomous_cycle; run_autonomous_cycle('Science')"stickman_studio/
βββ app.py # Streamlit dashboard
βββ orchestrator.py # CLI + importable pipeline runner
βββ content_planner.py # Gemini β viral video ideas
βββ scheduler.py # Batch + autonomous + monthly scheduler
βββ uploader.py # YouTube OAuth 2.0 upload + auto-publish
βββ tts_engine.py # edge-tts (free local TTS)
βββ storage.py # GCS upload/download
βββ ai_engine.py # Module-level wrappers for all phases
βββ requirements.txt
βββ .env.example β .env # Configuration
βββ client_secrets.json # YouTube OAuth (user-provided)
βββ samples/ # Pre-generated example videos
βββ assets/
β βββ bgm.mp3 # Optional background music
βββ stickman_studio/
β βββ config.py # .env loading + Vertex AI init
β βββ logging_setup.py # Console + file logging
β βββ models.py # Scene / StoryBoard dataclasses
β βββ retry.py # Tenacity retry decorator
β βββ phases/
β βββ phase1_script.py # Gemini storyboard
β βββ phase2_images.py # Imagen 3.0 images
β βββ phase3_video.py # Veo 2.0 video
β βββ phase3_slideshow.py # Ken Burns zoom
β βββ phase4_assembly.py # ffmpeg concat + audio
β βββ phase4_subtitles.py # MoviePy subtitles
| Dependency | Version | Purpose |
|---|---|---|
| Python | 3.10+ | Runtime |
google-cloud-aiplatform |
β₯1.158 | Vertex AI SDK |
google-genai |
β₯2.9 | Veo client |
edge-tts |
β₯7.2 | Free TTS |
streamlit |
β₯1.28 | Dashboard |
moviepy |
β₯2.1 | Subtitles |
google-api-python-client |
β | YouTube API |
google-auth-oauthlib |
β | YouTube OAuth |
ffmpeg |
β₯4.0 | Video assembly |
stickman-studio ai-video-generation google-vertex-ai
gemini imagen veo youtube-automation content-creator
python streamlit edge-tts text-to-video
free-tts ai-animation video-pipeline
Add these to your GitHub repo β Settings β Topics for discoverability.
MIT Β© 2026 β Free to use, modify, and distribute.
Made with β€οΈ and π€
Automate your content. Own your audience.