video-clip-extractor について
video-clip-extractorは、openclipの動画オーケストレーターを実行し、URLやローカルファイルから見どころを選んでクリップを作成するスキルです。セットアップと実行を案内し、トピック指定や字幕・タイトル・カバーの調整にも対応します。
主な機能
- 01Bilibili、YouTubeのURLやローカル動画を処理
- 02動画を文字起こしして見どころを分析
- 03トピック指定によるクリップ選定
- 04クリップ、カバー、任意のタイトルを生成
- 05字幕の翻訳や動画への焼き込み
活用シーン
- 01長時間動画から見どころを切り出す
- 02指定トピックに沿った場面を探す
- 03SNS向けの字幕付き動画を作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ linzzzzzz/ openclip --skill video-clip-extractorインストール後、Claude Code で/video-clip-extractorを入力して読み込まれたか確認します。
詳細
動画クリップ抽出スキル
動画オーケストレーターを実行して、動画を処理し、魅力的なハイライトを抽出します。
起動時
- ソースを取得する — ユーザーが動画 URL またはファイルパスを指定していない場合は、確認します。
- 意図を明確にする(任意)— 特定のトピックに焦点を当てたクリップを希望する場合は、内容を
--user-intentに指定します。不明な場合は、「特に焦点を当てたいトピックや場面はありますか?(例:「面白い場面」「重要な主張」)」と尋ねます。 - 環境を確認する — 現在のディレクトリに
video_orchestrator.pyがあるか確認します。ある場合は、そのまま実行します。ない場合は、グローバルインストール先の~/.local/share/openclipを使用します。 - 前提条件を確認する — ffmpeg がインストールされており、API キーが少なくとも 1 つ設定されていることを確認します。不足している場合は、実行前に警告します。
- コマンドを実行する — 出力をユーザーに逐次表示します。
- 結果を報告する — 完了後、生成されたクリップをタイムスタンプとタイトル付きで一覧表示します。
セットアップ(初回のみ)
実行前に、実行コンテキストを確認します。
- openclip リポジトリ内 — 現在のディレクトリに
video_orchestrator.pyがある場合は、セットアップをスキップしてそのまま実行します。 - グローバルインストール —
~/.local/share/openclipが存在しない場合は、次の手順を実行します。
前提条件: git と uv がインストールされている必要があります。
- uv がない場合のインストール:macOS:
brew install uv· Linux/Windows:pip install uv
git clone https://github.com/linzzzzzz/openclip.git ~/.local/share/openclip
cd ~/.local/share/openclip && uv sync
openclip を後で更新するには:
git -C ~/.local/share/openclip pull && cd ~/.local/share/openclip && uv sync
実行
openclip リポジトリ内の場合(現在のディレクトリに video_orchestrator.py がある場合):
uv run python video_orchestrator.py [options] <source>
グローバルインストールを実行する場合(それ以外のディレクトリから実行する場合):
cd ~/.local/share/openclip && uv run python video_orchestrator.py -o "$OLDPWD/processed_videos" [options] <source>
$OLDPWD はユーザーの元のディレクトリを保持するため、クリップは openclip のインストール先ではなく、そのディレクトリに保存されます。
<source> は動画 URL(Bilibili/YouTube)またはローカルファイルのパス(MP4、WebM、AVI、MOV、MKV)です。
字幕ファイルが既にあるローカルファイルの場合は、同じディレクトリに同じファイル名の .srt ファイルを配置します(例:video.mp4 → video.srt)。
実行前チェックリスト
- openclip リポジトリ内の場合:相対パス(例:
references/、prompts/)が正しく解決されるように、リポジトリのルートから実行します ffmpegがインストールされている必要があります(すべてのクリップ生成に必要です):- macOS:
brew install ffmpeg - Ubuntu:
sudo apt install ffmpeg - Windows:ffmpeg.org からダウンロード
--burn-subtitlesを使用する場合:libassを含む ffmpeg が必要です(詳細は README を参照)
- macOS:
- API キーを 1 つ設定します:
QWEN_API_KEY(デフォルトのプロバイダー:qwen)、またはOPENROUTER_API_KEY(--llm-provider openrouterの場合)、またはGLM_API_KEY(--llm-provider glmの場合)、またはMINIMAX_API_KEY(--llm-provider minimaxの場合)
--speaker-referencesを使用する場合:uv sync --extra speakersを実行し、HUGGINGFACE_TOKENを設定します
CLI リファレンス
必須
| 引数 | 説明 |
|---|---|
source | 動画 URL またはローカルファイルのパス |
オプション
| フラグ | デフォルト | 説明 |
|---|---|---|
-o, --output <dir> | processed_videos | 出力ディレクトリ |
--max-clips <n> | 5 | ハイライトクリップの最大数 |
--browser <browser> | firefox | Cookie に使用するブラウザー:chrome、firefox、edge、safari |
--title-style <style> | fire_flame | タイトルのスタイル:gradient_3d、neon_glow、metallic_gold、rainbow_3d、crystal_ice、fire_flame、metallic_silver、glowing_plasma、stone_carved、glass_transparent |
--title-font-size <size> | medium | アーティスティックなタイトルのフォントサイズのプリセット。選択肢:small(30px)、medium(40px)、large(50px)、xlarge(60px) |
--cover-text-location <loc> | center | カバーテキストの位置:top、upper_middle、bottom、center |
--cover-fill-color <color> | yellow | カバーテキストの塗りつぶし色:yellow、red、white、cyan、green、orange、pink、purple、gold、silver |
--cover-outline-color <color> | black | カバーテキストの輪郭色:yellow、red、white、cyan、green、orange、pink、purple、gold、silver、black |
--language <lang> | zh | 出力言語:zh(中国語)、en(英語) |
--llm-provider <provider> | qwen | LLM プロバイダー:qwen、openrouter、glm、minimax |
--user-intent <text> | — | 注目する内容を自由記述します(例:「AI のリスクに関する場面」)。LLM によるクリップ選択をこのトピックに沿うように調整します |
--subtitle-translation <lang> | — | 字幕を焼き込む前に指定した言語へ翻訳します(例:"Simplified Chinese")。--burn-subtitles と QWEN_API_KEY が必要です |
--speaker-references <dir> | — | 話者ダイアライゼーション用の参照 WAV ファイル(話者ごとに 1 つ、ファイル名は話者名)のディレクトリ。uv sync --extra speakers と HUGGINGFACE_TOKEN が必要です |
-f, --filename <template> | — | yt-dlp のテンプレート:%(title)s、%(uploader)s、%(id)s など。 |
フラグ
| フラグ | 説明 |
|---|---|
--force-whisper | プラットフォームの字幕を無視して、Whisper を使用します |
--skip-download | ダウンロード済みの動画を使用します |
--skip-transcript | 文字起こしの生成をスキップし、既存の文字起こしファイルを使用します |
--skip-analysis | 分析をスキップし、クリップ生成には既存の分析ファイルを使用します |
--use-background | 分析プロンプトに背景情報(配信者の名前やニックネーム)を含めます |
--skip-clips | クリップ生成をスキップします |
--add-titles | クリップにアーティスティックなタイトルを追加します(デフォルトでは無効) |
--skip-cover | カバー画像の生成をスキップします |
--burn-subtitles | SRT 字幕を動画に焼き込みます。出力先は clips_post_processed/ です。libass 対応の ffmpeg が必要です |
-v, --verbose | 詳細なログ出力を有効にします |
--debug | LLM に送信したプロンプト全体をエクスポートします(debug_prompts/ に保存) |
カスタムファイル名テンプレート(-f)
yt-dlp のテンプレート構文を使用します。よく使われる変数:%(title)s、%(uploader)s、%(upload_date)s、%(id)s、%(ext)s、%(duration)s。
例:-f "%(upload_date)s_%(title)s.%(ext)s"
環境変数
選択した --llm-provider に対応する API キーを設定します。
QWEN_API_KEY—--llm-provider qwen用OPENROUTER_API_KEY—--llm-provider openrouter用GLM_API_KEY—--llm-provider glm用MINIMAX_API_KEY—--llm-provider minimax用
ワークフロー
オーケストレーターはこのパイプラインを自動的に実行します。
- ダウンロード — 動画とプラットフォームの字幕(Bilibili/YouTube)を取得するか、ローカルファイルを受け付けます
- 分割 — 内蔵のしきい値を超える長さの動画を、並列解析用のセグメントに分割します
- 文字起こし — プラットフォームの字幕またはWhisper AIを使用します。
--force-whisperで上書きできます - 解析 — LLMが文字起こしのセグメントをエンゲージメント度で評価します。
--user-intentで選定の方向性を指定できます - クリップを生成 — ffmpegで特定したタイムスタンプに合わせて動画を切り出します
- タイトルを追加(オプトイン) —
--title-styleを使用して、アーティスティックなテキストオーバーレイを描画します - カバーを生成 — 各クリップのサムネイル画像を作成します
特定の手順を省略するには、--skip-clips、--skip-cover を使用します。アーティスティックなタイトルを有効にするには、--add-titles を使用します。中間結果から再開するには、--skip-download と --skip-analysis を使用します。
出力例
実行が成功したら、次のように結果を報告します。
✅ Processing complete — 5 clips generated
📁 processed_videos/video_name/clips/
clip_01.mp4 [00:12:34 – 00:15:20] "Title of the moment"
clip_02.mp4 [00:28:45 – 00:31:10] "Another highlight"
clip_03.mp4 [00:45:00 – 00:47:30] "Key discussion point"
...
Cover images: clips/*.jpg
出力構成
processed_videos/{video_name}/
├── downloads/ # Original video, subtitles, and metadata (URL sources)
├── local_videos/ # Copied video and subtitles (local file sources)
├── splits/ # Split parts and AI analysis results
├── clips/ # Generated highlight clips + cover images
└── clips_post_processed/ # Post-processed clips when using --add-titles and/or --burn-subtitles
オプションの選択ガイド
Whisperモデル — 音声が明瞭な場合は、デフォルトの base が適しています。背景雑音、複数の話者、またはアクセントがある場合は small を使用します。速度と精度を両立するには turbo を使用します。文字起こしの品質が最優先の場合に限り、large/medium を使用してください。
--force-whisper — プラットフォームの字幕が自動生成されている場合(不正確なことがよくあります)、「エンゲージメントの高い場面が見つかりません」という結果になった場合(文字起こしの精度を上げると解析が改善します)、またはプラットフォームの字幕が信頼できない非ネイティブ言語のコンテンツの場合に使用します。
--use-background — ニックネームやコミュニティ内の言及が重要になる、繰り返し登場する人物(配信者、ホストなど)がいるコンテンツで使用します。prompts/background/background.md を読み込みます。
複数パートの解析 — 分割された動画はセグメントごとに解析され、その後、すべてのセグメントからエンゲージメントの高い場面が上位5件に集約されます。
--user-intent — セグメントごとの解析とセグメント横断の集約の両方で、LLMによるクリップ選定の方向性を指定します。特定のトピック(例:「AIの安全性に関する予測」「面白い場面」)のクリップを探したい場合に便利です。
--burn-subtitles — SRT字幕を動画フレームに焼き込みます。字幕を常に表示したい場合(例:ソーシャルメディア向け)に使用します。--subtitle-translation と組み合わせると、元の字幕の下に翻訳字幕を追加できます。
--speaker-references — インタビューやポッドキャスト向けの話者ダイアライゼーションを有効にします。話者ごとに、10~30秒のノイズのないWAVクリップを1つずつ用意し、話者名をファイル名に付けたディレクトリを指定します(例:references/Host.wav)。
トラブルシューティング
| エラー | 対処方法 |
|---|---|
| 「ffmpegが見つかりません」/クリップの生成がエラーなく失敗する | ffmpegをインストールします:brew install ffmpeg(macOS)または sudo apt install ffmpeg(Ubuntu) |
| 「APIキーが指定されていません」 | 環境変数として QWEN_API_KEY、OPENROUTER_API_KEY、GLM_API_KEY、または MINIMAX_API_KEY を設定します |
| 「動画のダウンロードに失敗しました」 | ネットワーク/URLを確認します。別の --browser を試すか、ローカルファイルを使用します |
| 「文字起こしの生成に失敗しました」 | --force-whisper を試すか、音声の品質を確認します |
| 「エンゲージメントの高い場面が見つかりません」 | 文字起こしの精度を上げるため、--force-whisper を試します |
| 「クリップの生成に失敗しました」 | 解析が完了していることを確認し、既存の解析ファイルがあるか確認します |