Communitygithub.com

アニメ解説動画

描いたキャラクター、場面、小道具から Remotion で解説や授業のアニメを作り、声、音楽、効果音、字幕を付けます。絵はアニメーションで、生成した実写ではありません。

アニメ解説動画 とは?

コードで描く解説動画を一本に仕上げる技能です。テーマか台本を受け取り、キャラクター、場面、小道具を作り、声、音楽、効果音、字幕を足して書き出します。カメラ映像を切るのではなく、全編をアニメで説明したいときに使います。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lubomier/explainer-video-skill/tree/HEAD/explainer-video

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

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

ドキュメント

アニメーター

あなたはアニメーションを作成します。Remotionで動く描かれたイメージです。実写フッテージは作成しません。

スコープ

  • Veo、Kling、Sora、その他のテキスト動画モデルは呼び出さないでください。 このスキルでは、すべてのフレームがRemotion内で画像、SVG、コードから構成されます。
  • リクエストが実写フッテージ、フォトリアリスティックなショット、または映画の予告編を必要とする場合は、中止して、このスキルでは対応できないと伝えてください。動画モデルに黙って切り替えないでください。

テイストルール

各ルールは却下されたバージョンに由来します。

  1. 会話ではなく、シーンで見せる。 各ポイントをステージングされたシーンとして見せます:キャラクターが演技し、小道具が動き、場所が変わります。背景の前で二人の頭が会話するだけのものは却下された結果です。
  2. ダイナミックに。 すべてのショットでカメラを動かします。ショットサイズを頻繁に変更します:ワイド、ミディアム、クローズ。アクションに合わせてカットします。約4秒以上静止しているショットはありません。
  3. エレガントなキャラクター。 設定に合わせて適切に服装を整えます:完璧なシルエット、良い質感、センスの良いディテール。決して汎用的なクリップアートのような人物ではありません。
  4. プロフェッショナルで、品位のある仕上がり。 スタジオアニメーションのように見えなければなりません。ギミックや安っぽい効果、ミームスタイルは禁止です。
  5. 広さよりも深さ。 リストで6つのポイントを示すよりも、1つのポイントをよく示す方が良いです。トピックに多くのポイントがある場合は、ポイントごとに1つの動画を提案します。
  6. トピックが許せば、対話の中の二人の声。 一方のキャラクターが質問し、もう一方が答えます。各役割をどの声が話すかユーザーに尋ねてください。本人の書面による同意なしに、実在の人物の声をクローンしないでください。
  7. モデルやプロセスの場合は、図式的なカットを作成します。どのカットか尋ねないでください。 ブランドパレットの純粋なSVGシェイプ、人物は含めず;ナレーションがストーリーを運びます。人々の物語はキャラクターカットのままにします。
  8. ムードはトピックに従います。 遊び心のあるアプリには遊び心のある動画:弾むような動き、オーバーシュートするイージング、ポップするカード。シリアスなトピックには控えめな表現を。ムードを選ぶ前にプロダクトを読んでください。

ファイルの場所

対象場所
プロジェクトディレクトリ~/explainer/<name>/。ルートは EXPLAINER_ROOT で上書き可能。プロジェクトごとに1つのフォルダ;プレビューとフル動画は同じプロジェクトの2つのコンポジション
フォルダ構成このファイルの隣にある SCHEMA.md。 in/ 入力、assets/ マスター、public/ レンダリング入力、work/ スクラッチ、out/ 最終成果物
スターターキットこのファイルの隣にある starter/:ストーリーボードを再生する最小限のRemotionコンポジション、ブランドキット、モーションヘルパー
スクリプトこのファイルの隣にある scripts/。プロジェクトルートから実行します。 new-project.sh はスターターとツールを新しいプロジェクトにコピーします
メディア生成このファイルの隣にある adapters/ と、契約に関する ADAPTERS.md。 GEN_IMAGE、GEN_SPEECH、GEN_SFX、CUTOUT、GEN_MUSIC を独自のコマンドに設定します
ブランドプロファイルこのファイルの隣にある brands/<name>/。 brands/example/ はコピー用の中立的なプロファイル

シェルごと、またはプロジェクトの .env でツールパスを一度設定します:

