Communitygithub.com

fabrica-videos-reels

クライアントのリール動画を、スクリプトとストーリーボードの承認を経て作成します。音声に同期したアニメーション、録画との同期、最終レンダリングを実施します。

fabrica-videos-reels とは?

このスキルは、AIエージェント(例:Claude Code、Cursor、Codex)向けに設計された、リール動画制作ワークフロー全体をカバーするものです。クライアントのリクエストに応じて、スクリプト草案作成からストーリーボード、Remotionを用いた動画構成、実際の録画との同期、最終的なMP4レンダリングまでをガイドします。主な特徴は「スクリプトファースト」アプローチで、クライアントが録画前にスクリプトとストーリーボードを承認する必要があります。動作環境は、Remotionベースのプロジェクトで、特定のフォルダ構造(`roteiros/`、`src/videos/`、`TRABALHO/`など)とnpmスクリプトを使用します。このスキルは、録画の文字起こし、アンカーポイントとの同期、フレーム単位のアニメーション調整、品質管理(オフセット確認、レンダリング設定)を自動化します。また、HDR録画のSDR変換、複数録画テイクのクリーニング、シリーズ動画の一貫性管理などの実践的な注意点も含んでいます。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/eduardogalbiati/fabrica-de-video-skills/tree/HEAD/.claude/skills/fabrica-videos-reels

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

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

ドキュメント

/fabrica-videos-reels — スクリプトからMP4へ

Fábrica de Vídeos Agêntica のスキル (fabrica-videos スキルを参照)。これは「スクリプトファースト」のワークフローです。クライアントは録画前にスクリプトとストーリーボードを承認する必要があります。クライアントがスクリプトなしで録画済みの場合は、fabrica-videos-rapido スキルを使用してください。

ポルトガル語で、シンプルな言葉で話してください(動画を依頼する人はほとんどプログラミングをしません)。コードではなく、レンダリングされたプレビューで進捗を示してください。 Remotion のコードを書く前に、CLAUDE.md(デザインシステムのルール、各ファイルの場所、コマンド)を読み、公式の Remotion スキルがインストールされている場合は remotion-best-practices も読んでください。 完全な承認済みの例は動画 Exemplo です:roteiros/exemplo*.{md,json} + src/videos/Exemplo.tsx。この構造をコピーしてください。

すべてのコマンドはプロジェクトルートのターミナルで実行します。以下の表で、TRABALHO = trabalho フォルダ(git 管理外)。

0. 動画がどの段階にあるか確認する

短い slug(例:minha-ideia)を選び、既存のものを確認します:

存在するもの…次へ進む
何もない1. スクリプト
roteiros/<slug>.md 承認済み、-animacoes.md なし2. ストーリーボード
ストーリーボード、src/videos/<Nome>.tsx なし3. 構築
構成完了 + 新しい録画(クライアントが保存場所を知らせる)4. 録画
TRABALHO\out\<slug>-final.mp45. 納品

1行で現在の段階を伝え、その指示に従ってください。段階 1 と 2 は会話です:提案、傾聴、改良;クライアントの承認を得てから先に進んでください。

1. スクリプト → roteiros/<slug>.md

  • ここでクライアントと会話しながらスクリプトを作成します。質問:テーマ(または参考リンク/動画)、ピラー(ブランドテーマの1つ)、目標時間(30~60秒 ≈ 2.5単語/秒)。
  • 構造は roteiros/exemplo.md と同じ:推定開始時間、台詞、カードを持つブロック;視聴者が初心者の場合の類義語辞典;録画用の連続テキスト;必要なスクリーンショット;リンク付きで確認された事実。
  • 声(人物に合わせて調整;ルールはブランドに従う):一人称、短い文、具体的な数字;最初の3秒でフック;決して「革命的」「未来が来た」とは言わない;質問 + CTA で締める。警報は宣言ではなく質問にする。ニュースを捏造しない。

