video-summarizer
YouTube、Bilibili、Twitter/X、TikTok、Vimeo、Instagramなど1,800以上のプラットフォームから動画をダウンロードし、映像・音声・字幕・AI要約をまとめたリソースパッケージを自動生成します。MP4動画、MP3音声、タイムスタンプ付きVTT字幕、TXTトランスクリプト、MDフォーマットのAI要約を出力し、uv・yt-dlp・ffmpegのインストールも自動で行います。動画の要約・ダウンロード・文字起こし・コンテンツ抽出を行いたいときに活用できます。
description の原文を見る
Download videos from 1800+ platforms (YouTube, Bilibili, Twitter/X, TikTok, Vimeo, Instagram, etc.) and generate complete resource package with video, audio, subtitles, and AI summary. Actions: summarize, download, transcribe, extract video content. Platforms: youtube.com, bilibili.com, twitter.com, x.com, tiktok.com, vimeo.com, instagram.com, twitch.tv. Outputs: MP4 video, MP3 audio, VTT subtitles with timestamps, TXT transcript, MD AI summary. Auto-installs uv, yt-dlp, ffmpeg. Python dependencies managed by uv.
SKILL.md 本文
Video Summarizer
Overview
任意のプラットフォームからビデオをダウンロードし、以下を含む完全なリソースパッケージを生成します:
- 元のビデオファイル(mp4)
- オーディオファイル(mp3)
- 字幕ファイル(タイムスタンプ付き、vtt/srt形式)
- サマリーファイル(summary.md)
yt-dlpがサポートする1800以上のすべてのウェブサイトに対応しています。
Trigger Conditions
ユーザーが以下の場合に発動します:
- ビデオリンクを提供してサマリーを要求する
- 「このビデオを要約して」「このビデオには何が含まれていますか」と言う
- 「ビデオコンテンツを抽出して」「ビデオを文字起こしして」と言う
- 「このビデオをダウンロードして」と言う
- YouTube/Bilibili/Twitter/Vimeo/TikTok等からのリンクを提供する
Supported Platforms
- 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がサポートするすべてのサイト)
Output Structure
すべてのファイルは現在の作業ディレクトリの downloads/<video-title>/ に保存されます:
./downloads/
└── <video-title>/
├── video.mp4 # 元のビデオ
├── audio.mp3 # 抽出されたオーディオ
├── subtitle.vtt # タイムスタンプ付き字幕
├── transcript.txt # プレーンテキストトランスクリプト(タイムスタンプなし)
└── summary.md # 構造化されたサマリー
Workflow
ステップ1: 依存関係のインストール
すべての依存関係をチェックしてインストールするスクリプトを実行します:
bash "$SKILL_DIR/scripts/install_deps.sh"
これにより以下がインストールされます: uv(Pythonパッケージマネージャー)、ffmpeg、yt-dlp、Pythonバージョンの確認。 faster-whisperはuvによって自動的に管理されます。
ステップ2: ビデオ情報の取得と出力ディレクトリの作成
# ビデオタイトルを取得(フォルダ名の特殊文字をサニタイズ)
TITLE=$(yt-dlp --print "%(title)s" "VIDEO_URL" | sed 's/[/:*?"<>|]/_/g' | cut -c1-80)
DURATION=$(yt-dlp --print "%(duration)s" "VIDEO_URL")
# 出力ディレクトリを作成
OUTPUT_DIR=./downloads/"$TITLE"
mkdir -p "$OUTPUT_DIR"
ステップ3: ビデオとオーディオをダウンロード
# ビデオをダウンロード(mp4形式、最大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"
# オーディオを抽出(mp3形式)
yt-dlp -x --audio-format mp3 -o "$OUTPUT_DIR/audio.%(ext)s" "VIDEO_URL"
ステップ4: 字幕を取得
優先順位:
- 手動字幕をダウンロードしてみる(最高品質)
yt-dlp --write-subs --sub-lang zh,en,zh-Hans,zh-Hant --skip-download \
-o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
- 自動生成字幕をダウンロードしてみる
yt-dlp --write-auto-subs --sub-lang zh,en --skip-download \
-o "$OUTPUT_DIR/subtitle" "VIDEO_URL"
- 字幕がない場合は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の両方を出力
文字起こしオプション:
| オプション | デフォルト | 説明 |
|---|---|---|
--model | small | tiny/base/small/medium/large-v3 |
--language | auto | 言語コード、または'auto' |
--workers | CPU/2 | 並列ワーカー数 |
--min-segment | 60 | 分割を有効にする最小期間(秒) |
ステップ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: サマリーファイルを生成
$SKILL_DIR/reference/summary-prompt.mdからプロンプトテンプレートを読み込む- プレースホルダーを置換:
{{TITLE}}、{{PLATFORM}}、{{URL}}、{{DURATION}}、{{LANGUAGE}}、{{DOWNLOAD_TIME}}、{{TRANSCRIPT}} - サマリーを生成して
$OUTPUT_DIR/summary.mdに保存
プラットフォーム固有の処理
Bilibili
# 中国語字幕を優先
yt-dlp --sub-lang zh-Hans,zh-Hant,zh ...
# ログインが必要な場合
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
ログインが必要なプラットフォーム
yt-dlp --cookies-from-browser chrome "VIDEO_URL"
# またはfirefox
yt-dlp --cookies-from-browser firefox "VIDEO_URL"
Error Handling
字幕を取得できない
並列文字起こしスクリプトを使用します(ステップ4、オプション3)。
ビデオが長い(>1時間)
- ユーザーに部分的なコンテンツのみが必要かどうかを確認
- 並列スクリプトは長いファイルを自動的に処理します
サポートされていないプラットフォーム
yt-dlp --list-extractors | grep -i "platform-name"
Notes
- ストレージ: ファイルは現在の作業ディレクトリの
./downloads/に保存されます - 著作権: 個人的な学習用途のみ
- ネットワーク: 一部のプラットフォームはプロキシが必要な場合があります
- 初回実行: Whisperモデルのダウンロードが必要です(small用に約244MB)
- 並列処理: 長いオーディオ(>60秒)は無音点で自動的に分割されます
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- liang121
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/liang121/video-summarizer / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。