Communitygithub.com

Bang Motion — ウェブ用モーショングラフィック(スライドではない)

ブラウザ上でシネマティックなモーショングラフィック(プロモーションビデオ、オープナー、イントロ、バンパー、キネティックタイポグラフィ、説明ビデオなど)を、HTML + CSS + GSAP(+必要に応じてThree.js)を用いて構築します。まるで本物のビデオのように動き、プレゼンテーションスライドではありません。ユーザーが「プロモーションビデオ」「オープナー」「イントロアニメーション」などを依頼した際に使用します。

Bang Motion — ウェブ用モーショングラフィック(スライドではない) とは?

このスキルは、AIコーディングエージェント(Claude Code、Cursor、Codexなど)向けに設計されており、ブラウザベースのモーショングラフィックを構築するための包括的なルールとレシピを提供します。単なるスライドショーではなく、ビデオのような動きを実現することに重点を置いています。このスキルは、シネマティックなオープナー、プロモーションビデオ、キネティックタイポグラフィ、バンパー、イントロ、そしてナレーションに同期した説明ビデオなど、様々なタイプの作品をカバーしています。出力は単一のHTMLファイルであり、最新のブラウザとCDN(GSAP、フォント)のみが必要です。Python、Node.js、ffmpegはオプションであり、サーバー提供、フレームエクスポート、オーディオ同期などの特定のタスクにのみ使用されます。このスキルは、「スライドのような」構造(複数のセクションをフェードイン/アウトする、1つの画像に1つの文、Ken Burnsエフェクトのみ、3段階のテキスト階層など)に対して厳格な禁止事項を設けています。代わりに、カメラの動き(プッシュスルー、ウィップパン)、連続的なアクション、統一されたビジュアルワールド、そして各作品独自のテーマに基づいたスタイルガイドラインを重視しています。また、スタイルの盗用を防ぐために、プロジェクトごとに明確なスタイル概要(テーマ、カラーパレット、フォント、モーションランゲージなど)を定義することを推奨しています。ランダム性を排除した決定論的なアニメーションが求められ、すべてのビジュアルはGSAPタイムラインの時間に基づいており、フレーム単位でのレンダリングとスクラブが可能です。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/TaherZiad/montage-crew/tree/HEAD/skills/montage-crew/references/external/bang-motion

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

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

ドキュメント

Bang Motion — スライドではないウェブ用モーショングラフィック

v1.19.0 · Bang Tutorial 作 · MIT. 変更履歴は CHANGELOG.md にあります。 セットアップ方法は README.md にあります。

このスキルは、あらゆるAIコーディングエージェント(オープンなAgent Skills形式)向けです。 ここには、スライドプレゼンテーションではなく、ビデオのように動くモーショングラフィックのためのルールとレシピが含まれています。コードを書き始める前に従ってください。

前提条件 — ブラウザのみ

成果物(index.html)は、最新のブラウザとインターネット(CDN経由:GSAP、フォント)のみが必要です。PythonとNodeはオプションであり、scripts/serve.py(キャッシュなしサーバー、ローカルモジュールを使用する場合のみ必要)、puppeteer(スナップショット/自動検証用、scripts/export-frames.mjs → MP4)などのツールにのみ使用されます。ユーザーがこれらを持っていない場合でも:(1) 単一ファイルをビルドし、ダブルクリックで開きます;(2) ?debug=1(スクラブパネル)による視覚的な検証と、主要な秒数ごとの手動スクリーンショット;(3) 画面録画(OBS / ブラウザタブの録画)によるMP4 — 画面録画ではフレームが落ちる可能性があること、フレーム単位のレンダリングにはNodeが必要であることを説明してください。視聴のために npm install が必要な成果物を作成してはいけません。

ffmpegもオプションです。 まず確認してください(ffmpeg -version)。存在しない場合:

要件ffmpegありffmpegなし
VO同期(文/段落境界)silencedetectscripts/vo-pauses.html — ブラウザで開き、オーディオを選択し、SEG/PARA をコピーします。結果はまったく同じです(Web Audio、インストール不要)
オーディオの長さ/形式ffprobevo-pauses.html からの DUR の数値。ブラウザは wav/mp3/m4a/ogg を直接再生します
MP4へのエクスポートexport-frames.mjs からのPNGを結合MP4は不可 — ワンコマンドインストール(winget install Gyan.FFmpeg / brew install ffmpeg)または画面録画を提案
リファレンス動画の調査(フレーム抽出)fps= + tile=ユーザーに主要な秒数のスクリーンショットを送信してもらうか、ブラウザで動画を開き、特定の秒数でキャプチャ

