Communitygithub.com

skill-motion

コードで15秒~4分の映画や動画を制作し、MP4にレンダリングします。ストーリーモード(キャラクター、コミック調、ナレーション、音楽、効果音)とコマーシャルモード(実商品・ウェブ撮影、リズム、約束)の2つのモードを備えています。ElevenLabsで音声と音楽を生成し、Deepgramで結果を確認、コマ送りシートで映像をチェックします。

skill-motion とは?

このスキルは、コードを使って短編アニメーション映画や動画(15秒~4分)を制作し、MP4として書き出すためのものです。制作者はJavaScriptで各フレームの描画(`seek(t)`)、音声・音楽・効果音を合成したオーディオトラック、そして最終的なMP4レンダリングを行います。作業時間は約2時間、ElevenLabsの利用料はわずか数セントで、フレーム単位の修正が可能で、オフラインでもプレゼンテーション内でライブ実行できます。 2つのモードがあります。**ストーリーモード**はキャラクター、コミック調、ナレーション、音楽、効果音を使って感情に訴えかけ、挨拶や招待に適しています。**コマーシャルモード**は実際の製品やウェブサイトを撮影し、リズムと約束事を重視したデモ、広告、Reels、販促動画に最適です。ElevenLabs APIで音声と音楽を生成し、Deepgram APIで音声認識により結果を確認します。さらに、コマ送りシートを目視でチェックすることで、レンダリング前に品質を保証します。 このスキルはClaude CodeやCursorなどのコーディングエージェント向けに設計されており、ユーザーが「映画」「ショート」「アニメ動画」「トレーラー」「解説」「コマーシャル」「製品デモ」「Reels用動画」「あの動画みたいなやつ」といったリクエストをした際に自動的に呼び出されます。ユーザーが直接スキル名を指定しなくても動作します。 仕組みの核は技術そのものではなく、**語ることはすべて真実である**、**推測ではなくDeepgramで確認する**、**レンダリング前にコマ送りシートで目視確認する**という3つの習慣にあります。Claudeは動作中に動画や音声を直接確認できないため、これらが「目」と「耳」の役割を果たします。

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

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

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

ドキュメント

skill-motion: コードで作るアニメーション映画

この形式の映画は、あらゆるフレームを <canvas> に描画するJavaScriptファイル(seek(t))、 サウンドトラック(banda.mp3:音声+音楽+効果音)、そしてその2つを合成したMP4レンダリングで構成されます。 作業時間は約2時間、ElevenLabsの費用はわずか数セント、フレーム単位で修正可能で、 インターネット接続なしでプレゼンテーション内でライブ実行することもできます。

2つのモード。 ストーリーモード(キャラクター、コミック調またはソフト調、感情に訴える)と コマーシャルモード(実商品、リズム、約束、購買意欲を促す)があります。 開始前にどちらかを決めてください。「マーケティング」「コマーシャル」「プロ」「デモ」「クライアントに見せる」 などの言葉があれば、references/promo.md を読み、assets/motor-promo.js を使用します。

リクエストエンジン参照ファイル
誕生日、家族、招待、キャラクター登場のストーリーmotor-base.js(コミック調)または motor-suave.js(ソフト調)guion.md、chispa.md
コマーシャル、ウェブ/アプリのデモ、購入者向け動画、Reelsmotor-promo.js + filmar_web.pypromo.md
技術的なルック、ドキュメンタリーカメラ風のブランド・ローンチmotor-tech.jsmotor-visual.md セクション9
傾く地図、実ウェブなしで飛び回るカメラmotor-3d.jschispa.md
数値やメカニズムの説明:寸法、ラベル、読み上げ、テクニカルイラストmotor-acotaciones.js(他のエンジンと併用)motor-visual.md セクション12
3Dシーンを周回・移動するカメラショットmotor-3d.js 末尾の Orbita3Dmotor-visual.md セクション13

これを機能させているのは技術ではなく、3つの習慣です。語ることはすべて真実である、 推測せずにDeepgramで聴く、レンダリング前にコマ送りシートで見る。 Claudeは動作中に動画を見たり音声を聞いたりできません。これら2つの確認手段が、Claudeの目と耳の役割を果たします。

必要なもの

Node 18以降、Python 3、ffmpeg、Chrome。音声と音楽用にElevenLabsアカウント(ELEVENLABS_API_KEY)。 結果を「聴く」ためにDeepgramアカウント(DEEPGRAM_API_KEY、オプション)。詳細は INSTALAR.md を参照。

各ファイルの場所

