← 译文展馆 / X ARTICLE
0%
18

X ARTICLE 中文阅读

Opus 5.5 零成本制作万元级发布视频的完整工作流

原文封面
原文封面 点击放大 ↗

我正在开源我的整套工作流,用来制作工作室要价 5,000 到 15,000 美元的动态设计

这不使用任何 MCP、任何外部工具,我也不会向你推销任何订阅

你也不需要 After Effects 或任何剪辑软件,Claude 用代码把整件事做完

下面是每一步:从我怎么拿到创意,到怎么写提示词,再到它如何变成最终成品;全程零动手,Claude 处理整个过程

这里的每一帧都是 Opus 5.5 写的代码,而我对动态设计连第一步都不懂

开篇演示 · 原文视频打开原视频 ↗

(友情提醒:这篇文章很长。现在先收藏,免得找不到,但别跳过。我保证它会改变你对动态设计的看法,并在下一次发布视频上帮你省下几千块)

如果你觉得有用,给帖子点个赞、转发或引用会帮大忙。我写了好几个小时,你只需两秒钟

步骤 1:偷创意

这部分你不需要有创意

我做过的每个视频都始于已经存在的东西:Dribbble 上的 UI 动画、一场 Apple 发布会,甚至别人的应用宣传片

所以找一个你喜欢的发布视频,保存下来,用下面这段交给 Claude Code:

完整提示词 · 中文翻译

用 ffmpeg 从 reference.mp4 每秒提取 2 帧,放到 contact sheets 上。逐张过一遍,把视频拆成节拍:每个节拍发生了什么、每个场景如何过渡到下一个、镜头运动、颜色和字体。然后为我的产品写出同样的结构:[your product + link]。
对照英文原提示词
Extract 2 frames per second from reference.mp4 with ffmpeg and put them on contact sheets. Go through them and break the video into beats: what happens on each beat, how each scene turns into the next, the camera moves, the colors and the fonts. Then write the same structure for my product: [your product + link].

没有参考?让它给你的产品出 3 个点子,然后挑一个

一个提示:Claude 默认会做暗色 3D 风格的视频,看起来仍然不够高端,所以我会把我的往 2D 白色极简风推,那才真正有高级感

如果你自己写提示词,加上这段,免得它默认成暗色 3D:

完整提示词 · 中文翻译

风格:仅 2D。暖白色背景、黑色 UI、一种强调色、一种干净字体(Geist 或 Inter)。不要 3D、不要暗色模式、不要光晕、不要粒子。想 Apple 发布会,而不是电子游戏预告片。
对照英文原提示词
Style: 2D only. Warm white background, black UI, one accent color, one clean font (Geist or Inter). No 3D, no dark mode, no glows, no particles. Think Apple keynote, not a video game trailer.

步骤 2:把 Claude Code 变成工作室

打开 Claude Code 并粘贴这段:

完整提示词 · 中文翻译

在这个文件夹里搭建一个动态设计工作室。安装 ffmpeg 以及带 Chromium 的 Playwright。然后渲染一段 2 秒测试:一个黑色圆形以弹簧动画长大成胶囊形,60fps,并给我看第一帧和最后一帧。
对照英文原提示词
Set up a motion design studio in this folder. Install ffmpeg and Playwright with Chromium. Then render a 2 second test where a black circle grows into a pill on a spring, 60fps, and show me the first and last frame.

这就是你的整套工作室。Opus 写一个 HTML 文件,里面有个叫 seek(t) 的函数,能画出你要的任意一帧;Playwright 截下每一帧,ffmpeg 把它们合成 mp4

因为全是代码,哪里看起来不对,你只要告诉 Claude,它就修那一块

步骤 3:拿到素材,全部免费

免费音乐:mixkit.co/free-stock-music

免费音效:mixkit.co/free-sound-effects

免费视频和照片:pexels.com

免费字体:fonts.google.com

再加上你自己的截图和 logo

这些你也不用自己下载,把这段提示词粘贴进 Claude Code:

完整提示词 · 中文翻译

