Communitygithub.com

ページリール作成

ローンチ投稿、LinkedIn更新、チームレビュー用の短いページアニメーション動画が必要な場合や、スクロール駆動ページの画面収録がカクつく、タイミングが合わない、表示してはいけないものが映り込む、ミュートフィードで再生されない場合に使用します。

ページリール作成 とは?

このスキルは、Webページの実際のアニメーションを高忠実度でキャプチャし、編集可能なショート動画(リール)を生成するためのものです。従来の画面収録では発生しがちな、カクつき、タイミングのずれ、不要な要素の映り込みを防ぎ、ミュート環境でも意図した動きを伝えることができます。Chrome DevTools Protocol(CDP)のスクリーンキャスト機能を利用してリアルタイムのアニメーションをフレーム単位で記録し、計測に基づいたスクロールパス設計とフレーム分析により、無駄のないスムーズな動画を実現します。対応プラットフォームとしては、Claude CodeやCursorなどのAIエージェント環境での利用を想定しており、提供されたJSON計画から自動でキャプチャを行うスクリプト(video/capture.mjs)や、フレーム間の変化を分析するPythonスクリプト(video/analyze.py)が含まれています。このスキルの核心は「実際のアニメーションを再現せずに記録し、感覚ではなく測定で編集する」という原則にあり、結果として信頼性の高いプロモーション用映像やレビュー用資料を作成できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/igal-commits/landing-page-skills/tree/HEAD/skills/making-a-page-reel

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

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

ドキュメント

ページリールの作成

概要

ページにはすでに最良の映像、すなわち実際に動作するモーション自体が存在します。 作業は、それを忠実にキャプチャし、パスを選択し、結果を検証することです。

中核となる原則: 実際のアニメーションを記録し、決して再現しない。編集は感覚ではなく、測定に基づいて行う。

ページの録画はウォークスルーです。そのように伝えてください。ブランドフィルムは別の仕事であり、ストーリーボードに沿ったデザイン・アニメーション化された映像です。このスキルは「私たちが構築したページがどのように見え、動くか」を伝えるためのものです。

録画前に決定すること

  • リールが証明すること。 一文で。「新しいページは設計通りに自己構築され、スクロールする。」
  • どのバージョンを撮るか。 実際にリリースされ、レビュー環境に公開されているバージョンを録画すること。 まだリリースされていないバージョン(未発表のプロダクトページ、ドラフト)や、変更途中のプロトタイプは決して録画しないでください。ステージング環境を録画し、ローカルビルドは使用しないでください。
  • フォーマット。 16:9の1920x1080がネイティブなデスクトップキャプチャであり、最も安全です。チームがQAしていないポートレートレイアウトを勝手に作成しないでください。
  • 長さ。 短く。15〜20秒でページ全体の機能を示せます。5秒で1つの動きを示せます。リールに何が必要かを判断してください。
  • 表示してはいけないもの。 顧客のロゴ、名前入りの引用、サードパーティのマーク、プレースホルダーテキスト、壊れた画像、未発表の主張。今すぐリストを作成してください。
  • 解像度。 1080pでレビューすること。カットが承認されるまでは4Kマスターをレンダリングしないでください。

ステップ1: 実際のアニメーションを記録する

フレームごとのスクリーンショットではなく、ChromeのCDPスクリーンキャストを使用してください。GSAPのスクロールスクラブ、スムーズスクロール、Canvasのトレイル、タイマー付きイントロはすべて実時間で実行されます。これらを1フレームずつステップ実行すると動きが変わります。

Page.startScreencast  format jpeg, quality 100, maxWidth = viewport width, everyNthFrame 1

Appleシリコン搭載のラップトップでは、約60フレーム/秒(中央値ギャップ16.7ミリ秒)を実現します。

  • ロードタイムイントロ: スクリーンキャストを開始し、その後ページをリロードして、イントロが録画に含まれるようにします。リロード前のフレームはトリミングします。
  • スクロール: キーフレーム [秒数, 位置] からスクロールを駆動します。位置を単調3次補間(オーバーシュートなし、ホールドはフラットを維持)で補間し、各値をスムーズスクロールライブラリの scrollTo(y, { immediate: true, force: true }) で適用します。これにより、ページ自身のスクラブとスムージングが、読者の場合とまったく同じように動作します。ページの要素を決して手動でアニメーション化しないでください。
  • 非表示にする、削除はしない: ロゴや引用には visibility: hidden を使用し、固定レイアウトをそのまま維持します。display: none はレイアウトをずらします。
  • クロック: ページ内で開始時刻を取得します(performance.timeOrigin + performance.now())。これにより、スクロールキーフレームとスクリーンキャストのタイムスタンプが同じクロックを共有します。
  • リサンプリング: 一定のフレームレートにリサンプリングします。出力フレーム k は、k / fps の時点またはそれ以前の最新のスクリーンキャストフレームを表示します。

