Communitygithub.com

kidsavagez/reel

スクリプトから完成済みリールまでのパイプライン。人間による2つの承認ゲートを備えています。スクリプトとエフェクトキューを作成し、ユーザーが撮影した後、ベストテイクを選び、無駄な部分をカットし、エフェクト、キャプション、オンスクリーンテキストを追加、プレビューをレンダリング、フィードバックを反映して最終版とキャプションを作成します。ユーザーが「/reel」と入力したとき、動画のアイデアがあるとき、生のフッテージをドロップしたとき、「edit video ini」「bikin reel」と言ったとき、プレビューにフィードバックを送ったとき、またはスタイルをコピーするための参考編集を共有したときに使用します。

reel とは?

このスキルは、AIエージェント(Claude Codeなど)向けに設計された、スクリプト作成から最終レンダリング、キャプション作成までをカバーするエンドツーエンドのリール(ショート動画)制作パイプラインです。ユーザーはアイデアや生の映像を提供するだけで、AIがスクリプト、カット、エフェクト、キャプションを自動処理します。ただし、ユーザーによる承認(スクリプトとプレビューの2段階)を必須とすることで、最終的な品質と意図の一致を保証します。主な処理ステップは、スタイル分析(参考動画から)、ブリーフィング(スクリプト作成)、撮影(ユーザー担当)、アラインメント(文字起こしと同期)、カット、エフェクト追加、プレビュー生成、最終レンダリングです。Pythonベースのカスタムスクリプト群(スクリプトフォルダ内)を使用し、FFmpegなどの外部ツールに依存します。多言語(インドネシア語、英語、自動検出)に対応し、音声のみのリールやライセンスフリーのBGM生成もサポートします。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kidsavagez/CLAUDE-VIDEO-PIPLINE/tree/HEAD/.claude/skills/reel

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

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

ドキュメント

reel は何をしますか?

ファイルの場所と初回セットアップ

  • パイプラインフォルダ = このスキルが存在する video-pipeline フォルダ(このファイルの3階層上: video-pipeline/.claude/skills/reel/SKILL.md)。すべてのコマンドはそこから実行すること。 プロジェクトはその中に projects/<date>-<slug>/ として作成されます。
  • PY = パイプライン専用のPython。以下のすべてのコマンドで、システムのPythonではなくこれを使用すること: Windows では .venv/Scripts/python.exe、Mac または Linux では .venv/bin/python。
  • PYがまだ存在しない場合は、ユーザーに何も入力させずに最初にセットアップすること: python install.py(Windowsでは py install.py、Macでは python3 install.py)を実行します。 「ffmpeg is missing」または「git is missing」で停止した場合は、そのツールをユーザーのためにインストールし(Windows: winget install ffmpeg / winget install Git.Git; Mac:brew install ffmpeg)、新しいコマンドが見つからない場合はClaude Codeを再起動するよう伝え、その後インストールを再実行します。 インストールがREADYを表示したら、PY scripts/selftest.py を実行し、9/9 passed を確認します。
STYLE (参考ごとに1回) -> 1 BRIEF -> [ゲート: ユーザーがスクリプトを承認] -> 2 SHOOT (ユーザー)
-> 3 ALIGN -> 4 CUT -> 5 EFFECTS -> 6 PREVIEW -> [ゲート: ユーザーのフィードバック、ループ] -> 7 FINAL

あなた(AI)が書き、カットし、レンダリングします。ユーザーは撮影し、承認し、投稿します。ここから投稿されることは決してありません。

