Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md

onetake

Motion films that never cut to the next slide. A Claude Agent Skill that makes product launch films, teasers and feature demos where every beat grows out of the one before — one continuous take, not a stack of scenes. 一镜到底的连贯动效。 做产品发布片、预告片、功能演示:每一个画面都从上一个画面里长出来,是一整条连续的镜头,而不是一张张轮流出场的"PPT"。

License: PolyForm Noncommercial Type Cases Continuity

onetake launch

From onetake's own launch film. A prompt bar opens into the ad it asked for; the next prompt collapses into a line that shoots across the desk and opens into a festival screen. No cut. Full film with sound →


English | 中文说明


English

The problem: motion that falls apart

Most motion videos an AI makes today — and most template tools — come out loose. Title card, fade, UI shot, fade, feature card, fade, logo. Each shot can look fine and the whole still reads like a slideshow, because nothing connects one beat to the next: scenes replace each other.

What onetake does differently: every beat is carried

onetake treats the boundary between two beats as the thing to design. At every boundary, something on screen survives and visibly becomes the next beat:

  • the prompt bar opens into the app window; the window reflows into the phone;
  • a bar collapses into a line, the line shoots across the desk and becomes the first grid line of the next film;
  • a card grows into the page; a stage opens from the character; the camera pushes through a card until it is the next scene;
  • at the end, the cast folds into the lockup — in the launch film, the block cursor writes the name in one stroke.

And one camera holds it all together. It never cuts: it follows the subject a beat ahead, whips to where the next thing will land, floats like a hand-held operator and shakes when something hits — then holds dead still, because rests are what make the moves land.

Continuity is measured, not hoped for

Every film is checked by an oracle before a human watches it. probe.py records what is on screen in every frame, finds each boundary, and asks what carried across it. A film whose beats replace each other fails.

filmverdictcontinuity (carry score)
an earlier launch film, v1 — perfect rhythm, still a slideshowrejected0.00
the same film, v2rejected0.40
the same film, v3 — every beat grows out of the lastaccepted0.75
onetake launch filmaccepted0.83

The same oracle fails uniform cadence (shots all the same length), no stillness, clipped audio, fast moves without motion blur, and a subject that leaves the frame.

What makes it look finished

  • Real UI, rebuilt. The product's interface is rebuilt in HTML from screenshots and sits on the camera's plane, so the camera can fly into it at any zoom. No screen recording.
  • Measured moves. ~38 moves (springs, entrances, carries, contact, sims, camera, fluid grounds), each a pure function of time with its speed curve measured — never a hand-rolled ease.
  • Real motion blur. Every moving frame is several captures across an open 180° shutter, averaged in linear light. Fast moves smear instead of strobing.
  • Sound in one room. Foley and synthesis placed from the film's own events, in one reverb, ducking the music under the hits.
  • Deterministic. Seek to any time, get the same frame. Drafts at 1080p30, finals at 4K60.

🌟 Films made with it

Every case ships the finished film and a breakdown (concept, beat sheet, numbers, what was rejected and why). The films' source code is not included.

onetake launch

Three prompts, three films, one take — each prompt visibly becomes its film
▶ Film | 📖 Breakdown
one-dot

One dot is the whole film: caret → menu → loading ring → spring curve → the dot on the i
▶ Film | 📖 Breakdown
knockon

A chain reaction: every beat is the collision that starts the next
▶ Film | 📖 Breakdown
clearing

One zoom from a year to a free half hour — 1× to 300× and back, never a cut
▶ Film | 📖 Breakdown
pith

The window grows out of one phosphor pixel: 440× → 0.52× in one move
▶ Film | 📖 Breakdown
ebb

A field of light carries the take through five places; each flood drains onto the next
▶ Film | 📖 Breakdown
overlap

Two print passes slide into register — and an & appears that was hidden in both
▶ Film | 📖 Breakdown
unbroken

One ink stroke that is never lifted: procedural brush, no textures
▶ Film | 📖 Breakdown
motion-web

Where the rhythm rules came from: small UI, big ground, rests, then a burst
▶ Film | 📖 Breakdown
skill-demo

An operation demo from nothing: the chosen menu row flies into the input as a chip, and on from there
▶ Film | 📖 Breakdown

one-dot and skill-demo were made when the skill was still called ohmymotion; the films show that name.

How a film is made

  1. Deconstruct the reference in numbers: how much of it is still, where it cuts, how its moves ease.
  2. Three concepts, pick one. Each is one sentence about the picture — "one dot becomes everything", "one zoom through scale" — not three stories told with the same cards.
  3. A beat sheet for rhythm and carry. Shot lengths vary by ≥ 4×, and every boundary names what survives it.
  4. Compose one HTML file on the move library. Render with motion blur. Score the sound from the film's events.
  5. Verify, then show a human.

📦 Installation

# Claude Code
git clone https://github.com/feitangyuan/onetake.git ~/.claude/skills/onetake
# Codex / other agents that read skills
git clone https://github.com/feitangyuan/onetake.git ~/.agents/skills/onetake