ffmpegがなくても、説明ビデオのワークフローはVO同期まで完全に完了します。MP4のみインストールが必要です。

プレーヤー — なし、自動再生、ループ

デフォルトの成果物:画面上にパネルやプレーヤーは一切なし、開いたらすぐに再生、終了したら最初からループ(onComplete → play(0)。音声がある場合は、音声もループします)。隠しコントロール:Rキーでリスタート、Spaceキーで一時停止。スクラブパネル/タイムコードは ?debug=1(レビューツール)でのみ表示され、?clean=1 はエクスポートのために自動再生を抑制します。音声がある場合:直接 play() を試みます。ブラウザにブロックされた場合、フレーム0で停止し、最初のクリックで開始します — 「タップして開始」というテキストはありません。これは両方のスターターに組み込まれています。

構造上の禁止事項 — 機械的にチェック可能なPPTテスト

他のモデル(そしてあなたも、疲れているときは)は、以下のルールを読んだ後でも、このパターンに陥ります。提出する前に、感じではなく、コードをチェックしてください:

  1. grep -c "class=\"scene\"\|\<section" index.html — 3つ以上のシーンが <section> として存在し、autoAlpha/opacity でオン/オフされる場合 → それはスライドデッキです。シーンは、世界/カメラが動く(カメラの移動、別のコーナーへのウィップ、プッシュスルー、背景の変更)ことで変化するべきであり、セクションがフェードアウトすることによってではありません。正当な例外:ステージアニメーション(references/kartun-panggung.md)は、ステージ間で96ピクセルのカット/スライドを使用します — 各ステージが完全に生きている(10個以上の動くオブジェクト)ため、許可されます。静止画像をフェードするのとは異なります。

  2. 持続する視覚的な赤い糸があります:1つの被写体(連続アクション)または、カメラが辿る1つのコラージュ/ペーパー/ホワイトの世界(アニメーション、写真、カタログ、スケッチ)。フルブリードの写真が共通の世界なしで次々と切り替わる → PPT。1つの画像+シーンごとに1文、シーンごとに切り替わる → カメラが動いていても、依然としてスライドショーです:各シーンには、フレーズごとに段階的に登場する3〜5個の要素が必要です(explainer.mdの「1シーン = 3〜5要素」)。

  3. シーンごとにテキストノードを数えます:アイブロウ/キッカー+タイトル+本文/クレジット = 3つのレベル → PPT。最大2つ:1つの数字/大きな文+1つの世界ラベル。3行以下の短いドキュメント/スタンプ/日付ブロックは、オブジェクトとしてカウントされ、テキストレベルではありません。

  4. ケンブルス効果(写真で1.0→1.05へのスケール)のみが動きの場合 → PPT。毎秒の動きは、スタイル概要から選択された背景の動きの言語(techniques.md §7c メニューから)に由来する必要があります(テクスチャのある背景でのカメラの呼吸、グラデーションの移動、浮遊するブロブ、生きているグレイン、セグメントごとの光のスイープ、ゆっくり回転する大きな形状、上昇するパーティクル、呼吸するグリッド、動くゴーストテキスト、ケンブルス+パララックス…)。横に移動するバー/ライン/ストリップ(「lane」「range」「streak」「水平パーティクルレイン」)は、異なる名前で2つの連続プロジェクトですでに使用されています — それはデフォルトではありません。テーマがスピード/フローである場合にのみ使用し、2つの連続プロジェクトでは使用できません。

  5. すべてのカットでフェード+スケールバンプ+ライトリークのみのトランジション → PPTテンプレート。別のコーナーへのウィップ、インストルメント(マップ/スピードメーター/プロファイル)へのカット、プッシュスルー。

  6. 説明ビデオは、そのスタイルのスターターから始めます:starter-explainer-kartun、-jurnalisme、-katalog、-sketsa(コラージュモード:カメラが静止アセットを辿る)、starter-explainer(連続アクション:世界が流れる)、またはstarter-explainer-panggung(ステージアニメーション:シーンごとに1つのステージ、ジョイントリグ、カメラはステージ内のみ)。コラージュは1つのリグ。ステージは別のリグ。assets/starter-opener.html(テキストオープナー)からではありません。また、ゼロからでもありません。

  7. ミニチュアはスライドです。 カメラのズームが1.08未満で、家が親指の大きさになり、空の地面が画面の半分を占める → すべてが動いていてもPPT。世界は、探索される1つの大きなマップではなく、フレームサイズのステージに分割されます(kartun-panggung.md ルール1)。

  8. テンプレートフレームワーク(オープナー/プロモーション)。 ランダウンとコードを確認します:最初のシーンは、拡大されて左に消えるテキスト。3つの整列した機能タイル/カード。入力/検索バーに入力。フック → 機能 → 機能 → 約束 → ロゴ → CTAの順序。コンセプトの要求なしに2つ以上のテンプレート → テンプレート。新しい外観でも同様。references/opener-konsep.md からフレームワークを再選択してください。

