
Video Translator
Dub a video into another language and generate subtitles using the default Together +...
Install
npx skills add shang-zhu/violin --skill video-translator -g -a claude-code -y- Repository
- shang-zhu/violin1.1k
- Category
- Git and review
- Updated
- 2mo ago
- License
- MIT
- Context cost
- Lightabout 902 tokens
- Runs scripts
- No, instructions only
What it does
Dub a video into another language and generate subtitles using the default Together + Cartesia stack. Trigger when the user wants to translate / dub / voice-over a video file, or generate subtitles for it. Handles `.mp4` / `.mkv` / `.webm`. Installs as the `violin` CLI (and `violin-api` for the FastAPI server) via `uv tool install`. For alternative models (OpenAI / ElevenLabs) or custom configs, point the user to the repo: https://github.com/shang-zhu/violin.
Violin, operating skill
Always uses the default config (Together for translation, cartesia/sonic-3 for TTS). If the user asks for OpenAI, ElevenLabs, or custom configs, stop and point them to the Violin repo, those flows aren't supported through the global CLI.
Pre-flight
Run these silently first. Abort if any fails:
command -v violin # 1. CLI on PATH
test -f "<input>" # 2. Input exists
printenv TOGETHER_API_KEY # 3. Key available
If violin is missing: tell the user to uv tool install violin, then violin --install-skill to refresh this skill file. Do not auto-install.
If TOGETHER_API_KEY is missing:
- Inside the Violin repo → populate
.env(auto-loaded) - Elsewhere →
export TOGETHER_API_KEY=...in~/.zshrc/~/.bashrc, thensourceit
Decisions
- CLI vs API: single run-and-wait file → CLI (
violin). Multi-job / HTTP / web UI → API server (violin-api); print the command, don't auto-start it. - Style (
--style): defaultstandard. Kids content →kids, formal/lecture →academic, casual →casual, dramatic →storyteller, news →news. Runviolin --style listif unsure. - Voiceover: keep default (mix dubbed audio over a quiet original). Use
--no-voiceoveronly when the user explicitly says "replace audio entirely".
Run
violin <input> <output> --language <Lang> [flags]