SKILL=~/.claude/skills/explainer-video
export GEN_IMAGE="python3 $SKILL/adapters/gen-image.py"
export GEN_SPEECH="python3 $SKILL/adapters/gen-speech.py"
export GEN_SFX="python3 $SKILL/adapters/gen-sfx.py"
export CUTOUT="python3 $SKILL/adapters/cutout.py"
export GEN_MUSIC="python3 $SKILL/adapters/gen-music.py"

手順

1. スクリプトとストーリーボード

  1. storyboard.json を書きます。各ビートについて、話者、セリフ、シーン(場所、アクション、小道具)、ショットサイズ、カメラの動きを書きます。ビートのフィールドについては SCHEMA.md を参照してください。
  2. 各ポイントが、言葉を使わずにそれを示すシーンを少なくとも1つ持っていることを確認します。
  3. 動画に字幕が必要かどうかユーザーに尋ねます。必要な場合、どの種類か尋ねます:映像に焼き付けるか、動画と一緒に .srt ファイルにするか。字幕は書き起こしではなく、音声スクリプトから作成します:スクリプトには正しいスペルがあります。
  4. 各役割をどの声が話すかユーザーに尋ねます。プレビュー用の無料の声と、最終カット用の有料で表現力豊かな声を提供します。
    • 最初に無料の声。 すべてのプレビューと最初のフルカットは無料の声で吹き込みます。役割の性別は維持します。有料の声は、ユーザーが無料の声のカットを承認した後にのみ生成します。有料パスのために、各ビートの tag をストーリーボードに保持します。
  5. 動画がどのブランドを使用するかユーザーに尋ねます:brands/<name>/ のプロファイル、プロジェクト独自のルック、またはなし。明白なブランドがない動画でも、質問は必要です。回答を in/brief.md に書き込み、最初のレンダリングからカードとパレットがそこから取得されるようにします。
  6. ストーリーボードをユーザーに送信します。承認される前に画像を生成しないでください。

2. キャラクター

  1. キャラクターごとに1つの固定された説明を書きます:顔、髪、体、衣服。すべての画像プロンプトに一字一句コピーします。in/characters.md に保持します。
  2. 平らで無地の背景に gen-image.py でベースの描画を生成します。プロンプトに「地面の影なし、グローなし」を追加します。
  3. そのベースから --input を使用して演技のポーズを生成します:歩く、座る、指さす、反応する、ジェスチャーする、向きを変える。シーンには、立っているだけのフィギュアではなく、ポーズが必要です。
  4. 口の状態(閉じる、開く、大きく開く)とまばたきを作成します。変更された領域のみをベースに貼り付けます。編集済みの画像全体を決して使用しないでください:顔がずれます。
  5. すべてのポーズを cutout.py で切り抜きます。描画には isnet-anime、写真には u2net を使用します。
  6. すべてのポーズを同じ1024ピクセルのキャンバスに配置し、ポーズ変更にオフセットを必要としないようにします。
  7. すべてのポーズのコンタクトシート(ImageMagick montage)を作成します。それを開き、顔、服、またはプロポーションが異なるポーズを探します。そのポーズを再生成します。画像ごとに最大3回試行します。

実在の人物: 本人の同意なしに実在の人物を描画したりアニメーション化したりしないでください。最初に確認します。

  • cutout.py --model u2net で顔を切り抜きます。円の中に入れないでください。
  • 明るい背景の明るい髪は切り抜きで消えます。その場合は別の写真を使用します。
  • あごの下で首と肩をフェードアウトし、首を体と一緒に描画します。トリミングされた写真はそこにハードエッジができます。
  • 体はコード(SVGジョイント)で描画します。そうすれば、すべてのポーズが正確で、顔がずれることはありません。

3. シーンと小道具

  1. 各場所を、キャラクターと同じスタイルで、人物なしの背景(--size 1536x1024)として生成します。
  2. 個別の切り抜きレイヤーとして機能する小道具を生成します:電話、チケット、カップ、カーテン。
    • すべての画面、デバイス、パッケージをブランドマークやテキストがないか確認します。「ロゴなし」プロンプトはそれらを防ぎません。ImageMagickでマークを修正します。画像間編集は使用しないでください:間違った部分を削除してマークを保持します。
  3. パララックスに役立つ前景レイヤーを生成します:座席の列、手すり。
  4. プロジェクトにブランドプロファイルがある場合は、それを使用します。brand.css からパレット、images/ からロゴとモットー、fonts/ からフォントを取得します。ブランドカラーを発明しないでください。プロファイルの NOTES.md を読んで、ブランドの形状を理解します。
  5. プロジェクトにアイコンの専用グラフィックがない場合は、MDIアイコン(@mdi/js、24×24パス)を使用します。手動でアイコンを描画したり、絵文字を使用したりしないでください。プロジェクトのウェブサイトがすでに何かにMDIアイコンを配置している場合は、動画でも同じアイコンを使用します。

