chat-motion-overlay について
Chat Motion Overlay は、チャットテキストやスクリーンショットから、設定可能なアニメーションオーバーレイを作るスキルです。チャット枠、アバター、デバイスフレーム、出力形式を選び、Remotion でレンダリングできるシーン一式を用意します。
主な機能
- 01チャット記録の正規化
- 02シーン設定のカスタマイズ
- 03JSON シーン仕様の生成
- 04Remotion バンドルの準備
- 05透過動画やプロジェクトの出力
活用シーン
- 01テキストからチャットオーバーレイを作成
- 02スクリーンショットのメッセージをシーン化
- 03編集可能な Remotion または Hyperframe プロジェクトの準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ nexu-io/ open-design --skill chat-motion-overlayインストール後、Claude Code で/chat-motion-overlayを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlassets/examples/chat-transcript.txtconfig-wechat-phone.jsonassets/remotion-template/package.jsonremotion.config.tstsconfig.jsonassets/remotion-template/src/chatSpec.tsindex.tsRoot.tsxassets/remotion-template/src/components/avatarLibrary.tsxBubbleScene.tsxChatMotionOverlay.tsxDeviceFrame.tsxtypes.tsreferences/config-schema.mdinput-format.mdoutput-modes.mdquestion-strategy.mdtest-matrix.mdtest-report.mdscripts/build_chat_overlay_spec.pyprepare_chat_overlay_bundle.pyrun_test_matrix.py詳細
チャットモーションオーバーレイ
ハードコードされた単一のWeChatモックではなく、設定可能なモーションオーバーレイクリップにチャットコンテンツを変換します。
ワークフロー
-
チャット入力を正規化します。
- ユーザーがスクリーンショットを提供した場合は、表示されているメッセージを
references/input-format.mdのトランスクリプト形式に変換します。 - ユーザーがプレーンテキストを提供した場合は、1つのビートにつき1メッセージを維持し、信頼性が重要な場合は原文どおりの表現を保持します。
- スクリーンショットの場合は、参加者の人数やメッセージのグループ分けを判断する手がかりとして、表示されているアバターを使います。ただし、デフォルトではアバター画像を切り抜いたり再現したりしないでください。参加者と左右の配置を推測し、ユーザーがアバターファイルを提供するか、スクリーンショットからのアバター作成を明示的に希望した場合を除き、プリセットのアバターで描画します。
- ユーザーがスクリーンショットを提供した場合は、表示されているメッセージを
-
シーン設定を選択します。
references/config-schema.mdを読みます。- バンドルを生成する前に、コンテナのスタイル、アバターモード、デバイスフレーム、ニックネームモード、出力形式を決定します。
- ユーザーから十分な情報が得られていない場合は、
references/question-strategy.mdの質問ポリシーに従います。
-
シーン仕様を作成します。
- トランスクリプトと任意の設定JSONを使って、
scripts/build_chat_overlay_spec.pyを実行します。 - スクリプトは、Remotionで直接レンダリングできる単一のJSON仕様を出力します。
- トランスクリプトと任意の設定JSONを使って、
-
レンダリング可能なバンドルを準備します。
scripts/prepare_chat_overlay_bundle.pyを実行します。- Remotionテンプレートをコピーし、
src/chatSpec.tsを挿入して、アップロードされたアバターファイルをpublic/にコピーします。
-
目的の出力をレンダリングします。
references/output-modes.mdに記載されているエクスポートコマンドをそのまま使用します。- 編集には
MOV(透明背景,可直接导入剪映 / PR / FCP 叠加)、ブラウザーにはWebM(透明背景,适合网页 / 浏览器播放)、後続の編集を続ける場合は編集可能なプロジェクト出力を優先します。
サポートされる項目
container:none、wechat、telegram、messengeravatarMode:preset、upload、mixeddeviceFrame:none、iphone-dynamic-islandnicknameMode:hidden、first-message-only、alwaysdeliveryFormat:mov:MOV(透明背景,可直接导入剪映 / PR / FCP 叠加)webm:WebM(透明背景,适合网页 / 浏览器播放)remotion:Remotion 工程(适合继续编辑和拼装)hyperframe:Hyperframe 工程(适合作为模块继续复用)json:JSON 数据(适合程序处理 / 自定义渲染)preview:预览图 / 预览工程(适合先确认效果)
出力ルール
- オーバーレイ出力では、コンポジションのルートを透明に保ちます。
- アプリの外枠なしで吹き出しのモーションのみを表示する場合は、
container: noneを使用します。 - プラットフォームのUIが演出の一部となる場合は、
container: wechat|telegram|messengerを使用します。 - アップロードされたアバターはコンテンツアセットとして扱い、レンダリングバンドル用に
public/にコピーします。 - ユーザーがアバターファイルを指定していない場合は、プリセットのアバターを優先します。スクリーンショット内のアバターは参加者の特定に役立つ場合がありますが、スクリーンショットからアバターを切り抜いたり再現したりする前に、ユーザー提供のアバターファイルを推奨します。
- 設定に基づく動作を明示し、スタイルの系統を黙って切り替えないでください。
質問ポリシー
- 質問よりも推測を優先します。
- 妥当なデフォルトを選べるだけの情報がユーザーから得られている場合は、そのまま進め、前提を明確に伝えます。
- 影響の大きい選択肢が不足している場合に限り、質問します。
- 質問は1~3項目に絞ります。
- 技術的な表現より、ユーザーにとって分かりやすい表現を優先します。
deliveryFormatについて尋ねる際は、内部的なレンダリング用語ではなく、「形式(用途の説明)」というラベルを使います。- ユーザーがこだわりはないと伝えた場合は、デフォルトで進め、結果にその内容を記載します。
リソース
- トランスクリプト形式:
references/input-format.md - 設定項目と例:
references/config-schema.md - 質問方針:
references/question-strategy.md - 出力コマンドと対象:
references/output-modes.md - トランスクリプト/設定から仕様を作成:
scripts/build_chat_overlay_spec.py - Remotionバンドルの準備:
scripts/prepare_chat_overlay_bundle.py - Remotionレンダリングテンプレート:
assets/remotion-template/
コメント
Markdown 対応