Communitygithub.com

site-motion

アニメーション化されたWebサイトアセット(ヒーローイメージ、機能紹介、プロダクトUIマイクロストーリー、アイソメトリックシーン、2.5Dシーン、3Dオブジェクト、アプリウィンドウコンポジット、物理・生成ビジュアル)をSVG、Canvas、CSS 3D、WebGLで作成し、ライブ埋め込み可能なHTMLとフレーム正確なMP4、WebM、アニメーションWebP、GIF、ポスターPNG、ソーシャルカットとしてエクスポートします。

site-motion とは?

site-motionは、アニメーション化されたWebサイトアセットを作成するための高度なAIエージェントスキルです。ヒーローセクション、機能紹介、プロダクトデモループ、3Dロゴ、ブランドカラーでのUIアニメーションなど、Webサイト上に表示するあらゆる種類のビジュアルやモーションを生成できます。このツールは、デザインシステムのトークン(色、タイポグラフィ)のみを使用して、SVG、Canvas、CSS 3D、WebGLレンダラーでシーンを描画します。すべてのシーンは「時間の純粋関数」であり、同じ`t`に対して常に同じフレームを生成するため、Webサイトでのライブ再生とフレーム正確なビデオ出力の両方をシームレスに実現します。Node.js 22+、Chrome、ffmpegを前提とし、60以上の定義済みシーンアーキタイプ(アイソメトリックブロック、カードストーリー、ウィンドウスタック、リーダーボードなど)を提供し、プロジェクト全体のアニメーションプランを作成する`plan`機能も備えています。

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

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

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

ドキュメント

site-motion は何をしますか?

Proとマークされたシーン、またはこれらのノートに名前が記載されているがscenes/に存在しないシーンは、site-motion Proシーンです。ノートに書かれていることを参考に学習し、ここにあるシーン(site-motion list)から構築してください。

シーンとは時間の純粋関数です。render(t)は、以前の状態に関係なく、同じtに対して常に同じフレームを描画します。この1つのルールにより、同じファイルがWebサイトでライブ再生されると同時に、フレーム正確にビデオにレンダリングできる理由が生まれます。エクスポーターは単にすべてのフレーム時間にシークしてスクリーンショットを撮るだけです。