1つでも失敗した場合は、ユーザーに見せる前に作り直してください。

カバーされる仕事の種類

このスキルは、一般的なウェブ用モーショングラフィックのためのものです。説明ビデオはタイプの1つにすぎません — 構造が異なるため、独自のドキュメントがありますが、主要なものではありません。

スターターはカテゴリに応じて名前が付けられています:starter-opener.html はオープナー、プロモーション、バンパー、イントロ、キネティックタイポグラフィ用。starter-explainer-*.html は説明ビデオ用で、モード/スタイルのサフィックスが付きます(-kartun、-jurnalisme、-katalog、-sketsa = コラージュ。サフィックスなし = 連続アクション。-panggung = ステージアニメーション)。ステージアニメーションは説明ビデオのモード(スタイル6)であり、独自のカテゴリではありません:目的は依然としてVOで説明することであり、制作方法が異なるだけです。

タイプ一般的な長さ特徴レシピ
オープナー / 製品プロモーション25–40秒メニューからの1つのコンセプト(フレームワークは標準的な順序ではなく製品から生まれる)、1つの特別な瞬間、ブランドクロージングreferences/opener-konsep.md + 以下のワークフロー + references/techniques.md
バンパー / アイデンティティ / ロゴスティング3–8秒ロゴのビルドオン、1つのシグネチャームーブ、視聴者が気付く前に終了techniques.md(ロゴビルドオン、ライトリーク)
イントロ / アウトロ(チャンネル)5–12秒チャンネル名 + 毎回同じシグネチャームーブ以下のワークフロー
キネティックタイポグラフィ / 歌詞15–60秒テキストが主役。単語/文字ごとに分割。リズムはオーディオに従うtechniques.md(スプリット+方向性ブラー、単語ごとの3Dパン)
タイトル / ローワーサード / セグメントバンパー2–6秒フッテージ上の小さな要素。クリーンに入退出。透明背景techniques.md
説明ビデオ30–90秒ソースのある事実、登場するエンティティ、変化する視点、5つのスタイルreferences/explainer.md + スタイルごとのスターター

説明ビデオとキャラクター:ショットを決める前に読むこと

フラットなキャラクター教育アニメーション(6番目のスタイル、ステージアニメーション)の説明ビデオ、またはスライドショー/ミニチュアのように感じられるリビジョンの場合は、references/kartun-panggung.md を読んでください:シーンごとに1つのステージ、ズーム1.08–1.95、ステージ内で連続、ステージ間は96ピクセルのカット/スライド、手動トランスフォームによるジョイントリグ、キャプションなし、明るいフラットパレット。文、ビジュアルビート、フレーミング、ステージの切り替えを区別してください。After Effectsで直接構築するには、references/ae-bridge-higgsfield.md を読んでください。この説明ビデオの特別なガイドラインは、以下のオープナーのルールを明確にします。フォント、シーン数、エフェクトの例は、普遍的なレシピではありません。

ルール #1 — これはビデオであり、スライドではない

