Communitygithub.com

Voiceover → Glass Reel

任意のボイスオーバー(台本もオプションで指定可能)から、一発で完成度の高い16:9のドキュメンタリースタイルリールをAfter Effectsで生成します。無音・息継ぎのカット、ビジュアルストーリーの執筆、無料素材の調達(Wikimedia Commons、Pixabay MCP、thesvg MCP、ffmpeg)を行い、1080p H.264 MP4をレンダリングします。

Voiceover → Glass Reel とは?

このスキルは、ユーザーが提供するボイスオーバー音声(最大約3分)と任意のスクリプトから、完全な16:9ドキュメンタリースタイルのリールビデオをAfter Effectsで自動生成します。プロセス全体は、無音や息継ぎの自動カット、ビジュアルストーリーの作成、Wikimedia CommonsやPixabay MCP、thesvg MCPなどの無料ソースからの画像・動画・ロゴの調達、そしてffmpegを使ったケンハーマス(Ken-Burns)効果の適用など、すべて無料で行われます。最終出力は1920×1080、25fpsのH.264 MP4で、丸みを帯びたガラスフレーム内に収められたクリップ、移動するパースペクティブグリッド、キーワードのカラーフリップ、タイプライター・巨大ワード・フォトカードページ、フラッシュ効果、シンセサイズされた効果音など、独特のダークなアーカイブドキュメンタリールックが特徴です。このスキルは、ユーザーが「ボイスオーバーからビデオを作って」「ナレーションをリールにして」「グラスフレーム編集」「音声録音からリールを作って」などと依頼した場合に特に有効で、一切のフッテージがない状態でも動作します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SergeoDev01/voiceover-glass-reel/tree/HEAD

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

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

ドキュメント

Voiceover → Glass Reel は何をしますか?

依頼を1つ送るだけで、完成したMP4が1つ出力されます。ユーザーはボイスオーバーファイル(任意のオーディオまたはビデオ形式、最大約3分)と、必要に応じてスクリプトテキスト、トピックノート、参考リンクを提供します。それ以外はすべてこちらが行い、停止するのは次の場合のみです:

  • ロゴなどのダウンロード時の1回のみ。クレジット予算はありません。すべて無料で調達されます(references/higgsfield.md を参照 - テスト済みのPixabay / Wikimedia / thesvg レシピ)。どこから何を調達したかは報告しますが、ユーザーが明示的に有料版をリクエストしない限り、会話に金額が登場することはありません。

チャットではユーザーの言語で作業します。画面上のすべてのテキストはボイスオーバーの言語に従います。

生成されるもの

任意のボイスオーバー(およびオプションのスクリプト)を、1回のリクエストでAfter Effects上で完成された16:9のドキュメンタリースタイルリールに変換します。無音と息継ぎをカットし、ビジュアルストーリーを作成し、すべての画像を無料で調達し(Wikimedia Commonsのアーカイブ写真、Pixabay MCPのクリップとポートレート、thesvg MCPによるロゴSVG、静止画からのffmpegケンハーマスムーブ)、After Effectsでネイティブに編集を構築します。見た目は、暗いアーカイブドキュメンタリー。すべてのクリップは浮遊するラウンドガラスフレームに薄く光るボーダーと滑らかなプッシュインで表示され、キーワードが単語上で色を反転させる動くパースペクティブグリッド、大きな発言キャプション、タイプライター / 巨大ワード / フォトカードページ、カット時のフラッシュとネガティブフリック、合成された効果音が特徴です。1080p H.264 MP4をレンダリングします。ユーザーがボイスオーバー、ボイスメモ、ナレーション、ポッドキャストクリップを提供して「ビデオを作って」「ナレーションをリールにして」「グラスフレーム編集」「音声からリールを作って」「音声録音からリールを作って」「音声に合わせてビデオをカットして」「グラスフレームとグリッド」などと依頼した場合に使用します。これは、ユーザーが全くフッテージを持っていない場合でも有効です。