从 mixkit.co/free-stock-music 下载一首约 120 BPM、有明显 drop 的免版税曲目。用 numpy 分析它,给我节拍网格以及 drop 的精确时间。然后从 mixkit.co/free-sound-effects 为每个事件下载一个音效,并测出每个音效峰值出现的位置。
对照英文原提示词
Download a royalty-free track around 120 BPM with a clear drop from mixkit.co/free-stock-music. Analyze it with numpy and give me the beat grid and the exact time of the drop. Then download one sound effect per event from mixkit.co/free-sound-effects and measure where each one peaks.

一定要用真实音效,我一开始让它自己做,听起来特别廉价

步骤 4:提示词

这些就是我用过的原提示词。把其中一条粘贴进 Claude Code,用 Opus 5.5,它会先问你需要什么

它们的结构都一样:该问你什么、该长什么样、什么时候发生什么、以及要避开的错误

提醒一下,这些不是真实的产品发布,是我做的演示,用来展示 Opus 能做什么

用你自己的产品和素材改编它们,你就分不出它们和 1.5 万美元的发布视频有什么差别

下面每个视频下方都有用来复现它的提示词

示例 1

示例 1 · 原文视频打开原视频 ↗

完整提示词 · 中文翻译

<inputs>
向我询问:我的产品以及用户在其中输入的一条请求、结果卡片所需的 6 到 8 张照片、一首约 130 BPM 且有明显 drop 的免版税歌曲(Mixkit,可免费商用),以及片尾卡片用的品牌标识。如果我跳过任何一项,使用默认值:下文的点餐故事、来自 Pexels 的美食照片(火焰面、birria tacos、辣鸡、布法罗鸡翅、smash burger、辣拉面)以及 Mixkit「Cat Walk」。
</inputs>

<direction>
一段 15 秒的产品发布影片,1920x1080,60fps,仅 2D,一镜到底。每个场景都由前一个场景变化而成:没有淡入淡出、模糊或硬切。物体通过变形来转换:文字从遮罩线中升起,按钮生长成页面,一种颜色从某个物体中涌出,随后再收缩进另一个物体。摄像机每个场景只做一次运动,使用缓动关键帧,且从不连续来回缩放。
视觉:暖白画布 #f5f5f2,黑色 UI #0e0e10,青柠强调色 #cdf24f,一种橙色 #ff6a2a,蓝色发送按钮 #2f6bff。输入框周围有 Apple Intelligence 风格的虹彩光晕(粉、橙、青柠、青、紫的旋转锥形渐变,经模糊处理)。深色卡片上使用真实美食摄影。UI 使用 Geist,片尾卡片上的产品名使用衬线体。
禁止:交叉淡化、模糊进入、3D、粒子、方向反转的摄像机运动、超过 1 秒的定格、任何看起来像模板的东西。
</direction>

<structure>
130 BPM,32 拍(14.8 秒)。歌曲在 drop 前 12 拍开始。
第 0-6 拍,询问:特写发光的输入框(约 3 倍缩放,缓慢推进)。请求以真实击键节奏打在三行固定文字上:「我真的好饿,不知道 / 想吃什么,但要那种 / 辣的、脆的、能填饱肚子的」。
第 6 拍,发送:发送按钮被按下,一股青柠色填充从中涟漪扩散,把消息变成聊天气泡,一次拉远让手机在其周围生长出来(428x900 屏幕,11px 黑色边框,9:41 状态栏)。
第 6-12 拍,思考:发送按钮生长成一口橙色炒锅(带细柄的半圆盘),在第 8、9、10 和 11 拍抛起 6 种彩色食材,上方是闪烁的「正在为你寻找…」。
第 12 拍,drop:一个青柠色圆在约 0.35 秒内从炒锅涌满画面边缘。深色美食卡片(330x440,圆角 28,上方照片、名称、一行描述、价格、评分)从中心爆出,条带滑出三张卡片落到「火焰面」上,该卡片带着「最佳匹配」胶囊升起。
第 16-21 拍,聊天:青柠色收缩回用户气泡并带走其文字,被选中的卡片飞入其槽位。「找到了。Wok & Fire 的火焰面,烟熏、辛辣、超级顶饱。」升起,然后是「要我帮你下单吗?」以及两个弹出的胶囊:「立即下单」(黑色)和「更多选项」(描边)。光标点击立即下单 → 转圈 → 「✓ 已下单」。
第 21-32 拍,片尾:黑色按钮生长成整页。在到达边缘之前它一直保持胶囊形状,同时摄像机推入其中,其标签放大到标题尺寸,然后滑出。「你想吃面条。」接着「现在已经在路上了。」逐词升起(92px,黑底白字),一个快递员圆点沿路线驶向图钉,图钉变成品牌标识,字标从它后面擦出,上方是「made with」,下方是产品名。
</structure>

