mcpField
V
video-edit

video-edit

github.com/aiagentwithdhruvクリエイティブ・メディア2060 回インストール15 週間前に更新
リポジトリ

video-edit について

動画編集やソーシャルメディア向け制作に使える、7 つのスクリプトからなるツールキットです。無音除去、自動字幕、縦型クロップ、YouTube の分割、圧縮、3D トランジションを扱います。

主な機能

  1. 01音声検出で無音部分を除去
  2. 02字幕を生成して動画に焼き込み
  3. 03顔を追跡して縦型にクロップ
  4. 04YouTube 動画を取得して章ごとに分割
  5. 05プラットフォーム別プリセットで圧縮
  6. 063D スイベルのティーザーを挿入

活用シーン

  1. 01ソーシャル動画の無音除去と字幕付け
  2. 02横長映像を縦型動画にクロップ
  3. 03YouTube 動画を章ごとのクリップに分割
  4. 04投稿先に合わせて動画を圧縮

インストール

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

$npx skills add https://github.com/aiagentwithdhruv/skills --skill video-edit

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

同梱ファイル

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

scripts/
auto_captions.py
compress_video.py
insert_3d_transition.py
jump_cut_vad_singlepass.py
simple_video_edit.py
vertical_crop.py
youtube_clip.py

詳細

動画編集ツールキット

目標

無音区間の削除、自動字幕生成、縦向きクロップ、YouTube のクリップ作成、圧縮、3D トランジションまで、動画制作の全工程に対応します。

スクリプト(全7本)

スクリプト用途
jump_cut_vad_singlepass.pyニューラル VAD(Silero)で無音区間を削除します
auto_captions.pyスタイル付き字幕を生成して焼き込みます(Whisper + FFmpeg)
vertical_crop.py顔追跡で 16:9 → 9:16 に自動クロップします
youtube_clip.pyYouTube からダウンロードし、AI でチャプターごとにクリップします
compress_video.pyプラットフォーム別プリセットでソーシャルメディア向けに圧縮します
simple_video_edit.py全工程のパイプライン:無音区間の削除 + 文字起こし + メタデータ + アップロード
insert_3d_transition.py3D スイベルのティーザーを挿入します

クイックスタートのレシピ

レシピ 1:ソーシャルメディア向け全工程パイプライン
# 1. Remove silences
python3 ./scripts/jump_cut_vad_singlepass.py input.mp4 .tmp/edited.mp4

# 2. Add captions
python3 ./scripts/auto_captions.py .tmp/edited.mp4 .tmp/captioned.mp4 --word-level --max-words 2

# 3. Crop to vertical for Shorts/Reels
python3 ./scripts/vertical_crop.py .tmp/captioned.mp4 .tmp/vertical.mp4

# 4. Compress for platform
python3 ./scripts/compress_video.py .tmp/vertical.mp4 output.mp4 --preset instagram-reel
レシピ 2:YouTube → Shorts パイプライン
# 1. Download + auto-clip YouTube video
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --auto-clip --output-dir clips/

# 2. Add captions to best clip
python3 ./scripts/auto_captions.py clips/chapters/01_intro.mp4 .tmp/captioned.mp4 --word-level

# 3. Crop to vertical
python3 ./scripts/vertical_crop.py .tmp/captioned.mp4 .tmp/vertical.mp4

# 4. Compress for YouTube Shorts
python3 ./scripts/compress_video.py .tmp/vertical.mp4 short.mp4 --preset youtube-shorts
レシピ 3:クイック編集 + アップロード
# All-in-one: silence removal + transcription + metadata + Auphonic upload
python3 ./scripts/simple_video_edit.py --video input.mp4 --title "My Video"

スクリプト 1:VAD による無音区間の削除

ファイル: ./scripts/jump_cut_vad_singlepass.py

