MCPInstall

short-translate

Translates a talking-head take (or a finished video) into another language with the creator's own cloned voice through ElevenLabs Dubbing, using their ElevenLabs API key - sets the key up, trims the take first so no stutter is paid for, estimates the minutes, sends it after a yes, waits, lays the dubbed voice back on the image, then hands the translated take to short-editing for captions in the new language. Use when the user says translate, dub, dubbing, English version, Spanish version, traduis, version anglaise, doublage, ElevenLabs, or wants a second account in another language.

Installs
260
Last 24h
+20
Trending rank
#5801
Security
Not audited

Install

Works with every agent the skills CLI supports.

npx skills add https://github.com/melvynx/video-agent-skills --skill short-translate
  1. 01

    Install

    Run the command in your project. The CLI asks which agents to install for.

  2. 02

    Describe the task

    Ask your agent for something this skill covers. It loads short-translate automatically when relevant.

  3. 03

    Review the result

    The agent follows the SKILL.md steps, scripts and references bundled with the skill.

SKILL.md

The instructions your agent reads when the skill is triggered.

Short Translate

One take in, the same take in another language out, in the creator's own voice (ElevenLabs clones it from the take itself). The image stays the original: no lip-sync. Then /short-editing edits the translated take like any other, with captions in the new language.

Talk to them in their language. <slug>: the take's slug; <lang>: the target language code (en, es, fr, de, pt, it, ja...), <from>: the source one.

1. The ElevenLabs key (once)

The key lives in video-agent/.env, never in a chat message, a script or a commit:

grep -c ELEVENLABS_API_KEY video-agent/.env 2>/dev/null

0 or no file:

  1. They create a key at elevenlabs.io/app/settings/api-keys (an ElevenLabs account; dubbing uses the credits of their plan, the free plan adds a watermark).
  2. They paste it into video-agent/.env themselves, as one line: ELEVENLABS_API_KEY=sk_.... Offer to create the empty file and open it. Never ask them to paste the key in the chat; if they do anyway, write it to the file and tell them they can regenerate it.
  3. video-agent/.env must be in the project's .gitignore (add the line video-agent/.env if it isn't).

Every command below loads it with set -a; . video-agent/.env; set +a and never prints it.

2. What to translate

Translate the take, not a finished video: a finished video has captions burned in the old language. Then short-editing cuts, captions and times everything on the new voice.

  • A take already edited (video-agent/edits/short-<slug>/source/spec.js exists): send only the kept parts, so no silence, stutter or retake is paid for. Make the plain cut at normal speed with short-editing's engine: add speed: 1 to the spec for this one command, then
    node <skill>/engine/short.mjs rough video-agent/edits/short-<slug>
    
    (<skill> = the short-editing skill folder) and remove speed: 1 again. The source is video-agent/edits/short-<slug>/output/short-<slug>-rough.mp4.
  • A raw take: offer to run /short-editing up to its cut list first (steps 1 to 4) for the same reason. In a hurry: send the raw take as it is.

3. Estimate, then send

ffprobe -v error -show_entries format=duration -of csv=p=0 "<source>"

