Chat Motion Overlay 用于将聊天内容转化为可配置的动态叠加视频片段,而非单一硬编码的微信模拟画面。
用途
该工具面向需要将聊天记录以动态视频形式呈现的场景,例如视频编辑中的聊天叠加层、演示素材制作等。它支持从用户提供的聊天记录文本或截图中提取消息,并生成可配置的动画片段。
主要能力
- 输入处理:支持截图或纯文本。截图时提取可见消息为记录格式;纯文本时保持每条消息为一个节拍,并在需要真实性时保留原文。
- 场景配置:可选择容器样式(none、wechat、telegram、messenger)、头像模式(preset、upload、mixed)、设备边框(none、iphone-dynamic-island)、昵称模式(hidden、first-message-only、always)以及交付格式。
- 规格生成:通过脚本 build_chat_overlay_spec.py 将记录和可选配置 JSON 转换为 Remotion 可直接渲染的单一 JSON 规格。
- 工程包准备:通过脚本 prepare_chat_overlay_bundle.py 复制 Remotion 模板、注入 src/chatSpec.ts,并将上传的头像文件复制到 public/。
- 渲染输出:支持多种交付格式,包括 MOV(透明背景,可直接导入剪映/PR/FCP 叠加)、WebM(透明背景,适合网页/浏览器播放)、Remotion 工程(适合继续编辑和拼装)、Hyperframe 工程(适合作为模块继续复用)、JSON 数据(适合程序处理/自定义渲染)、预览图/预览工程(适合先确认效果)。
使用方式
- 规范化聊天输入:根据截图或文本提取消息,推断参与者和侧边,默认使用预设头像渲染,除非用户提供头像文件或明确要求从截图生成头像。
- 选择场景配置:阅读 references/config-schema.md,决定容器样式、头像模式、设备边框、昵称模式和交付格式。信息不足时遵循 references/question-strategy.md 中的提问策略。
- 构建场景规格:运行 scripts/build_chat_overlay_spec.py,传入记录和可选配置 JSON。
- 准备可渲染工程包:运行 scripts/prepare_chat_overlay_bundle.py。
- 渲染目标输出:使用 references/output-modes.md 中的确切导出命令。
适用场景
- 视频编辑中需要聊天叠加层,且希望透明背景便于后期合成。
- 需要不同应用风格的聊天容器(微信、Telegram、Messenger)作为故事一部分。
- 需要设备边框(如 iPhone 灵动岛)增强真实感。
- 需要可编辑的工程文件以便进一步调整或复用。
限制
- 截图头像默认不裁剪或重建,仅作为识别参与者的线索;推荐用户提供头像文件。
- 配置驱动的行为需明确,不静默切换样式系列。
- 提问策略:优先推断,其次提问;仅询问缺失的高影响选择,问题数量控制在 1-3 个;使用面向用户的措辞而非技术术语;若用户表示不关心,则使用默认值并注明。
- 输出规则:叠加输出保持合成根透明;独立气泡动画使用 container: none;当平台外壳是故事一部分时使用 wechat|telegram|messenger;上传的头像作为内容资产复制到 public/。
资源
- 记录格式: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/