<build>
1. 一个 HTML 文件,1920x1080。每一种样式都在 seek(t) 内由时间计算得出:没有 CSS 过渡、没有计时器、帧与帧之间没有状态。
2. 摄像机是容器上的一个变换,以 [time, zoom, x, y] 为关键点,使用缓动分段,缩放在对数空间中插值。
3. 弹簧是每个弹出与落定的闭式阶跃响应。
4. 层与层之间的每一次交接都是共享元素:青柠色洪水携带气泡文字的一份拷贝,按钮把自己的标签带进页面。
5. 声音:每个事件都有一份下载的 SFX(Mixkit):打字、发送弹出、每次抛掷一次弹出、drop 时的冲击、卡片的嗖声、点击、成功音、按钮铺满页面时的呼啸、标识上的闪光。按各自测得的峰值放置,并 loudnorm 到 -14 LUFS。
6. 用 Playwright 渲染:每帧 8 个子帧,用 ffmpeg tmix 混合,60fps。然后逐帧检查每一个快速瞬间,并扫描整段视频是否有单帧弹出。
</build>

<gotchas>
4 个子帧会在快速运动时留下残影,所以使用 8 个子帧并放慢运动。洪水必须清到最远的角落,大约需要 0.35 秒,否则会看起来像闪一下。给每一层设置 z-index,否则卡片会浮在洪水之上。绝不要让摄像机去追换行的文字光标:只用固定行。在第一次 seek() 运行之前声明每一个变量。
</gotchas>

<start>
先向我询问输入,然后在写完整影片之前向我展示节拍图和 4 张静帧(询问、drop、聊天、片尾)。
</start>
对照英文原提示词
<inputs>
Ask me for: my product and the one request a user types into it, 6 to 8 photos for the result cards, a royalty-free song around 130 BPM with a clear drop (Mixkit, free for commercial use), and my brand mark for the end card. If I skip any, use the defaults: the food-ordering story below, food photos from Pexels (fire noodles, birria tacos, hot chicken, buffalo wings, smash burger, spicy ramen) and Mixkit "Cat Walk".
</inputs>

<direction>
A 15 second product launch film, 1920x1080 at 60fps, 2D only, one continuous take. Every scene is made out of the previous one: nothing fades, blurs or cuts. Objects change shape instead: text rises out of a mask line, buttons grow into pages, a color floods out of one object and later shrinks back into another. The camera makes one move per scene on eased keyframes and never zooms in and out back to back.
Look: warm white canvas #f5f5f2, black UI #0e0e10, lime accent #cdf24f, one orange #ff6a2a, a blue send button #2f6bff. An Apple Intelligence style iridescent glow (a rotating conic gradient of pink, orange, lime, cyan and violet, blurred) around the input. Real food photography on dark cards. Geist for UI, a serif for the product name on the end card.
Banned: crossfades, blur-ins, 3D, particles, camera moves that reverse direction, holds longer than 1s, anything that looks like a template.
</direction>