必要なものファイル
スパーク:"良い"ではなく"すごい"を生み出すためのチェックリスト(脚本の前に読む)references/chispa.md
コンセプト、試したスタイル、フレーズ、声の割り当て、タイムシートreferences/guion.md
音声、音楽、効果音、ミックス、Deepgramで聴くreferences/sonido.md
描画エンジン、キャラクターとポーズ、コミック調スタイル、構図ルールreferences/motor-visual.md
レンダリング、軽量版、プレゼンテーション、公開、gitreferences/entrega.md
.jsの出発点:コミック調またはソフト調assets/motor-base.js(コミック調)、assets/motor-suave.js(ソフト調、年齢を重ねるキャラクター付き)
動画を表示するページとコマ送りシートassets/pelicula.html、assets/hoja.html
プレゼンテーション内の動画(スライド+コントローラー)とビルダーassets/pelicula-en-presentacion.html、assets/construir.py
スクリプトscripts/(キー、音声、音楽、ナレーション、効果音、ミックス、Deepgram、レンダリング、軽量版)
含まれるCC0効果音sfx/(クレジットは sfx/LICENSES.md)
Canvas上の擬似3D(傾く地図、飛び回るカメラ、ネオンの床)assets/motor-3d.js
ブランド・ローンチ向け「テック&プロ」スタイル:ドキュメンタリーカメラ(HUD)、フォーカスフレーム、アラート、スキャン、インターフェースカード、ダッシュボード、グリッド床assets/motor-tech.js と references/motor-visual.md セクション9
プロ向けコマーシャル、プロダクトデモ、16:9、9:16、1:1フォーマットreferences/promo.md、assets/motor-promo.js
GPUを使用したフレーム単位の実ウェブ撮影assets/filmar_web.py
クライアントブリーフとフレーム範囲指定付き固定ストーリーボード(コマーシャル描画前)assets/brief-cliente.md、assets/storyboard-plantilla.md、references/promo.md
弧を描くカーソル、クリック、タイピング、バウンス入力、オフセット、ドリフト、カメラプッシュ。コマーシャル内のポインター移動はすべて弧を描き、クリック前に一時停止(cursorPro)。直線移動は禁止。motor-promo.js(cursorPro、cursor、tecleo、entra、escalonar、deriva、empuje)、references/motor-visual.md セクション11
セーフゾーン、ベクターインターフェース、「レンダリング前に確認する」チェックリスト、磨き上げバンクreferences/promo.md
一行レビュー用の DATOS ブロック内のスクリプト数値。音声なしレンダリング。references/entrega.md セクション11
スクリプト注釈([VISUAL]、ポーズ)、画面上の数字とその単語references/guion.md セクション8
プロポーション付きショット語彙、時間の凍結references/chispa.md
BPM測定と小節に基づく音楽の並び替えscripts/pulso.py、scripts/cortar_musica.py、references/sonido.md セクション13
テストセグメント、部分ごとの組み立て、再レンダリング不要の新しい音声references/entrega.md セクション8
製品変更により納品済みの映画を修正するreferences/entrega.md セクション10
本人の声による挨拶とフライヤー付き招待references/sonido.md セクション9、references/entrega.md セクション7

プロセス

手順を順に実行します。各手順には、次の手順に進む前の確認工程があります。

0. 今、動画を作るべきか? 動画がビジネスの数値(利益、価格、顧客数、納期)を伝える場合、脚本を書く前にそれらの数値の公式な情報源が存在しなければなりません。2つの異なる数値を出すモデルがある場合、または数値が議論中の場合、動画は作成しません。その旨を伝え、代わりにスプレッドシートを開いて話し合うことを提案します。動画は2時間の労力を要し、見た人の頭の中に一つの数値を固定します。詳細は references/guion.md セクション9を参照。

1. コンセプト(相手と一緒に)。 モード(上記)を決定。まず references/chispa.md:破るルールのあるフォーマット、ひねり、個人名、再登場するキャラクター、そして「すごい」瞬間。誰に向けて、何を感じてもらうか、尺、どこで見せるか。3つのコンセプトを、それぞれ2~3文とテキストプレビュー、トーン(試したスタイルは references/guion.md にあり)で提案します。相手がアイデアを出した場合は、それを忠実に実行します。リクエストの各要素が一つのシーンになります。

2. 主張内容の検証。 動画が製品について述べることはすべて、そのコード内で確認します。コードにないことは述べません。コードにあっても無効化されていることは、述べ、その旨を相手に通知します。これはまだ存在しないビジネスやプロジェクトでも同様です。各数字は GUION.md に情報源とともに事実、仮定、提案として記録し、「保証」「既存」「数秒で」「法令遵守」「価格」など、責任を伴う言葉は、決定済みでどこかに文書化されている場合のみ使用します(references/guion.md セクション9)。

3. 脚本。 動画フォルダ内の GUION.md:相手からのテキストリクエスト、音声、音楽、秒、話者、フレーズ、映像をまとめた表。フレーズは短く、1トラックに1つ、スペイン語(中立)、長いダッシュは使用しません。

4. 音声。 source scripts/llaves.sh と scripts/voces.py frases.json を実行。Deepgramで聴き、--solo で失敗したものを再作成。ナレーションが相手のボイスメモの場合は、フレーズはありません:references/sonido.md セクション9と10を参照。

5. タイミング。 scripts/armar_narracion.py <inicios> --total <s>:フレーズ間に余白と、映像だけが語る隙間を設けます。Deepgramから palabras.json(各単語の秒数)を取得して同期します。