最も一般的な問題:モデルがシーンをスライドのように構成する — タイトル+サブタイトル+本文+バッジの列。これはすぐに「PPT」と認識され、拒否されます。

厳格なルール:

  • オープナーの場合:シーンごとに1つの短い文+最大1つの主要オブジェクト。 キッカー(「01 — 機能」)、サブタイトル、説明段落、機能チップ/バッジ、または技術的なメタデータ(パッケージ名、長いURL)はありません。使用中の製品のUIの一部であるチップ、ボタン、ラベルは含まれません。
  • 新しい情報 = 新しいビジュアルレスポンス。 説明ビデオでは、関連性がある場合は同じ世界内で状態/アクションを変更します。文の変更は必ずしもショットの変更を必要としません。
  • 箇条書きはビジュアルに置き換えられ、自動的に3つのタイルにはなりません。 references/opener-konsep.md の機能メニューから方法を選択します(1つの機能をデモ、単語の変化、オブジェクトの変形、カードのシャッフル、グリッドタイル…)。連続する2つのオープナーは同じ方法を使用してはいけません。
  • シーンは生きている必要があります。 カメラは、オブジェクトがアクションを運んでいる間は静止できます。何かを追跡または明らかにするためにカメラを動かします。静止した背景の上でテキストをフェード/スライドさせたり、すべてのセグメントでパン/ズームを繰り返したりすることに頼らないでください。
  • 「ズームイン-アウト」=ショットのサイズであり、カメラの呼吸ではありません。 ビデオが静的であると感じられる場合、またはユーザーがズームを要求した場合、カメラはストーリーテリング要素に近づき(ミディアムクローズアップ/クローズアップ)、コンテンツのビートに従ってワイドに戻ります。数パーセントの呼吸はほとんど目に見えません(techniques.md §3b)。

シーンをデザインする前に references/anti-ppt.md を読んでください — 実際の違反とその修正のリストが含まれています。

ルール #2 — 決定論的であるか、死んでいるか

システムクロックを読み取るコード行は1つもありません。すべてのビジュアルは tl.time()(GSAPタイムライン時間)の純粋な関数です:スペクトル、ランニングナンバー、パーティクル、カメラの震え(高周波サイン波、Math.random() ではない)、「流れる」オブジェクトの位置(距離のトゥイーン、フレームごとの速度の累積ではない)。結果:スクラブはAfter Effectsタイムラインのように正確であり、フレーム単位のMP4レンダリングは毎回同一の画像を生成します。

ルール #3 — スタイルはテーマから生まれ、スターターやリファレンスからではない