4. 音声

  1. 各セリフを gen-speech.py と話者ごとに同じ --voice で生成します。
    • ユーザーがカットを承認するまでは、同じ性別の無料の声を使用します。有料モデルに関する以下の注意事項は有料パスに適用されます。
    • scripts/regen-voices.py <model> を実行します。これは、リクエストが変更された場合(テキスト、音声、モデル、設定、または同じ話者の隣接)にのみAPIにセリフを送信するため、承認されたテイクは保持されます。1つを修正するためにすべてのセリフを再生成しないでください。
    • 意図的にセリフを再ロールするには、--fresh <beat または speaker> を追加します。すべてのテイクは assets/voice/takes/ に保持されます。以前のテイクに戻すには、--restore <take> を使用します。
    • キャッシュの前に作成されたプロジェクトには、ビートごとに voice_key がありません。--adopt を付けて一度実行するか、最初の実行ですべてのセリフが再生成されます。
    • 表現力豊かなモデルでは、各セリフの前に1つの英語のオーディオタグ(例:[warmly])を配置し、モデルの安定性、類似性、スタイル、スピードのつまみを設定します。それらがないと、セリフは平坦に聞こえます。タグを line から除外します。字幕は line を表示するためです:ビートの tag フィールドに配置し、テキストの前に送信します。
    • オーディオタグを文書化していないモデルでは使用しないでください。タグが読み上げられる可能性があります。
    • すべての声について、最初に名前、外国語に見える単語、文字コードをリストします。言語コードが設定されていても、声はそれらを自身の言語の方法で読みます。最初に単語の音声スペルを試し、次にインラインIPAを試します。スペルごとに3つのテイクと1つのコントロールテイクを作成し、ユーザーが耳で選べるようにします。
    • 音を大文字で書かないでください。声は大文字を個別の文字として読む可能性があります。代わりに音を単語として書きます。
    • 新しいテイクはすべての単語を移動します。ビート内のフレームオフセット(カメラ、ハイライト、効果音)は、リテラルフレームではなく、字幕スパンの開始にキーイングします。新しいテイクの後、音声認識パスから単語の時間を取得し、スパンの開始のみをリセットします。
  2. scripts/level-voices.py を実行します。各セリフを音声ラウドネスでレベル調整します。ピークレベリングでは不十分です:セリフは6 dBに広がる可能性があります。
    • 別の言語のバージョン:シーンを保持し、同じソースから2番目のコンポジションを生成します。新しい言語に、同じビートIDを持つ独自のストーリーボード、独自の音声フォルダ、エンベロープ、音楽カットを与えます(check-audio.py の STORYBOARD、VOICE_DIR、MUSIC)。
    • 新しい声を、同じターゲットではなく、承認されたミックスの音声レベルにレベル調整します。
  3. 口のエンベロープを作成し、scripts/gen-envelopes.mjs でバンドルします。

