Video Translator
Dubs a video into 33 languages with native voices and SRT via the violin CLI
Test report
- Verdict
- Works with setup
- Score
- Tested
- Jul 21, 2026
- Environment
- Claude Code 2.x (agent harness)
- Upstream re-checked
- Aug 10, 2026 · f497937
I actually ran `uv tool install violin` on this machine: it installed on Python 3.11 and then every invocation died with `SyntaxError: f-string: unmatched '['` in pipeline/costs.py:111 (PEP 701 nested quotes need 3.12+), despite pyproject/PyPI declaring requires-python >=3.10; reinstalling with `--python 3.13` fixed it. With the working CLI I verified the SKILL.md against reality: every flag in its table matches `violin --help` one-for-one, `violin --style list` returns exactly the six styles it names, and pipeline/languages.py holds exactly 33 languages while tts_elevenlabs.py has native voices for exactly the 16 it lists (zh es en hi ar pt ru ja tr de ko fr it pl nl sv) — no overclaiming. All three body-referenced files fetched HTTP 200 (pipeline/pricing.py, config/default.yaml, config/other_api.yaml, plus README.md); no curl|sh inside SKILL.md (only the standard astral uv installer in the README), no base64, no secret exfiltration, and it explicitly forbids auto-installing. I could NOT run a real dub — no TOGETHER_API_KEY or Cartesia key in this environment and each run bills a paid API — so output is scored on verifiable guidance only, not a produced video; the plan-level comparison for "dub a kids cartoon into German with subtitles and keep the original audio underneath" showed the skill saving two discovery round-trips (`--help`, `--style list`), correctly omitting `--voiceover`/`--subtitles` because both are defaults, adding `--style kids`, and requiring the run cost be surfaced — things a from-scratch attempt would guess wrong. Trigger phrasings judged: SHOULD (all 3 correct) "Dub demo.mp4 into Spanish for our LATAM launch", "I have a product walkthrough in English — make a Chinese voice-over version", "Translate lecture.mkv into German and give me an SRT"; SHOULD NOT: "Translate this README.md into German" (correctly skipped — text, not video), "Generate English captions/SRT for my English-language webinar recording" (WRONG — the description's "or generate subtitles for it" would pull the skill in, but the body admits there is no subtitles-only mode and same-language captioning would force a paid full dub), so 4/5.
Scored on four weighted criteria — install, triggering, output vs. baseline, docs. How scoring works
- Installs cleanly 4/5
- Triggers reliably 4/5
- Output vs. baseline 6/10
- Docs & honesty 4/5
What Video Translator does
Wraps the open-source Violin CLI so Claude can dub an .mp4/.mkv/.webm into another language: it transcribes with Whisper, translates with an LLM, synthesizes a voice-over with Cartesia Sonic 3, and remuxes the video with an optional SRT. Triggers when a user asks to translate, dub, or voice-over a video file, or wants subtitles for one. The skill file adds a pre-flight check (CLI on PATH, input exists, TOGETHER_API_KEY set), a flag table, style-profile selection (standard/kids/academic/casual/storyteller/news), and rules to surface run cost and stay on the default Together stack.
How to install Video Translator
git clone --depth 1 https://github.com/shang-zhu/violin.git /tmp/video-translator-src
mkdir -p ~/.claude/skills
cp -R /tmp/video-translator-src/.claude/skills/video-translator ~/.claude/skills/video-translator
# The skill is a wrapper — it needs the violin CLI to do anything:
# brew install ffmpeg
# uv tool install --python 3.13 violin # pin 3.12+: the published 0.1.1 sdist claims >=3.10 but SyntaxErrors on 3.10/3.11
# export TOGETHER_API_KEY=... # get one at https://api.together.ai
# Verify: violin --help && violin --style list
# (`violin --install-skill` copies the same SKILL.md itself.)
Skills live in ~/.claude/skills/ (global) or .claude/skills/
(per-project). Restart Claude Code after installing.
Commands — how to trigger Video Translator
-
/video-translatorDubs a video into 33 languages with native voices and SRT via the violin CLI
It also activates on plain-language prompts like these:
-
Dub this video into Spanish for me -
Generate subtitles for this MP4 file -
Translate and voice-over this video into French
Frequently asked questions
- Is the Video Translator skill free?
- Yes. The skill itself is free from shang-zhu/violin. SkillProof publishes the install command and an independent test verdict at no cost.
- Does Video Translator work with Claude Code?
- We tested it with Claude Code 2.x (agent harness) on Jul 21, 2026. Verdict: Works with setup. I actually ran `uv tool install violin` on this machine: it installed on Python 3.11 and then every invocation died with `SyntaxError: f-string: unmatched '['` in pipeline/costs.py:111 (PEP 701 nested quotes need 3.12+), despite pyproject/PyPI declaring requires-python >=3.10; reinstalling with `--python 3.13` fixed it. With the working CLI I verified the SKILL.md against reality: every flag in its table matches `violin --help` one-for-one, `violin --style list` returns exactly the six styles it names, and pipeline/languages.py holds exactly 33 languages while tts_elevenlabs.py has native voices for exactly the 16 it lists (zh es en hi ar pt ru ja tr de ko fr it pl nl sv) — no overclaiming. All three body-referenced files fetched HTTP 200 (pipeline/pricing.py, config/default.yaml, config/other_api.yaml, plus README.md); no curl|sh inside SKILL.md (only the standard astral uv installer in the README), no base64, no secret exfiltration, and it explicitly forbids auto-installing. I could NOT run a real dub — no TOGETHER_API_KEY or Cartesia key in this environment and each run bills a paid API — so output is scored on verifiable guidance only, not a produced video; the plan-level comparison for "dub a kids cartoon into German with subtitles and keep the original audio underneath" showed the skill saving two discovery round-trips (`--help`, `--style list`), correctly omitting `--voiceover`/`--subtitles` because both are defaults, adding `--style kids`, and requiring the run cost be surfaced — things a from-scratch attempt would guess wrong. Trigger phrasings judged: SHOULD (all 3 correct) "Dub demo.mp4 into Spanish for our LATAM launch", "I have a product walkthrough in English — make a Chinese voice-over version", "Translate lecture.mkv into German and give me an SRT"; SHOULD NOT: "Translate this README.md into German" (correctly skipped — text, not video), "Generate English captions/SRT for my English-language webinar recording" (WRONG — the description's "or generate subtitles for it" would pull the skill in, but the body admits there is no subtitles-only mode and same-language captioning would force a paid full dub), so 4/5.
- What is the Video Translator SkillProof Score?
- 7.2/10 — installs cleanly 4/5, triggers reliably 4/5, output vs. baseline 6/10, docs & honesty 4/5.
- How do I install Video Translator?
- Copy the install command from this page, run it in your terminal, and restart Claude Code. Skills live in ~/.claude/skills/ (global) or .claude/skills/ inside a project.
- Can I use Video Translator with Cursor, Copilot, Gemini CLI, Codex or other AI tools?
- The SKILL.md format is native to Claude (Claude Code, Desktop, claude.ai). The instructions inside adapt to other assistants: Cursor rules, GitHub Copilot instructions, Windsurf rules, Custom GPTs, AGENTS.md for OpenAI Codex, and GEMINI.md for Google Gemini CLI — our conversion guides cover each, and the free converter on the tools page does the wrapping for you.