video/capture.mjs は、このリポジトリ内にあり、小さなJSON計画から上記のすべてを実行します。

ステップ2: 測定によってパスを選択する

感覚で選んだスクロールパスは、デッドゾーン(ホイールを動かしても画面に変化がない範囲)を残します。これらを見つける方法:

  1. 全範囲をゆっくりと一定速度でスイープした録画を1回行います。
  2. その録画に対して video/analyze.py を実行します。フリーズしているラン(同一フレームの連続)と、フレーム間の最大変化量を報告します。
  3. フリーズしているランをスクロール位置にマッピングします。それらがデッドゾーンであり、すばやく通過します。
  4. スクロールスクラブされる瞬間(円が成長する、カードが構築される、カウンターがカウントする)には、ゆっくりとした読みやすい範囲を与えます。スクラブされるシーンはスクロールに追従するため、待機しても完了しません。
  5. 時間ベースのアニメーションは、しきい値を超えたときに開始され、完了に実時間を必要とします。最後のアニメーションが完了するまでクリップを終了しないでください。

次に、整形されたパスで実際のテイクを録画し、再度 analyze.py を実行します。ピン留めされたシーン内の短いフリーズランはホールドであり問題ありません。しかし、動きの途中での0.4秒のフリーズは問題です。

キャプチャ自体の健全性を確認します。使用するパート内のスクリーンキャストフレーム間の最大ギャップが約40ミリ秒未満である必要があります。これより大きいギャップはヒッチ(途切れ)であるため、再録画してください。

ステップ3: 完成した映像を選ぶ

コミットする前に、0.5〜1秒ごとにコンタクトシートを確認してください。以下は却下します:

  • 空のカード、壊れた画像、画像があるべき場所に表示されている代替テキスト
  • CMSリスト内のプレースホルダーコピー
  • ページが描画される間の最初の1秒が空白であるもの。見出しが上昇し始める位置でトリミングします。
  • 「表示してはいけないもの」リストにあるものすべて

セクションが未完成の場合は、それを除外し、所有者に伝えてください。壊れたカードをフィーチャーしたリールは、公開バグレポートになります。

ステップ4: カラータグを付けてエンコードする

./encode.sh <framesDir> out.mp4 <firstFrame> <frameCount> 60

スクリーンキャストフレームはフルレンジBT.601 JPEGです。エンコードはこれらをリミテッドレンジBT.709に変換し、ストリームにタグを付けるため、プレイヤーが推測する必要はありません:

scale=in_range=full:in_color_matrix=bt601:out_range=tv:out_color_matrix=bt709,format=yuv420p
libx264 -crf 14 -preset slow -x264-params colorprim=bt709:transfer=bt709:colormatrix=bt709:fullrange=off
-movflags +faststart

yuv420p と +faststart により、どこでも再生でき、即座に開始できます。結果を検証するには、数フレームをデコードしてソースと ピクセル単位 で比較します。チャンネル平均を比較しないでください。数百万のfloat32値を平均すると、存在しない色味を生み出すのに十分な誤差が蓄積されます。チャンネルあたり約3レベル以内であれば、忠実であると言えます。

ステップ5: 動画をQAする

  • ファイルから読み戻した、持続時間、フレームレート、サイズ、カラータグ
  • 1秒ごとのフレームを目視確認し、さらに通常速度でのトランジションも確認
  • 選択したフレームだけでなく、すべてのフレームにロゴ、名前、プレースホルダー、バナー、壊れた画像がないこと
  • フレーム内にCookieバナーや同意ウィジェットがなく、クリックもされていないこと。ページの独自CSSで非表示にするか、それらが表示されない環境で録画すること
  • 最初のフレームがフックとなること。ページが空白で描画される場合は、それをトリミングすること
  • ページが完全で静止している、スクロール中のフレームではないポスターフレームを選択すること

その後、reviewing-page-design のコールドレビューアゲートを実行してください。

ステップ6: 検証できなかったことを明記する

音声(もしあれば。「聞こえません」)、プラットフォーム独自の再圧縮、テストしていないデバイスで表示されるもの。

デザインリールが求められる場合

すべてのビジュアルが時間の関数であるレイアウト内にページ映像を構成します(閉形式スプリング、1ビートに1つのオーバーレイアイデア、2〜5語のキャプション、ブランドカラーは名前とエンドカードのみ)。同じルールが適用されます。ページウィンドウは決して覆われず、テキストは360ピクセル幅で読め、ペイオフは最低1.2秒間保持されます。

レッドフラグ

  • スクロール駆動ページのフレームごとのスクリーンショットキャプチャ
  • 変更途中のプロトタイプや、リリースされていないページの録画
  • 未完成のセクションを含むリール
  • フレーム内の顧客ロゴや名前入りの引用
  • 事前のスイープなしに感覚で選んだスクロールパス
  • チャンネル平均による色比較
  • カット承認前の4Kレンダリング

Individual skills in this repo

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

関連スキル