← 返回全部文章
·约 16 分钟PPT

一、先说结论:你的动效片为什么像 PPT

办公写作

配套媒体

本页对应的 PPT 与演示视频

onetake-recommend.mp4
PPT
onetake-recommend.pptx浏览器不能直接打开 PPT,下载后用 PowerPoint / WPS / Keynote 查看
下载没反应?点这里复制直链

侧边栏预览窗口(Electron webview)会拦截下载,把下面的链接复制到 Chrome / Edge 地址栏打开即可保存。

PPT../../onetake-recommend.pptx
视频../../onetake-recommend.mp4
本文目录
  1. 二、硬指标:这不是"AI 圆你一个梦"
  2. 三、五步流程:先看参考片,再谈创意
  3. 第 1 步:先拆解参考片,不许凭感觉
  4. 第 2 步:三个概念,让人挑
  5. 第 3 步:分镜写成"节奏 + 承接"两张表
  6. 第 4 步:素材——真录,或者按截图把界面重建出来
  7. 第 5 步:合成 + 渲染 + 验收
  8. 四、最有意思的部分:一个会判你不及格的"oracle"
  9. 五、六套配色,都是量出来的
  10. 六、十个案例,十种承接方式
  11. 七、安装:两行命令
  12. 八、和别的做法比一比
  13. 九、冷静点:三个必须先说清楚的限制
  14. 🎯 总结

📌 核心价值:给 Claude Code / Codex 装上一个"动效短片导演"——说一句话,出一条一镜到底的 15 秒产品宣传片,个人使用免费。

它解决的是一件很具体的事:AI 做出来的动效视频为什么永远像 PPT。答案不是画质,是节拍之间没有承接——这一帧跟下一帧毫无关系,只是在替换。

onetake 封面


找人做一条 15 秒产品宣传片,市场价几千块;自己用剪辑软件做,光是转场和节奏就得磨一下午。现在有了第三条路:装一个 Agent Skill,说一句"给我的 App 做个 15 秒发布视频"。

onetake 就是这么个东西。⭐490,作者 Patrick(github.com/feitangyuan),装在 Claude Code 或 Codex 的技能目录里就能用。

它跟其他"AI 做视频"工具的根本区别在一句话里:每一拍从上一个拍子里长出来,而不是换掉它。

onetake 官方 hero 动效

这句话不是文艺修辞,是被写成了硬规则的。仓库的 SKILL.md 里列着十几条"每一条都牺牲过一条片子"的规则,其中最硬的两条是:

  • 绝不在节拍器上剪辑——镜头长度全部一样,再好看的镜头也是幻灯片。它要求镜头长度至少差 4 倍(0.25 秒的字词,配 2.5 秒的停留)。
  • 绝不替换一个节拍,只承接它——每一段交界处,必须有东西活下来并且动起来:那只手、那个主体、一个变成下一个场景的容器(morphRect)、一个从主体上打开的舞台(iris)。两个互斥场景用 display:none 互切?那就是幻灯片,节奏再准也是。

二、硬指标:这不是"AI 圆你一个梦"

直接看数字,全部来自仓库的 SKILL.md 和 README,不是宣传口径:

onetake 硬指标速览

几个值得单独拎出来讲的:

39 个实测动作。 弹簧、入场、衔接、碰撞、物理模拟、镜头、流体光场,每个都是时间的纯函数,速度曲线是实测出来的(按 t80 选曲线),不是随手写一个 ease-in-out 到处套。规则里明确写了:禁止自己重新推导弹簧或缓动。

运动模糊是真的快门模糊。 每个运动帧是快门张开期间的多次采样,在线性光下平均。为什么要这么较真?因为超过 80 像素/帧的移动,没有快门模糊就会闪成重影。CSS 的 filter: blur() 不算。

渲染能并行。 render.py 默认开 8 路浏览器进程(核心数 -2,最多 8)。实测 one-dot 那条带运镜的片子:2480 次捕获,8 路 103 秒;单路浏览器约 0.2 秒一帧,得跑 8.5 分钟。

结果是确定的。 跳到任意时间 t,两次得到的必须是同一帧——这是快门模糊能算出来的前提。物理模拟在 240 Hz 预模拟一次后采样,渲染路径上禁止出现 Math.random(),随机数得走 OM.rng(seed)。


