Video Transcriber について
Video Transcriberは、whisper.cppを使ってオンライン動画やローカルファイルを文字起こしするRust製MCPサーバーです。オフライン処理、複数のモデルサイズと言語に対応し、TXT、JSON、Markdownで出力します。
主な機能
- 011000以上のプラットフォームの動画を文字起こし
- 02ローカル動画ファイルのオフライン処理
- 035種類のモデルサイズ
- 0490以上の言語に対応
- 05TXT、JSON、Markdownで保存
- 06stdioとStreamable HTTPに対応
活用シーン
- 01オンライン動画の文字起こし作成
- 02ネットワークを使わない録画の文字起こし
- 03用途に応じたモデルサイズの選択
- 04ローカルまたはリモートMCPクライアントとの接続
MCP 対応
stdioまたはStreamable HTTP経由で、動画の文字起こし機能をMCPクライアントに公開します。ツールはプラットフォームのURLとローカル動画ファイルを扱えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Video Transcriber MCP 🚀
whisper.cpp を使用した高性能な動画文字起こし MCP サーバー(Rust)
whisper.cpp を使用して1000 以上のプラットフォームの動画を文字起こしする Model Context Protocol(MCP)サーバーです。最高のパフォーマンスと効率を実現するため、Rust で構築されています。
📦 インストール
Homebrew(macOS/Linux)- 推奨
すべての依存関係を含めて簡単にインストールできます。
brew install nhatvu148/tap/video-transcriber-mcp
バイナリと必要な依存関係(cmake、yt-dlp、ffmpeg)が自動的にインストールされます。
Cargo でインストール
Rust がインストールされている場合:
cargo install video-transcriber-mcp
**注記:**依存関係(yt-dlp、ffmpeg、cmake)は手動でインストールする必要があります。
ビルド済みバイナリ
GitHub Releases からダウンロードしてください。
# macOS (Intel)
curl -L https://github.com/nhatvu148/video-transcriber-mcp-rs/releases/latest/download/video-transcriber-mcp-x86_64-apple-darwin.tar.gz | tar xz
sudo mv video-transcriber-mcp /usr/local/bin/
# macOS (Apple Silicon)
curl -L https://github.com/nhatvu148/video-transcriber-mcp-rs/releases/latest/download/video-transcriber-mcp-aarch64-apple-darwin.tar.gz | tar xz
sudo mv video-transcriber-mcp /usr/local/bin/
# Linux (x86_64) — no ARM64 Linux build, see issue #13; use `cargo install`
curl -L https://github.com/nhatvu148/video-transcriber-mcp-rs/releases/latest/download/video-transcriber-mcp-x86_64-unknown-linux-gnu.tar.gz | tar xz
sudo mv video-transcriber-mcp /usr/local/bin/
# Windows: Download .zip from releases page
**注記:**依存関係(yt-dlp、ffmpeg)は手動でインストールする必要があります。
Claude Code プラグイン
MCP サーバーと /transcribe スキルを一度にインストールします。
/plugin marketplace add nhatvu148/video-transcriber-mcp-rs
/plugin install video-transcriber@nhatvu148-tools
プラグインが MCP サーバーを登録しますが、バイナリはインストールされません。上記のインストールコマンドを実行し、video-transcriber-mcp が PATH に含まれるようにしてください。
🎯 Rust を採用する理由
このバージョンでは、Python の OpenAI Whisper の代わりに、whisper.cpp(Rust バインディングを備えた C++ 実装)を使用します。
| メリット | whisper.cpp(Rust) | OpenAI Whisper(Python) |
|---|---|---|
| パフォーマンス | ネイティブ C++ の速度 | Python インタープリターのオーバーヘッド |
| メモリ | メモリ使用量が少ない | メモリ使用量が多い |
| 起動 | 瞬時(100ms 未満) | 遅い(モデルの読み込みに約 2~3 秒) |
| 依存関係 | 単体バイナリ | Python とパッケージが必要 |
| 移植性 | 単一バイナリ | Python 環境が必要 |
実際のパフォーマンスは、ハードウェア、動画の長さ、選択したモデルによって異なります。
✨ 特長
- 🚀 whisper.cpp(Rust バインディングを備えた C++)による高性能な文字起こし
- 🎥 1000 以上のプラットフォームからダウンロード(YouTube、Vimeo、TikTok、Twitter など)
- 📂 ローカルの動画ファイルを文字起こし(mp4、avi、mov、mkv など)
- 🎤 完全オフラインで文字起こし(プライバシーを最優先)
- 🎛️ 5 種類のモデルサイズ(tiny、base、small、medium、large)
- 🌐 90 以上の言語に対応
- 📝 複数の出力形式(TXT、JSON、Markdown)
- 🔌 Claude Code 向けのMCP 統合
- 🌐 2 種類のトランスポート - stdio(ローカル)と Streamable HTTP(リモート)
- ⚡ ネイティブバイナリ - Python や Node.js は不要
- 💾 Python 実装と比べてメモリ使用量が少ない
⚡ クイックスタート(Taskfile を使用)
最も手早く始める方法:
# 1. Install Task (if not already installed)
brew install go-task/tap/go-task
# 2. Complete setup (build + download model)
task setup
# 3. Run a quick test
task test:quick
# Done! 🎉
使用可能なコマンド:
task setup # Complete project setup
task test:quick # Test with short video
task benchmark # Run performance benchmark
task deps:check # Check dependencies
task download:base # Download base model
task help # Show all commands
使用可能なタスクの一覧は Taskfile.yml を参照してください。
🌐 トランスポートモード
サーバーは 2 種類のトランスポートモードに対応しています。
Stdio トランスポート(デフォルト)
Claude Code でローカルの CLI を使用するための標準入出力トランスポートです。これがデフォルトのモードです。
video-transcriber-mcp
# or explicitly:
video-transcriber-mcp --transport stdio
Streamable HTTP トランスポート
リモートアクセス用の HTTP トランスポートです。ネットワーク経由で MCP サーバーにアクセスできます。
# Start HTTP server on default port (8080)
video-transcriber-mcp --transport http
# Custom host and port
video-transcriber-mcp --transport http --host 0.0.0.0 --port 3000
リモート MCP クライアントの設定:
HTTP トランスポートを使用する場合は、URL を指定して MCP クライアントを設定してください。
{
"mcpServers": {
"video-transcriber-mcp": {
"url": "http://localhost:8080/mcp"
}
}
}
HTTP トランスポートのメリット:
- クライアント側でローカルインストールが不要
- サーバーを一元的にデプロイ可能
- 自動更新(サーバー側)
- チームでの利用に適している
- サーバーレスプラットフォームと互換性がある
CLI オプション
video-transcriber-mcp --help
Options:
-t, --transport <TRANSPORT> Transport mode [default: stdio] [possible values: stdio, http]
--host <HOST> Host address for HTTP transport [default: 127.0.0.1]
-p, --port <PORT> Port for HTTP transport [default: 8080]
-h, --help Print help
-V, --version Print version
📦 ソースから手動でビルド
前提条件
- Rust(Rust 2024 エディションには 1.85 以降が必要)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- yt-dlp(動画のダウンロード用)
# macOS
brew install yt-dlp
# Linux
pip install yt-dlp
# Windows
winget install yt-dlp.yt-dlp
- FFmpeg(音声処理用)
# macOS
brew install ffmpeg
# Linux
sudo apt install ffmpeg # Debian/Ubuntu
sudo dnf install ffmpeg # Fedora
# Windows
choco install ffmpeg
- clang/libclang(
whisper-rs-sysはbindgenを使って whisper.cpp をビルドするため、ビルド時にlibclangが必要です)
# macOS: bundled with Xcode Command Line Tools
# Linux
sudo apt install libclang-dev # Debian/Ubuntu
sudo dnf install clang-devel # Fedora
# Windows: install LLVM (https://releases.llvm.org) and set LIBCLANG_PATH
ソースからビルド
# Clone the repository
git clone https://github.com/nhatvu148/video-transcriber-mcp-rs.git
cd video-transcriber-mcp-rs
# Build the project
cargo build --release
# The binary will be at: target/release/video-transcriber-mcp-rs
Whisper モデルをダウンロードする
# Download base model (recommended for testing)
bash scripts/download-models.sh base
# Or download all models
bash scripts/download-models.sh all
モデルは ~/.cache/video-transcriber-mcp/models/ に保存されます。
🚀 クイックスタート
MCP サーバー(Claude Code 用)
~/.claude/settings.json に追加します:
オプション 1:GitHub Release または cargo install でインストールした場合:
{
"mcpServers": {
"video-transcriber-mcp": {
"command": "video-transcriber-mcp",
"args": [],
"env": {
"RUST_LOG": "info"
}
}
}
}
オプション 2:ソースからビルドした場合:
{
"mcpServers": {
"video-transcriber-mcp": {
"command": "/absolute/path/to/video-transcriber-mcp-rs/target/release/video-transcriber-mcp",
"args": [],
"env": {
"RUST_LOG": "info"
}
}
}
}
次に、Claude Code で使用します:
基本的な文字起こし(デフォルトでは base モデルを使用):
Please transcribe this YouTube video: https://www.youtube.com/watch?v=VIDEO_ID
特定のモデルで文字起こしする:
Transcribe this video using the large model for best accuracy:
https://www.youtube.com/watch?v=VIDEO_ID
ローカルの動画ファイルを文字起こしする:
Transcribe this local video file: /Users/myname/Videos/meeting.mp4
特定の言語で文字起こしする:
Transcribe this Spanish video: https://www.youtube.com/watch?v=VIDEO_ID
(language: es, model: medium)
📊 パフォーマンス
予想されるパフォーマンス特性
コミュニティによる whisper.cpp と OpenAI Whisper のベンチマークに基づいています:
文字起こし速度(概算。ハードウェアによって異なります):
- whisper.cpp は通常、Python Whisper より 2~6 倍高速です
- 起動時間が短縮されます(Python インタープリターのオーバーヘッドがありません)
- メモリ使用量が少なくなります(Python ランタイムがありません)
パフォーマンスに影響する実際の要因:
- CPU:コア数が多いほど、処理が速くなります
- モデルサイズ:Tiny は最速、Large は最も遅いものの、最も高精度です
- 動画の長さ:動画が長いほど、処理時間も比例して長くなります
- 音声の複雑さ:ノイズの多い音声より、明瞭な音声のほうが速く文字起こしできます
協力していただけますか?
実際のベンチマークデータを収集しています!両方のバージョンを実行した場合は、結果を共有してください:
- ハードウェアの仕様(CPU、RAM)
- テストした動画の長さ
- 使用したモデル
- 各バージョンの所要時間
ベンチマーク結果を添えて issue を作成し、このセクションの改善にご協力ください!
🎛️ モデルの比較
| モデル | 速度 | 精度 | メモリ | 用途 |
|---|---|---|---|---|
| tiny | ⚡⚡⚡⚡⚡ | ⭐⭐ | ~400 MB | 簡易的な下書き、テスト |
| base | ⚡⚡⚡⚡ | ⭐⭐⭐ | ~600 MB | 一般的な用途(デフォルト) |
| small | ⚡⚡⚡ | ⭐⭐⭐⭐ | ~1.2 GB | より高い精度 |
| medium | ⚡⚡ | ⭐⭐⭐⭐⭐ | ~2.5 GB | 高精度 |
| large | ⚡ | ⭐⭐⭐⭐⭐⭐ | ~4.8 GB | 最高精度、最も低速 |
🌍 対応プラットフォーム
yt-dlp のおかげで、このツールは以下を含む 1000 以上の動画プラットフォームに対応しています:
- ソーシャルメディア:YouTube、TikTok、Twitter/X、Facebook、Instagram、Reddit
- 動画ホスティング:Vimeo、Dailymotion、Twitch
- 教育:Coursera、Udemy、Khan Academy、edX
- ニュース:BBC、CNN、NBC、PBS
- その他 1000 以上!
📝 出力形式
各動画について、~/Downloads/video-transcripts/ に 3 つのファイルが生成されます:
video-id-title.txt # Plain text transcript
video-id-title.json # JSON with metadata and timestamps
video-id-title.md # Markdown with video info
出力例
# How to Build Fast Software
**Video:** https://www.youtube.com/watch?v=example
**Platform:** YouTube
**Channel:** Tech Channel
**Duration:** 600s
---
## Transcript
The key to building fast software is understanding...
---
*Transcribed using whisper.cpp (Rust) - Model: base*
🔧 設定
環境変数
すべての環境変数は任意です。いずれも設定しなくても文字起こし機能は動作します。設定すると、認証、リモート推論、AI による要約、有料 HTTP API を利用できます。
💡 文字起こしの出力ディレクトリは環境変数ではありません。
transcribe_videoツールにoutput_dirを渡してください(デフォルトは~/Downloads/video-transcriptsです)。出力ファイル名は<video_id>-<title>.{txt,json,md}です。
リモート MCP アクセス(--transport http)
HTTP トランスポートは、Host ヘッダーが許可リストに含まれるリクエストにのみ応答します。DNS リバインディングに対する保護として、デフォルトではループバック(localhost、127.0.0.1、::1)が許可されています。そのため、デプロイしたインスタンスは、自身の公開ホスト名を指定するまで、そのホスト名へのリクエストを 403 で拒否します:
# Comma-separated. Added on top of the loopback defaults, so local
# development and health checks keep working.
export MCP_ALLOWED_HOSTS=mcp.example.com,mcp.example.com:8080
# On Fly:
fly secrets set MCP_ALLOWED_HOSTS=your-app.fly.dev
ローカルで使用する場合は、設定しないでください。サーバーは起動時に受け付けるホストをログに記録するため、リモートクライアントからの 403 を簡単に診断できます。
⚠️ これは到達可能性を制御するものであり、認証を制御するものではありません。URL にアクセスできる人は誰でも、ツールを呼び出せます。これには
transcribe_videoも含まれ、リモート Whisper や OpenRouter が設定されている場合、実際に費用が発生します。公開環境にデプロイする場合は、認証プロキシを前段に配置してください。
ダウンロード(yt-dlp の Cookie)
年齢制限付き、メンバー限定の動画、または YouTube の「ボットではないことを確認するためログインしてください」というチャレンジにのみ必要です。
# Option 1 (preferred on headless / Linux): a Netscape-format cookies file.
# Export it however you like — e.g. a QR-login flow — then point at it.
export YT_DLP_COOKIES=/path/to/cookies.txt
# Option 2: read cookies straight from a logged-in local browser.
# One of: chrome, brave, edge, firefox, safari, chromium, opera, vivaldi.
# Ignored when YT_DLP_COOKIES is set.
export YT_DLP_COOKIES_FROM_BROWSER=chrome
リモート Whisper(文字起こしのオフロード)
# POST audio to a remote HTTP worker (e.g. a serverless GPU) instead of
# running whisper-rs locally. Endpoint must accept multipart {audio, model,
# language} and return JSON {transcript, segments[], language, duration_s}.
export REMOTE_WHISPER_URL=https://your-worker.example.com/transcribe
🧪 開発
ビルド
# Debug build
cargo build
# Release build (optimized)
cargo build --release
# Run tests
cargo test
# Run with logging
RUST_LOG=debug cargo run -- --url "https://youtube.com/watch?v=example"
プロジェクト構成
src/
├── main.rs # CLI + transport selection (stdio / streamable HTTP)
├── lib.rs # public API for embedders
├── mcp/ # MCP server: tool definitions and handlers
├── transcriber/ # the pipeline: yt-dlp → ffmpeg → whisper.cpp
├── embeddings.rs # passage embeddings, used by `search_transcripts`
└── utils/ # paths
このクレートは文字起こしパイプラインと、その MCP インターフェースのみを提供します。その上に構築される製品(REST API、アカウント、クレジット、支払い、AI による要約や図解)は、このクレートをライブラリとして利用する別の非公開クレートに含まれています。そのため、cargo install video-transcriber-mcp でインストールされるのは文字起こしサーバーであり、他者の SaaS バックエンドではありません。
🤝 貢献
貢献を歓迎します!以下の手順でお願いします。
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更を加えます
- 該当する場合はテストを追加します
- プルリクエストを送信します
🙏 謝辞
- whisper.cpp - Whisper の高速な C++ 実装
- whisper-rs - whisper.cpp の Rust バインディング
- yt-dlp - 1000 以上のプラットフォームに対応する動画ダウンローダー
- OpenAI Whisper - オリジナルの音声認識モデル
- Model Context Protocol SDK - MCP 用 Rust SDK
🆚 TypeScript 版との比較
オリジナルの video-transcriber-mcp は TypeScript で開発しました。Rust で書き直した理由は次のとおりです。
| 項目 | TypeScript 版 | Rust 版 |
|---|---|---|
| 文字起こし速度 | 10 分の動画で 5 分 | 50 秒(6 倍高速) |
| メモリ使用量 | 約 2 GB | 約 800 MB(2.5 倍少ない) |
| 起動時間 | 約 2 秒 | 100 ミリ秒未満(20 倍高速) |
| バイナリサイズ | 該当なし(Node.js ランタイム) | 単体で約 8 MB |
| 依存関係 | Node.js、Python、whisper | yt-dlp、ffmpeg のみ |
| CPU 使用率 | 高い(Python のオーバーヘッド) | 低い(ネイティブコード) |
Rust 版は本番環境に対応しており、大幅に効率化されています!
🔗 リンク
ライセンス
以下のいずれかのライセンスのもとでライセンスされています。
- MIT ライセンス(LICENSE-MIT)
- Apache ライセンス バージョン 2.0(LICENSE-APACHE)
いずれかを選択できます。
貢献
特に明記しない限り、Apache-2.0 ライセンスで定義されているとおり、あなたが本作への収録を目的として意図的に提出した貢献は、追加の条項や条件なしに、上記のライセンスのもとでデュアルライセンスされます。
最高のパフォーマンスを目指し、Rust で ❤️ を込めて開発
MCP レジストリの所有権トークン — crates.io は HTML コメントを削除するため、この行は表示したままにする必要があります:
mcp-name: io.github.nhatvu148/video-transcriber-mcp
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。