Show one line and wait for a yes: Dub <slug> fr → en · 0:52 of video · billed on your ElevenLabs credits for about 1 minute (check your plan's dubbing price on elevenlabs.io/pricing) · no lip-sync.

Then send it (about 10 s per minute of upload):

mkdir -p video-agent/.tmp
set -a; . video-agent/.env; set +a
curl -sS --fail-with-body -X POST https://api.elevenlabs.io/v1/dubbing \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -F "file=@<source>" -F "target_lang=<lang>" -F "source_lang=<from or auto>" \
  -F "num_speakers=1" -F "watermark=false" -F "name=<slug>-<lang>" \
  > video-agent/.tmp/<slug>-<lang>.job.json
cat video-agent/.tmp/<slug>-<lang>.job.json

It returns {"dubbing_id": "...", "expected_duration_sec": ...}. Keep the id: if anything stops, polling again with it costs nothing. A 401 is a wrong key; a 402 or "quota" means no credits left on their plan; watermark refused: send it again without that field.

4. Wait, then download

Poll every 15 s until status is dubbed (failed: show the error and stop). Usually 1 to 5 minutes for a short; run it in the background:

set -a; . video-agent/.env; set +a
curl -sS --fail-with-body -H "xi-api-key: $ELEVENLABS_API_KEY" https://api.elevenlabs.io/v1/dubbing/<dubbing_id>

Then the dubbed file:

set -a; . video-agent/.env; set +a
curl -sS --fail-with-body -H "xi-api-key: $ELEVENLABS_API_KEY" -o video-agent/.tmp/<slug>-<lang>.dub https://api.elevenlabs.io/v1/dubbing/<dubbing_id>/audio/<lang>
ffprobe -v error -show_entries stream=codec_type -of csv=p=0 video-agent/.tmp/<slug>-<lang>.dub
  • It has a video stream: it is already the dubbed video, move it to video-agent/takes/<slug>-<lang>.mp4.
  • Audio only: lay it back on the original image:
    ffmpeg -y -i "<source>" -i video-agent/.tmp/<slug>-<lang>.dub -map 0:v -map 1:a -c:v copy -c:a aac -b:a 192k -shortest video-agent/takes/<slug>-<lang>.mp4
    

Check it: same length as the source (within a second). Then ask them to listen to the first 10 seconds before editing (voice, accent, a wrong word).

5. Edit the translated take

/short-editing <slug>-<lang>, and tell it:

  • The language changed: in video-agent/studio/whisper-config.mjs, set WHISPER_LANG to <lang> for this transcription (English: WHISPER_MODEL = "medium.en" works best; any other language: "medium"), and put it back after. The hook, the boards and post.md are written in <lang>.
  • Same edit as the original when there is one: same hook and boards (translated), placed on the matching words of the new transcript.
  • The ask (CTA) in <lang>: ask them once for its translation, or translate the one in voice.md and show it.

Name everything <slug>-<lang> so both versions sit side by side. Then /publish <slug>-<lang> on the account for that language.

Delete video-agent/.tmp/<slug>-* at the end, except the job file if they may want to download the dub again.

Honest limits

  • No lip-sync: the lips move in the original language. Fine with a lot of motion, a small face or quick cuts; noticeable on a long close-up.
  • The voice clone comes from the take: a noisy take or music under the voice gives a worse clone.
  • Machine translation: names, jargon and jokes can come out wrong. Ask them (or a native speaker) to check the transcript of the dubbed take before posting.
  • Dubbing costs ElevenLabs credits per minute, and the price depends on their plan. Trimming the take first is the cheapest saving.

FAQ

What does the short-translate skill do?

Translates a talking-head take (or a finished video) into another language with the creator's own cloned voice through ElevenLabs Dubbing, using their ElevenLabs API key - sets the key up, trims the take first so no stutter is paid for, estimates the minutes, sends it after a yes, waits, lays the dubbed voice back on the image, then hands the translated take to short-editing for captions in the new language. Use when the user says translate, dub, dubbing, English version, Spanish version, traduis, version anglaise, doublage, ElevenLabs, or wants a second account in another language.

How do I install short-translate?

Run npx skills add https://github.com/melvynx/video-agent-skills --skill short-translate in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/short-translate/ (personal) or .claude/skills/short-translate/ (project).

Which AI agents can use short-translate?

Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.

Is short-translate safe to install?

No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.

Who maintains short-translate?

It is published by melvynx in melvynx/video-agent-skills. It has 260 recorded installs.

More from melvynx/video-agent-skills

View all →

short-editing

melvynx/video-agent-skills

Edits a talking-head take end to end into a paper-style motion design short (1080x1920, also 1:1 and 16:9) with its own render engine (Node + Chrome + ffmpeg, free, offline). Use when the user says edit, cut, captions, subtitles, motion design, montage, "make it a short", render, or gives a recording from video-agent/takes/. Transcribes locally with word timings (whisper.cpp, or ElevenLabs when a key is set), cuts every silence, lays the boards on a textured paper above the camera card (counters, terminals, logos, trees, real screens, HTML motion components), word-by-word captions, a calm music bed, a few designed hits, -14 LUFS, and writes the mp4, an .srt and the post copy.

Media & Creative301 installs

codex-images

melvynx/video-agent-skills

Open the skill to read its SKILL.md instructions.

Media & Creative294 installs

studio-script

melvynx/video-agent-skills

Open the skill to read its SKILL.md instructions.

AI & Agents289 installs

studio-setup

melvynx/video-agent-skills

Open the skill to read its SKILL.md instructions.

AI & Agents282 installs

steal

melvynx/video-agent-skills

Open the skill to read its SKILL.md instructions.

AI & Agents272 installs

clips

melvynx/video-agent-skills

Turns one long video (YouTube link, podcast, webinar, livestream, or a local file) into finished vertical shorts. Use when the user says long to short, repurpose, long video to shorts, clips from my video, podcast clips, cut my YouTube video into shorts, or gives a long video link. Finds clips that stand alone (one idea, 20 to 60 seconds), scores them, cuts them and edits each one with short-editing (split-screen paper look, captions, cuts, hook, boards, 1080x1920), and writes new scripts in the studio-script format from the ideas too spread out to clip. Reads YouTube captions and chapters with yt-dlp, or transcribes a local file with the short-editing engine (whisper.cpp, free, offline).

Media & Creative270 installs

Popular docs & writing skills

View category →

grill-with-docs

mattpocock/skills

A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

Docs & Writing1.2M installs

lark-markdown

open.feishu.cn

飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。

Docs & Writing778.7K installs

writing-beats

mattpocock/skills

Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.

Docs & Writing490.7K installs

writing-shape

mattpocock/skills

Writing, exploit: shape raw material into an article, paragraph by paragraph.

Docs & Writing490.2K installs

writing-fragments

mattpocock/skills

Writing, explore: mine raw fragments, no structure yet.

Docs & Writing489.6K installs

writing-for-agents

mattpocock/skills

Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.

Docs & Writing479.3K installs