<structure>
130 BPM, 32 beats (14.8s). The song starts 12 beats before its drop.
Beats 0-6, ask: close on the glowing composer (about 3x zoom, a slow push). The request types on three fixed lines with a real keystroke rhythm: "I'm really hungry, I don't know / what I want but something / spicy, crispy and filling".
Beat 6, send: the send button presses, a lime fill ripples out of it and turns the message into the chat bubble, and one pull-back grows the phone around it (428x900 screen, 11px black bezel, 9:41 status bar).
Beats 6-12, think: the send button grows into an orange wok (a half-disc with a thin handle) that tosses 6 colored ingredients on beats 8, 9, 10 and 11, under a shimmering "Finding something for you…".
Beat 12, the drop: a lime circle floods out of the wok edge to edge in about 0.35s. Dark food cards (330x440, radius 28, photo on top, name, one-line description, price, rating) burst in from the center, and the strip slides three cards onto "Fire Noodles", which lifts with a "Best match" pill.
Beats 16-21, chat: the lime shrinks back into the user's bubble carrying its words, and the chosen card flies into its slot. "Found it. Fire Noodles from Wok & Fire, smoky, spicy and seriously filling." rises in, then "Want me to order it for you?" and two pills pop in: "Order now" (black) and "More options" (outline). The cursor clicks Order now → spinner → "✓ Ordered".
Beats 21-32, outro: the black button grows into the whole page. It stays a pill until it reaches the edges while the camera pushes into it, and its label grows to headline size, then slides out. "You were craving noodles." then "Now it's on the way." rise word by word (92px, white on black), a courier dot rides a route to a pin, the pin becomes the brand mark, and the wordmark wipes out from behind it with "made with" above and the product name below.
</structure>

<build>
1. One HTML file, 1920x1080. Every style is computed from time inside seek(t): no CSS transitions, no timers, no state between frames.
2. The camera is one transform on a container, keyed [time, zoom, x, y] with eased segments and zoom interpolated in log space.
3. Springs are closed-form step responses for every pop and settle.
4. Every handoff between layers is a shared element: the lime flood carries a copy of the bubble's words, the button carries its own label into the page.
5. Sound: a downloaded SFX for every event (Mixkit): typing, the send pop, a pop per toss, an impact on the drop, a swoosh for the cards, a click, a success tone, a whoosh as the button fills the page, a sparkle on the mark. Place each by its measured peak and loudnorm to -14 LUFS.
6. Render with Playwright: 8 subframes per frame blended with ffmpeg tmix, 60fps. Then step through every fast moment frame by frame and scan the whole video for single-frame pops.
</build>

<gotchas>
4 subframes leave ghost copies on fast moves, so use 8 and slow the move down. A flood must clear the farthest corner and take about 0.35s, or it reads as a flash. Set z-index on every layer, or the card floats over the flood. Never let the camera chase a wrapping text cursor: fixed lines only. Declare every variable before the first seek() runs.
</gotchas>

<start>
Ask me for the inputs, then show me the beat map and 4 stills (ask, drop, chat, outro) before you write the full film.
</start>

示例 2

示例 2 · 原文视频打开原视频 ↗

完整提示词 · 中文翻译

<inputs>
向我索取:一个用于字标的单词品牌名(动词效果最佳),9 到 12 张高分辨率照片,一首约 120 BPM、带 drop 和安静 breakdown 的免版税歌曲(Mixkit,可免费商用),以及一段普通墙壁上有移动植物阴影的免费素材视频(Pexels)。
</inputs>

<direction>
一部苹果发布会式的发布影片,仅限 2D,一镜到底。每一场都由上一场生成:没有淡入淡出、模糊或剪切。物体改为变形:文字从遮罩线中升起,图标以弹簧从零弹出,条带横向绘制,页面推入,黑色形状淹没整个画面并收缩进入下一场。暖米白画布,黑色 UI,照片上覆盖 iOS 26 液态玻璃。字标用 Archivo(wdth 125,weight 800),UI 用 Geist。光标以真实的点击、拖拽和长按驱动每一次变化。摄像机以 Screen Studio 风格缩放,使每个瞬间填满方形画面,光标随之缩放。
禁止:交叉淡化、模糊进入、亮度“显影”、3D 翻转、粒子、光晕、停留超过 1 秒、任何看起来像模板的东西。
</direction>

