A skill that transcribes video or audio files with OpenAI Whisper (local) and outputs two files: full-text md and summary md.
Supported extensions: mp3 / m4a / wav / ogg / flac / mp4 / mov / mkv / webm / avi, etc. (whisper calls ffmpeg internally, so videos can be passed as-is).
Execution steps
- Confirm the file path specified by the user (when drag-and-dropped, enclose in quotes)
- Run transcription with the following command:
Basic (recommended default: turbo = large-v3-turbo + Whisper natural segmentation):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --language ja
Highest accuracy (minutes with many proper nouns, important cases):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --model large-v3 --language ja
Lightweight/fast (for drafts):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --model base --language ja
Force a break every N seconds (when you want to capture in roughly 5-second increments):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --language ja --segment-seconds 5
Split by sentence (punctuation detection + max 60-second cap):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --language ja --sentence
Word by word (for speech timing analysis; note that the number of lines increases massively):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --language ja --word-level
- The output full-text md (
<プロジェクトルート>/YYYYMMDD_HHMMSS_{basename}.md) をReadread with - Based on the content of the full text, Claude itself summary md
Writecreate with. The file name isYYYYMMDD_HHMMSS_{basename}_summary.md(same timestamp, same directory as the full-text md). The summary structure defaults to the "summary md template" below; if the user gives instructions, follow them - Report both the full-text md and summary md paths to the user
Arguments
| Argument | Description | Default |
|---|---|---|
file |
Input audio/video file path (required) | — |
--model |
whisper model name (tiny / base / small / medium / large-v3 / turbo) |
turbo |
--language |
Language code (e.g.: ja, en). Auto-detected when unspecified |
auto-detect |
--output-format |
Output format (md / json) |
md |
--segment-seconds |
Split lines every N seconds | unspecified |
--sentence |
Split by sentence. Re-chunk with punctuation detection + upper-limit seconds cap | false |
--word-level |
Output one line per word. Highest priority | false |
--sentence-max-seconds |
--sentence Fallback upper-limit seconds for the time. Force flush so that one sentence does not become enormous in audio without punctuation |
60.0 |
Priority order of split granularity (higher is stronger): --word-level > --segment-seconds > --sentence > Whisper natural segmentation (default)
Settings
Project root .env Set the following environment variables in (optional. If unset, output directly under the project root):
# 例: transcripts/ 配下に出したい場合
TRANSCRIPT_OUTPUT_PATH=transcripts
| Variable name | Description |
|---|---|
TRANSCRIPT_OUTPUT_PATH |
Output destination directory (default: . = directly under the project root) |
Output
Example of full-text md
# 文字起こし: meeting_20260421.mp4
- 元ファイル: /path/to/meeting_20260421.mp4
- モデル: medium
- 言語: ja (auto-detected)
- 実行日時: 2026-04-21 14:30:00
- 総尺: 00:45:12
## 全文
[00:00:00] 今日は四半期の振り返りから始めましょう。
[00:00:12] まず売上の件ですが、前年同月比で...
- File name:
YYYYMMDD_HHMMSS_{basename}.md(basenameis the name of the input file without the extension) - Save location: directly under the project root (default).
.envのTRANSCRIPT_OUTPUT_PATHcan be overridden with
Summary md template
Claude outputs this template as the default skeleton:
# 要約: meeting_20260421.mp4
- 元ファイル: /path/to/meeting_20260421.mp4
- 総尺: 00:45:12
- 文字起こし: 20260421_143000_meeting_20260421.md
## 概要
3〜5行で全体像
## キーポイント
- 箇条書き5〜8個
## トピック別まとめ
### トピック1
...
## 次のアクション
- 担当 / 期限 / 内容
- File name:
YYYYMMDD_HHMMSS_{basename}_summary.md(same timestamp as the full-text md) - Save location: same directory as the full-text md
Notes on summaries
Assuming it will also be used as client meeting minutes/records, write in the following tone:
- Negative assertive words such as "wiped out," "immediate halt," "subordinate," "left to rot," and "failure"do not use
- Presenting facts with numbers is OK. Do not deny the other party with evaluative expressions about facts
- If the user gives a different tone instruction, prioritize that
Model selection guidelines
| Model | Size | Speed | Japanese accuracy | Use case |
|---|---|---|---|---|
tiny |
~75MB | Ultra-fast | Low | Drafting, short English |
base |
~150MB | Fast | Below average | Short English, speed priority |
small |
~500MB | Medium speed | Medium | Simple Japanese |
medium |
~1.5GB | Somewhat slow | High | Former standard (can be replaced with turbo) |
turbo |
~1.5GB | Fast | High (equivalent to v2) | Recommended default(Japanese, general purpose) |
large-v3 |
~3GB | Slow | Highest | Many proper nouns, important meeting minutes |
2025 measured comparisonIn Japanese use cases, turbo (large-v3-turbo) has the best speed/accuracy balance.medium has equivalent memory and speed and equal or better accuracy, so normally use turbo as the first choice. Only when the highest accuracy is needed, large-v3。
On first run, the model is downloaded to ~/.cache/whisper/ (only once).turbo is about 1.5GB.
Check dependent packages
If an error occurs on first run, install with the following:
pip install -U openai-whisper python-dotenv
ffmpeg is required separately (whisper calls it internally):
brew install ffmpeg