Communitygithub.com

アニメリール生成スキル

スクリプトと音声MP3から、オリジナルキャラクターがコードで描かれたアニメ風エピソード(『Zero Se Freelance』シリーズ風)を生成します。ユーザーが「/anime-reel」と入力したときや、アニメリール、アニメエピソード、リップシンク付きアニメキャラクターを要求したときに使用します。出力は9:16のリールと16:9のYouTube用動画です。

アニメリール生成スキル とは?

このスキルは、ユーザーが提供するスクリプトと音声MP3をもとに、完全にコードで描かれたアニメ風エピソードを生成します。HTML Canvasを使い、ヘッドレスChromeでフレームごとにレンダリングし、ffmpegでエンコードします。外部のストック映像や画像生成AIは一切使用せず、一貫したビジュアルスタイルを保つため、`engine/` をベースとして拡張します。 各音声ラインのタイミングは、torchaudioのMMS_FAによる強制アライメントで正確に同期され、リップシンクは音声のラウドネスから口の開き具合を計算します。日本語を含む非英語ラインはuromanでローマ字化しつつ、画面には元のスペルを表示します。 キャラクターはすべてオリジナルで、既存のアニメからコピーしません。キャラクターシートとJSONが唯一の情報源となり、ショット間で一貫性が保たれます。スピードライン、インパクトフレーム、シェイク、ちびキャラなど、アニメ的な演出を効果的に配置できます。 フルレンダリング前にコンタクトシートを表示し、ユーザーの承認を待ちます。最終出力は9:16と16:9の2種類と、WhatsApp向けの20MB未満の720pコピーも生成されます。このスキルはClaude CodeやCursorなどのAIエージェントプラットフォームで使用することを想定しています。

対応~Claude Code~Codex CLI~Cursor
npx skills add akokbaba195-bot/anime-reels

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

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

ドキュメント

anime-reel

入力:スクリプト + 各行につき1つの音声MP3(ユーザーが両方を添付)。出力:元の音声をそのまま含む9:16リールと16:9コピー、さらにWhatsApp用の20MB未満の720pコピー。

厳格なルール(毎回実行)

  • すべてコードで描画:HTML Canvas、ヘッドレスChromeでフレームごとにレンダリング、ffmpegでエンコード。ストック映像や画像生成AIは使用禁止。ベースとして engine/ を使用し、拡張する(置き換えない)。これにより見た目が毎回同じになる。
  • すべての単語を強制アライメント(torchaudio MMS_FA、scripts/align.py 経由)でタイミング設定。決してタイミングを推測しない。アライメントが失敗したラインは停止し、理由をユーザーに伝える。等間隔にフォールバックしない。
  • フルレンダリング前に静止画のコンタクトシートを表示し、承認を待つ。
  • 既存ファイルを上書きする前に確認を求める。encode.sh は上書きを拒否して終了コード2で終了する。その情報をユーザーに伝える。
  • 最終MP4内では元の音声をそのまま維持する(音声ラインはタイムライン上に配置するのみで、再処理はしない)。ユーザーから要求がない限り、BGMは追加しない。

手順

  1. セットアップ。 bash scripts/check_setup.sh(ffmpeg、Node、puppeteer、torch/torchaudio、uroman)を実行。不足があれば修正してから次に進む。bash scripts/sfx.sh <project>/sfx を実行し、ffmpegでヒット/ウィッシュ/インパクト/ポップ効果音を合成。
  2. スクリプトをショットに分割。 音声ライン1つにつき1ショット。各ショットに以下を記述:id、speaker、text(MP3の内容と完全一致)、audio パス、place(rooftop、office、street、bedroom、sky、または新しい drawPlace ブランチを追加)、camera(static|push|pull|pan + amount)、cast、slots(left/center/right)、fx。shots.json として保存(スキーマは scripts/build_timeline.py 内)。ショットリストを表示し、曖昧な場合はユーザーに修正を促す。
  3. キャラクター。 各キャラクターを characters で定義(name、skin、hair、hairStyle spiky|bob|long|short、eye、outfit、accent、color =そのキャラクターのキャプション色)。既存のアニメからコピーせず、オリジナルであること。アニメ風の見た目:大きな目とハイライト、太くてきれいな輪郭線、フラットカラー+正確に1つのシェード。キャラクターシートをレンダリングし、JSONを唯一の情報源として維持することで、キャラクターがショット間で変わらないようにする: node scripts/render_frames.mjs sheet timeline.json landscape out/character_sheet.png
  4. アライメントとリップシンク。 python3 scripts/build_timeline.py shots.json timeline.json work を実行すると、MMS_FAがラインごとに単語のタイミングを取得し、その音声ラインのラウドネスから各キャラクターの口の開きカーブを構築する(mouth.py)。まばたきとアイドルモーションはエンジンに組み込まれている。非英語ラインの場合、align.py はuromanでローマ字化しつつ、画面には元のスペルを表示する。
  5. キーラインでのアニメ演出(fx に追加、時間はショット開始からの秒数):speedlines(登場や決意の場面)、impact(白/黒フラッシュフレーム、sfx: "impact" とともに)、shake(ヒット時)、chibi(+ who、sfx: "pop"、コミカルなリアクション時)。控えめに使うこと:だいたい2〜3ショットに1つの演出、効果を際立たせるため。
  6. キャプションと音響。 2〜3ワードのキャプションはエンジンで自動処理される。発声された単語はその話者の色で、残りは白で表示。効果音は(fx[].sfx を介して)視覚的なヒットと同じキューに配置される。次のコマンドでミックス:python3 scripts/build_audio.py timeline.json work/audio.wav
  7. コンタクトシート、その後承認。 エピソード全体から約12個の時間を選び、すべての演出を含める: node scripts/render_frames.mjs stills timeline.json portrait work/stills 0.5,2.0,... bash scripts/contact_sheet.sh work/stills out/contact_sheet.png out/contact_sheet.png を表示して停止。ユーザーが承認するまでフル動画をレンダリングしない。
  8. 承認後レンダリング、各向きで実行(portrait = 1080x1920、landscape = 1920x1080、30 fps): node scripts/render_frames.mjs video timeline.json portrait work/reel_silent.mp4 bash scripts/encode.sh work/reel_silent.mp4 work/audio.wav out/<name>_9x16 landscapeでも同様に out/<name>_16x9 で繰り返す。encode.sh はAAC 256k オーディオをマルチプレクスし、_720p.mp4 コピー(目標約17 MB、常に20 MB未満)を書き出す。サイズを ls -lh で確認し報告する。

レンダリング設定

  • 9:16:1080x1920、30 fps、H.264 yuv420p、CRF 16、AAC 256k、faststart。16:9:1920x1080、同じ設定。
  • WhatsAppコピー:720p(720x1280 または 1280x720)、ビットレートは動画の長さから計算し、20 MB未満にする。
  • キャプションは9:16では約68%の高さ(上部250 px、下部420 pxのアプリUIを避ける)、16:9では約86%の高さに配置。

このスキルのファイル構造

  • engine/engine.js、engine/index.html:Canvasエンジン(キャラクター、場所、スピード線、インパクトフレーム、シェイク、ちびキャラ、キャプション、バッジ)。
  • scripts/:check_setup.sh、sfx.sh、align.py、mouth.py、build_timeline.py、build_audio.py、render_frames.mjs、contact_sheet.sh、encode.sh。

関連スキル