<structure>
120 BPM,54 拍,每一拍都有事发生。
开场:字标像手风琴一样挤进它自己的句点,圆点长大成黑色胶囊,标签在其中升起。点击:六片光圈叶片合上盖住标签,再啪地打开落到一张照片上。圆变成方,缩小,网格像纸质地图从它后面展开(中心、十字、四角),回流成便当布局,一次点击放大进入其中一格,正好落在 drop 上。
玻璃:一个玻璃单词逐字母弹出,融化成液滴,再拉长成玻璃工具栏。调节图标把它变成滑块。拖动把照片从白天重新打光到黄金时刻(两张对齐的镜头),按住时旋钮变成玻璃镜头。它升起成玻璃球体,下一张照片在其中以圆形打开,球体扩展成锁屏:玻璃时钟数字、日期,以及一条拉长成玻璃音乐播放器的 home bar。
舞台:锁屏拉远变成手机(边框从屏幕边缘长出)。灵动岛像液体一样拉伸、掐断、飞过去并长成一扇像百叶窗一样卷起的 Mac 窗口。长按壁纸,把它拖到一个 Safari 标签上,页面推入,放下后它成为落地页的主视觉。滚动:主视觉变形为产品卡片上的装裱画,卡纸和画框从照片边缘长出。挑选画框颜色(颜色刷过去)和尺寸,然后导航按钮飞下来变成「Order print」。
订单:一个黑色形状持续变形:Ordered ✓ → Printing % → On its way(路线上的一辆货车)→ Delivered ✓。
墙壁:已送达的圆淹没画面直至边到边,保持全黑一拍,再收缩成挂在真实墙壁素材上的装裱画。同一光圈打开到画上,再次合上,画框淹没屏幕并收缩成胶囊 → 圆点 → 字母弹回,落在节拍回归上。最后一帧 = 第一帧。
</structure>

<build>
1. 一个 HTML 文件,方形 1440x1440。每一种样式都在异步 seek(t) 内由时间计算得出:无 CSS 过渡、无定时器、帧与帧之间无状态。
2. 弹簧是闭式阶跃响应。一个有多个目标的值是每次变化各一个弹簧的和,因此它始终是时间的纯函数。
3. 液态玻璃:每个玻璃元素各自持有其身后场景的克隆,用 SVG feImage 置换贴图(圆角矩形距离场)过滤,再经过三个略有不同缩放的 feDisplacementMaps 以做出色散边缘,外加一圈 rim light。玻璃字母:每个字形用 canvas 距离场给出贴图、遮罩和高光。
4. Goo:模糊 + alpha 阈值,再把源合成在其上,使玻璃内部保持锐利。
5. 光圈:六片叶片环绕六边形光圈。每片叶片由其两个顶点、两边的边延长线以及它们之间的 短弧构成。
6. 字标挤压:每个字母以相同系数移向圆点,其绘制宽度随之变化(收窄 wdth 轴,其余缩放),使字母始终相接。
7. 素材:重编码为全 intra(ffmpeg -g 1),以 blob URL 加载,绘制每一帧前 await 'seeked'。
8. 声音:每个事件用下载的 SFX(Mixkit),绝不合成,各按其测得的峰值放置。歌曲从强拍开始:缩放落在 drop 上,墙壁落在 breakdown 里,字标随节拍回归。Loudnorm 到 -14 LUFS。
9. 用 Playwright 渲染:每帧 4 个子帧,用 ffmpeg tmix 混合,60fps。检查每一拍的一帧,然后扫描单帧爆点(帧差尖峰为其邻帧的 3 倍)。
</build>

<gotchas>
backdrop-filter: url() 在 Chromium 中会误读置换贴图,所以改为克隆场景。淹没必须放大到超出边角并持续约 0.3s,否则半个屏幕会在一帧内改变。visibility: visible 的子元素会透过隐藏的父元素显示,所以使用 inherit。在变形形状内切换的文字需要自己的遮罩。python http.server 无法对视频做 range-seek,所以使用 blob URL。
</gotchas>