6. 音楽。 シーンに沿ったセクションごとの計画(scripts/musica.py);scripts/pulso.py で拍と音量を測定。セクションが別の場所に当たった場合は、scripts/cortar_musica.py で並び替えます。

7. ミックス。 含まれているCC0効果音ライブラリ(sfx/)および合成効果音(scripts/efectos_sinteticos.py)、scripts/mezclar.py efectos.json で -16 LUFS に。確認: oir_con_deepgram.py --comparar ナレーション単体とトラック全体を比較:単語の欠落がないこと。欠落がある場合は、その秒に鳴っている効果音を下げるか、音楽に隙間を開けます。

8. 描画。 コマーシャルの場合、最初にブリーフと固定ストーリーボード(assets/brief-cliente.md)、そして製品を撮影(references/promo.md)。スタイルに合ったエンジン(assets/motor-base.js コミック調、assets/motor-suave.js ソフト調、または assets/motor-promo.js コマーシャル)を mi-pelicula/pelicula.js としてコピーし、グローバル名を変更し、タイムシートに従ってシーンごとに関数を記述。assets/ から pelicula.html と hoja.html(.jsとグローバルの名前を変更。別のフォントを使用する場合は追加)。キャラクターは汎用的にし、実在の人物は描かない。

9. コマ送りシート。 source scripts/preparar_render.sh と node $R/render.mjs pelicula.html fotos.png --stills ... を1シートあたり9フレーム、全編にわたって実行。確認し、隠れている、切れている、小さい、ずれている、読めない箇所を修正(典型的なエラー一覧は references/motor-visual.md にあり)、再度確認。コマーシャルの場合、SEGURAS=1 でセーフゾーンを描画し、promo.md に「レンダリング前に確認する」チェックリストがあります。

10. レンダリング。 node $R/render.mjs pelicula.html <path>.mp4 30 1 6 をバックグラウンドで実行。MP4を動画フォルダにコピー。scripts/liviano.sh でメッセージングで送信できる軽量版を作成。軽量版の1フレームを確認。スタイル変更が大きい場合は、まずセグメントを再作成し、そのセグメントのみをレンダリングして相手に動きを見せます(references/entrega.md セクション8)。音声のみ変更の場合はレンダリングせず、新しいトラックをミュート動画に結合します。

10.b 動画のテキスト確認。 scripts/revisar_texto.sh <path>.mp4 'word1|word2':最終MP4上で毎秒1フレームのOCRを実行し、製品から削除された各単語を確認(tesseract が必要)。ボタンのテキストは動画ファイルに保存されます。製品の語彙が変更された場合は、再撮影と再フィルムが必要です(references/entrega.md セクション10)。

11. 納品。 シーンごとの要約、確認内容、相手の決定事項を含むMP4。同じ動画からフライヤーを作成可能(references/entrega.md セクション6と7)。プレゼンテーションに入れる場合:data-peli スライド、コントローラー、フォント、construir.py、そしてブラウザでのテスト。

12. 保存。 スクリプト、.js、ページ、音声mp3とjsonをgitに追加(wavとmp4は除外)。フォルダのLEEMEにセクションを追加。

譲れないルール

  • 真実: 製品や実在の人物についての嘘は禁止。デリケートな話題(転倒、健康)は控えめに、誠実な小さな文字で。
  • キー: 環境変数から llaves.sh で読み取り、決して出力したりファイルに書き込んだりしない。
  • 著作物の複製禁止: 有名な映画のトーンをリクエストすることは可能(「Upのように」「スーパーヒーロートレーラー風」)ですが、そのキャラクター、シーン、音楽、名前を決して使用しない。
  • 時間純粋性: seek(t) はステートレス、Math.random() の代わりに rng を使用、setTimeout は使用禁止。あるフレームが前のフレームに依存すると、レンダリング結果がライブ表示と異なります。
  • 動画は一つの数値を固定する: 数値の公式情報源なしに動画は作成しません。各動画はその状態(ドラフト、承認済み、誰が見たか、どのバージョンか)をフォルダの LEEME に記録し、第三者が見た後に再作成された場合は、どの数値が変更されたかを相手に通知します(references/entrega.md セクション12)。
  • 推測ではなく測定: 「音が良い」「見た目が良い」は、Deepgramとコマ送りシートでの確認後にのみ言えます。

参考時間(1分の動画の場合)

脚本と音声20分。タイミング、音楽、ミックス20分。描画40~60分。コマ送りシートと修正20分。レンダリングと軽量版5分。プレゼンテーションと公開15分。映像修正は通常の工程です。各動画には5~10の修正があります。ウェブから撮影した97秒のコマーシャル:レンダリング48秒、モーションブラー込みで3分。レンダリング後に修正が入った場合は、再レンダリングします。

アプリが途中で終了した場合

重要なもの(音声、.js、スクリプト)はすでに動画フォルダにあり、レンダラーは ~/.cache/skill-motion-render 内の preparar_render.sh で自動的に再構築されます。長時間のタスクの前に、どのステップにいたかをメモしておいてください。

関連スキル