0. 参考動画からのスタイル適用(ユーザーが参考編集を送ってきた場合)

  1. PY scripts/style_ref.py <ref.mp4> [その他の参考] --name <style-name>
  2. styles/refs/<style-name>/ に書き出されたすべての画像を開き、report.json の数値を確認します。
  3. styles/default.json と異なるキーのみを含む styles/<style-name>.json を記述します: キャプションフォント/サイズ/色/位置/グループあたりの単語数/大文字小文字、オンスクリーンテキストの外観、カットのタイトさ(cut.max_gap:高速編集ではよりタイトに)、エフェクト間隔(effects.min_gap、参考動画のペースから)、ラウドネス。
  4. styles/<style-name>.md を記述します:編集内容を平易な言葉で説明。見た動きに一致する51のエフェクトはどれか、画面上で何がどのくらいの頻度で発生するか、フックがどのように始まるか、決して行わないことは何か。測定値(1分あたりのカット数、ショットの長さ)を追加します。
  5. ユーザーに .md を見せて、何が間違っていたか尋ねます。あなたはサンプルフレームを見ていますが、動きや音は見えていません:そのことを伝え、ユーザーが気に入っているタイムスタンプを指定してもらうよう依頼します(--at 7.2,12 でそれらのフレームを取得)。

フォント:キャプションは vendor/claude-video-effects/fonts/ 内の任意のフォント(Montserrat、Anton、 Archivo Black、Inter、Instrument Serif、Playfair Display、Space Mono、Permanent Marker)またはユーザーが fonts/ にドロップした .ttf/.otf を使用できます。

1. ブリーフィング

  1. PY scripts/new_project.py "<slug>" --lang id --style <style>(lang:id、en、またはauto)。
  2. ~/.claude/youtube/voice.md または ~/.claude/instagram/voice.md が存在する場合は読み込みます。ユーザーの言語と声で記述します。数値、結果、クライアントをでっち上げることは決してせず、尋ねるか {{angka}} のままにします。
  3. script.json を記述します:ユーザーが話す文ごとに1行、役割は hook / body / cta。
    • フック:3つのオプションを書き、1つを推奨し、話す時間を約3秒以内に保ちます。
    • onscreen:フック用の短いテキスト(およびタイトルカードが必要な行)。
    • effects:単語にエフェクトキューを設定:{"fx": "backdrop-word", "on": "GRATIS", "text": "GRATIS"}。 スタイルの .md から選択します。最大でも effects.min_gap 秒ごとに1つのエフェクト。すべての行にエフェクトがつくわけではありません。ユーザー自身のリールを使用するエフェクト(orbit、phone-fan、place-in-grid、 fan-build、noise、profile-wall、carousel-spin)には "images": "<folder>" が必要です。
    • チャートとカウンター(liquid-glass-graph、over-the-shoulder-zoom)は実際の数値がある場合のみ使用。
  4. brief.md をその隣に記述します:フックのオプション、ユーザーが読むスクリプト、エフェクトごとの撮影メモ(「行4:頭の上に余白を残してください」)、および templates/shooting.md の撮影ルール。
  5. ゲート: スクリプトを表示して停止します。ユーザーが承認するまで続行しないでください。

2. 撮影(ユーザー)

ユーザーはファイルを <project>/raw/ に配置します。複数のファイルでも問題ありません。名前順で使用されます。

3. アラインメント

  1. PY scripts/transcribe.py <project>(初回実行でWhisperモデルをダウンロード)。 録音内で多くの再開がある、またはカットが単語を繰り返す場合?代わりに PY scripts/burst_transcribe.py <project> を使用します:音声のバーストごとに個別に文字起こしを行います(large-v3-turbo)。そのため、一時停止後の再開が次のテイクにマージされることはありません。それでも単語がポーズを飲み込む場合は、アライン前に PY scripts/snap_words.py <project> を実行します。
  2. PY scripts/align.py <project>。レポートをユーザーに簡潔に読み上げます: MISSING(欠落)または NO COMPLETE TAKE(完全なテイクなし)の行、および残しておく価値がありそうなアドリブ。行が欠落していない限り、そのために停止する必要はありません。プレビューと一緒にそれらについて言及します。

4. カット

PY scripts/cut.py <project>

