Video Translator

Dubs a video into 33 languages with native voices and SRT via the violin CLI

Works with setup

Test report

Verdict
Works with setup
Score
7.2/10
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-translator Dubs 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.