Communitygithub.com

video-craft

映像の編集と制作 — プロ品質に仕上げ、測定結果で品質を証明します。編集:単語単位の文字起こし、間・フィラー・リテイクの除去、ジャンプカットの強調、キャプション(クリーン、カラオケ、ショート用パンチ)、9:16/1:1へのリフレーム、音声クリーンアップ、発言下の音楽ダッキング、プラットフォームラウドネス、書き出し。制作:ブランドイントロ、ロゴリビール(スティング)、プロダクトローンチスポット、ソーシャル広告、キネティックタイポグラフィ — HTMLからフレーム単位でレンダリングし、デザインされたモーションと合成サウンドを付加。あらゆる編集・トリミング・タイトニング・キャプション・リフォーマット・書き出しのリクエスト、トーキングヘッド・チュートリアル・ポッドキャスト・画面録画からYouTube動画・Short・Reel・TikTokへの変換、ブランドイントロ・ロゴアニメーション・ローンチ動画・プロモ・広告・タイトルシーケンス・モーショングラフィックスの制作に使用。出荷前の動画チェック(ラウドネス、黒フレーム、セーフエリア)にも対応。

video-craft とは?

video-craft は、映像の編集と制作という2つのジョブを1つの高品質基準で実行するAIエージェントスキルです。ユーザーが録画した映像を編集し、プロフェッショナルな仕上がりを実現します。文字起こしから単語単位の編集(間、フィラー、リテイクの除去)、キャプション(クリーン、カラオケ、ショート用パンチ)、ジャンプカットの強調、9:16/1:1へのリフレーミング、音声クリーンアップ、音楽のダッキング、プラットフォームラウドネス調整、書き出しまでをワンパスで行います。また、ブランドキットとコピーから、ブランドイントロ、ロゴリビール、ローンチ動画、広告、キネティックタイポグラフィなどの動画をHTMLベースでフレーム単位でレンダリングし、合成サウンドを付与します。さらに、出荷前にqa.pyスクリプトでラウドネス、黒フレーム、セーフエリアなどを測定し、品質を証明します。対応プラットフォームはGoogle Cloud Platform、Cursor、Claude Code、Aider、Copilotなど様々で、ffmpeg 6+、Python 3.9+、Node 18+を必要とします。全てのスクリプトは--helpオプションをサポートし、ワークフローはwork/とout/のディレクトリ構造で管理されます。

対応~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/sridhar-raj/video-craft/tree/HEAD

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

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

ドキュメント

ビデオクラフト

2つのジョブ、1つの基準。誰かが録画した映像を編集するか、ブランドキットとコピーから映像を制作するかのいずれかです。どちらの方法でも、レンダリング前に作業が計画され、スクリプトによって正確にレンダリングされ、完了を伝える前に測定によってチェックされます。

動画が完成したように見える要素(優先順位順):

  1. 構造。最初の3秒にフック、1つのアイデア、時間を無駄にするものがない。
  2. リズム。カットと動きが発言とビートに合っている。無駄な間がなく、急ぎすぎない。
  3. クラフトの細部。すべてのカットに空気感、読みやすいキャプション、適切に減速しながら停止するモーション、十分な音量でクリッピングしないサウンド。
  4. 証明。qa.pyがパスし、コンタクトシートが確認されていること。

クイックパス

依頼対応
「この録画をタイトニング/クリーンアップして」文字起こし → plan_cuts → EDLレビュー → レンダリング → qa
「これでShort/Reel/TikTokを作って」上記に加えて captions.py --style punch、render.py --preset shorts --fit crop(画面録画の場合は blur)
「キャプションを追加して」transcribe.py → captions.py → render.py --captions(または .srt を納品)
「音楽を追加して」render.py --music bed.mp3(発言下に自動ダッキング)
「音量を上げて / 音声を修正して」render.py --voice --denoise、目標値は platforms.md を参照
「ブランドイントロ / ロゴリビール / スティング」films/brand-sting をコピー、ブランドキットを記入、スチル → ドラフト → マスター → qa
「ローンチ動画 / プロモ / 広告」films/launch をコピー、コピーを書き、フォーマットを選び、スチル → ドラフト → マスター → qa
「この動画をチェックして」qa.py video.mp4 --sheet sheet.jpg [--safe]
すでにRemotionで作業中references/remotion.md

必要条件

編集には ffmpeg 6+ と Python 3.9+ が必要です。文字起こし: pip install faster-whisper(または openai-whisper、whisper.cpp)。フィルム制作: Node 18+ と Playwright(npm i -D playwright && npx playwright install chromium)。キャプションは、ffmpegがlibassをサポートしている場合はlibassで焼き付け、それ以外の場合はPillowで描画(pip install pillow)。python3 scripts/doctor.py を実行してインストール状況を確認できます。

すべてのスクリプトは --help をサポートしています。ジョブごとにフォルダを作成して作業します。中間ファイルは work/、納品物は out/ に配置します。

映像の編集

python3 scripts/transcribe.py raw.mp4 -o work/words.json            # 単語単位の文字起こし
python3 scripts/plan_cuts.py raw.mp4 --words work/words.json -o work/edl.json
python3 scripts/captions.py work/words.json --edl work/edl.json --style clean -o work/cap
python3 scripts/render.py work/edl.json -o out/final.mp4 --preset youtube \
        --captions work/cap.cues.json --music bed.mp3 --voice --zoom auto