<start>
向我索取输入,然后向我展示节拍图和 4 张静帧(开场、玻璃、舞台、墙壁),然后再写完整影片。
</start>
对照英文原提示词
<inputs>
Ask me for: a one-word brand name for the wordmark (a verb works best), 9 to 12 high-res photos, a royalty-free song around 120 BPM with a drop and a quiet breakdown (Mixkit, free for commercial use), and a free stock clip of a plain wall with moving plant shadows (Pexels).
</inputs>

<direction>
An Apple-keynote launch film, 2D only, one continuous take. Every scene is made out of the previous one: nothing fades, blurs or cuts. Objects change shape instead: text rises out of a mask line, icons pop from zero on a spring, bars draw across, pages push, and a black shape floods the whole frame and contracts into the next scene. Warm off-white canvas, black UI, iOS 26 liquid glass over the photos. Archivo (wdth 125, weight 800) for the wordmark, Geist for UI. A cursor drives every change with real clicks, drags and long-presses. The camera zooms screen-studio style so each moment fills the square, and the cursor scales with it.
Banned: crossfades, blur-ins, brightness "developing", 3D flips, particles, glows, holds longer than 1s, anything that looks like a template.
</direction>

<structure>
120 BPM, 54 beats, something happens on every beat.
Open: the wordmark squeezes into its own period like an accordion, the dot grows into a black pill, a label rises inside it. Click: six iris blades close over the label and snap open onto a photo. The circle becomes a square, shrinks, the grid unfolds from behind it like a paper map (center, plus, corners), reflows into a bento, and a click zooms into one tile, landing exactly on the drop.
Glass: a glass word pops in letter by letter, melts into a droplet that stretches into a glass toolbar. The adjust icon turns it into a slider. Dragging relights the photo from day to golden hour (two aligned shots), and the knob turns into a glass lens while held. It lifts into a glass orb, the next photo opens inside it as a circle, and the orb expands into a lock screen: glass clock digits, date, and a home bar that stretches into a glass music player.
Stage: the lock screen pulls back into a phone (the bezel grows out of the screen edge). The Dynamic Island stretches like liquid, pinches off, flies over and grows into a Mac window that rolls up like a blind. Long-press the wallpaper, drag it onto a Safari tab, the page pushes in, drop it and it becomes the hero of a landing page. Scroll: the hero morphs into a framed print on a product card, with the mat and molding growing out of the photo's edge. Pick a frame color (it paints across) and a size, then the nav button flies down into "Order print".
Order: one black shape keeps morphing: Ordered ✓ → Printing % → On its way (a van on a route) → Delivered ✓.
Wall: the delivered circle floods the frame edge to edge, holds black for a beat, and contracts into the framed print hanging on the real wall footage. The same iris opens onto the print, closes again, the frame floods the screen and contracts into the pill → the dot → the letters spring back out, landing on the beat return. Last frame = first frame.
</structure>

<build>
1. One HTML file, square 1440x1440. Every style is computed from time inside an async seek(t): no CSS transitions, no timers, no state between frames.
2. Springs are closed-form step responses. A value with many targets is the sum of one spring per change, so it stays a pure function of time.
3. Liquid glass: each glass element holds its own clone of the scene behind it, filtered with an SVG feImage displacement map (a rounded-rect distance field) through three feDisplacementMaps at slightly different scales for chromatic edges, plus a rim light. Glass letters: a canvas distance field per glyph gives the map, mask and highlights.
4. Goo: blur + alpha threshold, then composite the source atop it so the glass stays sharp inside.
5. Iris: 6 blades around a hexagonal aperture. Each blade is its two vertices, both edge extensions and the SHORT arc between them.
6. Wordmark squeeze: every letter moves toward the dot by the same factor and its drawn width follows (narrow the wdth axis, scale the rest), so the letters stay touching.
7. Footage: re-encode all-intra (ffmpeg -g 1), load it as a blob URL, await 'seeked' before drawing each frame.
8. Sound: a downloaded SFX for every event (Mixkit), never synthesized, each placed by its measured peak. The song starts on a downbeat: the zoom lands on the drop, the wall sits in the breakdown, the wordmark returns with the beat. Loudnorm to -14 LUFS.
9. Render with Playwright: 4 subframes per frame blended with ffmpeg tmix, 60fps. Check one frame per beat, then scan for single-frame pops (frame-difference spikes 3x their neighbours).
</build>