仕組み
  1. 音声を WAV(16kHz モノラル)として抽出します
  2. Silero VAD を実行して音声区間を検出します
  3. 近接した区間を結合し、パディングを追加します
  4. FFmpeg の trim+concat を使い、1 回の処理で区間を結合します
  5. hevc_videotoolbox(H.265、17Mbps、30fps)でハードウェアエンコードします
CLI 引数
引数デフォルト説明
--min-silence0.5カットする無音時間の最小値(秒)
--min-speech0.25残す音声時間の最小値(秒)
--padding100音声の前後に追加するパディング(ミリ秒)
--merge-gap0.3この時間より近い区間を結合します(秒)
--keep-starttrue常に 0:00 から開始します
使用方法
python3 ./scripts/jump_cut_vad_singlepass.py input.mp4 output.mp4
python3 ./scripts/jump_cut_vad_singlepass.py input.mp4 output.mp4 --min-silence 1.0 --padding 200
処理時間

49 分の 4K 動画で約 8 分


スクリプト 2:自動字幕生成

ファイル: ./scripts/auto_captions.py

仕組み
  1. faster-whisper を使って動画を文字起こしします(単語レベルのタイムスタンプ)
  2. SRT 字幕を生成します(セグメントレベルまたは単語レベル)
  3. FFmpeg でスタイル付き字幕を動画に焼き込みます
CLI 引数
引数デフォルト説明
--modelbaseWhisper モデル:tiny、base、small、medium、large-v3
--languageauto言語を指定します(en、es、hi など)
--word-levelfalse短くテンポのよい字幕にします(一度に 1~3 語)
--max-words3単語レベルモードでの字幕あたりの最大単語数
--font-size22字幕のフォントサイズ(縦向き動画では自動調整)
--font-colorwhiteテキストの色:white、yellow、cyan、green、red、orange、pink
--outline-colorblackアウトラインの色
--positionbottom字幕の位置:bottom、top、middle
--srt-onlyfalseSRT のみを生成し、焼き込みは行いません
--srt-pathautoSRT の出力先を指定します
--boldtrueテキストを太字にします
使用方法
# Basic captions
python3 ./scripts/auto_captions.py input.mp4 output.mp4

# Word-level (CapCut/Submagic style)
python3 ./scripts/auto_captions.py input.mp4 output.mp4 --word-level --max-words 2

# Yellow captions at top
python3 ./scripts/auto_captions.py input.mp4 output.mp4 --font-color yellow --position top

# SRT only (no burn)
python3 ./scripts/auto_captions.py input.mp4 --srt-only

# High accuracy
python3 ./scripts/auto_captions.py input.mp4 output.mp4 --model large-v3
依存関係
pip install faster-whisper

スクリプト 3:縦向きクロップ

ファイル: ./scripts/vertical_crop.py

仕組み
  1. 動画全体からフレームをサンプリングします
  2. OpenCV Haar cascade を使って顔を検出します
  3. 顔の位置を平滑化し、揺れを抑えます
  4. 話者を中央に配置して 16:9 → 9:16 にクロップします
  5. 動く被写体の場合:動画を 2 秒のチャンクに分割し、チャンクごとに追跡します
CLI 引数
引数デフォルト説明
--ratio9:16目標のアスペクト比(例:9:16、4:5、1:1)
--positionautoクロップ位置:auto(顔追跡)、left、center、right
--smoothing30平滑化に使用するフレーム数
--sample-interval5検出のために N フレームごとにサンプリングします
使用方法
# Auto face-tracking crop
python3 ./scripts/vertical_crop.py input.mp4 output.mp4

# Square crop (Instagram post)
python3 ./scripts/vertical_crop.py input.mp4 output.mp4 --ratio 1:1

# 4:5 crop (Instagram feed)
python3 ./scripts/vertical_crop.py input.mp4 output.mp4 --ratio 4:5

# Center crop (no tracking)
python3 ./scripts/vertical_crop.py input.mp4 output.mp4 --position center
依存関係
pip install opencv-python numpy

