Script and footage in.
A cut TikTok ad out.
Give Dabu your ad script and a folder of raw clips. Gemini watches every clip and picks the best few seconds for each line. FFmpeg cuts a 9:16 ad, timed to your voiceover.
One script. Four clips.
Twelve seconds of ad.
Type the script, drop the clips, add a voiceover. The results page shows the cut, every scene with its match score, and the script.

The real Dabu frontend, recorded headless. The brand (Northwind Candles), the AI-generated clips and the backend replies are demo data.
Five tools around one idea:
let the model do the searching.
From a script to a finished cut
A Next.js app in front, a Python worker on RunPod behind it, and object storage in the middle.
Script, clips, voiceover
The browser sends raw clips straight to S3-compatible storage with presigned URLs.
Next.jsGemini scores every clip
Clips are compressed, then Gemini vision matches each script line to the best few seconds of footage.
Gemini visionCuts land on your words
With a voiceover, Whisper returns word timings so each cut starts on its line.
Whisper · optionalFFmpeg exports 9:16
A RunPod worker extracts, merges and scales every cut to a 1080×1920 vertical video.
RunPod · FFmpegYour ad, ready to post
Watch the cut, check each scene and its score, then download it or open it in CapCut.
Results pageRunPod workers scale to zero, so you pay only for the GPU seconds a job uses. Each job also writes script.txt and timestamps.json.
Run it on your machine
You need Node 20+, Python 3.11+, FFmpeg, and keys for Gemini and Clerk. Storage and RunPod are needed for the full pipeline.
GEMINI_API_KEYclip analysisOPENAI_API_KEYWhisper timing (optional)DO_SPACES_*video storageRUNPOD_*GPU workerCLERK_*sign-in# clone git clone https://github.com/harrythentrepreneur/dabu-studio.git cd dabu-studio # frontend cd frontend cp .env.example .env.local # add your keys npm install --legacy-peer-deps npm run dev # http://localhost:3000 # backend worker (local test server) cd ../backend cp .env.example .env pip install -r requirements.txt python test_server.py
Deploying the worker: RUNPOD_DEPLOYMENT.md