Open source · AGPL-3.0

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.

Next.jsGemini visionWhisperFFmpegRunPod
Demo

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.

localhost:3000/express-builder
Dabu Express Builder: a four-line script is typed, four clips and a voiceover are added, the job processes, and the results page shows the cut ad with a scene breakdown, then Clip Studio finds stock moments for each line.

The real Dabu frontend, recorded headless. The brand (Northwind Candles), the AI-generated clips and the backend replies are demo data.

The studios

Five tools around one idea:
let the model do the searching.

    How it works

    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.

    01 · UPLOAD

    Script, clips, voiceover

    The browser sends raw clips straight to S3-compatible storage with presigned URLs.

    Next.js
    02 · SCORE

    Gemini scores every clip

    Clips are compressed, then Gemini vision matches each script line to the best few seconds of footage.

    Gemini vision
    03 · TIME

    Cuts land on your words

    With a voiceover, Whisper returns word timings so each cut starts on its line.

    Whisper · optional
    04 · CUT

    FFmpeg exports 9:16

    A RunPod worker extracts, merges and scales every cut to a 1080×1920 vertical video.

    RunPod · FFmpeg
    05 · RESULTS

    Your ad, ready to post

    Watch the cut, check each scene and its score, then download it or open it in CapCut.

    Results page

    RunPod workers scale to zero, so you pay only for the GPU seconds a job uses. Each job also writes script.txt and timestamps.json.

    Quick start

    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 analysis
    OPENAI_API_KEYWhisper timing (optional)
    DO_SPACES_*video storage
    RUNPOD_*GPU worker
    CLERK_*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