| name | media-transcriber |
| description | 動画/音声ファイルをタイムスタンプ付きで文字起こしし、要約まで行うスキル。「動画を文字起こしして」「この音声を要約して」「会議の録画をまとめて」「mp4を文字起こしして要約して」「インタビュー音声から議事録作って」などのリクエストで使用する。OpenAI Whisper(ローカル)でタイムスタンプ付き全文mdを生成し、Claude自身がその全文を読んで要約mdを別ファイルで書き出す。出力先はプロジェクトルート直下(`TRANSCRIPT_OUTPUT_PATH` で変更可)。 |
| license | MIT |
| author | shohei |
| version | 1.1.0 |
動画/音声 文字起こし + 要約
動画 or 音声ファイルを OpenAI Whisper (ローカル) で文字起こしし、全文md と 要約md の 2ファイルを出力するスキル。
対応拡張子: mp3 / m4a / wav / ogg / flac / mp4 / mov / mkv / webm / avi など(whisper が内部で ffmpeg を呼ぶため動画もそのまま渡せる)。
実行手順
- ユーザーが指定したファイルパスを確定する(ドラッグ&ドロップ時は引用符で囲む)
- 以下のコマンドで文字起こしを実行:
基本(推奨デフォルト: turbo = large-v3-turbo + Whisper自然分割):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --language ja
最高精度(固有名詞多い議事録・重要案件):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --model large-v3 --language ja
軽量・高速(下書き用途):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --model base --language ja
N秒ごとに強制区切り(約5秒刻みで拾いたい):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --language ja --segment-seconds 5
文(センテンス)単位で区切る(句読点検出+最大60秒cap):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --language ja --sentence
単語ごと(発話タイミング分析用、行数が大量に増えるので注意):
python .claude/skills/media-transcriber/scripts/transcribe.py "入力ファイル" --language ja --word-level
- 出力された全文md (
<プロジェクトルート>/YYYYMMDD_HHMMSS_{basename}.md) を Read で読む
- 全文の内容を踏まえて、Claude自身が 要約md を
Write で作成する。ファイル名は YYYYMMDD_HHMMSS_{basename}_summary.md(全文mdと同じタイムスタンプ・同じディレクトリ)。要約の構成は下記「要約mdテンプレ」を既定とし、ユーザー指示があればそれに従う
- 全文mdと要約mdの両パスをユーザーに報告する
引数
| 引数 | 説明 | デフォルト |
|---|
file | 入力音声/動画ファイルパス(必須) | — |
--model | whisperモデル名 (tiny / base / small / medium / large-v3 / turbo) | turbo |
--language | 言語コード(例: ja, en)。未指定時は自動検出 | auto-detect |
--output-format | 出力フォーマット (md / json) | md |
--segment-seconds | N秒ごとに行を区切る | 未指定 |
--sentence | 文(センテンス)単位で区切る。句読点検出+上限秒capで再チャンク | false |
--word-level | 単語ごとに1行出力。最優先 | false |
--sentence-max-seconds | --sentence 時のフォールバック上限秒。句読点が無い音声で1文が長大化しないよう強制flush | 60.0 |
分割粒度の優先順位(上が強い): --word-level > --segment-seconds > --sentence > Whisper自然分割(デフォルト)
設定
プロジェクトルートの .env に以下の環境変数を設定する(任意。未設定時はプロジェクトルート直下に出力):
# 例: transcripts/ 配下に出したい場合
TRANSCRIPT_OUTPUT_PATH=transcripts
| 変数名 | 説明 |
|---|
TRANSCRIPT_OUTPUT_PATH | 出力先ディレクトリ(デフォルト: . = プロジェクトルート直下) |
出力
全文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] まず売上の件ですが、前年同月比で...
- ファイル名:
YYYYMMDD_HHMMSS_{basename}.md(basename は入力ファイルの拡張子を除いた名前)
- 保存先: プロジェクトルート直下(デフォルト)。
.env の TRANSCRIPT_OUTPUT_PATH で上書き可
要約md のテンプレ
Claude がこのテンプレを既定の骨格として書き出す:
# 要約: meeting_20260421.mp4
- 元ファイル: /path/to/meeting_20260421.mp4
- 総尺: 00:45:12
- 文字起こし: 20260421_143000_meeting_20260421.md
## 概要
3〜5行で全体像
## キーポイント
- 箇条書き5〜8個
## トピック別まとめ
### トピック1
...
## 次のアクション
- 担当 / 期限 / 内容
- ファイル名:
YYYYMMDD_HHMMSS_{basename}_summary.md(全文mdと同じタイムスタンプ)
- 保存先: 全文mdと同じディレクトリ
要約の注意点
クライアント会議録・議事録としても使うことを前提に、以下のトーンで書く:
- 「全滅」「即停止」「劣後」「死蔵」「失敗」等のネガティブ断定語は使わない
- 数値での事実提示はOK。事実に対する評価表現で相手を否定しない
- ユーザーから別のトーン指示があればそれを優先する
モデル選択の目安
| モデル | サイズ | 速度 | 日本語精度 | 用途 |
|---|
tiny | ~75MB | 超高速 | 低 | 下書き・英語短尺 |
base | ~150MB | 高速 | 中の下 | 英語短尺・スピード優先 |
small | ~500MB | 中速 | 中 | 簡易な日本語 |
medium | ~1.5GB | やや遅 | 高 | 旧定番(turboで置き換え可) |
turbo | ~1.5GB | 高速 | 高 (v2相当) | 推奨デフォルト(日本語・汎用) |
large-v3 | ~3GB | 遅い | 最高 | 固有名詞多め・重要な議事録 |
2025年の実測比較では日本語用途で turbo (large-v3-turbo) が speed/accuracy のバランス最優秀。medium とメモリ・速度が同等で精度は同等以上なので、通常 turbo を第一選択に。最高精度が必要なときのみ large-v3。
初回実行時はモデルが ~/.cache/whisper/ にダウンロードされる(1回だけ)。turbo は約1.5GB。
依存パッケージ確認
初回エラー時は以下でインストール:
pip install -U openai-whisper python-dotenv
ffmpeg が別途必要(whisper が内部で呼ぶ):
brew install ffmpeg