Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
aviz85 avatar

Transcribe

  • 3 installs
  • 4 repo stars
  • Updated March 11, 2026
  • aviz85/ai-music-video-maker

transcribe is a Claude Code skill that transcribes audio or video to SRT subtitles and readable text using ElevenLabs Scribe v2.

About

A Claude Code skill that transcribes audio or video to SRT subtitles and readable text using ElevenLabs Scribe v2. Its script produces an SRT file, a Markdown transcript with speaker labels and timestamps, and optional word-level JSON. A developer uses it to caption media or get word-level timing for downstream lyric and caption overlays.

  • Transcribes audio/video to SRT subtitles using ElevenLabs Scribe v2
  • Outputs SRT plus readable Markdown with speaker diarization and word-level JSON
  • Supports many language codes and semantic subtitle refinement rules

Transcribe by the numbers

  • 3 all-time installs (skills.sh)
  • Ranked #1,155 of 1,337 Generative Media skills by installs in the Skillselion catalog
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

transcribe capabilities & compatibility

Requires ELEVENLABS_API_KEY in scripts/.env.

Capabilities
transcription · translation
Use cases
transcription · translation
Pricing
Bring your own API key
From the docs

What transcribe says it does

Generate SRT subtitle files + readable text from audio/video using ElevenLabs Scribe v2.
SKILL.md
The script **always** generates: 1. `.srt` - Standard subtitle file (for embedding)
SKILL.md
npx skills add https://github.com/aviz85/ai-music-video-maker --skill transcribe

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3
repo stars4
Last updatedMarch 11, 2026
Repositoryaviz85/ai-music-video-maker

What it does

Transcribe audio or video into SRT subtitles, readable text, and word-level JSON with ElevenLabs Scribe v2.

Who is it for?

Producing SRT captions, readable transcripts, and word-level timing from audio or video.

Skip if: Offline use without an ElevenLabs API key.

When should I use this skill?

You need transcription, subtitles, captions, or SRT generation from media.

What you get

An SRT subtitle file plus readable Markdown transcript and optional word-level JSON.

  • SRT subtitle file
  • Readable Markdown transcript
  • Optional word-level JSON

By the numbers

  • default max 5 words per subtitle entry
  • default max 70 chars per entry
  • timestamps every ~5 minutes

Files

SKILL.mdMarkdownGitHub ↗

Transcribe

Generate SRT subtitle files + readable text from audio/video using ElevenLabs Scribe v2.

Quick Start

cd .claude/skills/transcribe/scripts

# Basic transcription (generates both SRT + readable .md)
npx ts-node transcribe.ts -i /path/to/video.mp4 -o /path/to/output.srt

# Specify language
npx ts-node transcribe.ts -i /path/to/video.mp4 -o /path/to/output.srt -l he

# Only readable text (skip SRT)
npx ts-node transcribe.ts -i /path/to/meeting.m4a -o /path/to/output.srt --no-srt

# Shorter timestamp intervals (every 2 minutes)
npx ts-node transcribe.ts -i /path/to/video.mp4 -o /path/to/output.srt --timestamp-interval 120

# Disable speaker diarization
npx ts-node transcribe.ts -i /path/to/video.mp4 -o /path/to/output.srt --no-speakers

Output Files

The script always generates: 1. .srt - Standard subtitle file (for embedding) 2. .md - Readable text with speakers + timestamps every ~5 min

Optional: 3. _transcript.json - Raw word-level data (with --json)

Options

OptionShortDefaultDescription
--input-i(required)Input audio/video file
--output-o(required)Output SRT file path
--language-lautoLanguage code (en, he, ar, etc.)
--max-words5Max words per subtitle entry
--max-duration3.0Max seconds per subtitle entry
--max-chars70Max characters per subtitle entry
--timing-offset0.25Timing offset in seconds
--jsonfalseAlso output raw transcript JSON
--no-srtfalseSkip SRT, only generate text
--no-speakersfalseDisable speaker diarization
--timestamp-interval300Seconds between timestamps in text (5 min)

Language Codes

  • en - English
  • he - Hebrew
  • ar - Arabic
  • es - Spanish
  • fr - French
  • de - German
  • ru - Russian
  • zh - Chinese
  • ja - Japanese
  • (or omit for auto-detection)

Readable Text Format

The .md file includes:

  • Header with filename, date, duration
  • Speaker labels (דובר 1, דובר 2...) when diarization detects speaker changes
  • Timestamps every ~5 minutes (configurable)
  • Paragraphs broken naturally at sentence boundaries

Example:

# תמלול: meeting.m4a
**תאריך:** 27.1.2026
**משך:** 45:32

---

**דובר 1:**
שלום לכולם, אני רוצה להתחיל את הפגישה...

**דובר 2:**
בסדר, בוא נדבר על הנושא הראשון...

**[5:00]**

**דובר 1:**
עכשיו נעבור לחלק השני...

Translation

If target language differs from audio language:

1. Transcribe first (get original language SRT) 2. Read the SRT, translate each entry preserving timestamps 3. Write translated SRT file

No API needed - translate directly.

Post-Transcription Refinement (Claude's Job)

After generating the raw SRT, always refine it semantically. The transcription API chunks by time intervals, not meaning - this creates awkward splits like:

1
00:00:00,500 --> 00:00:01,922
anything a human being can

2
00:00:02,002 --> 00:00:03,320
do, your Claude bot can

The word "do" belongs with the previous sentence! Always regroup by semantic meaning:

Refinement Rules

1. Complete sentences/clauses together - Never split subject from verb, verb from object 2. Move orphaned words - If a line starts with a word that completes the previous thought, merge it 3. Punctuation guides splits - Periods, question marks, exclamations are natural break points 4. Preserve parallel structure - Keep matching phrases together (e.g., "if X can do it, Y can do it") 5. Emphasis stays standalone - Repeated words for emphasis ("Anything. Anything!") get their own line 6. Action chains can split - Lists of actions can be separate lines if they're complete thoughts

Refinement Process

1. Read the raw SRT 2. Concatenate all text to see full content 3. Identify natural sentence/clause boundaries 4. Redistribute words into semantic groups 5. Adjust timestamps: line starts at first word's time, ends at last word's time + small buffer 6. Write refined SRT

Example Before/After

Before (raw):

1
00:00:00,500 --> 00:00:01,922
anything a human being can

2
00:00:02,002 --> 00:00:03,320
do, your Claude bot can

3
00:00:03,341 --> 00:00:06,282
do. Anything. Anything!

After (refined):

1
00:00:00,500 --> 00:00:02,100
anything a human being can do,

2
00:00:02,100 --> 00:00:03,500
your Claude bot can do.

3
00:00:03,600 --> 00:00:06,100
Anything. Anything!

Always apply this refinement after transcription. The user expects semantically coherent subtitles.

Environment

API key stored in scripts/.env:

ELEVENLABS_API_KEY=your_key_here

Related skills

FAQ

What model does it use?

ElevenLabs Scribe v2 via the speech-to-text API.

What files does it output?

Always an .srt and a readable .md; optionally _transcript.json with word-level data.

Generative Mediallmautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.