ashishjamarkattel / Animator
git clone https://github.com/ashishjamarkattel/Animator.git
—
+2
stars, 24h · #5,708
+~14
stars, 7 days · #6,450
+252
stars, 30 days · #2,049
263
★ total · +6% this week
32
forks · 1 open issues
Star history (as recorded here)
LanguagePython
License—
Created2026-10-03 (19d ago)
Last push6d ago
Watchers0
OwnerUser
Links
README excerpt
Animator Type an idea, get a narrated whiteboard video. One prompt in, a hand-drawn explainer out. Script, drawings, voice and animation included. Quick Start · Examples · How it works · Usage · Customise [code] One command writes the script, draws each scene, records the narration, and animates every icon *while its sentence is being spoken*. A 4–5 scene video takes about a minute. ## Examples All four were generated from a single prompt each, with no editing afterwards. Einstein's Famous Equation 4 scenes · 1:39 examples/einstein_emc2.mp4 How Photosynthesis Works 5 scenes · 1:50 examples/photosynthesis.mp4 How Wings Create Lift 5 scenes · 1:36 examples/plane_flight.mp4 How Bees Make Honey 4 scenes · 1:41 examples/how_bees_make_honey.mp4 Click a preview to open the full video with sound. ## How it works [code] Steps 2–4 run for all scenes in parallel. Step 5 runs locally on CPU: it writes text stroke by stroke, traces outlines from their real endpoints, fills shapes with brush strokes, and draws branching line art one path at a time. A small bundled CRAFT model tells text apart from shapes. No GPU is needed. ## Setup You need **Python 3.10+** and **FFmpeg**. [code] Get a key at Google AI Studio. The `.env` file is loaded automatically and is git-ignored. ### With Docker Runs the web app and its API together. You need Docker, plus the two `.env` files from setup: the repo's `.env` (Supabase server settings) and `frontend/.env` (see frontend/README.md). [code] | | Address | |---|---| | Web app | http://localhost:5173 | | API | http://localhost:8000 | The web app keeps port 5173 so Supabase sign-in redirects work unchanged. Stop `npm run dev` and any local API server first, since they use the same ports. The `frontend/.env` values are built into the web app, so run `docker compose up --build` again after changing them. The command line works in the container too: [code] ### Deploying to a server `docker-compose.prod.yml` adds Caddy, which serves everything on one HTTPS address and gets the certificate itself: `/api/*` goes to the API, everything else to the web app. Any Linux server with Docker works; Oracle Cloud's Always Free Ampere VM is enough. 1. Point your domain's DNS `A` record at the server's public IP. 2. On the server: `git clone` this repo, then run `deploy/setup-vm.sh` once. On Oracle, also allow TCP 80 and 443 in the subnet's security list. 3. Copy your `.env` and `frontend/.env` to the server, and add `DOMAIN=yourdomain.com` to `.env`. 4. Start it: [code] 5. In Supabase, add `https://yourdomain.com` under **Authentication → URL configuration** (Site URL and redirect URLs). To update later: `git pull`, then run the same `up -d --build` command. ## Usage ### From a prompt [code] | Flag | What it does | |---|---| | `--scenes N` | Exact number of scenes (default: Gemini decides, usually 3–6) | | `--voice NAME` | Gemini TTS voice (default `Kore`) | | `--quality low\|medium\|high` | 20fps/500k, 24fps/1500