三、五步流程:先看参考片,再谈创意

onetake 五步流程

第 1 步:先拆解参考片,不许凭感觉

python3 scripts/analyze_ref.py ref.mp4 --out ana/

它会吐出能量图、切点、静止时长、接触印样、运动线(median t80 和 smear)。

这一步为什么被列为硬规则?因为 motion-web 那条片子做了三版才过:参考片里 34% 的时间是死静的、有 7 个硬切分两波、所有元素都小而留白多。这些数字看一遍片子根本看不出来,而没量过就动手做出来的东西,节奏是均匀的——被拒了两次。

第 2 步:三个概念,让人挑

概念是关于画面的一句话,不是关于产品的。必须写三个,中心想法不同的三个:

  • 一个元素贯穿变形到底(一个点变成光标 → 裂成技能列表 → 掏空成加载环 → 展开成弹簧曲线 → 最后落在 wordmark 那个 i 的点上)
  • 一次穿越尺度的镜头运动(从光标内部起,拉到输入框,穿过发送按钮扎进工作区,再从成片里出来)
  • 一场连锁反应(每一拍都是启动下一拍的那次碰撞)

每个都要写清楚:钩子帧是什么、每个边界靠什么承接、它排除了什么(不要卡片?不要切?),以及它的 look。

第 3 步:分镜写成"节奏 + 承接"两张表

节拍表的格式是 时间 · 节拍 · 什么在动 · 什么是静的 · 什么承接进下一拍。规则要求:至少有一段近乎死寂的画面和声音——停顿才是让爆发落地的原因。

第 4 步:素材——真录,或者按截图把界面重建出来

python3 scripts/record_footage.py footage.json --out footage/

用 Playwright 真跑真实页面,按墙上时钟驱动,30 fps 出 JPEG,同时存下鼠标路径——观众必须看见"因",不只是"果"。

不录屏这条路更有意思:走产品功能演示时,你只给几张截图,界面用 HTML 在参考片的像素框里重建出来。好处是它坐在镜头所在的那个平面上,推到多近都清楚,而且所有文案都在一张表里,换语言就是 ?lang= 加一次时间扭曲,源语言版本用 frame_diff.py 验像素级一致。

第 5 步:合成 + 渲染 + 验收

python3 scripts/render.py comp.html --out draft.mp4 --sfx sfx.wav          # 1080p30 草稿
python3 scripts/render.py comp.html --out film.mp4 --final --sfx sfx.wav   # 4K60 成片,确认后才跑
python3 scripts/verify_promo.py draft.mp4 --comp comp.html --ref ref.mp4 --shots 0,1.6,3.0,4.8

四、最有意思的部分:一个会判你不及格的"oracle"

这是整个项目最值钱的东西——一个在人眼看之前就判你"这是 PPT"的验收脚本。

verify_promo.py 有五条腿:节奏(镜头长度均匀、没有静止段、音频被削顶都判挂)、承接、曲线、构图、爆发。

承接那条腿的实际战绩:

片子 承接分 结果
Pocket Weather v1 0.00 拒
Pocket Weather v2 0.40 拒
Pocket Weather v3 0.75 通过
motion-web 0.56 通过(警告)

及格线 0.50。v1 和 v2 都是"每一个节拍都在替换前一个"——v1 甚至通过了全部节奏检查,照样被拒。

构图那条腿也救过场:one-dot 那条片子的第一版带运镜渲染,圆点在一次 snapping 后面丢了,别的检查全没发现。

motion-web 案例片


五、六套配色,都是量出来的

looks/ 里有 6 套预设:paper、dusk、tabletop、ultramarine、riso、ember。每一套都是从一条被验收通过的片子里量出来的,含 8 个颜色 token 和 3 个 SIL OFL 1.1 字体(授权文件在 looks/fonts/LICENSES.txt)。

onetake 六套预设配色