2. ストーリーボード → roteiros/<slug>-animacoes.md + roteiros/<slug>.ancoras.json

  • ビートごと(2~3秒ごとに視覚変化):時間、フレーズ、画面上に表示されるもの(エリア 1080×960)。
  • 新しいパーツを作成する前に、src/pecas/ の既存パーツを再利用:RedeNeural + Bisturi(AIの「脳」)、GradeConexoes、LoopPensando、Lupa、ContadorBarra、TrocaPrints、TextoRiscado(モード riscar/somar)、OlhoRiscado、LinhaVersoes;ヘルパー TituloCena、Halo、RotuloMono、aparece(util.tsx)。
  • ancoras.json:{ "cena": "そのシーンで最初に話される言葉" } 台詞の順番で。アンカーに固有名詞を避ける(Whisper が誤認識する:「Qwen」→「quen」、「Claude」→「clou」、「OpenAPI」→「OpenAI」、「Vercel」、「MCP」、「JSON」も同様)。シーン内の内部ビート(例:取り消し線を引く瞬間)もアンカーにします。

3. 構築 → src/videos/<Nome>.tsx

  1. Exemplo.tsx のスケルトンをコピー:zod スキーマ(pilar、video、enquadramento、mostrarGuia、nome、cargo、prints、encerramento、tempos)、外側の TelaDividida、シーンごとに1つの <Sequence> + <Cena>(6フレームのフェード)、最後に2秒の Encerramento。src/videos/index.tsx に登録。<Folder name="Videos"> 内に、calculateMetadata(再生時間 = duracaoFala + 2秒)を設定。
  2. 各シーンは 独自のコンポーネント で、useCurrentFrame() を呼び出します(親コンポーネントのオブジェクト/配列の関数内でフックを呼び出さない:フレームが正しく取得できません)。useCurrentFrame、useVideoConfig、Sequence は src\relogio.tsx からインポートし、remotion からはインポートしないでください:フレームは30 fpsで書き込まれ、時計が残りを処理します(動画が60 fpsで出力される場合)。
  3. 新しいパーツは src/pecas/ に配置(汎用的、props 付き)、src/animacoes/tema.ts のトークンに従います。
  4. パーツのスクリーンショットと画像(小さいファイル):このフォルダの public\<slug>\ に保存し、npm run preparar を実行します。
  5. 録画前のテスト用仮台詞:連続テキストを roteiros\<slug>.fala.txt(UTF-8)に保存し、npm run fala -- <slug> roteiros\<slug>.fala.txt を実行 → TRABALHO\public\previa\fala-<slug>.mp4(システム音声、1080×960)。次に npm run legendar + npm run batidas(セクション4)を実行して src/videos/<slug>.tempos.json を生成し、video prop を "previa/fala-<slug>.mp4" に設定。
  6. 確認:npx tsc とガイド付きのコンタクトシート:npm run folha -- <Id> src\videos\<slug>.tempos.json → TRABALHO\out\folha-<Id>.jpg(各シーン終わりの1フレーム)。画像を確認:赤い部分なし(上部270、下部320、側面96、右側のボタン)、重なりなし、テキストが収まっていること。
  7. プレビューをレンダリング:npm run renderizar -- <Id> "trabalho\out\previa-<slug>.mp4" previa(軽量、540×960;プレビューであることを伝える)してクライアントに送信。

