video-edit について
video-editは、素材クリップからレビュー可能な完成リールを作るクロスプラットフォームのスキルです。編集ソフトを開かずに制作したい人向けに、文字起こしに基づくカット、複数のルック、レンダリング確認を組み合わせます。
主な機能
- 01文字起こしに基づくクリップ選択
- 02設定可能な3種類のルック
- 03アニメーション挿入とオーバーレイ
- 04自動切り抜きと頭部位置の検出
- 05レンダリングとカットの品質確認
活用シーン
- 01撮影クリップからリールを編集
- 02字幕と統一したビジュアルの適用
- 03カットとセーフゾーン配置の確認
- 04スマートフォン用と高画質版の納品
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tenfoldmarc/ video-edit-skill --skill video-editインストール後、Claude Code で/video-editを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignore.gitattributesREADME.mdWINDOWS_TEST.mdassets/overlay-examples/claude-desktop/index.htmlbuild.pyassets/overlay-examples/ig-follow/index.htmlassets/overlay-examples/skill-md/build.pyindex.htmlassets/template/build.pypackage.jsonhyperframes.jsonassets/template/assets/fonts/OFL.txtfonts.cssassets/template/assets/sfx/README.mdreferences/overlays.mdgotchas.mdlayout.mdlooks.mdscripts/cutout.pycheck_cuts.pyassemble.pyheadpos.pycutout.shhf.pyskillenv.pysetup.pysetup.shingest.pytranscribe_cut.py詳細
/video-edit
素材クリップを入れると、完成したリールができあがります。ユーザーが編集ソフトを開くことはありません。スマートフォン用のコピーを確認してメモを伝えるだけで、毎回約2分で再レンダリングされます。
作成を始める前にお読みください:3種類のルックと正確な値については references/looks.md、セーフゾーン、配置、頭の後ろに配置する計算式については references/layout.md、これまでに遭遇したすべての落とし穴については references/gotchas.md を確認してください。スクリプトでアニメーション付きの挿入素材が必要な場合は、references/overlays.md もお読みください。
macOS、Linux、Windows で動作します。setup.py は実行のたびに最初にマシンを検出し、以下のコマンドはすべてその記録に基づいています。パスやシェルを推測しないでください。ステップ 0 の直後にある「このマシン」をご覧ください。
ステップ 0:初回セットアップ(1回のみ実行)
SK は、このスキルのフォルダー(この SKILL.md があるフォルダー)のフルパスです。通常は ~/.claude/skills/video-edit です。Windows の場合は C:/Users/<name>/.claude/skills/video-edit です。
SK/config.json を確認します。
存在する場合:(名前、Instagram のハンドル名、デフォルトのルック、フォルダー)を読み込み、以下のステップ 3 のとおりにセットアップスクリプトを実行します(数秒で終わります。確認のみを行い、更新後は環境を修復します)。「このマシン」を読み、READY と表示されたらステップ 1 に進みます。
存在しない場合:
- 次のように伝えます:「/video-edit へようこそ!セットアップを始めましょう。所要時間は約 2 分で、初回のみ必要です。」
- 1 回のメッセージで次の情報を尋ねます:
- 名前(Instagram プロフィール用の挿入素材に使用)
- Instagram のハンドル名(プロフィール用の挿入素材と、オービット効果用のリール取得に使用)
- デフォルトのルック:大胆(頭の後ろに動きのある文字を配置)、クールガール(暖色、黄色、セリフ体のイタリック体で、本人の周りをリールが周回)または クールガイ(ダークなエディトリアル調、大きな字間の大文字+セリフ体)。迷う場合は「大胆」を提案します。
- 素材クリップの通常の保存先(デフォルトは
~/Downloads)と、プロジェクトの保存先(デフォルトは~/reel-edits)
- マシンにある Python を使ってセットアップスクリプトを実行します。STATUS 行が表示されるまで、次の順に試します:
python3 "SK/scripts/setup.py"、次にpython "SK/scripts/setup.py"、最後にpy -3 "SK/scripts/setup.py"。 (Windows ではpython3が Microsoft Store のスタブで、「Python was not found」と表示されることがよくあります。その場合は次を試してください。) どれも実行できない場合:Python がありません。使用しているシステムに合った修正方法を案内し、そこで中断します(Windows:winget install --id Python.Python.3.12 -e、Mac:brew install python、Linux:sudo apt install python3 python3-venv)。 その後、STATUS 行を確認します:- ffmpeg/node/python venv が MISSING の場合:その行の末尾に、このマシン向けの正確な修正コマンド(Windows は winget、Mac は brew、Linux は apt)が表示されます。ユーザーに伝え、スクリプトに READY と表示されるまで中断します。
- Windows:ユーザー自身の PowerShell ウィンドウに winget の行を貼り付けます(初回は winget から利用規約への同意を求められます)。その後、Claude Code を完全に終了して再起動してください。そうしないと新しいプログラムが見つかりません。
- スクリプトは 6 種類の効果音をダウンロードします。MISSING のままでも(オフラインの場合)は任意対応です。追加されるまで、リールには効果音が入りません。
- オプションの Apify(リールとプロフィール統計を自動取得):Apify MCP の簡単な呼び出しを試します。接続されていない場合は、任意であることと追加方法を伝えます:
- https://apify.com で無料アカウントを作成し、Settings > API & Integrations から API トークンをコピーします。
- ターミナルで、YOUR_TOKEN をトークンに置き換えて次の 1 行を貼り付けます:
claude mcp add apify -e APIFY_TOKEN=YOUR_TOKEN -- npx -y @apify/actors-mcp-server(注意:Claude Code はトークンを~/.claude.jsonに平文で保存します。このファイルは他人に見られないようにしてください。) - Claude を再起動して、もう一度 /video-edit を実行します。 Apify を使わない場合、このスキルは代わりにリールのファイルをプロジェクトに追加するよう求めます。
SK/config.jsonを保存します(秘密情報は絶対に含めないでください):{"name": "...", "instagram": "handle-without-@", "defaultLook": "bold", "clipsDir": "~/Downloads", "projectsDir": "~/reel-edits", "setupComplete": true, "setupDate": "YYYY-MM-DD"}- 次のように伝えます:「セットアップが完了しました!/video-edit を実行します……」そのまま続行します。
このマシン(実行のたびに確認)
setup.py によって書き込まれる SK/.platform.json を読み込みます。ファイルには、OS(os: macos、linux、または windows)、CPU、およびこのコンピューターで使う正確なコマンドが記録されています。
PY=pythonの値:このスキル専用の Python(Mac と Linux では.venv/bin/python、Windows では.venv/Scripts/python.exe)。このスキルの Python スクリプトはすべてこれで実行し、python3を直接使わないでください。HF=PY "SK/scripts/hf.py":どの OS でも適切な Node で、固定バージョンの HyperFrames(npx --yes [email protected] ...)を起動します。nvm useは不要で、npx.cmdの問題も起こりません。cutout:CoreML(Apple Silicon)またはCPU(Windows、Linux、Intel Mac:GPU の支援がないため、切り抜きの工程に時間がかかります。そう伝え、バックグラウンドで実行しながら作業を続けてください)。
setup.py は毎回の実行時(ステップ 0)にこのファイルを書き換えるため、常に最新の状態です。ファイルがない、または PY がもう存在しない場合は、セットアップが実行されていないか、READY まで到達していません。ステップ 0.3 の手順で実行し、修正内容に従ってください。
zsh、bash、Git Bash、PowerShell で使えるコマンド形式:
- ダブルクォートで囲んだフルパスを使います。パス区切りはスラッシュです(Windows でも使えます):
"PY" "SK/scripts/ingest.py" "<project>"。 - PowerShell(Windows で Git for Windows がない場合、または使用可能なツールが PowerShell の場合)では、先頭に
&を付けます:& "PY" "SK/scripts/ingest.py" "<project>"。 - 呼び出しごとにコマンドは 1 つだけです。
&&、VAR=1 command、引数内の~、source、zshは使わないでください。 - すべての OS で
ffmpegとffprobeは PATH 上にあります(セットアップで確認されます)。そのため、単発の ffmpeg コマンドはどの環境でも同じです。
厳守事項
- すべてを Reels のセーフゾーン内に収めます:上 220、下 450(y 1470 より下には何も置かない)、左右 35、y 1155 から右側 100。
- 顔にテキストやカードを重ねないでください。頭の後ろに配置する単語は、各文字の約 70% 以上が見えるようにします。
- 字幕は実際に話された内容にします:Whisper が聞き間違えた名前やキーワード(「Claude」が「cloud」や「claws」、「skill」が「scale」と認識されることがよくあります)を修正します。画面上のテキストに em ダッシュは使わないでください。
- 効果音は控えめにします(テンプレートの
SFX_GAIN = 0.75を基準音量に適用)。音声より大きくしてはいけません。 - 他のクリエイターのリールが表示される場合は、画面上に必ずクレジット(@handle)を表示します。ユーザー自身のプロフィールには実際の数値を使います。それ以外(コメント投稿者、チャット履歴など)は汎用のプレースホルダーを使い、実在の人物や捏造した証拠を使わないでください。
- カットの証明はスナップショットではなく、最終レンダーから取得します。
- ユーザーのファイルは絶対に削除しないでください。元ファイルは読み込むだけで、変更しません。
ワークフロー
1. 素材の受け取り
- クリップ:ユーザーが指定したファイルを使い、指定がない場合は
clipsDir内の最新の動画ファイルを使います。<projectsDir>/<short-slug>/を作成します。 (config.json 内の~はユーザーのホームフォルダーを指し、Windows ではC:/Users/<name>です。このスキルのスクリプトが展開します。) - 参考リンク(IG のリール、Pinterest のピン)でスタイルを指定された場合:デザインを始める前にダウンロードして、フレームを確認します(取得方法は overlays.md を参照)。
2. 取り込み
PY SK/scripts/ingest.py <project> <clips or folder> [--newest 5]
work/sheets.jpg(セットアップとアングル)を確認し、transcript.txt(クリップごとの行、タイムスタンプ付きの単語、音声マップ)を読みます。
3. テイクを選ぶ -> <project>/edl.json
- テイクをもとに台本を組み立てます:人は納得のいくまで同じセリフを繰り返します。ユーザーから別の指示がない限り、最後の途切れのないクリーンなテイクを使います(「0:47 からのほうがいい部分」という指示は、そこから続く一つのテイクを意味します)。
- 音声マップを使ってイン点とアウト点を決めます:最初の単語の約 0.05~0.07 秒前から開始し、最後の単語の後の無音開始位置で終了します。セクション間の無音を取り除きます。短い間は silencedetect で確認してからトリミングします(Whisper はカット位置に先行する単語を誤って補うことがあります)。
- 同じアングルのセグメントが 2 つ続く場合:4K の元映像から 1.3~1.9 倍ズームし、胸部を中心(cx/cy)にして、片方に寄ります。
- 不確かな単語(キーワード、CTA のトリガー)は、その部分を名前を含むプロンプトと
medium.enで再文字起こしします。 - 形式:
[{"id": "hook", "clip": "c1", "in": 12.66, "out": 15.72, "zoom": 1.0, "cx": 0.5, "cy": 0.5, "line": "..."}] - EDL を短い表(各セクションのセリフ、クリップ、見た目)にしてユーザーに提示し、そのまま作業を続けます。待機しないでください。
4. 組み立て、文字起こし、切り抜き
PY SK/scripts/assemble.py <project> # aroll.mp4 clean 30fps CFR + segments.json with exact frames
PY SK/scripts/transcribe_cut.py <project> "<names and keywords in the script>"
PY SK/scripts/cutout.py <project> # run in background; asserts cutout frames == aroll frames
PY SK/scripts/headpos.py <project> # after the cutout: head/body position per segment
一度に切り抜くのは1つずつです(RAMを約1.5 GB使用します)。30秒ごとに進捗行が表示されます。
5. インサートを並行して作成(EDLが確定したらすぐに)
スクリプトで指定されているアニメーション付きインサート(画面上のアプリ、CTAでのプロフィールのフォロー、ファイルのスクロール表示)ごとに、
references/overlays.md のブリーフテンプレートを使って、バックグラウンドでサブエージェントを起動します。サイズと長さを固定し、
ビートを単語のタイミングに合わせ、透過WebMで出力します。作業中もメインの編集を進めてください。
6. ビルド
SK/assets/template/ をプロジェクトにコピーし(build.py、hyperframes.json、package.json、assets/fonts、assets/sfx)、
その後 build.py を調整します。これは実際のリールを完成させたビルドです。仕組みはそのままに、内容を書き換えてください(docstringに各要素の説明があります)。
- どのルックをどこで使うか:リール全体には
defaultLookを使います。ルックの名前が書かれた行で、そのセクションのルックが切り替わります。 - Orbitとプロフィールグリッドには、ユーザー自身のリールを使います(overlays.md:Apifyの投稿スクレーパーでハンドルを指定するか、ユーザーが
assets/reels/に入れたファイルを使います)。 - プロジェクトフォルダーから順に実行します:
HF lint(エラー0件)、次にPY build.py --safe、続いてHF snapshot --at <10-20 moments> --no-end --describe false。コンタクトシートを確認し、レイアウト、読みやすさ、安全領域を修正します。(HFが適切なNodeを自動で選ぶため、nvm useは不要です。) 古いバージョンのこのスキルからコピーした build.py は--safeを無視します。スナップショットに赤いガイドが表示されない場合は、そのプロジェクトを以前の方法でビルドし、SAFE=1 "PY" build.pyを実行してください(このようなプロジェクトはMacとLinuxにのみ存在します)。
7. レンダリングとQA
PY build.py # without --safe
HF render -o renders/<slug>-vN.mp4 --quality high # ~1.5-2 min for a 25s reel on Apple Silicon
PY SK/scripts/check_cuts.py <project> renders/<slug>-vN.mp4 --phone
work/cut_check.jpg を確認します。カット後の各フレームで、新しいショットがきれいに表示されていることを確認してください。音声のピーク(volumedetect、最大で約-2~-5 dB)と、セクションのつなぎ目の無音も確認します。
8. 納品
スマートフォン用コピー(720p)と高画質レンダーを送信するか、保存場所を案内します。変更点と、ユーザーの判断が必要な点を簡潔に報告してください。すべてのバージョンを renders/ に保管し、再組み立ての前に assets/ と segments.json を work/vN/ にバックアップしてください。
実際のフィードバックから得られたデフォルト設定(再検討しないこと)
- ルックを作るためにカラーグレーディングと字幕を変更します。背景をAI生成の部屋に置き換えないでください。
- フィルムグレインは使いません。暗くてもかまいませんが、被写体に光を当て、肌が赤くならないようにしてください。
- 話者の前に中央揃えで表示するリードイン字幕は、左端に固定した行より読みやすくなります。
- 頭の後ろに単語を配置するのが特徴的な演出ですが、読みやすい場合に限ります。
@tenfoldmarc が作成しました。毎日のAI自動化ビルドをフォローしてください。理論ではなく、実際のシステムを紹介しています。