Then ask: "Make a 15 s launch video for my app", "a feature demo rebuilt from these screenshots, no screen recording", "my motion video feels like a slideshow — fix it".

Requires python3 with playwright (chromium), numpy, scipy, Pillow, matplotlib (opencv-python for reference analysis), ffmpeg, node. Narration adds faster-whisper and Kokoro TTS. Music is royalty-free by default.

SKILL.mdthe protocol and the hard rules each rejected cut taught
lib/motion.js · lib/ui_kit.jsthe move library; the UI-rebuild kit
scripts/render (motion blur, 4K60), verify (the oracle), probe, stills, reference analysis, footage, narration, sound
gallery/one live demo and one six-frame sheet per move
references/rhythm, carry, composition, camera, sound, product demos — the method with its numbers

License

PolyForm Noncommercial 1.0.0: free for personal, educational, research and other noncommercial use. Commercial use is not permitted.


中文说明

问题:动效是散的

现在大多数 AI 做出来的动效视频,还有大多数模板工具做出来的,都是散的。 标题卡、淡出、界面镜头、淡出、功能卡片、淡出、Logo。每一镜单看也许都不错,合起来还是像在翻 PPT。 原因是画面和画面之间没有任何联系,后一个场景只是把前一个替换掉了。

onetake 不一样:每个画面都被"接住"

onetake 把两个画面之间的交接处当成设计的重点。每一个交接处,都有一个东西活下来,并且看得见地变成下一个画面:

  • 输入框展开成 App 窗口,窗口再重排成手机界面;
  • 输入框压成一条线,这条线划过桌面,变成下一条片子的第一根网格线;
  • 卡片长成整个页面;舞台从角色身上打开;镜头穿过一张卡片,穿过去就是下一个场景;
  • 结尾,所有元素收拢成标志。在 onetake 自己的发布片里,是光标一笔写出名字。

把这一切串起来的是同一个镜头。 它从不剪断:提前半拍跟着主体走,抢在下一个东西落地前甩过去,像手持一样轻微浮动,东西撞上来时跟着一震; 该停的时候又能完全静止,因为有停顿,动作才落得下来。

连贯是量出来的,不是靠感觉

每条片子给人看之前,先过一遍自动验收。probe.py 记录每一帧画面上有什么,找出每一个交接处,再判断有没有东西从这边带到那边。 画面互相替换的片子,直接判不合格。

片子结果连贯度(carry score)
更早的一条发布片 v1:节奏完美,仍然像 PPT被否0.00
the same film, v2被否0.40
同一条片子 v3:每个画面从上一个里长出来通过0.75
onetake 发布片通过0.83

同一套验收还会判掉这些问题:镜头长度全都一样、没有静止段落、音频爆音、快动作没有运动模糊、主体出画。

为什么看起来像成品

  • 复刻的真实界面:按截图用 HTML 重建产品界面,放在镜头所在的平面上,推到多近都清楚,不需要录屏。
  • 实测过的动作:约 38 个动作(弹簧、入场、衔接、碰撞、物理模拟、镜头、流体光场),每个都是时间的纯函数,速度曲线都实测过,不用随手写的缓动。
  • 真实运动模糊:每个运动帧都是快门张开期间的多次采样,在线性光下平均。快动作会拖出残影,而不是一格一格地闪。
  • 同一个空间里的声音:音效按片子里的事件摆放,放在同一个混响里,打点的地方音乐自动让位。
  • 结果确定:跳到任意时间,得到的都是同一帧。草稿 1080p30,成片 4K60。

案例

上面的表格里有 10 条用它做的片子,每条都附成片和拆解文档(概念、节拍表、数据、被否掉的版本和原因)。不包含片子的源代码。 其中 one-dot 和 skill-demo 做的时候 skill 还叫 ohmymotion,画面里是旧名字。

一条片子怎么做出来

  1. 先把参考片拆成数字:静止占多少、在哪里剪、动作怎么缓动。
  2. 出三个概念,选一个:每个概念是一句关于画面的话,比如"一个点变成一切""一个镜头穿过所有尺度",而不是同一套卡片换三种讲法。
  3. 写节拍表,节奏和衔接都要写:镜头长短相差 4 倍以上,每个交接处都写明是什么东西活下来。
  4. 合成、渲染、配音:在动作库上写一个 HTML 文件,带运动模糊渲染,按片子里的事件配声音。
  5. 过验收,再给人看。

安装

# 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。音乐默认用免版权曲库。

许可证

PolyForm Noncommercial 1.0.0:个人、学习、研究等非商业用途免费使用,不允许商用。

关于 About

Motion films that never cut to the next slide: every beat grows out of the one before, one continuous camera, continuity measured by an oracle. A Claude Agent Skill for product launch films and feature demos.
agent-skillanimationcanvasclaude-skilllaunch-videomotion-graphicsvideo

语言 Languages

Python52.7%
JavaScript23.7%
HTML23.6%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
6
Total Commits
峰值: 6次/周
Less
More