Communitygithub.com

builtnotboosted/video-editing

トークヘッド映像を縦型ショート(1920×1080)や16:9のYouTube長尺動画に編集します。ffmpegとWhisperを使用し、台本の各行をクリーンな読みで収め、単調なショットを避け、キャプション追加、ラウドネス調整、サムネイル生成、QAゲートを実行します。

video-editing とは?

このスキルは、トークヘッド映像を台本に基づいてプロフェッショナルな動画に仕上げるための強力なツールです。音声認識(Whisper)と動画編集(ffmpeg)を組み合わせ、各行のクリーンなテイクを自動選択し、ポーズや言い直しを除去します。ショットのバリエーション(パンチイン、Bロール、モーショングラフィックス)を自動的に追加し、キャプションをタイムコード付きで生成し、ラウドネスを-14 LUFSに規格化します。さらに、最終出力のQAを実行し、リップシンクやキャプションの正確性を検証します。マルチカメラ同期(音声・モーション)、YouTubeチャプター生成、サムネイル作成もサポート。Claude Code(API料金が適用されるエージェンティックな環境)で動作し、ユーザーのプロンプトに応じてワークフローを自動化します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/builtnotboosted/built-not-boosted-skills/tree/HEAD/plugins/built-not-boosted/skills/video-editing

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

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

ドキュメント

動画編集

このスキルは、カメラに向かって話す人物の生映像を、完成した動画、対応するSRTキャプションファイル、およびカバー画像に変換します。ffmpeg、Whisper、Playwrightをベースにしたバンドルコマンドラインツール(vedit.py)を使用します。編集を担当し、クリーンなテイクの選択、カット、ショットバリエーション、グラフィックスとBロールの配置、キャプション、ラウドネス、カバー、最終QAを行います。台本と編集ノートについてはvideo-scriptingスキルに、色、フォント、コンプライアンスラインについてはbrand/brand-profile.mdに、静止画像についてはimage-generationスキルに、独立したチェックについてはreview-loopスキルに、投稿についてはschedulingスキルに依存します。ここから投稿やスケジュール設定は行われません。

権限順位:brand-profile.mdがブランド定数とコンプライアンス文言で優先され、このスキルは方法の所有者です。

開始前に

  1. マーケティングワークスペース(デフォルトはmarketing/)を見つけてください。存在しない場合は、一言で伝え、brand-setupスキルを提案してください。ツールはニュートラルな外観で動作します。
  2. 作品のフォルダcontent/<yyyy-mm-dd>-<slug>/を見つけてください。そこにはscript.txt(1行に1つの話される文、[注記は角括弧で]と[CHAPTER N • タイトル]マーカーは発話されない)、理想的にはedit-notes.txt(HOOK ON SCREEN:、COVER:、OUTCOME:行)、およびsources.txt(画面に表示が許可されている唯一の図表)が含まれている必要があります。台本なしで撮影された場合は、まず文字起こしを行い、クリーンアップしたトランスクリプトを台本として扱ってください。
  3. ブランドプロファイルの## ビジュアルアイデンティティ、## コンプライアンス、## 境界、## CTAと連絡先、およびbrand/voice-learnings.md(グラフィックやカバーに使用する言葉やフレーズ用)を読んでください。
  4. ツールの準備ができているか確認:python3 <skill>/vedit.py doctor。不足がある場合は、bash <skill>/setup.shを1回実行してください(ffmpeg、Node、Python venv、Whisper、Playwright、フォント)。Whisperのlargeモデルは約3GBで、ノートPCのCPU上でクリップの長さの約1~2倍の時間で文字起こしするため、長時間のステップはバックグラウンドで開始してください。

標準

  1. 各行をクリーンなリードで1回。 完成動画には、各行のリードが正確に1回含まれます。言い直し、「the, the」、放棄されたテイクからの不完全な文、切れた単語の末尾は含みません。これはポリッシュではなくブロッカーです。自然な「えー」は残しても構いません(人は自分らしく聞こえるべき)が、冒頭行では絶対に使わず、1行に2回以上も使わないでください。
  2. 書かれた台本ではなく、話された言葉に従う。 人は話しながらラインを改善します。生の言い換えは、テイクファインダーで行が欠落または低カバレッジとして表示されます。それは失敗ではありません。彼らのバージョンを保持し、本物のつまずきや言い直しのみをカットし、台本から書かれたグラフィックやフックカードを実際に言われた内容に合わせて修正してください。
  3. ビジネスに貢献するビートを維持する。 台本に初期の「私が誰か」という行や締めのコールトゥアクションがある場合は、そのままの位置に残します。
  4. 絶対に単調な一枚ショットにしない。 すべてのカットでワイドとタイトを交互に使い、長いリード内でリフレームし、Bロールにカットアウェイし、モーショングラフィックスでストーリーを運びます。トークヘッドは背骨であり、動画全体ではありません。
  5. キャプションは完成したオーディオから生成し、台本と照合して、聞こえる内容と正確に一致させます。ショート動画では焼き付け、長尺動画ではSRTのみ使用。
  6. ラウドネス -14 LUFS、トゥルーピーク -1.5 dB で、すべてのプラットフォームで適切に聞こえるようにします。
  7. 実際のフレームを使用したカバーで、グリッドセーフスクエア内に見出しを配置し、1つまたは2つのバリエーションを提供します。
  8. 納品前にQAゲートが通過する。 レンダリングを再文字起こしし、各カットを個別に聞き、各カットが無音で着地することを確認します。deliverは新しいPASSなしでは拒否されます。
  9. 耳について正直に。 Claudeは聞くことができません。ゲートは単語とエネルギーをチェックし、トーン、単語の下の咳、または悪いルームトーンのスプライスはチェックしません。毎回、引き渡し時にその旨を伝えてください。