スクリプト 4:YouTube クリップ

ファイル: ./scripts/youtube_clip.py

仕組み
  1. yt-dlp で動画をダウンロードします(最大 4K)
  2. 利用可能な場合は YouTube のチャプターを抽出します
  3. 利用できない場合は AI でチャプターを生成します(Whisper + Claude)
  4. 動画をチャプターごとのファイルに切り分けます
CLI 引数
引数デフォルト説明
--download-onlyfalseダウンロードのみ実行し、クリップは作成しません
--max-quality1080最大画質:480、720、1080、1440、2160
--audio-onlyfalse音声のみダウンロードします(MP3)
--startnoneクリップの開始位置を手動で指定します(秒)
--endnoneクリップの終了位置を手動で指定します(秒)
--auto-clipfalseAI によるチャプター検出とクリップ作成
--use-yt-chapterstrue利用可能な場合は YouTube のチャプターを使用します
--max-clipsnoneクリップ数を制限します
--whisper-modelbase文字起こしに使用する Whisper モデル
--reencodefalseクリップを再エンコードします(正確なカット)
--output-dir.tmp/clips出力ディレクトリ
使い方
# Download only
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --download-only

# Auto-clip into chapters
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --auto-clip

# Extract specific range
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --start 60 --end 180 -o clip.mp4

# Download audio only
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --audio-only

# Top 3 clips only
python3 ./scripts/youtube_clip.py "https://youtube.com/watch?v=..." --auto-clip --max-clips 3
依存関係
pip install yt-dlp faster-whisper anthropic

スクリプト 5:動画圧縮

ファイル: ./scripts/compress_video.py

プラットフォームのプリセット
プリセット解像度CRF最大時間最大サイズ備考
youtube1080p18なしなし高画質
youtube-shorts1080x19202060sなし縦向き
instagram-reel1080x19202390sなし縦向き
instagram-post1080x10802360sなし正方形/縦向き
tiktok1080x192023180sなし縦向き
twitter1080p23140s512MBビットレートを自動調整
linkedin1080p23600s200MBビットレートを自動調整
telegram720p28なし50MBボット用
whatsapp720p28120s16MB強力な圧縮
small480p30なしなし手軽な共有
CLI 引数
引数デフォルト説明
--presetnoneプラットフォームのプリセット(上の表を参照)
--resolution1080最大高さ(ピクセル)
--crf23画質(0=無劣化、51=最低画質)
--audio-bitrate128k音声ビットレート
--target-sizenone目標ファイルサイズ(MB)
--max-durationnone最大時間(秒)
--list-presetsfalseすべてのプリセットを表示
使い方
# Platform preset
python3 ./scripts/compress_video.py input.mp4 output.mp4 --preset instagram-reel
python3 ./scripts/compress_video.py input.mp4 output.mp4 --preset whatsapp

# Target file size
python3 ./scripts/compress_video.py input.mp4 output.mp4 --target-size 25

# Custom
python3 ./scripts/compress_video.py input.mp4 output.mp4 --resolution 720 --crf 28

# List all presets
python3 ./scripts/compress_video.py input.mp4 output.mp4 --list-presets

スクリプト 6:シンプルな動画編集(全工程)

ファイル: ./scripts/simple_video_edit.py

仕組み
  1. FFmpeg で無音を検出してカットします
  2. 音声を正規化します(loudnorm)
  3. Whisper で文字起こしします
  4. Claude が YouTube のメタデータ(概要+チャプター)を生成します
  5. Auphonic にアップロードし、YouTube に非公開の下書きとして投稿します
CLI 引数
引数デフォルト説明
--videorequired入力動画のパス
--titlerequiredYouTube のタイトル
--thumbnailnoneサムネイル画像のパス
--no-uploadfalseAuphonic へのアップロードをスキップします
--no-normalizefalse音声の正規化をスキップします
--upload-onlyfalse編集をスキップし、アップロードのみ実行します
--silence-threshold-35無音しきい値(dB)
--silence-duration3.0無音の最小時間(秒)
使い方
# Full pipeline
python3 ./scripts/simple_video_edit.py --video input.mp4 --title "My Video"