<gotchas>
backdrop-filter: url() misreads displacement maps in Chromium, so clone the scene instead. A flood must overscale past the corners and take about 0.3s, or half the screen changes in one frame. A child with visibility: visible shows through a hidden parent, so use inherit. Text that swaps inside a morphing shape needs its own mask. python http.server can't range-seek video, so use the blob URL.
</gotchas>

<start>
Ask me for the inputs, then show me the beat map and 4 stills (open, glass, stage, wall) before you write the full film.
</start>

示例 3

示例 3 · 原文视频打开原视频 ↗

完整提示词 · 中文翻译

<inputs>
询问我:我希望该形状变成的 8 到 12 个 UI 状态(例如按钮、加载器、播放器、滑块、开关、标签页、图表、命令面板、轻提示)、纯黑白或一种强调色,以及一首约 120 BPM 的免版税歌曲(例如 Mixkit,可商业使用)。
</inputs>

<direction>
Dribbble 级别的 UI 动效。一个形状,永不剪辑:每个状态都是同一个元素在变形其尺寸、半径和颜色,同时其内容以短暂模糊进行切换。光标通过真实的点击和拖拽驱动每一次变化。浅暖灰色画布,黑白组件,一种干净的 UI 字体(Geist)。到处都是弹簧,最多只有微小过冲。摄像机缩放,使每个状态填满画面。最后一帧就是第一帧,因此可以循环。
禁止:弹跳缓动、粒子爆发、光晕、UI 控件上的渐变、不匹配的图标描边、空白时间、任何看起来像模板的东西。
</direction>

<structure>
120 BPM,7 小节,每一拍都有事情发生。
按钮 → 加载器 → 对勾 → 灵动岛 → 带播放/暂停变形的音乐播放器 → 拖动进度条 → 它变成音量滑块,拖过最大值时会拉伸 → 开关在节拍上翻转 → 旋钮变成液体标签指示器 → 标签页展开成自行绘制的图表,悬停时有工具提示 → 它折叠成 ⌘K → 输入以筛选 → 回车 → 轻提示 → 回到按钮。
</structure>

<build>
1. 一个 HTML 文件,正方形 1440x1440。每一种样式都在 seek(t) 内部根据时间计算:没有 CSS 过渡、没有定时器、帧与帧之间不携带状态。
2. 弹簧是闭式阶跃响应。一个多次改变目标的值是每次改变对应的一个弹簧之和,因此它始终是时间的纯函数。
3. 标签指示器的两条边分别跟随不同的弹簧,因此前缘会超前于后缘拉伸。开关旋钮用同样的技巧。
4. 拖拽是直接操作:光标按住时,值由其位置计算。松开时它从所在位置弹回。
5. 用 numpy 分析歌曲得到节拍网格,并从强拍开始。根据测得的峰值放置每一个 UI 音效。
6. 用 Playwright 渲染:每帧 4 个子帧,用 ffmpeg tmix 混合以获得 60fps 的运动模糊。
7. 在完整渲染之前先按每一拍渲染一帧。修正任何偏离网格、拥挤或难以阅读的地方。
</build>

<gotchas>
永远不要在摄像机缩放的任何东西上放置 will-change,否则文字会渲染模糊。在变形容器内切换的文字需要自己的进入和退出时序,否则会重叠。让最后一帧与第一帧完全相同,包括光标位置和速度,否则循环会卡顿。
</gotchas>

<start>
向我询问这些输入,然后在写任何代码之前向我展示节拍网格上的状态列表。
</start>
对照英文原提示词
<inputs>
Ask me for: 8 to 12 UI states I want the shape to become (e.g. button, loader, player, slider, toggle, tabs, chart, command palette, toast), pure black and white or one accent color, and a royalty-free song around 120 BPM (e.g. Mixkit, free for commercial use).
</inputs>