開始前の確認(Macごとに1回確認;何か失敗した場合は、修正方法をユーザーに正確に伝えること)

  1. macOS 26以降(オンデバイス文字起こし)でAfter Effects 2024以降が開いていること。AEで、設定 → スクリプティングとエクスプレッション → スクリプトがファイルへの書き込みとネットワークアクセスを許可 をオンにします。
  2. Xcode コマンドラインツール(swiftc)。scripts/build_tools.sh を実行します。これにより scripts/bin/{to_wav,transcribe,facebox,frames} がコンパイルされます。スクリプトが「許可がありません」で失敗する場合(アップロードされたスキルは実行可能ビットが失われる可能性があります)、このスキルのフォルダで chmod +x scripts/*.sh を1回実行します。
  3. 無料調達の準備: pixabay と thesvg のMCPツール(search_pixabay_images、search_pixabay_videos、search_icons、list_variants、get_icon_url、get_icon)、さらに curl と ffmpeg(どちらもエンジンによって既に使用されています)。Wikimedia Commons はインターネット接続と適切なUser-Agentのみが必要です。クレジット、アカウント、残高確認は不要です。
  4. 最初の transcribe 実行時に、音声認識の許可を求められる場合があります。また、オンデバイスモデルを一度ダウンロードする場合があります。
  5. 別のAEプロジェクトが未保存の状態で開かれている場合、build.sh は拒否します。ユーザーに保存するよう依頼してください。ユーザーの作業を決して破棄しないでください。ビルドログには、ユーザーの保存済みプロジェクトを閉じたときに PREVIOUS_PROJECT <path> と表示されます。最終レンダリング後、再び開きます。1行のjsx app.open(new File("<path>")); を書き、scripts/ae_run.sh で実行します。

S = このスキルのフォルダ。PY = /usr/bin/python3(または任意のPython 3.9以上、標準ライブラリのみ)。

パイプライン

1. プロジェクトフォルダと音声

  • <proj> = ボイスオーバーファイルの隣に <voiceover name>_reel という名前の新しいフォルダを作成します。
  • PY S/scripts/reel.py prep <voiceover> <proj> を実行します。音声を変換し、Mac上で文字起こしを行い、すべての無音と息継ぎを除去します。結果は work/voice_cut.wav と work/words.json(単語インデックス → プログラム時間)です。
  • 次に PY S/scripts/reel.py words <proj> を実行し、インデックス付きの文字起こし全体を読みます。
  • ユーザーがスクリプトを提供した場合、文字起こしと比較します。聞き間違えた名前を spell で修正します(例: "28": "Grok")。

2. ストーリー(references/story.md を読み、<proj>/story.json を書く)

  1. スクリプトに合った世界を決定します:時代、場所、繰り返し登場する2~5人のキャラクター、3~6のロケーション、白黒またはカラー。
    • デフォルト:白黒の1950~60年代のアーカイブドキュメンタリー。抽象的な主題が人や場所に変わります。
    • ホストの外観を選びます。ユーザー自身を登場させたい場合は、その写真をホストの参照として使用します。
  2. 文字起こしをショットに分割します。各ショットは単語インデックスで始まります。
    • host(テレビの中でカメラに向かって話す):3~6ショット、各2~6秒。フック、展開、コールトゥアクションに使用します。全体で再生時間の約15~20%を占めます。
    • clip(ガラスフレーム内の生成フッテージ):ほとんどのショット、各1.5~3秒。
    • type(タイプライターページ):冒頭の質問やセクションタイトル。最大6単語。
    • giant(赤いラベルとセリフのサブラインが付いた1つの巨大な単語):名前の付いた概念。
    • cards(ロゴバッジ付きの2~4枚のフォトカード、各単語に名前):声が人物、製品、ブランドを列挙する場合。 ロゴはそれらが話されたときにのみ表示されます。
    • list:声が2~4のポイントを列挙する場合、その単語範囲をマークします。キーワードは単語上でアクセントカラーに反転します。
    • keys:1文につき最大1つ。
    • hits:invert は3~6の劇的なカットに、strobe は最大2つの「もっとクレイジーになった」瞬間に、burn は最大2つのピークに使用します。
    • 同じクリップモーメントを二度表示しないでください。
  3. ショットから調達リストを書きます:
    • 各ストリークリップは8~12秒のストックフッテージ(または調達した静止画のケンハーマスパン)で、連続するショットをカバーします。つまり、1つのクリップが異なる in 時間を通じて複数のショットを供給します。
    • カードのポートレート、ロケーション、ホスト素材はすべて無料で調達します。
    • オプションの音楽(なしの場合、ビルドは music が存在しないとスキップします)。

3. アセットの調達(references/higgsfield.md を読む)

  1. この順序で調達します:ストリークリップ → カードのポートレート → ロケーション → (維持する場合)TVプレート → (維持する場合)ホストクリップ。テスト済みのレシピ(HEAD content-type + content-length、curl -A UA + リトライ、Commonsが提供する場合はSHA-1)に従って、すべてのダウンロードを検証します。ファイル → ソースURL → ライセンス → 作者を work/SOURCES.md に記録します。
  2. ストリークリップ:Pixabay search_pixabay_videos(video_type: "film"、適切な向き、再生時間8~15秒)またはCommons filetype:video(imageinfo → curlレシピでダウンロード → Talks .ogv/.webm をMP4にトランスコード)。静止画はffmpegレシピでケンハーマス .mp4 になります。
  3. ホストクリップ(ユーザー自身がカメラに映る場合のみ):
    • PY S/scripts/reel.py chunks <proj> は、ホストショットごとに1つのオーディオチャンクを work/host/host_NN.wav に書き込みます。
    • チャンクオーディオをユーザーのウェブカムクリップに合成し、assets/host/host_NN.mp4 として保存します(ffmpeg -map 0:v:0 -map 1:a:0 -shortest)。reel.py align はその後、単語と正確に一致させます。
    • PY S/scripts/reel.py align <proj> は各クリップの単語からのオフセットを測定します。 自分のフッテージがない場合 → 代わりにこれらのホストビートを type / giant / cards ページとして再構成します。
  4. TVプレートが使用される場合、PY S/scripts/reel.py screen <proj>/assets/tv_plate.png <proj> を実行します。グリーンスクリーンを見つけます。見つからない場合は、再ペイントします(ffmpeg drawbox、リファレンスの§2)か、ホストショットを full モードに切り替えます。プレートは不要です。
  5. PY S/scripts/reel.py sfx <proj> を実行して効果音を合成します(ライセンス不要)。
  6. 音楽:music を省略(デフォルト)、ユーザーのトラックを使用、またはCommonsオーディオファイルをMP3に変換します。

4. ビルドと確認

  1. PY S/scripts/reel.py plan <proj> を実行します。work/plan.json を書き込み、チェックを出力します。story.json のすべてのERRORを修正します。WARNを真剣に受け止めます:クリップの重複、ホストのリップシンク。
  2. S/scripts/build.sh <proj> を実行します。約70秒のリールで約1分かけて <proj>/reel.aep(コンポジション REEL)をビルドします。ログを読みます:使用されたフォント、警告。
  3. クイックチェックのために S/scripts/render.sh <proj> --half を実行します(約2分)。その後フレームを確認します:
    • S/scripts/bin/frames <proj>/out/reel_half.mp4 <proj>/work/check.jpg 4 <約16ショットの中間の秒>;
    • check.jpg を確認します:キャプションが読みやすく顔の上にない、ホストの唇がテレビ内で動いている、ガラスフレームが存在する、黒い隙間がない、ページが空でない。 story.json で修正し、plan、build、そしてチェックを再実行します。
  4. 最終: S/scripts/render.sh <proj> を実行します。<proj>/out/reel_1080.mp4(1920×1080、25fps、約40Mbps、音声付き)を書き込みます。
  5. MP4を送信します。以下を報告します:
    • 長さ;
    • 確認できなかったこと;
    • 手動で調整する場所(reel.aep:各ショットは 02_SHOTS / 03_PAGES 内の独自のコンポジション、キャプションは CAPTIONS 内)。

ルール

  • 権利:
    • すべて無料で調達:Pixabay MCP、Wikimedia Commons(各ファイルのライセンスを確認)、ロゴ用のthesvg MCP、およびローカル合成(ffmpeg Ken-Burns、reel.py sfx)。デフォルトでは有料サービスは使用しません。Higgsfieldの付録は、ユーザーが明示的にリクエストした場合のみ使用します。
    • 映画、シリーズ、広告、他人のソーシャル投稿を決してスクレイピングしないでください。
    • ロゴはthesvg MCPまたはWikimedia Commonsからのみ、かつユーザーの承認を得た後にのみ使用します。
    • 音楽はオプションです(省略、ユーザー自身のトラック、またはCommonsファイルをMP3に変換)。
    • 効果音は reel.py sfx によって合成されます。
  • 声が時計です。
    • すべてのカットは単語の1フレーム前に着地します。reel.py がこれを行います。
    • 速度や単語を決して変更しないでください。
    • キャプションは、聞き間違えた名前の spell 修正を除き、話された内容を正確に表示します。
  • 人物:
    • 控えめで、時代に合った服装;
    • 現実的な大人;
    • 実際の公人をキャラクターとして使用しない;
    • AIモデルや企業は、架空のキャラクターとして表示され、キャプションとロゴでのみ名前が付けられます。
  • 再実行は安価です。 plan と build は決定論的で、reel.aep をスクラッチから再構築します。ユーザーが手動編集をリクエストしない限り、reel.aep を手動で編集するのではなく story.json を変更してください。ユーザーが自身で reel.aep を編集した場合、許可なく再ビルドしないでください。
  • AEは一度に1つのスクリプトを実行します。
    • scripts/ae_run.sh、build.sh、render.sh のみを使用します。
    • 終了コード4はAEがまだビジーであることを意味します:待機し、決して再送信しないでください。
    • 終了コード6はAEがスクリプトを開始しなかったことを意味します:ダイアログが開いていますか?

ファイル

パス内容
scripts/reel.pyprep / words / chunks / align / screen / sfx / plan(標準ライブラリのみ)
scripts/build.sh、scripts/ae/build_reel.jsx、scripts/ae/reel_lib.jsxAfter Effects ビルド
scripts/render.shaerender から H.264(--half で確認用)
scripts/ae_run.sh実行中のAEに1つのスクリプトを送信し待機
scripts/tools/*.swift → scripts/bin/オーディオ変換、オンデバイス文字起こし、顔ボックス、フレームシート
references/story.mdstory.json のフォーマット、ショットルール、完全な例
references/higgsfield.md無料調達マニュアル:テスト済みのPixabay / Wikimedia / thesvg 取得・検証レシピ、アセットごとのマッピング、有料生成付録
references/look.mdビルドが描画するもの(サイズ、タイミング、色)とその調整方法
references/troubleshooting.mdエラーと修正
references/example_story.json完成した70秒リールの story.json(EXPERIMENT テスト)
PROMPT.mdスキルのインストール方法と送信するプロンプト

関連スキル