Anchor Open Source · Video Translator
The same pipeline Anchor Media ships on every paid ad. The original speaker's voice cloned for every language. Captions burned in where you placed them. No dead air, no rebuilds.
Languages
Per cut
Setup steps
Editing hours
01 · How it works
Phase · 01
Drag an MP4 onto the studio. Any aspect ratio, any duration up to ~5 minutes works comfortably.
Phase · 02
32 languages preloaded. EU-7 preset in one click, or hand-pick. Optional script if you've already translated.
Phase · 03
Drag, resize, rotate. The preview is WYSIWYG — what you see is exactly what gets burned in.
Phase · 04
Three jobs run in parallel. ElevenLabs clones the voice. Gemini handles translation. ffmpeg fits everything together.
Phase · 05
Each language drops into a delivery grid with a preview + download link. Ready to upload anywhere.
Built for ads
When the dub runs long, audio speeds up to +20% first. When it runs short, the video compresses. Never silence-padded.
02 · Setup
You don't need to know any code. You'll install Claude Code (free), give it a prompt, paste two API keys when it asks, and the studio will open in your browser.
Step 01
Claude Code is the AI assistant that will set everything up for you. Free to install. Open Terminal on your Mac (search Spotlight: ⌘ + Space, type "Terminal"), then paste the command below.
If you already have Claude Code installed, skip to Step 02.
Step 02
Still in the same Terminal window. This pulls the latest code and steps inside the project folder in one go.
Copy with the button on the top right, paste in Terminal, press Enter.
Step 03
Type one word, hit enter. Claude wakes up inside the project folder.
Step 04
Copy the box below, paste it into Claude Code, hit Enter. Claude takes over from here.
Set up the Anchor Video Translator from this repo. Read the README first. Then walk me step-by-step through getting an ElevenLabs API key and a KIE.ai API key. When I paste each key, write it into a .env file at the project root using the .env.example as a template. Run ./setup.sh to install the backend dependencies. Run ./start.sh to boot both the backend (port 8000) and frontend (port 3000). When both are running, open http://localhost:3000 in my browser and tell me what to drag in first.
Claude will
Read the project, then ask you for the keys.
You will
Paste keys (Step 05 below) when Claude asks.
Result
Browser opens at localhost:3000 ready to use.
Step 05
These two services do the heavy lifting. Open each in a new tab, follow the numbered steps, copy the key, paste it back in Claude when prompted.
Key 1
Clones the speaker's voice into each language.
sk_…). Paste back in Claude.Key 2
Cheap Gemini-3-Flash proxy. Transcription + translation.
Done
Claude will open this in your browser when both servers are running:
Video Translator · Studio
Drop your MP4 here, or click to browse
Languages
Drag any MP4 into the dropzone, hand-pick the markets, place the caption, click Translate. Three jobs run in parallel by default.
03 · When something goes sideways
Claude Code is still attached to your terminal. If something errors, copy the message and paste it into Claude. It will read the logs, find the issue, and apply the fix. Examples of things it handles automatically:
Tell Claude: "Install Python 3.12 with Homebrew and rerun setup." It will install Homebrew if missing, then install Python, then rerun ./setup.sh.
Tell Claude: "Install ffmpeg with Homebrew, then restart the backend." Should take 30 seconds.
The backend stopped. Tell Claude: "Restart the backend on port 8000." It will check the logs and bring it back.
KIE was slow. The pipeline already auto-retries 6 times. If it still fails, your KIE balance might be empty — log into kie.ai and top up another $5.
Tell Claude: "Lower MAX_CONCURRENT_JOBS to 1 in .env and restart the backend." Default is 3, which assumes 16 GB+ RAM. With 8 GB run 1 at a time.
Paste the error into Claude verbatim. It can read every file in the project and the running logs. It will tell you what's wrong and fix it without you typing commands manually.