也能从你自己的产品截图里提:scripts/look.py from-shot shots/*.png --out look.json。

配套还有一条硬规则:不许把上一部片子的 look 带进下一部。工具可以复用,视觉不行。


六、十个案例,十种承接方式

仓库 cases/ 下挂着 10 部成片,每部都附了分镜表、数字、以及被拒的原因:

one-dot 案例片

  • one-dot:一个点是整部片子——光标 → 菜单 → 加载环 → 弹簧曲线 → 落在 i 的那一点。静止镜头时被评"就缺灵动的跟踪运镜",换成追着每拍主体的镜头(滞后、前倾、落定)才过。
  • knockon:靠因果承接,一台桌面光影机器,每一拍都是启动下一拍的碰撞。
  • clearing:靠尺度承接,一镜从一年到一个空闲的半小时再回来,1× 到 300× 落点一致。
  • pith:反向俯冲,从一颗荧光像素出发,440× → 0.52×。
  • overlap:意义那一课——第一版被评"美术挺棒但没看出来啥意思",加标注光标反而更糟,最后把想法做进画面本身才读得通:两块噪声版里藏着一个 &,在两道印刷对齐的瞬间出现。
  • 还有 ebb、unbroken、motion-web、skill-demo、onetake-launch。

clearing 案例片

skill-demo 案例片

动作库里几个关键动作长什么样,仓库给了六帧速度曲线图:

zoomThrough 动作六帧表

camera 动作六帧表


七、安装:两行命令

# Claude Code
git clone https://github.com/feitangyuan/onetake.git ~/.claude/skills/onetake
# Codex 等读取 skills 的 Agent
git clone https://github.com/feitangyuan/onetake.git ~/.agents/skills/onetake

然后直接说人话就行:

  • 「给我的 App 做个 15 秒发布视频」
  • 「按这几张截图复刻界面做功能演示,不录屏」
  • 「我的动效视频像 PPT,帮我改」

依赖:python3(playwright + chromium、numpy、scipy、Pillow、matplotlib,分析参考片还要 opencv-python)、ffmpeg、node。配音另需 faster-whisper 和 Kokoro TTS。音乐默认走免版权曲库。


八、和别的做法比一比

onetake vs 常见做法

补齐几句表格里放不下的:

Remotion Skill 是官方给 Claude Code 做的,用 React 写视频,像素级可控,但前提是你看得懂 React 报错;而且实测生成的片子普遍偏短(十几秒),想做完整产品介绍得分段生成再自己拼。

归藏的 guizang-product-video-skill(AGPL-3.0)走的是六步流程八份参考文档,把"提示词 + 验收"这套工作流固化下来——值钱的从来不是那个 MP4,是包在它外面的流程。

人工外包:日本有创作者实测 AI 驱动 After Effects 一条龙,人工做要几天,外包报价约 50 万日元。

onetake 的差异点就两个:节奏和承接被写成了可执行的规则,且有脚本在你之前判卷。


九、冷静点:三个必须先说清楚的限制

  1. 许可证是 PolyForm Noncommercial 1.0.0——个人、学习、研究等非商业用途免费,商用不允许。想拿它做公司产品的发布片,得先找作者谈授权。这是最要紧的一条。
  2. 依赖链不轻:playwright + chromium + ffmpeg + node + 一堆 Python 库,还得有 8 核左右才跑得动并行渲染。纯小白第一次装环境会费点时间。
  3. 数据来自仓库自述,暂无第三方复现。39 个动作、103 秒渲染、0.5 承接线这些数字都出自官方 SKILL.md,案例片也是作者自己的作品,没有独立的横评验证。

另外它明确不适合:长视频、口播类、用转场剪已有素材。你要用 HyperFrames 或 Remotion 就直说,它会让你用你点的名。


🎯 总结

你可能关心的 答案
干什么用 10–30 秒产品动效片;配音功能演示最长约 60 秒
装上就能说人话吗 能,一句「给我的 App 做个 15 秒发布视频」
出片规格 草稿 1080p30,成片 4K60(3840×2160 / 60fps / 180° 快门)
凭什么不像 PPT 承接分低于 0.5 直接判挂,脚本先于你发现
要钱吗 个人/学习/研究免费,商用不行
门槛 需装 playwright + ffmpeg + node,命令行环境

适合谁:独立开发者、开源项目作者、想给产品做发布片又不想学剪辑的人。

不适合谁:想要一键商用出片、或者完全不想碰命令行的用户。


数据截至 2026-09-27,最新信息请以仓库为准。