From aviz85-claude-skills-library
Transcribes video audio to timestamps, translates subtitles to any language, refines for shorts/regular modes, embeds RTL-safe subs with FFmpeg.
npx claudepluginhub aviz85/claude-skills-libraryThis skill uses the workspace's default tool permissions.
End-to-end video translation pipeline: transcribe → translate → refine subtitles → embed.
Translates video subtitles to any language (e.g., Hebrew, Arabic) via pipeline: transcribe audio, translate with context, refine semantically, embed RTL-safe subtitles.
Generates SRT subtitles from video/audio with Hebrew (ivrit.ai) and English (Whisper) transcription, translation, and burns into video. Use for captions, transcripts, or hardcoded social media subs.
Burns SRT subtitles into video files using FFmpeg via TypeScript CLI script. Supports styling options, end credits, RTL detection/fix, and frame extraction.
Share bugs, ideas, or general feedback.
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 |