skills/translate-video/SKILL.md
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.
npx skillsauth add aviz85/claude-skills-library translate-videoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
End-to-end video translation pipeline: transcribe → translate → refine subtitles → embed.
/translate-video /path/to/video.mp4 he --regular
/translate-video /path/to/video.mp4 he --shorts
$1 — video file path (required)$2 — target language code (default: he). See references/languages.md$3 — --shorts (TikTok/Reels) or --regular (YouTube/tutorials). If omitted, ask the user.If audio > 25MB, extract first:
ffmpeg -i "$VIDEO" -vn -acodec libmp3lame -ab 128k "$AUDIO.mp3" -y
Transcribe with word-level JSON (always include --json):
cd ~/.claude/skills/transcribe/scripts && [ -d node_modules ] || npm install --silent
npx ts-node transcribe.ts -i "$INPUT" -o "$BASENAME.srt" --json
Produces: {basename}.srt, {basename}.md, {basename}_transcript.json
Read .md for full context. Translate the .srt — preserve all timestamps and index numbers exactly. See translation rules in references/modes.md.
Read references/modes.md for full rules.
--shorts: Fix text only, preserve all timestamps. No merging.
--regular: Merge into full sentences using word-level timestamps.
.md (word counts per group)GROUP_SIZES in scripts/build-timestamps.py and run itEnforces MAX 2 lines, MAX chars/line (38 for --shorts, 42 for --regular):
python3 ~/.claude/skills/translate-video/scripts/postprocess.py "$SRT" 42
python3 ~/.claude/skills/translate-video/scripts/rtl-fix.py "$SRT"
~/.local/bin/ffmpeg-ass -i "$VIDEO" \
-vf "subtitles=$SRT:force_style='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
open "$OUTPUT"
⚠️ Do NOT use Docker ffmpeg for long videos on ARM Mac — x86 emulation is ~100x slower.
| File | Description |
|------|-------------|
| {name}.srt | Original language SRT |
| {name}.md | Readable transcript |
| {name}_transcript.json | Word-level timestamps |
| {name}_{lang}.srt | Translated + refined SRT |
| {name}_{lang}_subtitled.mp4 | Final video |
| File | Purpose | |------|---------| | references/modes.md | Detailed --shorts and --regular rules | | references/languages.md | Language codes + RTL flags | | scripts/build-timestamps.py | Word-index cursor for --regular timestamps | | scripts/postprocess.py | Enforce line limits on any SRT | | scripts/rtl-fix.py | Apply RTL Unicode markers |
development
The 10x10 method — generate breadth, then converge with human judgment. Use whenever a single AI output won't nail it and quality matters (design, copy, naming, posters, messaging, strategy options, code approaches), OR when the user says '10x10', 'ten by ten', 'give me 10 options', 'show me variations', or asks to refine/tighten an output instead of round-after-round corrections.
development
The 10x10 method — generate breadth, then converge with human judgment. Use whenever a single AI output won't nail it and quality matters (design, copy, naming, posters, messaging, strategy options, code approaches), OR when the user says '10x10', 'ten by ten', 'give me 10 options', 'show me variations', or asks to refine/tighten an output instead of round-after-round corrections.
development
Search across all Claude Code conversation history (JSONL files) across all projects.
development
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.