Transcription Automation — Claude Code skill: transcripts
A skill for automatic audio and video transcription: meeting notes, subtitles, podcast show notes. Runs through the media-mcp server.
npx skills add claude-office-skills/skills --skill transcription-automation -a claude-codeWhat Transcription Automation does
The skill lays out a transcription pipeline: input goes through pre-processing (conversion, splitting), then speech recognition with speaker diarization, then post-processing — formatting, timestamps, speaker labels. Output is text, SRT or VTT, meeting notes, a searchable archive.
Engines switch in the config: whisper, assembly_ai, deepgram. Diarization takes min_speakers and max_speakers, and you can attach voice samples. Subtitle generation caps line length and line count, with SRT and VTT formats.
Ready-made workflows cover Zoom, YouTube and RSS podcasts: pull the recording, transcribe, build notes with action items, push to Notion, Slack or email. All of it depends on the media-mcp server with the whisper_transcribe, assembly_ai, deepgram_api and subtitle_generate tools — without it the recognition steps will not run.
What it helps with
- turn a meeting recording into a timestamped transcript
- generate SRT or VTT subtitles for a video
- split speaker turns in a multi-person recording
- build meeting notes with action items and send them out
- create a searchable index across podcast episodes
Example prompts for the agent
- transcribe this meeting recording and build notes with action items
- generate SRT subtitles for this video
- split the transcript by speaker and export VTT
How to install Transcription Automation
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill transcription-automation -a claude-code2Manually: put the files in place
~/.claude/skills/transcription-automation/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/transcription-automation/
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill transcription-automation -a codex2Manually: put the files in place
.agents/skills/transcription-automation/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill transcription-automation -a cursor2Manually: put the files in place
.cursor/skills/transcription-automation/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install claude-office-skills/skills transcription-automation2Manually: put the files in place
.github/skills/transcription-automation/SKILL.md1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill transcription-automation -a gemini-cli2Platform CLI
gemini skills install https://github.com/claude-office-skills/skills --path transcription-automationManually: put the files in place
.devin/skills/transcription-automation/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill transcription-automation -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about Transcription Automation
How do I install Transcription Automation in Claude?
Run npx skills add claude-office-skills/skills --skill transcription-automation -a claude-code. The skill lands at ~/.claude/skills/transcription-automation/SKILL.md.
What does Transcription Automation do?
It automates audio and video transcription, subtitle generation, meeting notes and content processing. Speaker diarization and multiple languages are supported.
What does the skill need to run?
The media-mcp server with the whisper_transcribe, assembly_ai, deepgram_api and subtitle_generate tools. Without it the recognition steps will not run.
Source text
SKILL.md · MIT
---
name: Transcription Automation
description: Automate audio/video transcription, meeting notes, subtitle generation, and content processing
version: 1.0.0
author: Claude Office Skills
category: multimedia
tags:
- transcription
- audio
- video
- meetings
- subtitles
department: content
models:
- claude-3-opus
- claude-3-sonnet
- gpt-4
- whisper
mcp:
server: media-mcp
tools:
- whisper_transcribe
- assembly_ai
- deepgram_api
- subtitle_generate
capabilities:
- Speech-to-text conversion
- Meeting transcription
- Subtitle generation
- Speaker diarization
input:
- Audio files
- Video files
- Live streams
- Meeting recordings
output:
- Text transcripts
- SRT/VTT subtitles
- Meeting notes
- Searchable archives
languages:
- en
- zh
- multi
related_skills:
- youtube-automation
- podcast-automation
- meeting-notes
---
# Transcription Automation
Comprehensive skill for automating audio/video transcription and content processing.
## Core Workflows
### 1. Transcription Pipeline
```
TRANSCRIPTION FLOW:
┌─────────────────┐
│ Audio/Video │
│ Input │
└────────┬────────┘
▼
┌─────────────────┐
│ Pre-Processing │
│ - Convert │
│ - Enhance │
│ - Split │
└────────┬────────┘
▼
┌─────────────────┐
│ Transcription │
│ - STT Engine │
│ - Diarization │
└────────┬────────┘
▼
┌─────────────────┐
│ Post-Processing │
│ - Format │
│ - Timestamps │
│ - Speakers │
└────────┬────────┘
▼
┌─────────────────┐
│ Output │
│ - Text/SRT/VTT │
│ - Summary │
└─────────────────┘
```
### 2. Transcription Configuration
```yaml
transcription_config:
engine: whisper # whisper, assembly_ai, deepgram
audio_settings:
sample_rate: 16000
channels: mono
format: wav
transcription:
language: auto # or specific: en, zh, es
model: large # tiny, base, small, medium, large
task: transcribe # transcribe or translate
features:
speaker_diarization: true
word_timestamps: true
punctuation: true
profanity_filter: false
output:
formats:
- txt
- srt
- vtt
- json
include_confidence: true
include_timestamps: true
```
## Meeting Transcription
### Meeting Notes Template
```yaml
meeting_transcript:
metadata:
title: "{{meeting_title}}"
date: "{{date}}"
duration: "{{duration}}"
attendees: "{{speakers}}"
output_template: |
# {{title}}
**Date:** {{date}}
**Duration:** {{duration}}
**Attendees:** {{attendees}}
## Summary
{{ai_summary}}
## Key Points
{{#each key_points}}
- {{this}}
{{/each}}
## Action Items
{{#each action_items}}
- [ ] {{task}} - @{{assignee}} - Due: {{due_date}}
{{/each}}
## Full Transcript
{{#each segments}}
**[{{timestamp}}] {{speaker}}:** {{text}}
{{/each}}
```
### Speaker Diarization
```yaml
diarization_config:
min_speakers: 2
max_speakers: 10
speaker_labels:
- name: "Speaker 1"
voice_sample: "sample_1.wav" # Optional
- name: "Speaker 2"
voice_sample: "sample_2.wav"
output_format:
speaker_prefix: true
speaker_timestamps: true
example_output: |
[00:00:05] SPEAKER_1: Welcome everyone to today's meeting.
[00:00:12] SPEAKER_2: Thanks for having us.
[00:00:18] SPEAKER_1: Let's start with the agenda.
```
## Subtitle Generation
### SRT Format
```yaml
subtitle_config:
format: srt
timing:
max_duration: 7 # seconds per subtitle
min_gap: 0.1 # seconds between subtitles
chars_per_line: 42
max_lines: 2
style:
case: sentence # sentence, upper, lower
numbers: words # words, digits
example_output: |
1
00:00:05,000 --> 00:00:08,500
Welcome to today's presentation
about transcription automation.
2
00:00:09,000 --> 00:00:12,000
Let me start by explaining
the basic concepts.
```
### VTT Format
```yaml
vtt_config:
format: vtt
features:
cue_settings: true
styling: true
example_output: |
WEBVTT
00:00:05.000 --> 00:00:08.500 align:center
Welcome to today's presentation
about transcription automation.
00:00:09.000 --> 00:00:12.000 align:center
<v Speaker 1>Let me start by explaining
the basic concepts.
```
## Integration Workflows
### Zoom Integration
```yaml
zoom_transcription:
trigger:
event: recording_completed
workflow:
- step: download_recording
source: zoom_cloud
- step: transcribe
engine: whisper
language: auto
- step: diarize
identify_speakers: true
- step: generate_notes
template: meeting_notes
include_summary: true
extract_action_items: true
- step: distribute
destinations:
- notion_page
- slack_channel
- email_attendees
```
### YouTube Integration
```yaml
youtube_subtitles:
trigger:
event: video_uploaded
workflow:
- step: download_audio
source: youtube_video
- step: transcribe
engine: whisper
task: transcribe
- step: generate_subtitles
formats: [srt, vtt]
- step: translate
target_languages: [es, zh, ja, de, fr]
- step: upload_subtitles
destination: youtube
as_cc: true
```
### Podcast Processing
```yaml
podcast_workflow:
input:
source: rss_feed
format: audio/mp3
processing:
- transcribe:
engine: whisper
model: large
- generate_chapters:
detect_topics: true
min_duration: 60 # seconds
- create_show_notes:
summarize: true
extract_links: true
highlight_quotes: true
- create_searchable_index:
full_text: true
timestamps: true
output:
- transcript_txt
- chapters_json
- show_notes_md
- search_index
```
## Language Support
### Multi-Language Transcription
```yaml
multilingual:
auto_detect: true
supported_languages:
- code: en
name: English
model: large
- code: zh
name: Chinese
model: large
- code: es
name: Spanish
model: large
- code: ja
name: Japanese
model: medium
translation:
enabled: true
target: en
preserve_original: true
```
### Code-Switching
```yaml
code_switching:
enabled: true
primary_language: en
secondary_languages: [zh, es]
output: |
[00:01:23] The next topic is about 人工智能,
which has been muy importante in recent years.
handling:
detect_language_per_segment: true
tag_language_switches: true
```
## Quality Enhancement
### Post-Processing
```yaml
post_processing:
text_cleanup:
- remove_filler_words: ["um", "uh", "like"]
- fix_common_errors: true
- normalize_numbers: true
formatting:
- add_punctuation: true
- capitalize_sentences: true
- paragraph_breaks: true
speaker_attribution:
- merge_short_segments: true
- min_segment_duration: 1.0
output_enhancement:
- add_timestamps: true
- highlight_keywords: true
- generate_summary: true
```
### Accuracy Metrics
```
TRANSCRIPTION QUALITY REPORT
═══════════════════════════════════════
File: meeting_2024_01_15.mp3
Duration: 45:32
Engine: Whisper Large
METRICS:
Word Error Rate (WER): 4.2%
Character Error Rate: 2.8%
Confidence Score: 0.94
SPEAKER DIARIZATION:
Speakers Detected: 4
Diarization Accuracy: 91%
PROCESSING TIME:
Total: 8m 23s
Real-time Factor: 0.18x
DETECTED ISSUES:
• Low confidence at 12:34 (background noise)
• Overlapping speech at 23:45
• Unknown speaker at 34:12
```
## API Examples
### OpenAI Whisper
```python
import openai
# Transcribe audio
with open("meeting.mp3", "rb") as audio_file:
transcript = openai.Audio.transcribe(
model="whisper-1",
file=audio_file,
response_format="verbose_json",
timestamp_granularities=["word", "segment"]
)
# Access results
for segment in transcript.segments:
print(f"[{segment.start:.2f}] {segment.text}")
```
### AssemblyAI
```python
import assemblyai as aai
transcriber = aai.Transcriber()
config = aai.TranscriptionConfig(
speaker_labels=True,
auto_chapters=True,
entity_detection=True
)
transcript = transcriber.transcribe(
"https://example.com/meeting.mp3",
config=config
)
for utterance in transcript.utterances:
print(f"Speaker {utterance.speaker}: {utterance.text}")
```
## Best Practices
1. **Quality Audio**: Clean input = better output
2. **Choose Right Model**: Balance speed vs accuracy
3. **Use Diarization**: Identify speakers clearly
4. **Post-Process**: Clean up automated output
5. **Verify Critical Content**: Human review important
6. **Consider Privacy**: Handle sensitive content
7. **Store Efficiently**: Compress and index
8. **Provide Context**: Vocabulary hints help
© Claude Office Skills · MIT · claude-office-skills/skills