音声のみのリール(ユーザーが声のみを録音し、映像はすべてモーショングラフィックス): 代わりに PY scripts/cut_voice.py <project> を実行 -> work/voice.wav(クリーン、-16 LUFS)と work/prog_words.json(カットトラック内の各保持単語とその時刻)。その上でビジュアルを構築します(HyperFramesがあればそれを使用し、なければユーザーのエディタ)。エフェクトのステップでは顔が必要なため、スキップします。

ライセンスフリーのBGM: .venv-music/ が存在する場合(python install.py --music)、 .venv-music/<Scripts|bin>/python scripts/music_bed.py work/bed.wav --seconds 30 --seed 1 --prompt "<mood>, no vocals" でBGMを作成し、隙間を聞き(不均等な場合は別のシードを試す)、"music": {"file": "<abs path>/work/bed.wav", "db": -22} を設定します。

5. エフェクト

  1. PY scripts/effects.py <project> plan。script.json キューを編集して警告を修正します。
  2. PY scripts/effects.py <project> check。その後、すべての work/check/fx_*.png を見ます。 テキストが顔の上にある、端で切れている、読みにくい:オプション(x、y、短い text)を修正し、再度チェックします。
  3. PY scripts/effects.py <project> render。これが遅いステップです(すべてのフレームが顔追跡を通ります)。実行中であることをユーザーに伝えます。

6. プレビュー

  1. PY scripts/finish.py <project> -> preview/preview_vN.mp4。
  2. PY scripts/finish.py <project> --check <t1,t2,...> を各エフェクトの中央と他の2〜3箇所で実行します。PNGを見ます:キャプションがエフェクトと衝突していないか、フックテキストが読めないか、顔の上に何かがないか。表示する前に修正します。
  3. ゲート: ユーザーにプレビューパスと簡単な編集リスト(使用したテイク、カットした箇所、エフェクトとその場所)を渡します。フィードバックを求めます。

フィードバックを変更に反映させる

フィードバック変更再実行開始地点
「行3の別テイクを使って」choices.json {"take": {"3": 1}}アライン
「0:14での発言を残して」choices.json {"keep_unmatched": ["u3"]}アライン
「行5を削除」choices.json {"drop_lines": [5]}アライン
「カットがきつすぎる/緩すぎる」スタイル cut.max_gap、cut.post_padアライン
「そこにエフェクトは不要」/「単語を大きく」script.json の effectsエフェクト計画
キャプションの見た目、オンスクリーンテキストスタイル captions / onscreen、またはスクリプト onscreen仕上げ
音楽script.json "music": {"file": "...", "db": -22}仕上げ

あるステージから再実行すると、それ以降のすべてのステージも再実行されます。アラインまたはカットを再実行すると、エフェクトのレンダリングも(遅いため)再実行されるので、最初にフィードバックをまとめてください。

7. 最終版

  1. PY scripts/finish.py <project> --final -> final/final.mp4 と final/cover.jpg。
  2. final/caption.md を記述します:
    • 最初の約125文字でフックを伝えます。これはフィードが「さらに表示」の前に表示するすべてです。
    • 1つのコールトゥアクション。「コメント KEYWORD」の場合は、動画と一致するものにします。
    • 最大5つのハッシュタグ、トピックに特化したもの、末尾に。ユーザーの言語と声で。
    • でっち上げの数値は禁止。「ストップスクロール」禁止、ハッシュタグの壁禁止。
  3. 1行で次のことを思い出させます:トレンドオーディオはInstagram内で追加され、ユーザー自身が投稿します。

ルール

  • スタイル .md が基準です。何かを追加するか迷った場合は、追加しないでください。
  • 顔を覆わないでください。2倍を超えてズームしないでください。
  • 限界について正直に:エディタはテイクとタイミングをうまく選択しますが、話し方を評価することはできません。テイクが平板に聞こえる場合は「行3のエネルギーを確認してください」と言い、聞こえたふりをしないでください。
  • projects/ をgit管理外に保ちます:生のフッテージは大きく、個人情報を含みます。

関連スキル