リポジトリルート:このファイルを保持するフォルダ(git clone https://github.com/Shivraj97/site-motion ~/.claude/skills/site-motionでインストールするか、クローンをそこにリンクしてください)。Node 22+、Chrome、ffmpegが必要です。npm installは不要です。任意のプロジェクトから、フルパスでCLIを実行します。ビルドとレンダリングはそのプロジェクトのout/に出力され、--tokens / --contentはそのプロジェクトからの相対パスを取ります:

SM=~/.claude/skills/site-motion/bin/site-motion.mjs
node $SM init card-story --tokens ledger          # プリセットから./brand.jsonと./card-story.jsonを書き出して編集可能に
node $SM make card-story --tokens ./brand.json --content ./card-story.json --out public/motion/story.html

シーンをプロジェクトのソースに直接追加してチームが編集できるようにするには、makeの代わりにaddを使用します。scene.js、scene.css、content.json、tokens.jsonをpublic/motion/<scene>/(またはpublic/がない場合はmotion/<scene>/)にコピーし、プレーヤーとベンダーライブラリをruntime/にコピーし、シングルファイル埋め込み用の<scene>.htmlを書き出します。コピーされたフォルダは、build、render、makeで有効なシーンとして機能します:

node $SM add ledger-stamp --tokens ./brand.json --content ./ledger.json          # → public/motion/ledger-stamp/ + ledger-stamp.html
node $SM make public/motion/ledger-stamp --tokens public/motion/ledger-stamp/tokens.json --formats png,sheet

リポジトリ内では短い形式も機能します:

node bin/site-motion.mjs list                                   # シーンとトークンプリセットを表示
node bin/site-motion.mjs make iso-blocks --tokens mint          # ビルド + mp4、webp、ポスターをレンダリング
node bin/site-motion.mjs make card-story --tokens ./brand.json --content ./my-story.json --formats mp4,webm,webp,gif,png,sheet
node bin/site-motion.mjs build window-stack --tokens night --out public/hero.html   # ライブ埋め込みのみ
node bin/site-motion.mjs render out/hero.html --formats mp4 --scale 2 --range loop        # 既存のビルドをエクスポート

出力はout/<content>-<tokens>/に出力されます。--range loopはシームレスループのみをエクスポートします(GIFとWebPのデフォルト)。fullはイントロと1ループです(MP4とWebMのデフォルト)。sheetは4×3のコンタクトシートを書き出します。常に1つ作成して確認してください。

ワークフロー

サイト全体(複数のセクションやページ)は、1つのシーンからではなく、計画から始まります。 プロジェクトでnode $SM planを実行します:

  • セクションがわかっている場合は--brief brief.mdを指定します。これが最良の入力です。サイトの実際のコピーからブリーフを記述します:
    # Acme: 製品の機能を1行で
    ## home
    - hero: ヒーローの見出し
    - feature: 各機能セクションの見出しとその下の1行
    ## pricing
    - hero: …
    
  • または--url https://their-site.com[,https://their-site.com/pricing]を使用して、ライブページの見出しを読み取ります;
  • または何もない場合は--pages home,features,pricing --about "…"を使用します(汎用的な選択肢であることを明記します)。

各セクションを1つのシーンにマッピングし、各シーンを1回だけ使用し、すべてのルックを統一します。ルックはホームヒーローのもので、site-motion.jsonに固定されます。site-motion-plan.pngを描画します:すべてのセクションをブランドとルックでのシーンのフレームとして表示し、スコアの判定を上部に重ねます。ユーザーにシートを表示し、plan applyの前に承認を得てください。

  • ?とマークされた選択肢は、強い一致がありませんでした。そのノート(「ledger-stampの方が適しているが、home.heroで使用中」)を読み、スワップするか(plan swap <slot> <scene>)、より適切なシーンを再利用するか、そのストーリーに適したシーンがライブラリにないことをユーザーに伝えます。
  • 弱い選択肢に対して、その旨を伝えずに適用しないでください。

plan applyはすべてのシーンを追加し、各セクションの埋め込みコードを出力します。次に、各シーンのコピーをcontent.jsonに記述し、syncを実行し、最後にscore --projectで完了します。

単一のシーンの場合は、以下の手順に従います。

  1. まずデザインシステムを入手します。 トークンは色とタイポグラフィの唯一の情報源です。次の順序で見つけます:プロジェクトのトークン/テーマファイル(CSS変数、Tailwind設定、tokens.json)、次にライブサイト(計算されたスタイルを測定)、最後に質問します。それらをtokens/<brand>.jsonとして記述します(以下に形状を示します)。パレットが存在する場合は色を決して発明せず、h.mix(a, b, p)を使用してトークンからシェードを導出します。
  2. 製品のストーリーを伝えるアーキタイプを選択するか、新しいシーンを記述します:
    シーン伝えるストーリーレンダラー
    iso-blocksインフラ、プラットフォーム、「多くのパーツが連携する」:タイル張りの床の上に、面にライブデータを持つブロックSVG
    card-story作業を削減するワークフロー:機能リストがプロダクトカードを状態遷移させるDOM
    window-stack「あなたの作業環境で動作する」:ペイントされたCanvasの背景の上にアプリウィンドウ、エージェントがステップを実行Canvas + DOM
    live-room Proマルチプレイヤー:アプリウィンドウ上の名前付きカーソル、提案、可決する投票、出荷される変更、アクティビティティッカーCanvas + DOM
    leaderboardクレジットとステータス:貢献が行に着地し、ポイントがカウントアップされ、行が並べ替えられるDOM
    bloom-flow自動化:イベントがワークフローグラフを実行し、各ステップがジェネレーティブな花に咲くCanvas + SVG
    signal-field乱雑 → 構造化:ノイズの多いストランドがゲートを通過し、クリーンなレーンとして出てくるp5.js
    drop-pile多数 → 一つ:作業アイテムが実際の物理演算で1つのトレイに落下し、カウンターが集計するMatter.js(ベイク処理)
    galton-routerルーティング、承認、A/Bテスト:支払いがペグボードを落下し、ルールがスイッチを切り替え、フローが最適なビンに移動SVG(シード付きランダムウォーク)
    receipt-printer乱雑 → 構造化:ドキュメントがスロットに供給され、レシートが抽出された各フィールドとその信頼度を印刷DOM + SVG
    score-sheetオーケストレーション、マルチエージェント:楽譜として書かれた実行、各エージェントが作業中に五線が振動SVG
    css3d-stackアーキテクチャ、レイヤー:CSS 3Dの実際のHTMLボックスが分離し、リクエストが落下CSS 3D
    loom多数 → 一つ、統合:各ツールは縦糸の帯で、1つの綾織りに織り込まれ、製品のビームに巻き取られるCanvas 2D
    domino-run自動化、トリガー:1つのボールがステップにグループ化されたドミノの連鎖を倒し、波が到達するたびに各ステップが点灯Matter.js(ベイク処理)
    weather-board信頼性、フェイルオーバー:ステータスマップの1つのリージョンに嵐(シェーダー雲、雨、雷)が発生し、トラフィックが迂回され、0件の失敗リクエストで晴れるWebGLシェーダー + DOM
    ledger-stamp承認、コンプライアンス、信頼:支払いがインデックス付きベルトをポリシースキャナー、APPROVEDスタンププレス、署名・シールプレスを通過し、監査証跡に至る;制限を超えたものはHELDとスタンプされ、2番目の承認者を待つSVG + DOM
    grain-tallyメトリクス、スケール:数千のグレイン(それぞれ実際のイベントの固定バッチ)がダストリングとして呼吸し、合計の数字に注ぎ込まれ、次にソースごとに1つのバーに正確なカウントでソートされる;数値はデータから構築され、カウントアップされないCanvas 2D(パーティクル、純粋t)
    lens-of-order乱雑 → 構造化、分類、見るAI:漂うブロブ(未理解)の1ビットディザフィールド;虫眼鏡が各ブロブをクラスカラーで塗りつぶし、輪郭を描き、信頼度でラベル付けし、フェードする色付きの軌跡を残すCanvas 2D(セル単位フィールド、ベイヤーディザ)
    water-slide-funnelコンバージョンファネル:ライダーがステージごとに1つのスロープを滑り降りる;各縁のプールがそのステージの離脱をキャッチSVG
    gold-pan Pro入力しながら検索:キーストロークごとにパンが回転し、3つの価格付きナゲットが残るまで続くCanvas 2D
    museum-heatmap Proプロダクト分析:訪問者の足跡が、人々が立ち止まる機能の周りの床を暖める;ランキングは熱から来るCanvas 2D
    cell-divisionデータベースブランチング:メインがブランチに分割され、1つが破棄され、1つが変更とともにマージされるCanvas 2D(メタボール)
    scratch-off Pro予測:航空会社の掲示板が追いつく前に、実際の出発時刻からホイルが削り取られるCanvas 2D
    sieve-tray Pro早期発見:マーカーが細かいメッシュを落下する;キャッチされた少数は持ち上げられてフラグが付けられるMatter.js(ベイク処理)
    rube-goldberg Proビフォー / アフター:レシートマーブルが5つの古い仕掛けで詰まり、その後1つのシュートを2つ目の仕掛けで落下SVG
    language-balloons Proローカリゼーション:8つのスクリプトの言葉のバブルが浮上し、各ロケールの文を組み立てる(RTL含む)Matter.js(ベイク処理)
    balloon-deploy Proデプロイ:各ビルドステップがエンベロープを膨らませる;100%でリリースが離陸SVG
    pufferfish Proオートスケーリング:フグが各トラフィックウェーブに合わせて膨らむ一方、固定容量の魚は投げ飛ばされるSVG
    gear-tiers Pro料金:キャンプキット(テントからベースキャンプまで)として描かれたプラン、月間/年間トグル付きSVG
    permission-chessboard Proロールと権限:各ロール駒がボードに着地し、使用可能なマスのみを点灯SVG
    tree-rings年間レビュー:年ごとに1つの年輪、その年の忙しさに応じた幅、初めての出来事のノッチ付きSVG
    parchment-changelogチェンジログ:スクロールがリリースごとに1つずつ展開され、各々が出荷時にインクで描かれるSVG + DOM
    moving-boxes移行:手押し車が古いツールのボックスを新しい建物に運び込み、何も失われないSVG + DOM
    privacy-pebbles ProPII編集:スクイージーがすべての個人情報を同一の小石に変える;文はまだ読めるSVG + DOM
    ant-trail Pro自動分類:アリが各スワイプのレシート、メモ、承認を正しい台帳スロットに運ぶCanvas 2D
    sunrise-payroll Proグローバル給与計算:日の出が8つのタイムゾーンを横断し、各都市をその9時に支払うSVG
    whiteout Pro静けさ:忙しいダッシュボードが霧に溶け、唯一重要な数字を残すWebGLシェーダー + DOM
    ink-flood Proテーマ設定、ホワイトラベル:ペイントチップが製品全体を新しいカラースキームに染めるSVG
    integration-deck Pro統合:各ツールは1つのアイソメトリックマクロパッドのキー;ワークフローがコードとして再生され、実行ログが各ステップをタイプするThree.js
    margin-rails Pro来歴:メモが自身を書きながら、過去のファイルから転載された箇所がソースを命名するレールに乗ってスライドインSVG + DOM
    pigeonhole-wallメモリ:ドキュメントがラベル付けされた pigeonhole にファイルされ、リクエストが必要な3つのソースを引き出すSVG + DOM
    redline-front Pro契約レビュー:レビューフロントがドキュメントをスイープダウンし、検証済みの権限を持つ完成したredlineとして返すSVG + DOM
    step-rail仕組み、オンボーディング:トークンが番号付きのステップを移動;各カードがそのステップで生成されたものを開き、最後のステップが結果を着地させるSVG + DOM
    pipeline-boardワークフロー、パイプライン:カードがかんばんボード上で列ごとに進み、カウントと合計がそれに従うDOM
    account-healthリテンション、カスタマーサクセス:ヘルステーブルが月を再生;1つのアカウントがリスク状態に陥り、プレイブックが発動して回復SVG
    split-wipeビフォー / アフター、統合:仕切りが散在する手作業をスイープし、各断片が1つのプロダクトサーフェスにスナップDOM
    roadmap-railロードマップ、マイルストーン:Todayマーカーが時間軸を歩く;出荷されたマイルストーンが埋まり、主要なローンチがカードに開くSVG
    trust-ringsセキュリティ、コンプライアンス:リクエストがデータの周りの同心円状の制御リングを通過;許可されていないものが停止され、ログに記録されるSVG
    balance-scale料金、品質とコスト:3つの天秤皿、各傾きはスコアから計算;我々のものは品質に傾くSVG
    crate-discrepancy照合:トレイが木箱から持ち上げられ、梱包明細をチェックオフ;不足しているトレイがノートとともに浮上SVG + DOM
    press-qaテスト、CI:ビルドがプレスからロールオフ;アームがテストに失敗したものをシュートに弾き、再実行で合格SVG
    radar-sweep可観測性:実行中のすべてのジョブがレーダースコープ上のブリップ;カーソルが届き、失敗したジョブを一時停止Canvas 2D + DOM
    agent-checkoutプロダクトUIデモ、エージェント支払い:購入リクエスト、マスクされた仮想カードが自動入力、限度メーターが金額分移動、レシートがリストに追加DOM + ui-kit
    click-to-doneプロダクトUIデモ、任意の1アクション機能(招待、送信、承認、公開):ブラウザフレーム内の実際の画面、カーソルがタイプ、選択、クリック、カメラが結果にズームインしてズームアウトDOM + ui-kit
    dashboard-pushプロダクトUIデモ、分析とレポート:ヘッドラインの数字がチャートの描画とともに構築、カーソルがツールチップをスクラブ、カメラが重要な瞬間を押し込み、範囲スイッチがすべての系列を変形DOM + SVG + ui-kit
    phone-stackプロダクトUIデモ、モバイルと通知:アラートがロック画面に信号リングとともに着地、タップで最新のものがアプリ画面に開き、スワイプでクリアDOM + ui-kit
    shot-demoスクリーンショットからのプロダクトUIデモ:顧客自身のスクリーンショットをフレーム内に;カーソルが実際のフィールドに入力し、実際のボタンをクリック、値がブランドのフェースで変化、スポットライトとコールアウトが結果に着地DOM + スクリーンショット + ui-kit
    integration-deckは3D標準です:1つの触覚オブジェクト、1つの物理アクション、フラットなトーン風バンド、インクの輪郭、真のアイソメトリックカメラ、ブランドのタイプでのラベル。その他のThree.jsオブジェクトシーン(オービットハブ、ソーティングウォール、押し出しロゴ、glTFショーケース)は、再加工されるまで公開セットの外にあります。3Dツール(vendor/three-full.min.js、`ve…

(以下、元のSKILL.mdはここで途切れていますが、翻訳可能な部分をすべて翻訳しました。)


site-motion Proシーンは、planコマンドでサイト全体のアニメーションマップを作成する際に特に有用です。まずnode $SM planを実行し、計画を立ててからplan applyを実行することで、一貫性のあるアニメーション体験を構築できます。

関連スキル