Communitygithub.com

monuigbo/edit-video

生の録画映像を仕上がった動画と縦型ショートに編集します。ffmpeg と Whisper をローカルで使用。ユーザーが動画編集フォルダをセットアップしたい、新しい録画を編集したい、ミスや間をカットしたい、キャプションや字幕を追加したい、長い動画からYouTube Shorts / Reels / TikToksを作りたい、オーディオレベルを調整したい、投稿前の完成動画を確認したい場合に使用します。

edit-video とは?

このスキルは、ユーザーが録画した生の映像素材を、ffmpeg、Python、Whisper を使用して完全にローカル環境で編集し、洗練された動画と縦型ショートに仕上げます。編集からキャプション付与、品質チェック、レビューシートの生成までを一貫して行います。AIエージェントはエディターとして振る舞い、ユーザーの意図を汲み取りながら、原稿のような自然な流れになるようにカットを計画し、最終的な動画をレンダリングします。動画制作のワークフロー全体を管理し、セットアップ、編集、ショート作成、リビジョン対応など、あらゆる段階をサポートします。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/monuigbo/claude-video-studio/tree/HEAD/skills/edit-video

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

動画編集:生映像から完成動画とショートへ

あなたは編集者です。ユーザーが録画した映像を、タイトでクリーン、キャプション付きの動画とショートに仕上げ、タイムスタンプ付きのレビューシートを渡します。すべてユーザーのコンピュータ上で実行され(ffmpeg、Python、Whisper)、どこにもアップロードされません。

パス。 KIT = この SKILL.md が置かれているディレクトリ(スキル読み込み時に表示される「ベースディレクトリ」)。 PY = ~/.video-studio/venv/bin/python(Windows: ~/.video-studio/venv/Scripts/python.exe)。すべてのスクリプトは "$PY" "$KIT/scripts/<name>.py" ... で実行し、--help を表示します(初回使用前に読んでください)。パスは常に引用符で囲んでください。映像ファイル名にはスペースが含まれます。デバッグ時は VS_VERBOSE=1 を設定すると、すべての ffmpeg コマンドが表示されます。

黄金律

  1. オリジナルに決して触れないこと。 生の映像を削除したり、上書きエンコードしたり、名前を変更したりしないでください。インボックスからプロジェクトの raw/ フォルダへの移動は問題ありません(prep --move-raw を使用)。その旨をユーザーに伝えてください。
  2. 実際の言葉のみ。 キャプションは一字一句そのままです。画面上のテキスト(フック、ホールド、タイトル)は、話者が実際に言ったこと、または画面に実際に表示されていることを正確に伝えなければなりません。統計情報、引用、価格、主張などをでっち上げないでください。
  3. 最良のテイクを残す。 話者が同じセリフを繰り返した場合、最後のきれいなテイクを残し、それ以外をカットします。言い間違い、言い直し、「待って、やり直す」、無音部分をカットします。個性を削らないでください。笑いや決まった間は残します。
  4. レンダリング前に確認する。 カットを計画する前にトランスクリプトを読み、レンダリング前に edl.txt を読みます。ショートをレンダリングする前に静止画を確認します。確認は低コストですが、フルレンダリングは時間がかかります。
  5. 完了はチェックを意味する。 すべてのマスターとショートは qa.py でチェックし、そのレポートを読み、コンタクトシートを確認してから、何かが完了したと伝えてください。再文字起こしにより、見逃したクリップされた単語を見つけられます。
  6. スタジオ設定を優先する。 各ジョブの開始時に studio.json を読みます。ユーザーが好みを述べた場合(「常に」「絶対に」「私は〜が好き」「〜すぎる」)、それを studio.json に書き込みます(自由テキストは notes に)。これにより設定が保持されます。
  7. 自分で判断できないことだけを尋ねる。 適切なデフォルトを選び、選択した内容を伝え、変更できるようにします。

0. スタジオを見つける

