mcpField
V
video-summarizer

video-summarizer

github.com/liang121生産性57527 回インストール40 週間前に更新
リポジトリ

video-summarizer について

video-summarizerは、動画をダウンロードし、要約や文字起こし、字幕、メディアファイルを作成するスキルです。動画内容を確認したい人向けで、yt-dlp対応サイトを扱い、字幕がない場合は音声を文字起こしします。

主な機能

  1. 01MP4動画とMP3音声のダウンロード
  2. 02字幕の取得または音声の文字起こし
  3. 03テキスト起こしと要約の作成
  4. 04yt-dlp対応サイトのサポート

活用シーン

  1. 01リンクされたオンライン動画の要約
  2. 02字幕のない動画の文字起こし
  3. 03個人学習用の動画資料の保存

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/liang121/video-summarizer --skill video-summarizer

インストール後、Claude Code で/video-summarizerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

reference/
summary-prompt.md
scripts/
install_deps.sh
parallel_transcribe.py

詳細

動画要約

概要

あらゆるプラットフォームから動画をダウンロードし、以下を含む完全なリソースパッケージを生成します。

  • 元の動画ファイル(mp4)
  • 音声ファイル(mp3)
  • 字幕ファイル(タイムスタンプ付き、vtt/srt形式)
  • 要約ファイル(summary.md)

yt-dlpが対応する1800以上のウェブサイトすべてをサポートしています。

起動条件

ユーザーが次の操作を行った場合:

  • 動画リンクを提示して要約を依頼する
  • 「この動画を要約して」「この動画には何が映っているの?」と言う
  • 「動画の内容を抽出して」「動画を文字起こしして」と依頼する
  • 「この動画をダウンロードして」と言う
  • YouTube/Bilibili/Twitter/Vimeo/TikTokなどのリンクを提示する

対応プラットフォーム

  • YouTube (youtube.com, youtu.be)
  • Bilibili (bilibili.com, b23.tv)
  • Twitter/X (x.com, twitter.com)
  • Vimeo (vimeo.com)
  • TikTok (tiktok.com)
  • Instagram (instagram.com)
  • Twitch (twitch.tv)
  • その他1800以上のプラットフォーム(yt-dlpが対応するすべてのサイト)

出力構成

すべてのファイルは、現在の作業ディレクトリにある downloads/<video-title>/ に保存されます。

./downloads/
└── <video-title>/
    ├── video.mp4          # Original video
    ├── audio.mp3          # Extracted audio
    ├── subtitle.vtt       # Subtitles with timestamps
    ├── transcript.txt     # Plain text transcript (no timestamps)
    └── summary.md         # Structured summary

ワークフロー

ステップ 1:依存関係をインストールする

インストールスクリプトを実行して、すべての依存関係を確認し、インストールします。

bash "$SKILL_DIR/scripts/install_deps.sh"

以下がインストールされます:uv(Pythonパッケージマネージャー)、ffmpeg、yt-dlp。Pythonのバージョンも確認されます。 faster-whisperはuvによって自動的に管理されます。

ステップ 2:動画情報を取得し、出力ディレクトリを作成する
# Get video title (sanitize special characters for folder name)
TITLE=$(yt-dlp --print "%(title)s" "VIDEO_URL" | sed 's/[/:*?"<>|]/_/g' | cut -c1-80)
DURATION=$(yt-dlp --print "%(duration)s" "VIDEO_URL")

# Create output directory
OUTPUT_DIR=./downloads/"$TITLE"
mkdir -p "$OUTPUT_DIR"
ステップ 3:動画と音声をダウンロードする
# Download video (mp4 format, best quality up to 1080p)
yt-dlp -f "bestvideo[height<=1080][ext=mp4]+bestaudio[ext=m4a]/best[height<=1080][ext=mp4]/best" \
  --merge-output-format mp4 \
  -o "$OUTPUT_DIR/video.%(ext)s" "VIDEO_URL"

