Raw screencast in. Narrated video + social short clip out.
DemoForge takes any raw screencast and automatically produces two things:
- A full narrated video — AI-generated voiceover merged into your original recording
- A social-ready short clip — a 10–20s highlight formatted in 9:16 for Instagram Reels, TikTok, and YouTube Shorts
No editing. No script writing. No voice recording. Just upload and go.
Recording a screencast is easy. Making it look and sound like a real product demo is not. Most screencasts end up silent, unpolished, and never shared publicly.
DemoForge solves the whole pipeline automatically:
- Watches your recording frame by frame using Claude AI
- Writes a natural voiceover script based on what's on screen
- Generates professional audio via ElevenLabs or OpenAI TTS
- Merges everything into a shareable MP4
- Auto-cuts a social short clip with AI-detected highlight moment
What makes it different from similar tools:
- Open source — self-host it, own it
- No account needed — upload and go
- Bring your own API keys — you control the cost and the data
- Privacy-first — your screencasts never touch someone else's server
- Social-first — produces a short clip automatically, not just a long narration
| Input | Output |
|---|---|
| Raw silent screencast | Full narrated MP4 + 9:16 social short clip |
| Layer | Tech |
|---|---|
| Frontend | React + Vite |
| Backend | Python + Flask |
| AI Script Generation | Claude API (Anthropic) |
| Text-to-Speech | ElevenLabs (primary) → OpenAI TTS (fallback) |
| Video Processing | ffmpeg |
Make sure you have these installed before starting:
- Python 3.10+
- Node.js 18+
- ffmpeg
On Mac:
brew install ffmpegOn Linux:
sudo apt install ffmpeggit clone https://github.com/yourusername/demoforge.git
cd demoforgecd backend
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txtCreate your .env file:
cp .env.example .envOpen .env and add your API keys:
ANTHROPIC_API_KEY=your_key_here
ELEVENLABS_API_KEY=your_key_here
OPENAI_API_KEY=your_key_here
You need ANTHROPIC_API_KEY and at least one of ELEVENLABS_API_KEY or OPENAI_API_KEY.
Create the required folders:
mkdir -p ../uploads ../outputsStart the backend:
python3 app.pyYou should see:
* Running on http://127.0.0.1:5000
* Debug mode: on
Open a new terminal window:
cd frontend
npm create vite@latest . -- --template react
npm install
npm run devGo to your browser and open:
http://localhost:5173
- Upload your screencast — MP4, MOV, WebM, or AVI up to 200MB
- Enter the product name (optional — helps Claude write a better script)
- Choose a voiceover tone — Professional, Friendly, or Energetic
- Toggle social short clip on or off
- Choose highlight mode:
- AI picks — Claude automatically finds the most interesting 10–20s moment
- You mark — enter start and end time in seconds manually
- Click Generate Demo
- Download your full narrated video and social short clip
| Key | Required | Get it at |
|---|---|---|
ANTHROPIC_API_KEY |
✅ Yes | console.anthropic.com |
ELEVENLABS_API_KEY |
One of these | elevenlabs.io |
OPENAI_API_KEY |
is required | platform.openai.com |
ElevenLabs free tier gives you 10,000 characters/month — more than enough for testing.
Upload screencast
↓
ffmpeg extracts 1 frame per second
↓
Sample up to 10 frames evenly
↓
Claude API: analyze frames → write voiceover script
↓
ElevenLabs / OpenAI TTS: script → MP3 audio
↓
ffmpeg: merge original video + audio → full narrated MP4
↓
Claude API: detect best 10–20s highlight moment
↓
ffmpeg: cut highlight → reformat to 9:16 → social short MP4
↓
Return script + full video + short clip
demoforge/
├── backend/
│ ├── app.py # Flask server + full pipeline
│ ├── requirements.txt # Python dependencies
│ └── .env.example # Environment variables template
├── frontend/
│ └── src/
│ └── App.jsx # React UI
├── uploads/ # Temporary uploaded videos
├── outputs/ # Generated videos and audio
└── README.md
| Tone | Style |
|---|---|
| 🎯 Professional | Clear and confident — SaaS product demo style |
| 🤝 Friendly | Warm and conversational — like showing a friend |
| ⚡ Energetic | Punchy and enthusiastic — startup pitch energy |
- Auto-generated captions on the short clip
- Visual highlight selector — drag on a timeline instead of typing seconds
- Multiple voice options for ElevenLabs
- Background job queue for large files
- One-click share to YouTube / social platforms
Contributions are welcome! Feel free to open an issue or submit a pull request.
MIT — do whatever you want with it.
Built in one day by Team Momentum 🚀