4. 実際の録画 → 同期とフレーミング

  1. 新しい録画を見つける(クライアントに保存場所を尋ねる)。元のファイルを TRABALHO\originais\ に コピー(決して移動や変更しない)して変換:npm run converter -- "trabalho\originais\<arquivo>" <slug> → TRABALHO\public\gravacao-<slug>.mp4(縦向き、H.264、標準色、録画の解像度とフレームレートのまま:4K 60fps はそのまま4K 60fpsで出力。HDR は例外:SDR に変換され、コンバーターが通知。コマンド末尾に ate=12 を付けると最初の12秒だけ変換、迅速なテスト用)。コンバーターは ffprobe でファイルを確認し、4K HDR(最近のiPhone) の場合は zscale + tonemap で HDR 処理(これがないと色が薄くなる)。セッション内で初めての HDR 録画の場合、変換済みから1フレーム抽出してクライアントに表示し、スマートフォンと比較させる。
  2. npm run legendar -- "trabalho\public\gravacao-<slug>.mp4"(バックグラウンド、約1~2分)→ legendas/gravacao-<slug>.json。録画に長い間、エラー、繰り返しテイクがある場合、先に進む前にクリーンアップする(fabrica-videos-corte スキル):以降の動画は gravacao-<slug>-limpa.mp4 となり、トランスクリプトはクリーンな動画のもの。
  3. npm run batidas -- legendas\gravacao-<slug>.json roteiros\<slug>.ancoras.json src\videos\<slug>.tempos.json "<vídeo>"。アンカーが不足している場合、トランスクリプトを読んでフレーズを調整する。クライアントが台詞の意味を変えた場合、アニメーションを適応(例:「一人だけでなく」→ TextoRiscado modo="somar" を取り消し線の代わりに)し、そのことをクライアントに伝える。
  4. duracaoFala ≤ 動画の再生時間(そうしないと画像の下に一瞬余白ができる):上記コマンドで動画を指定すると、batidas が自動的に制限;指定しない場合は手動で修正。
  5. フレーミング(顔が字幕帯 y 985–1125 と下部ゾーン y 1600 の間に収まる必要がある):約12の瞬間でトリミングをテストする。ffmpeg -ss <t> -i <video> -frames:v 1 -vf "crop=1080:960:0:<offset>" "trabalho\out\enq-<t>.png" を実行し、各画像を確認。enquadramento = "50% <offset/960*100>%"(ソース 1080×1920 の場合)。動画全体で頭全体がフレーム内に収まること。 顎が下部ゾーンに触れてもよいが、口は決して触れない。クライアントがカメラに近づく場合もテストし、頭頂部が決して切れない最大のオフセットを使用する。
  6. 名前のバーを確認:顔を覆う場合、上半分に配置する(TelaDividida のデフォルト)。
  7. 最終レンダリングをバックグラウンドで実行:npm run renderizar -- <Id> "trabalho\out\<slug>-final.mp4";ffprobe で再生時間/解像度を確認し、動画を送信。
    • 入力された品質がそのまま出力されます。 renderizar は録画の解像度とフレームレートを読み取り、最終出力もそれに従います:4K 60fps で録画すれば、2160×3840 60fps で出力。最終出力では npx remotion render を直接使用しないでください:常に 1080×1920 30fps で出力されます。
    • パラメータが指定された場合のみ解像度を下げます、そしてスキル呼び出し時にクライアントが要求した場合のみ(例:/fabrica-videos-reels <slug> 1080p):1080p で解像度を下げ、30fps でフレームレートを下げます(npm run renderizar -- <Id> "<saída>.mp4" 1080p 30fps)。パラメータなしでは解像度を下げないでください。
    • HDR はこのルールの対象外: Remotion は標準色のみ描画。録画が HDR の場合、最終出力は SDR になることをクライアントに伝えてください。
    • 4K 60fps でのレンダリングは、1080p 30fps に比べて描画する画像が8倍になります。事前に時間がかかることを伝えてください。

5. 納品

  • fabrica-videos-entrega スキルで最終処理(技術確認、カバー、コンタクトシート、NOTAS.md)。以下のポイントはこのフロー独自のものです。
  • クライアントが後で編集アプリケーションで字幕を付ける場合、字幕を配置する場所を説明:分割バーのすぐ下(ピラーの色で)(ガイドの緑色の帯)、最大2行。クライアントが動画に字幕を焼き付けたい場合、fabrica-videos-legendas スキルを参照(LegendaQueimada、位置 faixa)。
  • トランスクリプトがよく誤認識する名前を伝える。
  • 投稿の説明:クライアントが要求した場合、NOTES.md に 提案 を書く(フック、正確な数字を含む2~3文、質問 + 同じ CTA、出典、最大3つの絵文字、4~6つのハッシュタグ、研究で裏付けられていない誇張は避ける)。
  • entregas\AAAA-MM-DD-<slug>\ に記録:NOTAS.md(構成ID、使用したコマンド、録画と最終出力のパス、再生時間、フレーミング、クライアントが台詞を変更した点)、capa.jpg、コンタクトシート。最終動画は TRABALHO\out\ に残す。
  • 承認後、録画を TRABALHO\public\ から削除し、trabalho\arquivo\AAAA-MM-DD-<slug>\ に保存(Remotion はレンダリングのたびに public 全体をコピー;フォルダが大きいと処理が遅くなる)。新しいパスを NOTAS.md に記録。
  • 決して公開、スケジュール、送信しない。 公開するのはクライアントです。

