Agent skill

translate-video

Translate video subtitles to any language with native-quality refinement. Full pipeline: transcribe → translate → refine → embed RTL-safe subtitles. Use for: translate video, תרגם סרטון, video translation, foreign subtitles, Hebrew subtitles, translated captions.

Stars 26
Forks 7

Install this agent skill to your Project

npx add-skill https://github.com/aviz85/claude-skills-library/tree/main/plugins/translate-video/skills/translate-video

SKILL.md

Translate Video

End-to-end video translation pipeline. Takes a video, transcribes it, translates to target language with native-speaker refinement, and burns subtitles onto the video.

Usage

/translate-video /path/to/video.mp4 he
/translate-video /path/to/video.mp4 ar
/translate-video /path/to/video.mp4 es

Arguments:

  • $1 - Path to video file (required)
  • $2 - Target language code (default: he). Codes: he, ar, es, fr, de, ru, zh, ja, etc.

Pipeline

Step 1: Transcribe (via /transcribe skill)

Extract audio if video is too large (>25MB audio), then transcribe:

bash
# Extract audio if needed (reduces upload size)
ffmpeg -i "$VIDEO" -vn -acodec libmp3lame -ab 128k "$AUDIO_PATH" -y

# Transcribe using the transcribe skill's script
cd ~/.claude/skills/transcribe/scripts && [ -d node_modules ] || npm install --silent
npx ts-node transcribe.ts -i "$INPUT" -o "$SRT_PATH"

This generates:

  • {basename}.srt - Raw SRT file
  • {basename}.md - Readable text

Step 2: Translate

Read the .md file to understand full context, then translate the .srt file.

Translation rules:

  • Translate ALL subtitle text entries, preserving SRT index numbers and timestamps exactly
  • Do NOT translate proper nouns (product names, people's names, brand names)
  • Keep technical terms that are commonly used untranslated in the target language (API, CLI, SaaS, etc.)
  • Adapt idioms and expressions to natural equivalents in the target language
  • Match the speaker's register (casual/formal) in the translation

Step 3: Semantic Refinement

The raw transcription chunks by time, not meaning. Regroup for the target language:

  1. Read all translated text as continuous prose
  2. Identify natural sentence/clause boundaries in the target language
  3. Regroup words into semantically coherent subtitle entries (max 2 lines per entry, ~40 chars per line)
  4. Adjust timestamps: each entry starts at first word's original time, ends at last word's time
  5. Merge fragmented entries - aim for 150-250 entries for a ~15min video (vs 500-600 raw)
  6. Native speaker test - read each subtitle aloud. If it sounds awkward, rephrase

Quality checklist:

  • No sentence split mid-clause
  • No orphaned words (single word carrying over from previous thought)
  • Punctuation at natural break points
  • Reading pace is comfortable (not too much text per subtitle)
  • Sounds like a native speaker wrote it, not a translation

Step 4: Embed Subtitles (via /embed-subtitles skill)

RTL is handled automatically by the embed-subtitles skill - it detects RTL content and applies Unicode directional marks before embedding. No need to handle RTL here.

Burn the translated SRT onto the video:

bash
cd ~/.claude/skills/embed-subtitles/scripts
npx ts-node embed-subtitles.ts \
  -i "$VIDEO" \
  -s "$TRANSLATED_SRT" \
  -o "$OUTPUT" \
  --font-size 24 --margin 30

Or directly with FFmpeg:

bash
ffmpeg -i "$VIDEO" \
  -vf "subtitles='$TRANSLATED_SRT':force_style='FontName=Arial,FontSize=24,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,Outline=2,Shadow=1,Alignment=2,MarginV=30'" \
  -c:v libx264 -preset fast -crf 23 -c:a copy \
  "$OUTPUT" -y

Step 5: Open Result

bash
open "$OUTPUT"  # macOS

Output Files

All files saved next to the original video:

File Description
{name}.srt Original language SRT
{name}.md Original readable transcript
{name}_{lang}.srt Translated + refined SRT (with RTL marks if applicable)
{name}_{lang}_subtitled.mp4 Final video with burned-in subtitles

Language Codes

Code Language RTL?
he Hebrew Yes
ar Arabic Yes
fa Farsi Yes
en English No
es Spanish No
fr French No
de German No
ru Russian No
zh Chinese No
ja Japanese No
pt Portuguese No
it Italian No

Examples

Hebrew translation (most common use):

/translate-video ~/Desktop/tutorial.mp4 he

Produces: tutorial_he.srt + tutorial_he_subtitled.mp4

Spanish translation:

/translate-video ~/Desktop/talk.mp4 es

Default (Hebrew):

/translate-video ~/Desktop/video.mp4

Expand your agent's capabilities with these related and highly-rated skills.

aviz85/claude-skills-library

aviz-skills-installer

Install skills from the AVIZ Skills Library. Use when user wants to install a skill, browse available skills, set up Claude Code skills, or asks about skill installation. Triggers on "install skill", "add skill", "setup skill", "available skills", "skill library", "browse skills".

26 7
Explore
aviz85/claude-skills-library

wordpress-publisher

Publish posts to WordPress. Use for: publish blog post, upload to WordPress, פרסם בבלוג.

26 7
Explore
aviz85/claude-skills-library

translate-video

Translate video subtitles to any language with native-quality refinement. Full pipeline: transcribe → translate → refine → embed RTL-safe subtitles. Use for: translate video, תרגם סרטון, video translation, foreign subtitles, Hebrew subtitles, translated captions.

26 7
Explore
aviz85/claude-skills-library

aviz-skills-installer

Install skills from the AVIZ Skills Library. Use when user wants to install a skill, browse available skills, set up Claude Code skills, or asks about skill installation. Triggers on "install skill", "add skill", "setup skill", "available skills", "skill library", "browse skills".

26 7
Explore
aviz85/claude-skills-library

youtube-downloader

Download YouTube videos with quality presets. Use for: download youtube, yt download, video download, youtube to whatsapp, youtube mp3.

26 7
Explore
aviz85/claude-skills-library

reality-check

Deep code audit that detects misleading patterns — fake tests, mock abuse, shallow health checks, overly optimistic error handling, hidden debt. Produces a structured report with findings AND actionable recommendations. Use when code looks green but smells wrong.

26 7
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results