Translate video subtitles (SRT, VTT, TXT) between languages. Supports batch translation and maintains timing synchronization. Use when creating multilingual subtitles, expanding to international audiences, or translating video transcripts.
npx skills add https://github.com/nicepkg/ai-workflow --skill srt-translator
Translate subtitles while preserving timing and formatting.
| Format | Extension | Description |
|--------|-----------|-------------|
| SubRip | .srt | Most common, numbered entries |
| WebVTT | .vtt | Web standard, supports styling |
| Plain Text | .txt | Transcript without timing |
1
00:00:01,000 --> 00:00:04,000
This is the first subtitle line.
2
00:00:04,500 --> 00:00:08,000
This is the second subtitle line.
It can have multiple lines.
3
00:00:08,500 --> 00:00:12,000
And so on...
ORIGINAL (English):
1
00:00:05,000 --> 00:00:08,500
Welcome to my channel!
TRANSLATED (Spanish):
1
00:00:05,000 --> 00:00:08,500
¡Bienvenidos a mi canal!
✅ Same timing, same number
✅ Natural translation (not word-for-word)
✅ Appropriate punctuation for target language
PROBLEM: Translation is longer than original
SOLUTION: Split or abbreviate while keeping meaning
ORIGINAL:
1
00:00:10,000 --> 00:00:13,000
Click the subscribe button
GERMAN (longer):
1
00:00:10,000 --> 00:00:13,000
Klickt auf den
Abonnieren-Button
✅ Split into two lines if needed
✅ Keep within ~42 characters per line
✅ Maintain readability
DON'T just translate - LOCALIZE:
Original: "That costs about 20 bucks"
Spanish (Latin America): "Eso cuesta unos 20 dólares"
Spanish (Spain): "Eso cuesta unos 20 euros"
Original: "Super Bowl Sunday"
French: "Le dimanche du Super Bowl" (keep cultural reference)
Chinese: "超级碗周日" (may need explanation)
═══════════════════════════════════════════════════════════════
SUBTITLE TRANSLATION
Source Language: [Language]
Target Language: [Language]
Total Entries: [X]
═══════════════════════════════════════════════════════════════
TRANSLATION NOTES:
─────────────────────────────────────────────────────────────
• [Any cultural adaptations made]
• [Technical terms kept/translated]
• [Idioms adapted]
TRANSLATED SRT:
─────────────────────────────────────────────────────────────
1
00:00:00,000 --> 00:00:03,500
[Translated text]
2
00:00:04,000 --> 00:00:07,500
[Translated text]
[Continue for all entries...]
═══════════════════════════════════════════════════════════════
COPY-PASTE READY FILE:
═══════════════════════════════════════════════════════════════
[Clean SRT output without notes]
Translate this SRT file to [Language]:
[Paste SRT content]
Translate to multiple languages:
Languages: Spanish, French, German, Japanese, Chinese
[Paste SRT content]
Translate this gaming video subtitle to Korean:
- Game: [Game name]
- Tone: [Casual/Professional]
- Technical terms: [Keep English / Translate]
[Paste SRT content]
Convert this transcript to SRT format, then translate to [Language]:
[00:00] Hello everyone, welcome to the video.
[00:05] Today we're going to talk about...
• Use ustedes (LATAM) vs vosotros (Spain)
• "Click" = "Haz clic" / "Da clic"
• Keep brand names in English
• Informal tone often preferred for YouTube
• Tu (informal) vs Vous (formal) - YouTube usually tu
• "Subscribe" = "Abonnez-vous" / "Abonne-toi"
• Quebec French has unique expressions
• Keep anglicisms when commonly used
• Du (informal) vs Sie (formal) - Du common on YouTube
• Compound words can be very long - may need line breaks
• "Daumen hoch" = Thumbs up
• Technical terms often kept in English
• Casual (だ/である) vs Polite (です/ます)
• YouTube content usually casual-polite mix
• Keep brand names in katakana or English
• Consider vertical text for some contexts
• Simplified (CN) vs Traditional (TW)
• No spaces between words
• "Subscribe" = 订阅 (CN) / 訂閱 (TW)
• May need shorter text (faster reading)
• Honorific levels matter (해요체 common for YouTube)
• "Subscribe" = 구독
• Mixing English is common and accepted
• Konglish terms often preferred
• Brazilian vs European Portuguese differ significantly
• "Você" vs "Tu" usage varies
• "Subscribe" = "Se inscreva" (BR) / "Subscreva" (PT)
• Brazilian audience is larger on YouTube
• Right-to-left text
• Modern Standard vs Colloquial
• Numbers may need adjustment
• Consider dialect for specific regions
• Devanagari script
• English mixing (Hinglish) is common
• Formal vs informal forms
• Regional language considerations
Before finalizing translation:
| Issue | Cause | Solution |
|-------|-------|----------|
| Text overflow | Translation longer than original | Split lines, use abbreviations |
| Timing mismatch | Reading speed different | Adjust text length, not timing |
| Encoding errors | Wrong character set | Save as UTF-8 with BOM |
| Broken format | Extra line breaks | Validate SRT structure |
| Awkward phrasing | Literal translation | Localize for natural speech |
EFFICIENT BATCH PROCESS:
1. Get original transcript/SRT
2. Identify top languages for your audience:
- Check YouTube Analytics for viewer locations
- Common targets: ES, PT-BR, FR, DE, JA, KO, ZH
3. Translation priority order:
Tier 1: Spanish, Portuguese (largest non-EN audiences)
Tier 2: French, German (strong markets)
Tier 3: Japanese, Korean (dedicated fandoms)
Tier 4: Chinese, Hindi (massive populations)
4. Upload workflow:
- YouTube: Add via Studio > Subtitles
- Filename: videoname.[lang].srt (e.g., video.es.srt)
YouTube Studio > Video > Subtitles > Add Language
File types accepted:
- .srt (SubRip)
- .sbv (YouTube format)
- .vtt (WebVTT)
- .sub (SubViewer)
Naming convention:
videoname.en.srt (English)
videoname.es.srt (Spanish)
videoname.ja.srt (Japanese)
⚠️ YouTube's auto-translate is poor quality.
Always provide human-quality translations for top languages.
Priority: Upload translated subtitles for your top 3-5 viewer countries.
Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.
Automatically creates user-facing changelogs from git commits by analyzing commit history, categorizing changes, and transforming technical commits into clear, customer-friendly release notes. Turns hours of manual changelog writing into minutes of automated generation.
Use when implementing any feature or bugfix, before writing implementation code
Use when you have a spec or requirements for a multi-step task, before touching code
Use when creating new skills, editing existing skills, or verifying skills work before deployment
Use when writing or improving README files. Not all READMEs are the same — provides templates and guidance matched to your audience and project type.
| Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
Official Opentrons Protocol API for OT-2 and Flex robots. Use when writing protocols specifically for Opentrons hardware with full access to Protocol API v2 features. Best for production Opentrons protocols, official API compatibility. For multi-vendor automation or broader equipment control use pylabrobot.
Take nicepkg/srt-translator from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.