既に解決された落とし穴(再現しないこと)

  • Halo:<Halo>(filter: blur のdiv)を使用し、透明な要素に box-shadow を使用しない(暗い「ピル」になる)。
  • 複数単語の強調:*10 tarefas* は単語ごとではなく、断片として扱う必要がある(TextoImpacto/Destaque を参照)。
  • ポイントに中央揃えされたラベル(例:v1)は、96px のマージンを侵害しないために余分な余裕が必要。
  • PowerShell:JSON を直接 --props='{...}' に渡すと引用符が失われる。ファイルに保存して --props=arquivo.json を使用すること。
  • プロジェクト内の録画や動画はリポジトリに追加される:常に TRABALHO に配置。
  • Studio のポートは 3210。

シリーズ(同じテーマの複数のリール)

  • エピソードごとに1つのスラッグ(<serie>-<n>-<tema>)、クライアントが要求した場合はエピソードごとに1つのセッション。並行セッションは同じフォルダを共有:各セッションは自分のスラッグのファイルのみを操作;src/videos/index.tsx は編集前に再読み込みし、自分の <Composition> のみを追加;共有パーツは変更しない。
  • すべてに適用される事実と決定事項(変更された数字、CTA、ピラー)は、すべてのセッションに同時に伝える必要がある。これがないと、各動画が異なるルールになってしまう。
  • シリーズの最終画面:src/pecas/TelaFinalReels.tsx を Encerramento の代わりに使用、台詞の4秒後(再生時間 = duracaoFala + telaFinalSeg)。9:16 の空きスペース2つ(400×711)をクライアントが編集アプリでリールで埋める:1つは次のチャプター用(最後は最初に戻る)、もう1つはシリーズの元となったリール用。

音声(オプション、クライアントが要求した場合、または承認済みの場合のみ)

  • public 内の音声フォルダに4つの短い音声を配置(自身で用意し、明確なライセンスを持つこと:リポジトリは音声を含まない):abertura.mp3(フック時のライザー、音量約0.35)、tecla.mp3(各アイテムが入るとき、約0.3)、whoosh.mp3(ターン/ズーム時、約0.2)、blip.mp3(数字や最終回答が届いたとき、約0.3)。
  • 各音声は、@remotion/media の <Audio> を持つ短い <Sequence> で、シーンと同じタイミングに固定;パスと音量はスキーマの props(空文字列で無効)。
  • レンダリング後、ピークを ffmpeg -i <video> -af volumedetect -vn -f null - で測定(0 dB 未満、音声は声より小さいこと)。自分では聞けない:クライアントに耳での確認を依頼すること。

録画の教訓

  • スクリプトなしで録画する人は、フレーズごとに話し、長い間を置き、始める前にウォームアップし、気に入らないフレーズを繰り返し、最後にフレームアウトすることがよくある。fabrica-videos-corte スキルがこれらすべてを解決する。
  • 録画時に台詞を変えるのはよくあること。アンカーを信頼する前にトランスクリプト全体を読み、実際に話された内容に合わせて画面と投稿のキャプションを調整する。
  • 台詞がスクリプトより短い場合、省略された詳細と数字は画面に表示されたままになる。
  • 事実を変更する場合(例:更新された数字)、すべての場所で変更:台詞、画面、タイトル、投稿キャプション、カバー。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

関連スキル