<direction>
Dribbble-level UI motion. One shape, never cut: every state is the same element morphing its size, radius and color while its content swaps with a short blur. A cursor drives every change with real clicks and drags. Light warm-gray canvas, black and white components, one clean UI font (Geist). Springs everywhere, a tiny overshoot at most. The camera zooms so each state fills the frame. The last frame is the first frame, so it loops.
Banned: bouncy easing, particle bursts, glows, gradients on UI chrome, mismatched icon strokes, dead time, anything that looks like a template.
</direction>

<structure>
120 BPM, 7 bars, something happens on every beat.
Button → loader → check → dynamic island → music player with a play/pause morph → scrub the progress bar → it becomes a volume slider that stretches when dragged past max → a toggle flips on the beat → the knob becomes a liquid tab indicator → the tabs open into a chart that draws itself, with a tooltip on hover → it collapses into ⌘K → type to filter → enter → toast → back to the button.
</structure>

<build>
1. One HTML file, square 1440x1440. Every style is computed from time inside seek(t): no CSS transitions, no timers, no state carried between frames.
2. Springs are closed-form step responses. A value that changes target many times is the sum of one spring per change, so it stays a pure function of time.
3. The tab indicator's two edges ride different springs, so the leading edge stretches ahead of the trailing one. Same trick for the toggle knob.
4. Drags are direct manipulation: while the cursor is held, the value is computed from its position. On release it springs back from wherever it was.
5. Analyze the song with numpy for the beat grid and start on a downbeat. Place every UI sound by its measured peak.
6. Render with Playwright: 4 subframes per frame, blended with ffmpeg tmix for motion blur at 60fps.
7. Render one frame per beat before the full render. Fix anything off the grid, cramped or hard to read.
</build>

<gotchas>
Never put will-change on anything the camera scales or the text renders blurry. Text that swaps inside a morphing container needs its own enter and exit timing or it overlaps. Make the last frame identical to the first, cursor position and speed included, or the loop stutters.
</gotchas>

<start>
Ask me for the inputs, then show me the state list on the beat grid before you write any code.
</start>

步骤 5:是什么让它看起来很昂贵

如果你不告诉它这些,它看起来就像一份 powerpoint

1. 没有东西淡入,事物改变形状。一个按钮长大变成下一页

2. 没有剪辑,每一幕都从前一幕中长出来

3. 歌曲的每一拍都有事情发生

4. 落地时会轻微弹跳一下,像真实物体一样

5. 摄像机一次只做一个运动

6. 每一次点击和嗖声都有真实音效

7. 在你观看之前它会检查自己的作品

步骤 6:最终定稿

当你喜欢这个方案时,告诉它:

完整提示词 · 中文翻译

以 60fps 带运动模糊渲染最终视频。把每一个音效精确放在它所属的时刻,平衡音频,并在展示给我之前检查每一帧是否有故障。
对照英文原提示词
Render the final video in 60fps with motion blur. Put every sound effect exactly on the moment it belongs to, balance the audio, and check every frame for glitches before you show me.

然后观看它,像导演而不是程序员那样给它提意见:

“这部分太慢了”

“那个淡入淡出看起来很廉价,让它改变形状”

“让缩放正好打在 drop 上”

诸如此类,通常需要 2 或 3 轮就完成了

这是我的完整流程工作流,如果你喜欢我的内容,关注 @twoclipping 将不胜感激

如果你是创始人,有一个提示:

发布视频很酷,但它仍然解决不了分发问题

我们的平台为 Rizz 应用放大了 50 亿短视频播放量,将其从 0 做到每月 40 万,尽管有超过 300 个仿品

如果你想获得我们 15 万+ 创作者的资源并通过同一引擎进行规模化,可以在这里预约通话:https://affiliatenetwork.com/

0 固定费用,创作者按实际效果获得报酬,大约每千次播放 0.50 美元

感谢阅读 ❤️

回到开头 ↑
原文封面放大预览