Youni Motion 是一套面向中文露脸口播的 Agent Skill。它以 SRT 为时间骨架,通过普通中文指令完成字幕初剪、字幕精调、场景切分、动画方案、逐场生成和视频渲染,交付完整画面的 Review MP4,以及为真人叠加保留安全区域的 Alpha MOV。
它解决什么问题
露脸口播动画不仅要“让元素动起来”,还要让字幕语义、物体出场、关系建立、人物位置和最终交付保持一致。Youni Motion 把这些要求放进同一套生产流程,让创作者可以用“分析当前场”“修改开头”“继续下一段”“渲染最后一场”这样的自然语言持续推进,而不用管理内部场次编号和质量凭据。

核心原则
- 用户可以说“分析当前场”“修改开头”“继续下一段”“渲染最后一场”,不需要填写内部场次编号、审批凭据或工作流状态。
- SRT 初剪和精调只修改文字,不改变任何已有时间码。
- 唯一匹配直接执行,真实歧义才提问。
- 中间场使用完整画布;开场、尾场和单场项目同时支持 Review MP4 与透明 MOV。
- 默认中央人物安全区域为
x=690, y=108, width=540, height=760,允许项目配置。
真实输出与交付
同一个场景实现会沿同一时间轴生成两种交付:Review MP4 保留完整背景和字幕,用于逐场确认;Alpha MOV 移除背景和字幕,并保留中央人物安全区域,用于后期叠加真人。

安装 Skill
把整个仓库复制到 Codex Skills 目录:
cp -R youni-motion ~/.codex/skills/youni-motion
之后可以用 $youni-motion 明确调用,也可以直接描述 SRT 口播动画任务触发。
中文指令怎么用
Youni Motion 按语义理解用户意图,不要求逐字复述固定口令。为了让第一次使用的用户也能直接操作,这里把指令分成三层:基础控制词用于限定读写边界,六阶段专业模板用于明确输入、能力、输出和停止位置,连接词用于承接最近且唯一的上下文。下面的专业模板可以直接复制,但不是执行门禁;语义等价的自然语言同样有效。