# Extract audio (mp3 format)
yt-dlp -x --audio-format mp3 -o "$OUTPUT_DIR/audio.%(ext)s" "VIDEO_URL"
ステップ 4:字幕を取得する

優先順位:

  1. 手動字幕のダウンロードを試す(最高品質)
yt-dlp --write-subs --sub-lang zh,en,zh-Hans,zh-Hant --skip-download \
  -o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
  1. 自動生成字幕のダウンロードを試す
yt-dlp --write-auto-subs --sub-lang zh,en --skip-download \
  -o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
  1. 字幕がない場合はfaster-whisperで文字起こしする
uv run "$SKILL_DIR/scripts/parallel_transcribe.py" \
  --input "$OUTPUT_DIR/audio.mp3" \
  --output-dir "$OUTPUT_DIR" \
  --model small \
  --language auto

スクリプトは自動的に次の処理を行います。

  • 無音箇所で長い音声ファイルを分割する
  • 複数のCPUコアを使って並列で文字起こしする
  • subtitle.vtt と transcript.txt の両方を出力する

文字起こしのオプション:

オプションデフォルト説明
--modelsmalltiny/base/small/medium/large-v3
--languageauto言語コードまたは「auto」
--workersCPU/2並列ワーカー数
--min-segment60分割を有効にする最小時間(秒)
ステップ 5:プレーンテキストの文字起こしを生成する

字幕をダウンロードした場合(文字起こしを行っていない場合)は、プレーンテキストに変換します。

if [[ ! -f "$OUTPUT_DIR/transcript.txt" ]]; then
  SUBTITLE_FILE=$(ls "$OUTPUT_DIR"/*.vtt "$OUTPUT_DIR"/*.srt 2>/dev/null | head -1)
  if [[ "$SUBTITLE_FILE" == *.vtt ]]; then
    sed '/^[0-9]/d; /^$/d; /-->/d; /^WEBVTT/d; /^Kind:/d; /^Language:/d; /^NOTE/d' \
      "$SUBTITLE_FILE" > "$OUTPUT_DIR/transcript.txt"
  elif [[ "$SUBTITLE_FILE" == *.srt ]]; then
    sed '/^[0-9]/d; /^$/d; /-->/d' "$SUBTITLE_FILE" > "$OUTPUT_DIR/transcript.txt"
  fi
fi
ステップ 6:要約ファイルを生成する
  1. $SKILL_DIR/reference/summary-prompt.md からプロンプトテンプレートを読み込みます
  2. プレースホルダーを置き換えます:{{TITLE}}、{{PLATFORM}}、{{URL}}、{{DURATION}}、{{LANGUAGE}}、{{DOWNLOAD_TIME}}、{{TRANSCRIPT}}
  3. 要約を生成し、$OUTPUT_DIR/summary.md に保存します

プラットフォーム別の処理

Bilibili
# Prioritize Chinese subtitles
yt-dlp --sub-lang zh-Hans,zh-Hant,zh ...
# If login required
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
ログインが必要なプラットフォーム
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
# or firefox
yt-dlp --cookies-from-browser firefox "VIDEO_URL"

エラー処理

字幕を取得できない場合

並列文字起こしスクリプトを使用します(ステップ 4、オプション 3)。

動画が長すぎる場合(1時間超)
  1. 一部の内容だけでよいかユーザーに確認します
  2. 並列スクリプトは長いファイルを自動的に処理します
未対応のプラットフォーム
yt-dlp --list-extractors | grep -i "platform-name"

メモ

  1. 保存先:ファイルは現在の作業ディレクトリにある ./downloads/ に保存されます
  2. 著作権:個人学習目的でのみ使用してください
  3. ネットワーク:一部のプラットフォームではプロキシが必要な場合があります
  4. 初回実行時:Whisperモデルのダウンロードが必要です(smallの場合は約244MB)
  5. 並列処理:長い音声(60秒超)は無音箇所で自動的に分割されます

コメント