skills/embed-subtitles/SKILL.md
Burn subtitles onto videos using FFmpeg. Use for: hardcode subtitles, embed captions, video subtitling.
npx skillsauth add aviz85/claude-skills-library embed-subtitlesInstall 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.
Burn SRT subtitles into video files using FFmpeg.
No SRT file? Use the transcribe skill first to generate subtitles from audio/video.
Need translation? After transcribing, read the SRT, translate each entry preserving timestamps, write new SRT file. No API needed.
cd ~/.claude/skills/embed-subtitles/scripts
# Burn SRT into video
npx ts-node embed-subtitles.ts -i video.mp4 -s subtitles.srt -o output.mp4
# Custom styling
npx ts-node embed-subtitles.ts -i video.mp4 -s subtitles.srt -o output.mp4 \
--font-size 24 --position bottom --margin 40
# Add credit text overlay at end
npx ts-node embed-subtitles.ts -i video.mp4 -s subtitles.srt -o output.mp4 \
--credit "Your Name" --credit-position top
| Option | Short | Default | Description |
|--------|-------|---------|-------------|
| --input | -i | (required) | Input video file |
| --subtitles | -s | (required) | SRT subtitle file |
| --output | -o | (required) | Output video file |
| --font-size | | 20 | Font size in pixels |
| --font-name | | Arial | Font family name |
| --position | | bottom | Subtitle position: top, center, bottom |
| --margin | | 25 | Margin from edge in pixels |
| --color | | white | Text color |
| --outline | | 2 | Outline thickness |
| --shadow | | 1 | Shadow depth |
| --credit | | | Credit text to show at end |
| --credit-position | | top | Credit position: top, bottom |
| --credit-duration | | 2.5 | Credit display duration in seconds |
| --extract-frame | | | Extract frame at specified second for verification |
top - Near top of video (good for credits, avoids bottom burned-in text)center - Middle of videobottom - Near bottom of video (traditional subtitle position)Before embedding ANY SRT file, Claude MUST check if the content is RTL.
Read the SRT file and check if the majority of text lines contain Hebrew/Arabic/Farsi characters:
\u0590-\u05FF\u0600-\u06FF\u0750-\u077FIf RTL content is detected, apply the fix BEFORE passing to FFmpeg.
Wrap each text line (not index numbers, not timestamps) with Unicode directional marks:
python3 -c "
import re
with open('SRT_FILE_PATH', 'r', encoding='utf-8') as f:
content = f.read()
lines = content.split('\n')
result = []
for line in lines:
stripped = line.strip()
if stripped and not re.match(r'^\d+$', stripped) and not re.match(r'\d{2}:\d{2}:\d{2}', stripped):
line = '\u202B' + line + '\u202C'
result.append(line)
with open('SRT_FILE_PATH', 'w', encoding='utf-8') as f:
f.write('\n'.join(result))
"
This fixes: English words at line start, periods/commas on wrong side, mixed bidi text.
Claude should analyze the SRT content intelligently:
--extract-frame to verify subtitle positioning before final rendertools
Start real-time microphone transcription using ElevenLabs Scribe v2 Realtime. Use when user wants to start live transcription, dictation, or real-time speech capture. Triggers on: 'תתחיל תמלול', 'תמלל בזמן אמת', 'start transcribing', 'live transcribe', 'הקלט מה שאני אומר'. After starting, tell user they can say 'אוקי זה מספיק בוא נעצור את התמלול' to stop, or use /live-transcribe-stop.
tools
Stop a running real-time transcription. Use when user wants to stop/end live transcription. Triggers on: 'עצור תמלול', 'תעצור את התמלול', 'stop transcribing', 'end transcription', 'תפסיק להקליט'.
testing
Read the latest real-time transcription. Use when user asks to see, read, or show a transcription that was captured via live-transcribe. Triggers on: 'תקריא תמלול', 'מה תמללתי', 'התמלול האחרון', 'show transcription', 'what did I say', 'read the transcript', 'מה נכתב בתמלול', 'תראה לי את התמלול'. Also use when user references transcription content without being explicit — e.g. 'summarize what I said', 'translate the transcription'.
development
Fetch X (Twitter) bookmarks via the official X API v2. Downloads recent bookmarks with text, images, and videos into a local folder. Use whenever user asks to grab/download/export their X bookmarks, save bookmarked tweets, or pull recent saved posts from X/Twitter. Uses OAuth 2.0 user-context auth (one-time browser consent, then refresh-token forever).