mcpField
V
Video Transcriber

Video Transcriber

ローカル
github.comメディア・デザイン194 日前に更新

Video Transcriber について

Video Transcriberは、whisper.cppを使ってオンライン動画やローカルファイルを文字起こしするRust製MCPサーバーです。オフライン処理、複数のモデルサイズと言語に対応し、TXT、JSON、Markdownで出力します。

主な機能

  1. 011000以上のプラットフォームの動画を文字起こし
  2. 02ローカル動画ファイルのオフライン処理
  3. 035種類のモデルサイズ
  4. 0490以上の言語に対応
  5. 05TXT、JSON、Markdownで保存
  6. 06stdioとStreamable HTTPに対応

活用シーン

  1. 01オンライン動画の文字起こし作成
  2. 02ネットワークを使わない録画の文字起こし
  3. 03用途に応じたモデルサイズの選択
  4. 04ローカルまたはリモートMCPクライアントとの接続

MCP 対応

stdioまたはStreamable HTTP経由で、動画の文字起こし機能をMCPクライアントに公開します。ツールはプラットフォームのURLとローカル動画ファイルを扱えます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
cargovideo-transcriber-mcp0.10.6

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Video Transcriber MCP 🚀

whisper.cpp を使用した高性能な動画文字起こし MCP サーバー(Rust)

License: MIT OR Apache-2.0 Rust crates.io

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

📦 ソースから手動でビルド

前提条件
  1. Rust(Rust 2024 エディションには 1.85 以降が必要)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. yt-dlp(動画のダウンロード用)
# macOS
brew install yt-dlp

# Linux
pip install yt-dlp

# Windows
winget install yt-dlp.yt-dlp
  1. FFmpeg(音声処理用)
# macOS
brew install ffmpeg

# Linux
sudo apt install ffmpeg  # Debian/Ubuntu
sudo dnf install ffmpeg  # Fedora

# Windows
choco install ffmpeg
  1. 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 バックエンドではありません。

🤝 貢献

貢献を歓迎します!以下の手順でお願いします。

  1. リポジトリをフォークします
  2. 機能ブランチを作成します
  3. 変更を加えます
  4. 該当する場合はテストを追加します
  5. プルリクエストを送信します

🙏 謝辞

🆚 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、whisperyt-dlp、ffmpeg のみ
CPU 使用率高い(Python のオーバーヘッド)低い(ネイティブコード)

Rust 版は本番環境に対応しており、大幅に効率化されています!

🔗 リンク

ライセンス

以下のいずれかのライセンスのもとでライセンスされています。

いずれかを選択できます。

貢献

特に明記しない限り、Apache-2.0 ライセンスで定義されているとおり、あなたが本作への収録を目的として意図的に提出した貢献は、追加の条項や条件なしに、上記のライセンスのもとでデュアルライセンスされます。


最高のパフォーマンスを目指し、Rust で ❤️ を込めて開発

MCP レジストリの所有権トークン — crates.io は HTML コメントを削除するため、この行は表示したままにする必要があります:

mcp-name: io.github.nhatvu148/video-transcriber-mcp

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。