よくある失敗:別の製品のオープナーが、以前の製品のオープナーとまったく同じスタイル(暗い、青のアクセント、グロー、星雲、同じフォント)で作られる。これは、モデルがスターターからスタイルを取得するためです。アニメーションは素晴らしいかもしれませんが、それでも失敗です:オープナーは製品の顔であり、2つの製品が同じ顔を持つことはできません。

  1. コードの前にスタイル概要を作成します。 スターターに触れる前に、次の6行を書き、シーンのランダウンとともにユーザーに示します:
    • テーマ/製品 + 残したい感情を表す3つの形容詞;
    • コンセプトと構造の指紋(オープナー/プロモーション):references/opener-konsep.md からの3つのコンセプト候補、製品に基づいて1つを選択、次に「コンセプト · シーン数 · 各シーンの主要オブジェクト · オープニング · クロージング」;
    • パレット:ブランド/テーマ(ロゴ、アプリアイコン、サイト、パッケージ)からの1つの主要色、1つの背景色、1つのアクセント色 — 各色のHEXとソースを記載。ブランド以外の色は「派生:理由」と記載;
    • 感情に合った個性のあるディスプレイフォント(Poppins/Inter/Roboto/Montserrat/Arial以外)+ コンパニオンフォント。例外:コンセプト「主張 → 方法 → 結果」は、製品自身のUIフォントを使用します(references/opener-konsep.md);
    • テキストの強調:強調なし、または1つの形式の強調(指定する) — 強調はオプションであり、すべてのオープナーにデフォルトではありません;
    • セグメントごとの背景の言語:「スタイルの方向」テーブルからの1つの方向をすべてに使用、または変更計画(どのセグメントが、何に、なぜ、何によってトリガーされるか);
    • シグネチャームーブメント:アイデンティティとして繰り返される1つのタイプの動き(オブジェクトワイプ、単語ごとの3Dロール、飛ぶ紙、描く線、端にぶつかるカラーブロック…);
    • 背景の動き:techniques.md §7c メニューからの1つの言語 — シグネチャームーブメントと同じではなく、「横切るオブジェクト」が自動的ではありません;
    • 背景サーフェス:§7d メニューから(グラデーション/ライト/テクスチャ/グレイニーグラデーション、2層以上) — フラットではありません;
    • オブジェクトレンダリングスタイル:techniques.md §7e メニューからの1つのファミリー(フラット、クレイ、グロッシー、ガラス、アイソメトリック、リアリスティック、ネオンライン…);
    • 写真アセット(コンセプトが人物/場所/製品の写真を使用する場合):そのソース — ユーザーの写真、MCP Higgsfield経由で生成、またはライセンスされたストック — ユーザーに質問し、幕ごとのショットリスト(references/opener-konsep.md「オープナー内の写真」);
    • トランジション:どの境界にエフェクトが必要で、どの境界がカットで十分かを決定。コンテキストに応じて §4c メニューから選択。2つのタイプまたは3Dが必須ではありません;
    • 1つの特別な瞬間(最も高価なエフェクトが1回だけ使用される場所)。
  2. スターターはアーキテクチャであり、スタイルではありません。 assets/starter-opener.html のグレーの色、システムフォント、WebGL背景はプレースホルダーです。そのいずれかが結果にまだ見えている場合、スタイルは適用されていません。WebGL背景(星雲、ダスト、グリッド、ブルーム)は8つの背景言語の1つにすぎません。他のスタイルの方向性の場合はオフにします。
  3. リファレンス = リズムであり、外観ではありません。 リファレンスビデオから取得するもの:ショットごとの長さ、トランジションのタイプ、アテンションの階層、エネルギー、モーションの言語。取得しないもの:パレット、フォント、テクスチャ、レイアウト、装飾の形、文、シーンの順序、ユニークな瞬間(特徴的なオープナー/クロージング、1回限りのギミック)。「これのように作って」は「このエネルギーで」を意味します。

[不正なカットにより、以下は省略されました]

Individual skills in this repo

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

TaherZiad/montage-crew

Cut silences and dead weight (fillers, repeated takes, false starts) out of a talking-head video BEFORE building the edit - call the measured /auto-trim API instead of hand-rolling ffmpeg, review the dead-weight candidates it returns, and do the one job only a human/AI can do (spotting repeated POINTS). Read this when the brief enables "Tự động cắt ngắn video" (autoCut) or the user complains that the video still has dead weight/silences.

TaherZiad/montage-crew

Agent 2 of the video editing pipeline. Finds and removes spoken mistakes — stutters, repeated words, false starts, and retakes (re-recorded lines) — from a talking-head recording. Use after cut-silences, when asked to cut mistakes, remove stutters / repeats / filler restarts, clean up flubs, or keep the best take. Works review-gated: it proposes every cut with context and a reason for approval, then renders only the approved cuts via ffmpeg. Requires a word-level transcript.

TaherZiad/montage-crew

Arabic short-video editor (any dialect). Edits talking-head videos and screen recordings, or builds an MG-led video from an idea with no footage - retakes and silences cut, Arabic RTL captions and hook, premium motion graphics, SFX, music, -14 LUFS master, cover - for 9:16, 16:9 or both. Delivers the MP4 plus a project for Resolve, Premiere, After Effects, CapCut or Final Cut. Asks a few questions on first use, keeps the user's brand kit, offers style cards, learns styles from videos, links and MG sites the user shows it, and learns the user's rules after each video. Use when the user asks to edit a video («منتجلي هذا الفيديو», «سوّي مونتاج», «أضف ترجمة», «قص الصمت», «بستايل …», "edit my video"), make a video from an idea («ما عندي فيديو، عندي فكرة», «فكرة فيديو عن…»), learn a style («تعلّم من هذا الفيديو», «هذا الموشن يعجبني»), save a brand («احفظ هويتي», «اقترح لي هوية») or change settings («غيّر إعداداتي»).

関連スキル