WeChat 2D Render 是一个基于 Remotion 的技能,用于渲染默认的微信风格 2D 聊天动画视频。
用途 该技能面向需要生成微信聊天动画视频的用户。当用户提出微信聊天动画相关需求时,可使用此技能完成渲染。
主要能力
- 克隆或更新 GitHub 仓库 https://github.com/sxhzju/wechat-2d。
- 使用 Remotion 渲染默认的微信风格 2D 聊天动画视频。
- 支持自定义工作目录、输出路径和 Remotion props 文件。
- 默认输出为 ProRes 4444 格式,像素格式 yuva444p10le,图像格式 PNG,适合透明背景工作流。
使用方式 使用技能中的脚本 scripts/render_wechat_2d.sh。
命令格式: bash scripts/render_wechat_2d.sh [workspace_dir] [output_path] [props_file]
参数说明:
- 第一个参数 workspace_dir:当用户指定文件夹时传入;否则使用当前目录。
- 第二个参数 output_path:当用户指定输出时传入;否则使用 out/wechat-2d-transparent.mov。
- 第三个参数 props_file:当用户提供自定义 Remotion props 时传入;否则使用 shared/project/render-presets/default.json。
运行脚本并等待完成,返回脚本打印的最终绝对输出路径。
已安装技能解析: 使用已安装的技能副本,而非源仓库检出:
skill_dir="" for base in "${AGENTS_HOME:-$HOME/.agents}" "${CLAUDE_HOME:-$HOME/.claude}" "${CODEX_HOME:-$HOME/.codex}"; do if [ -d "$base/skills/wechat-2d-render" ]; then skill_dir="$base/skills/wechat-2d-render" break fi done [ -n "$skill_dir" ] || { echo "wechat-2d-render skill not found under ~/.agents, ~/.claude, or ~/.codex"; exit 1; }
bash "$skill_dir/scripts/render_wechat_2d.sh" "$(pwd)" "$(pwd)/out/wechat-2d-transparent.mov"
行为
- 如果 workspace_dir/wechat-2d 存在,则复用本地仓库;否则从 GitHub 克隆。
- 更新现有仓库时,跟踪远程默认分支(origin/HEAD)。
- 使用 pnpm install 安装依赖;如果缺少 pnpm,则通过 corepack 启用。
- 运行项目 Remotion 脚本: pnpm run remotion:ensure-browser REMOTION_OUTPUT=... REMOTION_PROPS_FILE=... pnpm run remotion:render
- 默认渲染目标是 shared/project/projectConfig.js 中的活动合成,当前为通过 ScaffoldDemo30fps 的 wechat-chat-motion 插件。
- 默认输出为 ProRes 4444,像素格式 yuva444p10le,图像格式 PNG,适合透明背景工作流。
项目说明 项目采用 scaffold/plugin 分离结构:
- preview/* 用于本地 UI 控件和浏览器预览。
- remotion/* 用于 Remotion 入口包装。
- shared/scaffold/* 用于通用运行时。
- shared/project/* 用于插件和合成注册表。
- shared/features/demoMotion/* 用于微信聊天场景。
动画状态必须每帧确定。Remotion 并行且乱序渲染帧,因此不要依赖计时器、可变游标、先前渲染或渲染顺序。
帧特定数据应在 buildSceneProps 中基于 {frame, fps, loop, sceneContext, pluginParams} 构建。
将 videoWidth 和 videoHeight 保留为布局属性;使用 props JSON 文件自定义尺寸。
要求
- git
- node
- corepack 或 pnpm
- 网络访问,用于克隆/更新和依赖安装