方法

すべてのコマンドはpython3 <skill>/vedit.py <command> <slug>です。手動でproject.jsonを編集する前にreferences/project-config.mdを読んでください。

  1. まずすべてを収集する。 バッチ内のすべてのクリップをリストアップします。サブカメラを音声でペアリングし(scripts/sync_cams.py、実際の一致は約0.4~0.55、不一致は約0.03)、ドローンなどの無音カメラはモーションとタイムスタンプで同期します(scripts/sync_cams_visual.py)。すべての写真とショートクリップのコンタクトシートを作成し、Bロールとして使用可能なものをメモし、フォルダにないカメラがあればすぐに尋ねてください。詳細はreferences/multicam-and-long-form.mdを開いてください。
  2. 初期化。 vedit.py init <slug> --raw <cameraA clip> --pack <content folder> [--long] [--cam B=<clip>]。台本をコピーし、編集ノートを読み、ブランドプロファイルのパレットとフォントをproject.jsonにマッピングします。次に、台本内のすべての固有名詞(プレゼンターの名前を含む)をvocabに追加します。
  3. プレップ(遅い、バックグラウンド):vedit.py prep <slug>。カメラのフレームレートでアップライトマスター、16kHzオーディオ、同期された追加カメラ、および2つのトランスクリプト(large-v3逐語とmedium.en)を作成します。HDR映像、形状が間違っている映像、Bluetoothマイクからの通話品質のオーディオで停止します。references/audio-and-sync.mdに救出ルートがあります。
  4. テイク。 vedit.py takes <slug>は、テレプロンプターのように音声を台本に合わせます。後方へのジャンプは言い直しであるため、各行の各試行はスコア付きのテイクになります。2回目のリスニングでは、各テイクを個別に再確認し、フィラー、繰り返し、ダブルリードを見つけます。picker/takes_report.txtを読んでください。次に、信頼する前に検証します。references/whisper-pitfalls.mdを開いてください。Whisperは繰り返される誤った開始を落とし、最後の単語をでっち上げ、なじみのない用語を分割するためです。提案された言い直しトリムは、エネルギーマップが第二の音声バーストを示さない限り、そのままにします。
  5. ピック。 担当者がブラウザでピックするか(vedit.py picker <slug>をバックグラウンドで実行し、http://localhost:8765を開く)、Claudeにピックを依頼する場合は、picker/picks.jsonを自分で書き、マシンピックからの変更ごとにnoteを付けます。どのラインが赤または琥珀色で、その理由を伝えてください。隣接するラインと同じランからのリードを優先します。それらはカットなしで流れます。マシンピックから納品しないでください。
  6. 振付(デザイン作業、最初にreferences/style-notes.mdを読んでください)。台本、sources.txt、映像から:フレーム0のフックカードをedit_notes.hook_on_screenから(3~5単語、答えではなく約束)、graphics.jsonの必要なビート用のカード、唯一sources.txt内の数値のみ、cuesは行または話された単語に固定し、決して固定時間にしない、動機付けられたBロールカットアウェイ(説明する単語の上、または視線やジェスチャーの直後)、1フレームで測定されたframing.face_x/eye_y、退場用のexit_tail。vedit.py mg-preview <slug>でグラフィックスを静止画としてプレビューします。
  7. ビルド。 vedit.py build <slug> planは瞬時で、カットの概要を出力します。build cuesは配置できなかったキューをリストします(修正し、無視しないでください)。build cutとscripts/cut_check.pyをクリーンになるまで繰り返し、カバーを作成(ステップ9)してポスターフレームを埋め込み、その後build allを実行します。ビルドが適用するルールはreferences/edit-rules.mdにあります。
  8. ゲート。 vedit.py gate <slug>。ラインが2回読まれている、つまずきや放棄された開始が残っている、単語のない音声エネルギー(隠れた再読み)、任意のカットをまたいだ繰り返しやスキップ(両方のモデルで個別に聞かれる)、ドロップされたテイクからの浮遊単語、音が乗ったカット、および(マルチカメラの場合、gaze.jsonが存在する場合)間違ったカメラで失敗します。原因を修正し、再ビルドし、再ゲートします。次に、ヒューマンプロキシパス:レンダリングのコンタクトシートを視聴し、すべてのキャプションを読み(vedit.py captions <slug>)、変更した行ごとに何があったかと何が保持されたかを書き留めます。
  9. カバー。 vedit.py frames <slug> --every 5でコンタクトシートを作成。アイコンタクト、温かい表情(話している途中ではない)、シャープなフォーカス、ストーリーを伝える小道具のあるフレームを選びます。cover.frameと1つまたは2つのvariants(2~4単語、大きく、強調単語1つ、シンプルで真実)を設定し、vedit.py cover <slug>を実行します。各テキストボックスをグリッドセーフスクエアと顔に対してチェックし、プロファイルグリッドが表示するものを示すgrid_tiles.jpgを書き込みます。
  10. レビュー。 レンダリングのコンタクトシート、カバー、SRT、カットリストをreview-loopスキルに渡します。画面上の数値はsources.txtと照合され、信頼されません。
  11. 納品とリリース。 vedit.py deliver <slug>は、動画、SRT、カバー、カットリスト(各行:テイク、ソース範囲、トリム、理由付きの変更)、QAレポート、および長尺動画用のyoutube-chapters.txtをcontent/<date>-<slug>/video/に書き込みます。vedit.py release <slug> --to <folder>は、動画、SRT、JPGサムネイルを1つのファイル名でコピーします。これはスケジューラーやYouTubeが期待する形式です。

出荷前のチェック

担当者への引き渡しには常に以下を含めます:

  • ゲートPASS、最新(レンダリングより新しいもの)。
  • 最終レンダリングで測定されたリップシンク:scripts/lipsync.py build/final.mp4 <t0> <t1>を2~3か所の顔カメラストレッチで実行し、それぞれ±40 ms以内。
  • キャプションチェック読了(vedit.py captions <slug>、vN-caption-check.txtとして提供):FIXが妥当に見え、各CHECKが担当者が聞くための行として名前付けされていること。
  • 再生時間とラウドネスの記載。
  • ピックに対するすべての変更とその理由、および聞く価値のある行。
  • カバーA対B、およびグリッドプレビュー。
  • 「何も投稿またはスケジュールされていません。」
  • 「私には聞こえません。公開前にお聞きください。」

適応

  • 台本なし? 最初に文字起こしします(prepで両方のトランスクリプトを作成)、トランスクリプトを1行1文にクリーンアップし、script.txtとして保存してからtakesを実行します。
  • 異なる外観: ビジュアルなものはすべてproject.jsonのbrand(色、フォント)とcover.wordmark(オプションの小さな名前タグ)を読みます。そこで変更し、スクリプトでは決して変更しないでください。
  • 異なるスペル: captions.locale en-GB(デフォルト)またはen-US。
  • 遅いマシン: project.jsonの`

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

builtnotboosted/image-generation

Produces finished social images with any image model (Google Gemini image, "Nano Banana", as the worked example) - feed statics, carousel slides, short-form video covers, YouTube and article thumbnails, local listing cards and animated statics. Bakes the headline into the scene instead of pasting text on top, keeps text inside the profile-grid safe zone, locks the likeness of real people to their reference photos, hits exact platform sizes, writes alt text and re-judges every re-roll on the filed file. Use when someone says "make an image for this post", "create a thumbnail", "make a cover from my video", "design a carousel", "animate this static", "the image model won't do 4:5", "my headline is getting cut off in the grid", or when a content pack needs its visuals.

builtnotboosted/review-loop

The quality gate every piece of content passes before it is filed, scheduled or posted. Runs a self-critique, then an independent review by a fresh subagent that sees only the finished work and the criteria (never the builder's reasoning), then fix and re-judge until there is a clean pass. Covers what to do when a piece can't pass unattended (hold, flag, ship the rest). Use when someone says "review this", "check this before it goes out", "QA the pack", "is this ready to post", "get a second pair of eyes on this", "proofread the captions", or when any other Built Not Boosted skill hands work over for checks.

builtnotboosted/scheduling

Gets finished posts into a social media scheduler (or posted by hand) safely. Queue-only with explicit timezone offsets, live dedup against scheduled and already-published posts, media readiness checks, correct post types (shorts, reels, carousels, first comments, manual-posting reminders), alt text, a link gate that sends copy back for a rewrite rather than stripping it, and confirmation before anything goes live. Writes and keeps a scheduling manifest for each pack. Works with any scheduler; Publer is the worked example. Use when someone says "schedule this", "queue these posts", "put this in Publer", "book in this week's content", "post this on Tuesday at 7", "move that post", "what's already scheduled", or hands over a finished content pack to go out.

builtnotboosted/video-scripting

Writes video scripts that sound like the person who will say them, for shorts (Reels, TikTok, YouTube Shorts) and long-form YouTube. Warm hook rather than a shout, who-am-I and follow early, a retention shape that delays the answer, a soft earned close, length that follows the story, real-problem substance, reactive scripts for news and data releases. Output is teleprompter-ready (think-breaks, shot reminders) with short edit notes for the video-editing skill. Use when someone says "write me a script", "script a reel about", "I need a short on", "plan a YouTube video", "turn this post into a video", "react to today's news on video", "what should I say on camera", or before a filming session.

関連スキル