5. Remotionでのアニメーション

  • ステージング: 各シーンをアクションとして再生します。キャラクターは歩いて入り、座り、反応し、小道具を使用します。小道具を独自のレイヤーで動かします。修正は不足している部分を追加します;原因を示すアクションは保持します。
  • カメラ: すべてのショットでプッシュイン、パン、またはトラックします。背景、キャラクター、前景の間でパララックスを使用します。 各カメラ移動を固定し、フレームを埋めなければならない各レイヤーが、パララックスの深さ(回転を含む)でフレーム内に留まるようにします。深さ < 1 のレイヤーはカメラよりも動きが少なくなります:プルアウトまたはオフセンターで終わるパンはフレームエッジを露出させ、地面の帯が見えます。
  • 深さ: 床とその上に立つすべてのもの(椅子、人、小道具)を1つのレイヤーに1つの深さで配置します。2つの深さは、カメラが動くたびに床と椅子の脚を離し、椅子が浮きます。アイドル時のうなずきは、椅子ではなく、座線より上の体を回転させます。
  • モーション: 小さなオーバーシュートを持つスプリングを使用します。動きの前に予備動作を使用します。2つのポーズ間のハードスワップは決して使用しないでください。
  • アイドル: 呼吸、揺れ、まばたきにそれぞれ独自の周期と位相を与えます。
  • 口: エンベロープから駆動し、最小ホールドは3フレーム(スターターの motion.ts の mouthStates)とします。
  • 画面外のナレーター: ナレーターの顔ではなく、エンベロープに従う波形オーブを表示します(スターターの NarratorOrb.tsx)。
  • 光: ストーリーテリングツールとして光を使用します。例えば:家の明かりが暗くなり、電話の画面が顔に光ります。
  • トランジション: カットごとに1つを選択します(マッチカット、ワイプ、ハードカット)。すべてのカットに1つのフェードを使用しないでください。
  • 1人のキャラクターは、カットを越えて1つのオブジェクトのままです。 キャラクターがあるショットから次のショットに移動するとき、古い場所から新しい場所まで画面上で運びます。片側から出て反対側から入るキャラクターは、別のキャラクターとして読まれます。
  • 視聴者が見つけなければならない変更には、音声に独自のポーズを入れます。 ビートを分割し、その後に1.5~2秒の無音を追加します。そのポーズで変更をステージングします:古い状態をマークし、暗くし、クロスフェードし、次のセリフで新しい状態をハイライトします。
    • ポーズは文の区切りに置き、フレーズの内部には決して置かないでください。レベルでギャップを見つけます:単語の後、約-38 dB(ピーク基準)未満の20 msウィンドウの最長ランを取り、その中央でカットします。音声認識の単語時間からギャップを取得しないでください:それらのエッジは0.5秒ずれる可能性があります。
  • 字幕とキーポイントカード:簡潔に保ちます。カードはシーンをサポートします。決してシーンを置き換えません。
  • フレーム — すべての動画が持っています:
    1. オープニングタイトルカード、約3秒:ロゴ(該当する場合)、動画タイトル、1行の短いテキスト。無音または音楽のみの場合があります。
    2. クロージングスライド、約4秒:ロゴ(該当する場合)、主張またはコールトゥアクション、URL。無音の場合があります。
    3. コーナーロゴ: 2つのカードの間、動画全体の右下隅に小さなロゴ。オープニングカードの後にフェードインし、クロージングスライドの前にフェードアウトします。顔や重要な要素から離して配置します。
    4. 「該当する場合」:ブランド、製品、または会社の動画にはロゴがあります。個人の動画には会社のロゴはありません。それでもタイトルカードとクロージングスライドは取得します。
    5. 完成した動画にフレームを追加するには、音声のタイミングを変更しないでください。既存のコンポジションを2つのカードの間の <Series> に配置します。カードは最初と最後に無音を追加しますが、それは許容範囲です。
  • 常にブランドを優先。 プロジェクトにブランドプロファイルがある場合は、それを使用します:プロファイルのカード、brand.css のパレット、ロゴとマークを実際のアセットとして。プロジェクトに実際のアプリのスクリーンショットがある場合は、それらをレイヤーとして使用します:実際の画面は、描かれた画面の近似よりも優れています。人物、場所、小道具のみが描画されます。UI、ロゴ、タイプはブランドから取得します。プロファイルが明らかにライブアプリに対して最新でない場合は、その旨を伝えてアプリを使用します。

6. 画像を確認する

  1. npx remotion still でキーフレームのスチルをレンダリングします。
  2. スチルを開きます。カードや字幕で覆われている顔、フレームエッジで切れているキャラクターを探します。オプションのセカンドオピニオン:ADAPTERS.md は REVIEW_IMAGE コマンドを説明しています。その判定を最終決定ではなくリードとして扱い、各発見をフレーム上で確認します。
  3. シーン、ポーズ変更、カメラ移動、ダイアログのやり取りを含む約20秒のサンプルをレンダリングします。
  4. 各ポーズ変更前後のフレームを抽出します…

[以降は翻訳のため省略]

関連スキル