Reel-kit でリール作成
ユーザーのコンピュータ上の実際の映像を編集します。シェルコマンドを実行し、ファイルを読み取ることができるツール(例:Claude Desktop の Desktop Commander 拡張機能、または Claude Code)が必要です。そのようなツールがない場合は、その旨を伝え、ユーザーを docs/guia-windows.md に誘導してください。チャットのサンドボックスにアップロードされたファイルでこれを実行しようとしないでください。
セットアップ
reel-kitフォルダを見つけます(見つからない場合はユーザーに一度だけ尋ねてください)。すべてのコマンドはそのフォルダから実行します。- 初回のみ:
npm installとpip install numpyを実行します。ffmpeg -versionとnode -vが動作することを確認します。 - このスキルの
styles/フォルダから、トピックに合ったスタイルファイル(yoga.md、aikido.md)を選択します。合うものがない場合は、yoga.mdから始めて、ユーザーと違いについて合意します。リールに表示する内容(名前、日付、場所、URL)についてユーザーに尋ねてください。これらを勝手に創作しないでください。
ワークフロー
- 映像を確認する。 各長尺動画について:
python tools/reel.py sheet <video> --every 10を実行します。out/sheets/のシート画像を読み、良い瞬間を見つけます。正確な時間を選ぶ前に、有望な部分をより細かく(--every 2)確認します。 - クリップを選択する。
out/<name>-clips.tsvをタブ区切りで作成します。1行に1クリップ:id<TAB>ソースパス<TAB>開始<TAB>終了(秒数または mm:ss)。クリップの長さと各クリップに含める内容についてはスタイルファイルに従ってください。 - カットする。
python tools/reel.py cut out/<name>-clips.tsvを実行します。各クリップは縦型 1080x1920 になりpublic/clips/に保存されます。横向きの映像は動きに合わせてクロップされます(--frame centerで固定中央クロップ、--frame keepでトラッキングなしのスケール)。PC に NVIDIA カードがある場合のみ--gpuを追加します。コマンドはクリップごとに正確な長さを含む JSON 行を1つ出力します。 - リールを記述する。
reels/<name>.jsonを作成し(以下の形式を参照)、ステップ3のクリップ行を貼り付けます。 - レンダリングする。
python tools/reel.py render <name>を実行し、ソーシャルメディア向けにラウドネス正規化されたout/<name>.mp4を書き出します。 - 確認する。 3~4フレームを取得し(
ffmpeg -i out/<name>.mp4 -vf "fps=1/4,scale=360:-2,tile=4x1" -frames:v 1 out/<name>-check.jpg)、それらを確認してからユーザーに完了を伝えます。ユーザーにファイルパスと長さを伝えます。
ユーザーから後で変更を求められた場合(「遅い部分を削除」「音楽なし」など):TSV または JSON を編集し、その後のステップのみを実行します。新しい名前(<name>-v2)を使用して以前のバージョンを保持し、ユーザーが戻れるようにします。
reels/.json
{
"clips": [{ "file": "clips/a1.mp4", "seconds": 6.5 }],
"transition": "fade",
"fadeSeconds": 0.5,
"clipVolume": 0,
"music": { "file": "music/calm.mp3", "volume": 0.5 },
"accent": "#7FA88B",
"intro": [{ "kicker": "Yoga · Murcia", "title": "Clase abierta", "sub": "Sábado 10:00" }],
"outro": { "text": "Reserva tu plaza", "url": "example.com", "image": "poster.jpg", "seconds": 3.5 }
}
clipsのみ必須です。パスはpublic/からの相対パスです。音楽はpublic/music/に、画像はpublic/に配置します。transition:"cut"(ハードカット、デフォルト)または"fade"。clipVolume:1 は元の音声を保持、0 はミュートします。音楽は最後に自動的にフェードアウトします。intro:テキストカード。各 2.5 秒で、最初のクリップの上に表示されます。outro:テキスト、URL、および/または画像(ポスター、ロゴ)を含む終了画面。- ユーザーが提供した、または権利を確認した音楽のみを使用します。
ルール
- 動画処理は重いです。一度に1つの ffmpeg またはレンダリングジョブを実行します。ツールはすでに低優先度で実行されます。
- ユーザーが手動でプレビューして調整したい場合にのみ
npm run studioを使用します。 - 見た目自体(フォント、レイアウト)を変更するには、
src/Reel.tsxを編集します。Remotion の公式スキル(npx skills add remotion-dev/skills)が役立ちます。