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回確認;何か失敗した場合は、修正方法をユーザーに正確に伝えること)
- macOS 26以降(オンデバイス文字起こし)でAfter Effects 2024以降が開いていること。AEで、設定 → スクリプティングとエクスプレッション → スクリプトがファイルへの書き込みとネットワークアクセスを許可 をオンにします。
- Xcode コマンドラインツール(
swiftc)。scripts/build_tools.shを実行します。これによりscripts/bin/{to_wav,transcribe,facebox,frames}がコンパイルされます。スクリプトが「許可がありません」で失敗する場合(アップロードされたスキルは実行可能ビットが失われる可能性があります)、このスキルのフォルダでchmod +x scripts/*.shを1回実行します。 - 無料調達の準備:
pixabayとthesvgのMCPツール(search_pixabay_images、search_pixabay_videos、search_icons、list_variants、get_icon_url、get_icon)、さらにcurlとffmpeg(どちらもエンジンによって既に使用されています)。Wikimedia Commons はインターネット接続と適切なUser-Agentのみが必要です。クレジット、アカウント、残高確認は不要です。 - 最初の
transcribe実行時に、音声認識の許可を求められる場合があります。また、オンデバイスモデルを一度ダウンロードする場合があります。 - 別のAEプロジェクトが未保存の状態で開かれている場合、
build.shは拒否します。ユーザーに保存するよう依頼してください。ユーザーの作業を決して破棄しないでください。ビルドログには、ユーザーの保存済みプロジェクトを閉じたときにPREVIOUS_PROJECT <path>と表示されます。最終レンダリング後、再び開きます。1行のjsxapp.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 を書く)
- スクリプトに合った世界を決定します:時代、場所、繰り返し登場する2~5人のキャラクター、3~6のロケーション、白黒またはカラー。
- デフォルト:白黒の1950~60年代のアーカイブドキュメンタリー。抽象的な主題が人や場所に変わります。
- ホストの外観を選びます。ユーザー自身を登場させたい場合は、その写真をホストの参照として使用します。
- 文字起こしをショットに分割します。各ショットは単語インデックスで始まります。
- 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つのピークに使用します。 - 同じクリップモーメントを二度表示しないでください。
- ショットから調達リストを書きます:
- 各ストリークリップは8~12秒のストックフッテージ(または調達した静止画のケンハーマスパン)で、連続するショットをカバーします。つまり、1つのクリップが異なる
in時間を通じて複数のショットを供給します。 - カードのポートレート、ロケーション、ホスト素材はすべて無料で調達します。
- オプションの音楽(なしの場合、ビルドは
musicが存在しないとスキップします)。
- 各ストリークリップは8~12秒のストックフッテージ(または調達した静止画のケンハーマスパン)で、連続するショットをカバーします。つまり、1つのクリップが異なる
3. アセットの調達(references/higgsfield.md を読む)
- この順序で調達します:ストリークリップ → カードのポートレート → ロケーション → (維持する場合)TVプレート → (維持する場合)ホストクリップ。テスト済みのレシピ(HEAD
content-type+content-length、curl-AUA + リトライ、Commonsが提供する場合はSHA-1)に従って、すべてのダウンロードを検証します。ファイル → ソースURL → ライセンス → 作者をwork/SOURCES.mdに記録します。 - ストリークリップ:Pixabay
search_pixabay_videos(video_type: "film"、適切な向き、再生時間8~15秒)またはCommonsfiletype:video(imageinfo→ curlレシピでダウンロード → Talks.ogv/.webmをMP4にトランスコード)。静止画はffmpegレシピでケンハーマス.mp4になります。 - ホストクリップ(ユーザー自身がカメラに映る場合のみ):
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ページとして再構成します。
- TVプレートが使用される場合、
PY S/scripts/reel.py screen <proj>/assets/tv_plate.png <proj>を実行します。グリーンスクリーンを見つけます。見つからない場合は、再ペイントします(ffmpeg drawbox、リファレンスの§2)か、ホストショットをfullモードに切り替えます。プレートは不要です。 PY S/scripts/reel.py sfx <proj>を実行して効果音を合成します(ライセンス不要)。- 音楽:
musicを省略(デフォルト)、ユーザーのトラックを使用、またはCommonsオーディオファイルをMP3に変換します。
4. ビルドと確認
PY S/scripts/reel.py plan <proj>を実行します。work/plan.jsonを書き込み、チェックを出力します。story.jsonのすべてのERRORを修正します。WARNを真剣に受け止めます:クリップの重複、ホストのリップシンク。S/scripts/build.sh <proj>を実行します。約70秒のリールで約1分かけて<proj>/reel.aep(コンポジション REEL)をビルドします。ログを読みます:使用されたフォント、警告。- クイックチェックのために
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、そしてチェックを再実行します。
- 最終:
S/scripts/render.sh <proj>を実行します。<proj>/out/reel_1080.mp4(1920×1080、25fps、約40Mbps、音声付き)を書き込みます。 - 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によって合成されます。
- すべて無料で調達:Pixabay MCP、Wikimedia Commons(各ファイルのライセンスを確認)、ロゴ用のthesvg MCP、およびローカル合成(ffmpeg Ken-Burns、
- 声が時計です。
- すべてのカットは単語の1フレーム前に着地します。
reel.pyがこれを行います。 - 速度や単語を決して変更しないでください。
- キャプションは、聞き間違えた名前の
spell修正を除き、話された内容を正確に表示します。
- すべてのカットは単語の1フレーム前に着地します。
- 人物:
- 控えめで、時代に合った服装;
- 現実的な大人;
- 実際の公人をキャラクターとして使用しない;
- 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.py | prep / words / chunks / align / screen / sfx / plan(標準ライブラリのみ) |
scripts/build.sh、scripts/ae/build_reel.jsx、scripts/ae/reel_lib.jsx | After Effects ビルド |
scripts/render.sh | aerender から H.264(--half で確認用) |
scripts/ae_run.sh | 実行中のAEに1つのスクリプトを送信し待機 |
scripts/tools/*.swift → scripts/bin/ | オーディオ変換、オンデバイス文字起こし、顔ボックス、フレームシート |
references/story.md | story.json のフォーマット、ショットルール、完全な例 |
references/higgsfield.md | 無料調達マニュアル:テスト済みのPixabay / Wikimedia / thesvg 取得・検証レシピ、アセットごとのマッピング、有料生成付録 |
references/look.md | ビルドが描画するもの(サイズ、タイミング、色)とその調整方法 |
references/troubleshooting.md | エラーと修正 |
references/example_story.json | 完成した70秒リールの story.json(EXPERIMENT テスト) |
PROMPT.md | スキルのインストール方法と送信するプロンプト |