python3 scripts/qa.py out/final.mp4 --edl work/edl.json --sheet out/sheet.jpg \
        --words work/words.json --words-check
  1. まず文字起こしを読み、構造を決めます。何を完全に削除するか(セクションカットはきれいに読める。文の途中でのカットが多いと不安に感じさせる)、フックは何かを決めます。必要に応じて、セクション全体の判断を手動でEDLの segments に反映します。
  2. plan_cuts.py は、無音部分(ゼロではなく息継ぎ程度に短縮)、フィラー、放棄されたリテイク(最後のテイクを保持)を削除します。無音部分は録音ごとに測定され、すべてのエッジは実際のオーディオにスナップされ、パディングは非対称(前80ms、後140ms)で、削除された単語に到達することはありません。出力リストを読みましょう。強調による繰り返しはリテイクに見えることがあります。
  3. 時間のかかる作業については、担当者とチェックポイントを設けます。前後時間、削除したセクション、削除したリテイクを確認します。担当者のコメントをEDL編集に反映します。
  4. render.py はすべてを1つのffmpegグラフで実行します:フーム精度のトリム、すべてのカットに8msのフェード、固定フレームレート、パンチイン、リフレーミング、キャプション、音声ポリッシュ、ダッキング音楽、2パスラウドネス。
  5. qa.py を実行し、シートを確認します。--words-check は結果を再度文字起こしし、カットで飲み込まれた単語を特定します。

判断、数値、失敗モードについては references/editing.md を参照。音声については references/sound.md を参照。

映像の制作(ブランドイントロ、ローンチスポット、広告)

cp -r films/brand-sting my-film && python3 scripts/sfx.py --out my-film/sfx
# my-film/index.html の PARAMS を編集(または --params '{"name": "...", ...}' を渡す)
node scripts/render_film.mjs my-film/index.html --stills 0.5,1.6,2.4,3.5 -o work/stills  # 確認
node scripts/render_film.mjs my-film/index.html --draft -o work/draft.mp4                 # リズム判定
node scripts/render_film.mjs my-film/index.html --blur 4 -o out/intro.mp4                 # マスター
python3 scripts/qa.py out/intro.mp4 --no-gaps --sheet out/intro.sheet.jpg --safe
  1. まずブランドキット(references/brand-intro.md):公式ロゴファイル、16進数カラー、フォント、正確な文言、レジスター、フォーマット、サウンド、すべての数字の出典。ロゴの再描画や色変更は絶対に行わない。主張、顧客、製品UIを作り出さない。
  2. コードの前にビートシート:各ビートの時間、動くもの、イージング、サウンドを記述。1つのレジスター(プレミアム、クリーン、テック、ボールド、プレイフル)を選び、それに合わせてタイムライン全体をスケーリングする。
  3. assets/film.js 上に構築:すべてのピクセルは t の関数。Film.tween、Film.spring、Film.stagger、Film.random(seed)を使用。CSSアニメーション、タイマー、Date.nowは使用しない。ブラウザでHTMLを開いてリアルタイムにスクラブできる。
  4. 各ビートでスチル、次にドラフト、そしてマスター。 動画をレンダリングする前に、スチルが示す問題を修正する。マスターは約2~5フレーム/秒でレンダリング、ドラフトは10倍高速。
  5. サウンドは映像の一部です。 scripts/sfx.py はキット(ヒット、ブーム、ウィッシュ×3、ライザー、ポップ、チック、チャイム、ベッド)を合成。キューはフィルム設定内に配置され、レンダラーによってミキシングおよびラウドネス設定されます。ヒットのピークはリビールフレームに重なります。

テンプレート:films/brand-sting(3~7秒のロゴリビール、5つのレジスター、16:9/9:16/1:1)と films/launch(15秒:フック→問題→リビール→証明→CTA、3つのフォーマット、プラットフォームのセーフエリア内に9:16、*word*で強調)。これらを出発点として使用し、必要に応じて構造を変更します。

ドクトリン(タイミング、役割別のイージング、スタガー、タイプサイズ、カラー、原因のあるトランジション、避けるべき曖昧な見た目、それをキャッチするテスト):references/motion.md を参照。

常に適用されるルール

  • すべてのトリムを再エンコードします。 ストリームコピートリムはキーフレームにスナップします。
  • 出力はすべて固定フレームレート にします。H.264 + yuv420p + AAC + +faststart。
  • 測定によるラウドネス: ウェブとソーシャルは -14 LUFS / ≤ -1 dBTP、ポッドキャストは -16。
  • テキストはセーフエリア内:9:16の場合、上部288px、下部672px、右192px(1080×1920において)には何も配置しない。タイプサイズは1080で28px以上。
  • 正直なコンテンツ:実際のロゴ、出典のある実際の数字、実際の製品UI。音楽、音声、映像が生成されたものである場合はその旨を明記する。
  • ライセンスされた音楽のみを使用します。 動画やストリーミングサービスからオーディオをリッピングしないでください。
  • 完了=チェック済み:qa.pyがパスし、シートが確認され、チェックできなかったことが明確に述べられていること。

ファイル

パス内容
scripts/transcribe.py単語時刻付きwords.json(faster-whisper/whisper/whisper.cpp)
scripts/plan_cuts.pyEDL:ポーズ、フィラー、リテイクを理由付きで削除
scripts/captions.py編集済みタイムライン上のSRT、スタイル付きASS、キューJSON
scripts/render.pyEDL → 完成動画(プリセット、リフレーム、キャプション、音楽、ラウドネス)
scripts/qa.pyフォーマット、長さ、黒、静止、無音、ラウドネス、単語、コンタクトシート
scripts/sfx.py合成サウンドキット
scripts/render_film.mjsHTMLフィルム → MP4(ドラフト、モーションブラー付きマスター、スチル、ポスター)
scripts/doctor.pyインストール済みと不足しているものの確認
assets/film.js決定論的モーションエンジン + スクラバー付きブラウザプレビュー
films/brand-sting と launch のテンプレート
references/編集、モーション、ブランドイントロ、サウンド、プラットフォーム、ffmpeg、remotion

関連スキル