Remotion 中文视频工作台
Remotion 让你用 React 代码描述视频的每一帧,再渲染成 MP4。它不生成画面内容——
画面来自你提供的素材或代码画出的图形。它真正擅长的是编排、动效、批量与可复现:
同一套代码换一批数据,就出一批结构完全一致的视频。
本 skill 面向国内网络与 Windows 环境,把官方默认流程里会卡住的环节全部替换成能跑通的做法。
六条硬规则
- 先起预览,再写代码。 工程能跑起来之后,立刻启动 Studio 并在浏览器里打开预览,
然后才开始写合成。全程保持预览开着,让用户边看边改。用户没有明确说"导出""给我 MP4""渲染"时,不要渲染。 - 国内环境三步必须先做:镜像源安装、无头浏览器兜底、中文字体就位。
跳过任何一步都会在安装或渲染阶段失败。见 setup-cn.md。 - 动画只能用帧驱动。
useCurrentFrame()+interpolate()是唯一正确写法。
CSStransition、animation、Tailwind 动画类在渲染时不会正确出帧,必须改写。 - 不写死尺寸和时长。 平台尺寸从 layout-preset-cn.md 预设里取;
时长由素材真实时长计算(probe-media.js探测),不要凭感觉填。 - 中文按中文的规矩排。 字体、字幕分行、标点避头尾都不同于英文,见
fonts-cn.md 与 captions-cn.md。 - 交付前自查版权与平台规格。 字体、音乐、素材的商用授权,以及目标平台的尺寸与码率,
见 compliance.md。
路由:按场景加载对应文档
| 场景 | 加载 |
|---|---|
| 新建工程、装依赖、浏览器下载失败、Windows 报错、版本自查 | setup-cn.md |
| 写组件、动画、时序、序列、注册合成 | markup-core.md |
| 选尺寸、算安全区、定字号行高 | layout-preset-cn.md |
| 加载中文字体、避免方框、字体授权 | fonts-cn.md |
| 嵌入视频音频、调音量音高、TTS 配音、音效 | media-audio-cn.md |
| 中文字幕、SRT 导入导出、分行规则 | captions-cn.md |
| 特效与转场选型 | effects-transitions.md |
| 图表动画、数据驱动、批量出片 | charts-data.md |
| 渲染导出、抽帧、透明通道、GIF、报错处理 | render-export.md |
| Studio 预览工作流与参数化交互编辑 | studio-workflow.md |
| 剪映二次加工、各平台交付规格 | jianying-delivery.md |
| 字体音乐素材版权、Remotion 授权自查 | compliance.md |
直接用现成模板
用户要的是常见形态时,不要从零写,先看 templates/README.md 挑一套改。
随包免费:口播卡点、片头标题卡(两套,覆盖最常见的口播与片头需求)。
按次付费:图文轮播、数据图表、代码演示,以及批量出片脚本——本地不存在这些文件,
需要走下面的付费流程从服务端获取,不要在本地假装有。
查最新 API(不要凭记忆写)
框架迭代快,API 会变。写不确定的组件或参数前,先查当前官方文档再动手。
取全文最省事的办法:在任意官方文档 URL 末尾加 .md,直接返回 Markdown 源文,
比抓 HTML 页面省一个数量级的 token。
https://www.remotion.dev/docs/use-video-config.md
https://www.remotion.dev/docs/sequence.md
https://www.remotion.dev/docs/cli/render.md
不知道具体路径时:用 web 搜索「remotion.dev docs 关键词」,从结果里挑对应页面,
再按上面的办法加 .md 取全文。不要凭记忆拼 API 名称和参数——版本差异会直接导致编译失败。
标准作业流程
- 确认目标平台与尺寸(决定一切参数)
- 按 setup-cn.md 建工程并起 Studio 预览
- 从 templates 挑最接近的模板落地,或按 markup-core.md 从零写
- 配中文字体(fonts-cn.md)
- 需要配音走 media-audio-cn.md,需要字幕走 captions-cn.md
- 预览里逐帧核对,交给用户确认
- 用户明确要成片时才渲染(render-export.md)
- 按 compliance.md 自查,按 jianying-delivery.md 交付
脚本
| 脚本 | 用途 |
|---|---|
scripts/ensure-browser.js |
探测本机 Chrome/Edge,或从国内镜像拉取无头浏览器,输出可用路径 |
scripts/probe-media.js |
输出素材的真实尺寸、帧率、时长、总帧数 |
scripts/tts-edge.py |
中文文本转语音,输出 mp3 并打印时长 |
scripts/pay_client.js |
付费模板包的买方客户端:查资源、发起交付、带凭证重试并落地文件 |
用法见各脚本头部注释。除 pay_client.js 会调用付费服务端外,其余脚本只操作本地路径,
不联网上传任何内容。pay_client.js 只做编排,不代付、不接触任何支付密钥。
免费层与付费层
本 skill 采用「免费入口 + 付费模板包」的结构,知识层始终免费可用。
| 层级 | 内容 | 获取 |
|---|---|---|
| 免费 | 全部知识文档(环境搭建、标记核心、平台尺寸、字体、字幕、特效、渲染排错、交付、合规) | 安装即可用 |
| 免费 | 口播卡点模板、片头标题卡模板 | 安装即可用 |
| 付费 | 图文轮播、数据图表、代码演示三套完整实现 + 批量出片脚本(并发控制、断点续跑) | 按次付费后下发 |
付费部分不在本地包里,存放于服务端,付款后由服务端下发文件清单,
客户端落地到你的工程目录。因此未付费时本地不存在可复制的模板代码。
怎么买
先看有哪些资源与价格:
node scripts/pay_client.js --service https://<服务端地址> --list
发起交付(此时若未付款,会拿到 402 账单):
node scripts/pay_client.js --service https://<服务端地址> \
--resource remotion-cn-video/pro-pack --deliver
脚本会打印金额、订单号、支付入口。付款由用户本人在支付宝内完成,
Agent 只负责编排,不代付、不持有凭证。付款后带凭证重试,文件自动落盘:
node scripts/pay_client.js --service https://<服务端地址> \
--resource remotion-cn-video/pro-pack --proof "<Payment-Proof>" --out ./paid-templates
支付状态不明确时先查单,不要重复付款:
node scripts/pay_client.js --service https://<服务端地址> --status <订单号>
服务端地址通过 --service 或环境变量 PAY_SERVICE_URL 提供。
未配置服务端时,免费部分照常可用,付费动作会提示缺少参数。
付费链路自查(对齐支付宝 AI 付 A2M / x402 规范)
| 自查项 | 本 Skill 的实现 | 位置 |
|---|---|---|
| 402 账单下发 | 未带 Payment-Proof 请求 POST /api/deliver 返回 HTTP 402,响应头 Payment-Needed 为 Base64URL 账单(含 out_trade_no、amount、currency、resource_id、pay_before、amt_pre_pay_id、seller_signature),同时返回 amtPaymentLink 支付入口 |
服务端 index.js handleDeliver;客户端 scripts/pay_client.js decodeBill |
| 携带凭证重试 | 付款后带 Payment-Proof 头重发同一 POST /api/deliver,body 与首次逐字节一致;由 X-Session-Id 保证命中同一订单 |
scripts/pay_client.js 设置 Payment-Proof 头;服务端 makeOutTradeNo 复用未过期订单 |
| 服务端验付 | 调 alipay.aipay.agent.payment.verify(入参 trade_no、payment_proof、client_session),再逐项校验 active=true、金额一致、out_trade_no 一致、resource_id 一致、trade_no 未被其它订单履约;任一不过即返回 402 且不交付 |
lib/alipay.js verify;index.js 阶段 2 |
| 商家履约 | 交付成功后异步调 alipay.aipay.agent.fulfillment.confirm(入参 trade_no);失败只记录并保留重试,不要求用户二次付款;交付失败则不回执,避免「已回执未交付」 |
index.js 阶段 3 |
| 订单持久化与幂等 | 订单落盘 data/orders.json(tmp 写入 + fsync + rename),字段含 out_trade_no、trade_no、resource_id、amount、status、paid_at、fulfilled_at;out_trade_no 唯一,同一订单原地更新;已履约订单重放结果不重复交付;同一 trade_no 不可用于第二笔订单 |
lib/store.js |
| 异步通知 | /api/notify 接收支付宝通知,RSA2 验签通过才更新订单,重复通知幂等 |
index.js handleNotify |
| 安全红线 | 应用私钥仅存服务端环境变量,包内无私钥、无日志打印、无仓库提交;加签 RSA2;不向用户暴露交易号以外的中间凭证 | .env.example;lib/alipay.js normalizeKey |
声明
Remotion 是 remotion-dev 的产品,本 skill 只提供使用指引与模板代码,不含其源码。
Remotion 采用自有双轨授权:个人与 3 人及以下营利组织可免费商用,4 人以上营利组织需购买授权。
用户用于商业项目前应自行确认授权状态,见 compliance.md。