1. 基础控制词
| 用户意图 | 可以说 | Skill 的行为边界 |
|---|---|---|
| 只读分析 | 分析一下当前内容、定位一下问题 |
只检查和解释,不生成、不覆盖文件 |
| 限定修改 | 只修改当前场、只改这段字幕 |
只修改语义唯一的目标,不扩展到其他场景 |
| 继续当前流程 | OK,进入下一步 |
只承接最近且唯一的上下文;存在歧义时才询问 |
2. 六阶段专业标准指令
每条专业指令都包含:调用的能力、当前输入、实际操作、禁止事项、交付结果和暂停位置。
第 1 阶段|SRT 初剪(youniSrtCut)
使用 $youni-motion,只执行 youniSrtCut:读取当前原始 SRT 和可用口播素材,修正确认无误的术语、错字、重复、口误和赘词,标出建议删除的真人口播片段;不修改任何已有 cue 时间码,也不代替用户删除真人视频。输出初剪 SRT 和剪辑核对清单后暂停。
人工交接: 用户依据核对清单在剪映删除对应真人视频片段,然后重新导出 SRT。重新导出的文件是第 2 阶段唯一时间依据;文件尚未产生时,不进入 SRT 精调。
重新导出后可以说:
我已经在剪映完成真人视频初剪并重新导出 SRT。使用 $youni-motion,只检查并登记我刚提供的 SRT 作为后续时间依据,不执行字幕精调;完成后暂停。
第 2 阶段|SRT 精调(youniSrtRefine)
使用 $youni-motion,只执行 youniSrtRefine:读取剪映初剪后重新导出的 SRT,在相邻 cue 之间重新分配字幕文字,校正文案、断句、阅读密度和语义完整性;不改变任何重新导出的时间码,不新增时间段,不制造内容遗漏。输出精调 SRT 和文字调整摘要后暂停。
第 3 阶段|场景切分(youniSceneSplit)
使用 $youni-motion,只执行 youniSceneSplit:以当前精调 SRT 为输入,按照语义转折、对象关系、演示任务和连续 cue 切分场景,不按固定秒数或单条字幕机械切分;保证全部 cue 按原顺序连续覆盖且只归属一次。输出场景目录,以及每场的时间范围、字幕范围、核心含义和上下场关系后暂停。
第 4 阶段|动画方案(youniMotionPlan)
使用 $youni-motion,只执行 youniMotionPlan:分析当前所指的一个场景,把字幕语义转成可实现的对象和时间关系,明确叙事目标、对象层级、出现顺序、交互关系、动态锚点、稳定阅读区、退场方式、相邻场衔接、人物安全区域和交付格式。只输出当前场动画方案,不写 Remotion 代码、不渲染,完成后暂停。
第 5 阶段|生成动画内容(youniMotionBuild)
使用 $youni-motion,只执行 youniMotionBuild:自动解析当前场景及其唯一动画方案,严格按方案生成或修改当前一个 Remotion 场景;保证画布铺满、对象层级清楚、连接锚点连续有效,并遵守人物安全区域。只处理当前场,不自动进入下一场、不渲染最终视频;输出场景代码和实现摘要后暂停。
第 6 阶段|视频渲染(youniMotionRender)
使用 $youni-motion,只执行 youniMotionRender:渲染当前所指且上下文唯一的场景,按照交付契约生成 Review MP4,并在开场、尾场或单场项目需要人物叠加时生成 Alpha MOV;检查媒体元数据、首尾帧、画布铺满、字幕同步、透明通道和连续交互。验证通过后交付文件与检查结果,失败时报告具体阻塞;完成后暂停。
3. 逐场连接词
| 当前状态 | 可以说 | 下一步行为 |
|---|---|---|
| 当前动画方案已确认 | 按这个方案做 |
执行当前场 youniMotionBuild |
| 当前场动画内容已生成 | 渲染本场 |
执行当前场 youniMotionRender |
| 当前场视频已确认 | 继续下一场 |
解析下一场并回到 youniMotionPlan |
| 当前步骤结果已确认 | OK,进入下一步 |
只进入语义唯一的下一阶段 |
短词必须结合最近对话理解,不能脱离上下文变成全局执行授权。完整指令源见 中文指令与专业模板。
初始化最小项目
在仓库根目录执行:
node scripts/init_project.mjs ./youni-motion-demo --example
cd ./youni-motion-demo
npm install
--example 会加入一份完全虚构的六秒 SRT、场景目录和动画方案。去掉该参数则只创建干净模板。
项目默认结构:
youni-motion-demo/
├── youni-motion.config.json
├── input/
├── docs/
├── public/source.srt
├── src/
├── scripts/
└── renders/
预览与渲染
npm run typecheck
npm run studio
npm run render:review
npm run render:alpha
render:review生成renders/S01/review.mp4。render:alpha生成 ProRes 4444 透明视频renders/S01/alpha.mov。- 两种输出使用同一 Composition 结构和时间轴;Alpha 模式不含背景和字幕。
检查交付文件:
npm run validate:delivery -- renders/S01/review.mp4 review
npm run validate:delivery -- renders/S01/alpha.mov alpha
SRT 与方案工具
node scripts/validate_srt.mjs input/source.srt
node scripts/srt_apply_edits.mjs input/source.srt edits.json docs/srt/refined.srt
node scripts/validate_scene_catalog.mjs docs/scene-catalog.json
node scripts/validate_animation_plan.mjs docs/scene-plans/S01-animation-plan.json
srt_apply_edits.mjs 的 edits.json 是以 cue 编号为键、修订文字为值的 JSON 对象。脚本会拒绝不存在的 cue,并原样保留所有时间码。
配置
youni-motion.config.json 定义画布、帧率、场景、字幕文件和人物安全区域。v0.1.0 默认只承诺 1920 × 1080、30 fps、16:9 横屏。
当前发布状态
Youni Motion v0.1.0 已在 GitHub 公开发布。发布包结构、模板、脚本、公开示例、Apache-2.0 许可证和基础契约测试均已整理;独立目录中的 npm ci、TypeScript 类型检查、真实 Review MP4、ProRes Alpha MOV、透明通道、安全区域和隐私扫描已于 2026-08-25 通过。机器可读结果见 Step 2 release QA。
许可证
Youni Motion 原创文件采用 Apache-2.0。Remotion 使用自己的特殊许可证,部分组织可能需要公司许可证;使用前请阅读 DEPENDENCIES.md 和 Remotion License。不要把 Remotion 许可证密钥提交到仓库。
本地包不会自动创建远程仓库、上传文件或发布 GitHub Release。
No comments yet
Be the first to share your take.