# Local only
python3 ./scripts/simple_video_edit.py --video input.mp4 --title "Test" --no-upload
依存関係
pip install anthropic faster-whisper requests python-dotenv
# Requires: ANTHROPIC_API_KEY, AUPHONIC_API_KEY in .env

スクリプト 7:3D スイベルティーザー

ファイル: ./scripts/insert_3d_transition.py

仕組み
  1. 動画の後半からフレームを抽出します(デフォルト:60 秒以降)
  2. Remotion を使って 3D 回転する「スイベル」アニメーションを作成します
  3. 動画を分割します:イントロ → トランジション → メインコンテンツ
  4. 音声を保持したまま再エンコードして結合します
CLI 引数
引数デフォルト説明
--insert-at3ティーザーの挿入位置(秒)
--duration5ティーザーの時間(秒)
--teaser-start60コンテンツのサンプリング開始位置(秒)
--bg-color#2d3436背景色(16 進数)
--bg-imagenone背景画像のパス
最終タイムライン
[0-3s intro] [3-8s swivel teaser @ 100x] [8s onwards: edited content]
Audio: Original audio plays continuously
依存関係
pip install torch  # For Silero VAD (jump_cut script)
brew install ffmpeg node  # macOS
cd video_effects && npm install  # For Remotion 3D rendering

すべての依存関係(一度だけインストール)

# Core (required for all scripts)
brew install ffmpeg

# Silence removal
pip install torch

# Auto-captions + YouTube clip
pip install faster-whisper

# Vertical crop
pip install opencv-python numpy

# YouTube download
pip install yt-dlp

# AI features (chapters, metadata)
pip install anthropic

# Full pipeline (simple_video_edit)
pip install requests python-dotenv

# 3D transitions
brew install node
cd scripts/video_effects && npm install

トラブルシューティング

問題解決策
カットが不自然に感じるjump_cut で --padding 200 を指定します
カットが多すぎるjump_cut で --min-silence 1.0 を指定します
字幕が小さすぎるauto_captions で --font-size 32 を指定します
縦型動画が検出されるフォントのサイズが自動的に 1.3 倍になります
QuickTime で再生できないhvc1 コーデックタグが設定されていることを確認してください
顔が検出されないvertical_crop で --position center をお試しください
YouTube のダウンロードに失敗するyt-dlp を更新します:pip install -U yt-dlp
ファイルサイズが大きすぎる--preset whatsapp または --target-size 25 を使用します
ハードウェアエンコーダーが失敗するソフトウェア(libx264)に自動的に切り替わります

技術的な詳細

  • macOS:ハードウェアエンコーディング(hevc_videotoolbox / h264_videotoolbox)
  • フォールバック:CRF を使用した libx264/libx265
  • オーディオ:AAC 128-192kbps
  • QuickTime との互換性のために hvc1 コーデックタグを使用します
  • すべてのスクリプトで --help を指定すると、引数の一覧を確認できます

スキーマ

入力
名前型必須説明
input_videofile_pathはい入力動画ファイルのパス
recipestringいいえパイプラインのレシピ:full-social、youtube-shorts、quick-edit
presetstringいいえ圧縮プリセット:youtube、instagram-reel、tiktok、whatsapp など
出力
名前型説明
output_videofile_path処理済み動画ファイルのパス
認証情報
名前ソース
ANTHROPIC_API_KEY.env(AI のチャプター用)
AUPHONIC_API_KEY.env(アップロード用)
組み合わせ可能なもの

このスキルと組み合わせやすいスキル:pan-3d-transition、recreate-thumbnails

コスト

ローカルでは無料(FFmpeg + Silero VAD)

コメント