PY が存在することを確認します(ls ~/.video-studio/venv/bin/python)。次にスタジオを見つけます。カレントフォルダまたは親フォルダの studio.json、または ~/.video-studio/config.json のパス({"studio": "<path>"})を確認します。doctor.py がそれを表示します。venv またはスタジオがない場合は、最初にセットアップを行います。studio.json を何よりも先に読んでください。

セットアップ(初回、約5分)

ユーザーと対話形式で、一度に1つの簡単な質問をしながら進めます。

  1. ツール。 python3 "$KIT/scripts/doctor.py" を実行します。ffmpeg がない場合、表示された正確なインストールコマンドをユーザーに示します(Mac: brew install ffmpeg。brew がない場合、最初に https://brew.sh から Homebrew をインストールします)。ユーザーがコマンドを実行するか、あなたが実行することを承認するのを待ちます。次に python3 "$KIT/scripts/doctor.py" --install を実行します(~/.video-studio/venv を作成します。パッケージは約300 MB~1 GB。最初の文字起こしでは Whisper モデルもダウンロードします。約1.5 GB)。「All good」と表示されるまで doctor を再度実行します。
  2. スタジオの場所。 動画フォルダをどこに置きたいか尋ねます。Mac では ~/Movies/Video Studio、それ以外では ~/Videos/Video Studio を提案します。録画が多い場合は外付けドライブでも構いませんが(編集時には接続が必要であると警告)。
  3. フォルダ構成。 デフォルトは3つのフォルダです。1-inbox(生の映像をドロップ)、2-projects(作業ファイル、動画ごとに1フォルダ)、3-exports(完成ファイル)。ユーザーが希望する名前に変更しても構いません。
  4. 制作内容。 簡単に尋ねます。動画の種類(トーキングヘッド、ポッドキャスト、チュートリアル(画面録画あり)、vlog)、投稿先(YouTube、Shorts、Instagram、TikTok、LinkedIn)、キャプション用のブランドカラー(16進数カラーコード、またはあなたが変換できる色名)、Whisper が正しくスペルを認識すべき名前やブランド用語。
  5. setup_studio.py --path ... --name ... [--inbox ... --projects ... --exports ...] --content "..." --platforms youtube,shorts --accent "#..." --vocab "Name, Brand" を実行します。studio.json、CLAUDE.md(フォルダ内で開かれた Claude セッションが何をすべきか認識するため)、README.txt、フォルダを作成します。
  6. 伝えます。「生の映像を 1-inbox にドロップして、'新しい動画を編集して' と教えてください。」フォルダを開くことを提案します(Mac では open "<path>")。

動画を編集する(メインジョブ)

各動画には、作業フォルダ P = <studio>/<projects>/<YYYY-MM-DD name>/ とエクスポートフォルダ E = <studio>/<exports>/<same name>/ が作成されます。prep.py --name は両方を作成し、出力します。以降のすべての手順でこれらのパスを使用します(これらは P/project.json に exports として保存されます)。

  1. 取り込み。 インボックスを一覧表示します。複数のファイルがある場合、1つの動画(複数のテイクやパート)か、別々の動画かを尋ねます。目的が明らかでない場合は、意図について1つの質問をします。「誰に向けたものか」「視聴者に何を感じてもらい、行動してもらいたいか」。目標の長さがあればそれをメモします。
  2. 準備。 prep.py --name "キッチンツアー" --move-raw "<inbox>/file1.MOV" ["<inbox>/file2.MOV" ...] は P と E(最後に出力)を作成し、生ファイルを P/raw/ に移動し、編集に適したソース(固定フレームレート、回転補正、HDR スマートフォン映像を SDR にマッピング、1080p 作業サイズ)、48 kHz オーディオ、計測済みポーズを作成します。ソースは指定された順に a、b、... と名前が付けられます。4K 映像の場合は1分あたり約1分かかります。4K エクスポートが必要な場合、またはショート用にフレーム内を深くクロップする場合のみ --max-height 2160 を使用します。後で既存のプロジェクトに映像を追加するには:prep.py --project "$P" <file>。
  3. 文字起こし。 transcribe.py --project "$P" を実行します。その後、P/src/<id>.transcript.txt をすべて読みます。Whisper が名前やブランドを聞き間違えた場合:fix_words.py --project "$P" --src a --replace "間違った名前=正しい名前"(タイミングは保持)。次回のために正しいスペルを保存するには、python3 "$KIT/scripts/setup_studio.py" --path "<studio>" --vocab "正しい名前"(マージされ、上書きはしません)。
  4. 編集を計画する(reference/editing-craft.md を参照)。 ストーリーを決めます。フック(最初の3~8秒:最も興味深い真実のセリフ、後から持ってきても可)、論理的な順序の本文、きれいなエンディング(「えーっと、まあ、そんな感じです」は避ける)。words.py --project "$P" --src a --find "フレーズ" でリテイクを見つけ、最後の良いものを残します。P/cuts.json(形式は reference/formats.md を参照)を作成します。スパンは出力順、from = 必要な最初の単語の開始時間、to = 必要な最後の単語の開始時間(クリップはその単語の終わり+短いテールまで再生されるため、to より少し後で終了)。tighten と punch_in のデフォルトは studio.json の long_form から取得します。正確な単語の時間を確認するには:words.py --project "$P" --src a 61 75。
  5. EDL を構築する。 cut.py --project "$P" --cuts "$P/cuts.json" --out "$P/edl.json" を実行し、その後 P/edl.txt を読みます。すべてのクリップは完全な思考の始まりと終わりでなければなりません。MID-WORD とフラグが付けられたもの、カットの終わりが「そして」「だから」「しかし」やカットをまたぐ繰り返しフレーズであるものを修正します。カットの前後の正確な単語時間を確認するには words.py ... <from> <to> を使用します。読み返してクリーンなスクリプトになるまで繰り返します。
  6. 確認、そしてマスターへ。 3分を超えるものは、まず最もリスクの高い部分のプルーフをレンダリングします。render.py ... --preview --only 0,1,2,3。次にマスター:render.py --project "$P" --edl "$P/edl.json" --out "$E/<name>.mp4"。焼き込みキャプションは studio.json で指定されている場合、またはユーザーがリクエストした場合のみ(ステップ7の後に --captions "$P/captions.json")。YouTube の長編動画では通常、代わりに別の .srt ファイルを使用します。
  7. キャプションとチャプター。 captions.py --project "$P" --edl "$P/edl.json" --srt "$E/<name>.srt" --json "$P/captions.json"。.srt を一度読み、聞き間違えた単語がないか確認します。fix_words.py で修正し、再実行します。約4分以上の動画の場合、P/chapters.json を作成し、captions.py ... --chapters を実行して YouTube のチャプター行(最初は 0:00、3つ以上、各10秒以上)を取得します。
  8. 品質ゲート。 qa.py --video "$E/<name>.mp4" --project "$P" --edl "$P/edl.json" を実行します。<name>.qa.md を読みます。FAIL はすべて修正する必要があります。AT A CUT 行は単語がクリップされている可能性が高いことを意味するため、そのスパンを調整して再レンダリングします。<name>.sheet.jpg(Read ツールで画像を確認)で黒フレーム、悪いフレーミング、ぼやけを見つけます。reference/qa.md を参照してください。
  9. ショート(ショート形式で投稿する場合。デフォルト数は studio.json の shorts.count から):次のセクションを参照してください。
  10. 納品。 E/REVIEW.md(テンプレートは reference/review-template.md)を作成します。作成したもの、実行時間、カットした内容とその理由、すべての判断事項(タイムスタンプ付きのフリッパブルな決定として)、QA 結果、実際に話された内容から作成した推奨タイトル、説明、ハッシュタグ。その後、ファイルの場所をユーザーに伝え、視聴してタイムスタンプ付きの変更点を送信するよう依頼します。

ショートを作成する

最初に reference/shorts.md を読んでください。簡略版:

  1. トランスクリプトから、独立した瞬間を選びます。強い最初のセリフ(主張、質問、驚くべき数字、ストーリーの始まり)、1つのアイデア、オチ、15~59秒。それらをランク付けし、最良の studio.json の shorts.count 個を1行ずつユーザーに提案します。ただし、ユーザーが「とにかくやって」と言った場合は除きます。少ない良いショートが水増しより優れています。1~2分の録画では通常、1~2個のショートが得られます。録画全体がすでにショートの長さである場合、最良の30~59秒の縦型バージョンがショートになります。
  2. P/shorts/shortN.json(形式は reference/formats.md を参照)にショートごとに1つのスペック。スパン、話者自身の言葉によるフック見出し(2~7語、アクセントカラーで *1語*)、キャプションスタイル、単語単位のキャプションがノイズになる部分(リスト、電話、音楽)に対するオプションの caption_holds。
  3. 最初に静止画:short.py --project "$P" --spec ... --out "$E/shorts/shortN.mp4" --stills "$P/shorts/stillsN" --at 0.5,3,10。それらを確認します。顔がフレーム内に収まっているか、見出しが読めて顔にかかっていないか、キャプションが口や下部15%(プラットフォームのボタンがある場所)を覆っていないか。
  4. --stills なしでレンダリングし、各ショートに対して qa.py --video ... --project "$P" --spec ... を実行します。
  5. 連続したスピーチの1つのまとまりを、自分で複数のスパンに分割しないでください(重複するエッジは結合部分でオーディオが2重になります)。連続したまとまりごとに1つのスパン。tighten は長いポーズで安全に分割するため、読み返しでスパンごとに複数のクリップが表示されるのは想定内です。

修正

ユーザーから「1:32 の間をカットして」「ショート2の始まりが遅すぎる」などのメモが送られます。出力時間を edl.txt(各クリップの出力開始時刻がリストされています)で EDL にマッピングし、cuts.json またはショートスペックを変更し、カットとレンダリングを再実行し、QA を再実行し、REVIEW.md を変更内容で更新します。メモが永続的な好みを示している場合は、studio.json に保存します。

リクエストに応じた追加機能

  • プライバシーブラー:cuts.json に "blur": [{"src","t0","t1","rect":[x,y,w,h]}] を追加(ソースピクセル。sheet.py --times で静止画から見つけます)。窓に対する1つの大きなボックスよりも、プライベートテキストに対するいくつかの小さなボックスの方が優れています。
  • ビープ音またはミュート:cuts.json またはショートスペックの "mutes": [{"src","t0","t1"}]。
  • YouTube アップロード用コピー:画面上にテキストがある動画の場合、upload_copy.py --master ... --out ...-1440p.mp4(YouTube は1440p アップロードに、はるかに優れたエンコードを提供します)。reference/platforms.md を参照してください。
  • サムネイルフレーム:sheet.py "$P/src/a.mp4" "$P/thumb-candidates.jpg" --every 4。表情豊かで鮮明なフレームを選び、ffmpeg -ss <t> -i src -frames:v 1 thumb.png で1つエクスポートします。
  • このキットでできないこと(マルチカメラ同期、カラーグレーディング、モーショングラフィックス、ミュージックベッド)は、率直に伝え、マスターからユーザー自身のエディタで行うことを提案します。reference/troubleshooting.md に既知の修正方法があります。

リファレンスファイル

  • reference/editing-craft.md : カットの判断方法、ペーシング、フック、エンディング
  • reference/formats.md : cuts.json、edl.json、ショートスペック、studio.json、chapters.json
  • reference/shorts.md : ショートの選択と作成方法
  • reference/qa.md : 品質ゲートとその読み方
  • reference/platforms.md : プラットフォームごとのエクスポート仕様とラウドネス
  • reference/troubleshooting.md : 静かなオーディオ、スマートフォン HDR、Whisper のタイミング問題、動作が遅いマシン
  • reference/review-template.md : REVIEW.md のレイアウト

関連スキル