1. 当大模型开始"画"视频:一个反直觉的实测发现
第一次看到"Claude Opus 5.5 直出视频"这个说法,我的反应和大多数人一样——不信。大语言模型输出的是文本 token,视频是像素帧序列,这两者之间隔着一整套渲染管线,怎么可能"直出"?但把这件事拆开看之后,我发现它其实一点都不玄学,反而是一个非常聪明的"借力"思路:模型不生成视频文件,它生成的是能自己动起来的 HTML + CSS + JS 代码,浏览器一跑,画面就动起来了。你看到的"视频",本质是一个单文件网页动画。
这个区别很关键。真正的文生视频模型(比如各类扩散模型)是在像素空间里逐帧去噪,算力开销大、时长受限、可控性差;而让 Claude Opus 5.5 写一段带动画的 HTML,它是在代码空间里工作,输出的是结构化的 DOM、CSS 关键帧和 JS 时间轴。好处是文件极小(几 KB)、可无限循环、可交互、可随时改参数,坏处是它做不出真实拍摄级别的画面,只能做矢量风格、几何风格、UI 演示风格的动态内容。
所以这篇东西适合谁看?如果你是前端、做产品演示、做数据可视化、想给 landing page 加个动态 hero 区、或者单纯想玩一下"用提示词生成动画",那这套方法非常实用。如果你期待的是生成真人电影级视频,那方向不对,趁早换工具。我下面会把整套流程拆开讲:为什么这条路走得通、提示词到底该怎么写、拿到代码后怎么调、以及我踩过的那些坑。
先给一个最直观的结论:所谓"直出视频",90% 的功劳在提示词工程,10% 在模型能力。同一段需求,提示词写得糙,出来的就是一堆静态色块;提示词写得细,出来的就是一个能循环播放、带缓动、带层次感的动画。这也是为什么标题里特意标了"附提示词"——提示词才是真正的核心资产。
2. 拆解"直出视频"的底层逻辑:为什么 HTML+CSS 能骗过眼睛
2.1 视觉暂留与帧率:动画的本质是"骗"
人眼有视觉暂留效应,当静态画面以每秒 24 帧以上切换时,大脑会把它脑补成连续运动。CSS 的@keyframes配合animation属性,本质上就是让浏览器在时间轴上插值计算元素的属性值,然后以显示器刷新率(通常 60Hz)重绘。也就是说,浏览器本身就是一台免费的"渲染引擎",你只要告诉它"从 A 状态变到 B 状态,用 2 秒,缓动曲线是 ease-in-out",它就帮你把中间帧全算出来。
这就是为什么 Claude Opus 5.5 不需要生成视频文件——它只需要生成描述状态变化的代码。举个最小例子:
<!doctype html> <html lang="zh-cn"> <head> <meta charset="utf-8"> <style> .ball { width: 60px; height: 60px; border-radius: 50%; background: radial-gradient(circle at 30% 30%, #7dd3fc, #0369a1); animation: bounce 1.2s ease-in-out infinite; } @keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-120px); } } </style> </head> <body> <div class="ball"></div> </body> </html>这段代码不到 20 行,浏览器打开就是一个上下弹跳的球,无限循环。它"是视频"吗?从用户体验上说,是的——它动起来了。从技术上说,它是一个 CSS 动画。理解了这个本质,后面所有提示词技巧都好办了。
2.2 为什么是 HTML 而不是别的格式
有人会问,为什么不让模型直接输出 GIF 或者 MP4?原因有三点。第一,文本模型输出二进制文件的能力极差,它擅长的是结构化文本,不是字节流。第二,HTML 是自包含的,一个文件丢进浏览器就能跑,不需要编译、不需要依赖。第三,HTML 动画可参数化,你想改颜色、改速度、改尺寸,改一行 CSS 就行,而视频要重新渲染。
从工程角度看,这套方案还有一个隐藏优势:可访问性和可嵌入性。生成的 HTML 可以直接塞进 iframe、可以截图、可以录屏转成真正的视频、也可以作为网页的一部分长期存在。我做过一个项目,用这种方式生成产品 loading 动画,直接嵌进前端工程,比找设计师出图快得多。
2.3 模型在这里到底做了什么
Claude Opus 5.5 在这条链路里的角色,是"把自然语言需求翻译成可运行的动画代码"。它需要同时理解几件事:你要的画面内容(几何形状、文字、布局)、运动方式(位移、旋转、缩放、透明度)、时间节奏(时长、延迟、循环)、以及视觉风格(配色、阴影、圆角、字体)。
这其实是一个多约束的代码生成任务。模型强的地方在于它见过海量的前端代码,知道transform比top/left性能好、知道will-change能提示 GPU 加速、知道cubic-bezier怎么写缓动。弱的地方在于它有时会"想当然",比如写出不存在的 CSS 属性、或者动画时长和循环对不上。所以拿到代码后必须实测,这一步不能省。
3. 提示词工程实战:从一句话到一段能跑的动画
3.1 提示词的四段式结构
我试过几十次之后,总结出一个比较稳的提示词模板,分四段:画面描述 + 运动描述 + 技术约束 + 输出格式。缺任何一段,结果都会打折。
画面描述要具体到"有什么元素、什么颜色、什么布局"。比如不要写"一个好看的动画",而要写"深色背景,中央一个直径 80px 的青色圆环,圆环内部有一个白色小圆点"。运动描述要写清"谁在动、怎么动、动多久"。技术约束是很多人忽略的,但它决定了代码能不能直接用,比如"只用 HTML 和 CSS,不要引入外部库,宽 1440px 高 810px,适配桌面端"。
输出格式则要明确"给我一个完整的单文件 HTML,包含 doctype 和 meta charset"。这一点特别重要,因为如果你不说,模型可能只给你一段 CSS 片段,你还得自己拼。
3.2 一个可直接抄的提示词范例
下面这段是我实测下来效果比较稳的提示词,你可以直接改参数用:
请生成一个完整的单文件 HTML 动画,要求如下: 【画面】深色背景(#0f172a),画面中央有一组同心圆环, 由内到外共 4 层,颜色从 #22d3ee 渐变到 #6366f1, 每层圆环有轻微的发光效果(box-shadow)。 【运动】圆环从中心向外扩散,每层延迟 0.2 秒启动, 扩散过程中透明度从 1 衰减到 0,扩散到最大时消失并重新开始, 整体循环周期 2.4 秒,缓动用 ease-out。 【技术约束】只用 HTML + CSS,不引入任何外部库和字体; 画布尺寸 1440px × 810px,居中显示;使用 transform 做动画, 不要用 top/left;给动画元素加 will-change: transform, opacity。 【输出】给我一个完整的 HTML 文件,从 <!doctype html> 开始, 包含 <meta charset="utf-8">,代码里加中文注释说明每段作用。这段提示词的关键在于每个约束都是可验证的。颜色给了十六进制值,时长给了秒数,缓动给了具体函数。模型不需要猜,直接照做,出来的代码基本能一次跑通。
3.3 为什么"鹈鹕测试"这类提示词会火
最近圈子里流行各种"鹈鹕骑自行车""鹈鹕测试"的提示词,本质上是大家在用同一个复杂场景去横向对比不同模型的代码生成能力。鹈鹕这个形象有辨识度(大嘴、长脖子、体型特殊),骑自行车又涉及多个部件的相对运动(轮子转、身体前倾、腿蹬踏),是一个很好的"综合题"。
我拿这类提示词测过几次,发现一个规律:模型对"部件关系"的理解比"部件本身"更容易出错。比如它能把鹈鹕画出来、能把自行车画出来,但让鹈鹕的脚准确地踩在踏板上、并且跟着轮子转,就容易穿模或者错位。解决办法是在提示词里显式描述层级关系,比如"把鹈鹕的身体和自行车放在同一个容器里,用 transform-origin 控制旋转中心,确保脚部锚点在踏板位置"。这种"结构提示"比单纯描述外观有用得多。
4. 拿到代码之后:调试、优化与常见翻车现场
4.1 第一件事永远是"先跑起来再改"
模型给的代码,不管看起来多漂亮,先原样保存成.html文件,双击用浏览器打开。我见过太多人拿到代码先改一通,结果改崩了都不知道是原始代码的问题还是自己改的问题。先验证基线,再动手优化,这是铁律。
跑起来之后重点看三件事:动画是否循环、是否有明显卡顿、元素位置是否符合预期。如果动画不循环,八成是animation-iteration-count没设成infinite;如果卡顿,检查是不是用了top/left而不是transform;如果位置偏了,看容器的position和display设置。
4.2 性能优化的三个关键点
第一个是优先用 transform 和 opacity。这两个属性可以走 GPU 合成层,不触发重排重绘。而width、height、top、left、margin这些会触发 layout,动画一多就掉帧。
第二个是加 will-change。在动画元素上写will-change: transform, opacity;,浏览器会提前把它提升为独立图层。但注意别滥用,加太多反而吃内存,一般只加在真正在动的元素上。
第三个是控制图层数量。每个独立图层都要占显存,几十个元素同时动画时,如果每个都提升图层,反而更慢。我的经验是:同一组做相同动画的元素,尽量放在一个容器里,对容器做动画,而不是对每个子元素单独做。
4.3 那些年我踩过的坑
坑一:模型爱用不存在的 CSS 属性。有一次它给我写了animation-timing-function: smooth;,但smooth不是合法值,合法的是ease、linear、ease-in-out或者cubic-bezier()。浏览器会静默忽略,动画就变成匀速,看起来"怪怪的"但又不报错。排查方法是打开 DevTools 的 Computed 面板,看属性有没有被划掉。
坑二:单位混用。模型有时在同一个文件里混用px、rem、%,导致缩放时比例全乱。我的做法是统一用px做桌面端固定尺寸动画,需要响应式再单独处理。
坑三:<style>标签位置。有些模型会把<style>写在<body>里,虽然浏览器能识别,但不规范,而且可能被某些框架的解析器搞乱。正确做法是放在<head>里。
坑四:中文注释导致编码问题。如果文件没声明<meta charset="utf-8">,中文注释会变乱码,甚至影响后面的 CSS 解析。所以提示词里一定要强调输出 charset。
5. 从"能跑"到"好看":进阶玩法与场景延展
5.1 用 JS 做时间轴控制
纯 CSS 动画的短板是难以做复杂的时序编排。比如你想让 A 动完 B 再动、C 和 D 同时动但速度不同,纯 CSS 要靠animation-delay硬凑,很别扭。这时候可以让模型加一段 JS,用requestAnimationFrame或者Web Animations API来做时间轴。
Web Animations API 的写法比 CSS 更灵活:
const el = document.querySelector('.ring'); el.animate([ { transform: 'scale(0.5)', opacity: 1 }, { transform: 'scale(2)', opacity: 0 } ], { duration: 2400, easing: 'ease-out', iterations: Infinity, delay: 200 });这段代码和 CSS 版效果一样,但你可以用 JS 变量控制参数,做交互响应。比如鼠标移入时暂停、点击时加速,这些都是纯 CSS 做不到的。
5.2 把动画导出成真正的视频
如果你确实需要一个 MP4 文件(比如发到不支持 HTML 的平台),可以用录屏工具把浏览器里的动画录下来。更专业的做法是用MediaRecorderAPI 配合canvas.captureStream(),在页面里直接把动画录成 webm,再转码。这条路我试过,画质取决于录制的分辨率和码率,做演示够用。
5.3 场景延展:不止是"炫技"
这套方法真正有价值的地方,是它能快速产出可用的动态素材。我列几个实际用过的场景:
- 产品 loading 动画:生成一个品牌色的循环动画,直接嵌进前端工程,比等设计师出图快。
- 数据可视化过渡:图表加载时的数字滚动、柱状图生长动画,用 CSS 关键帧几行就搞定。
- Landing page hero 区:背景的粒子、光晕、渐变流动,提升页面质感。
- 教学演示:把抽象概念(比如排序算法、网络请求流程)做成动画,比静态图好懂太多。
- PPT 替代品:用 HTML 做一页会动的演示,比 PPT 动画自由度高。
5.4 提示词进阶:让模型"自我检查"
最后一个技巧,也是我觉得最实用的:在提示词末尾加一句"生成后请检查代码中是否有不存在的 CSS 属性、单位是否统一、动画是否设置了 infinite 循环,如有问题请直接修正后再输出"。这一句话能让模型在输出前做一次自检,实测能减少不少低级错误。虽然不能保证 100% 正确,但比不加要好得多。
另外,如果你对某个效果不满意,不要重新写提示词,而是在原有代码基础上让模型改。比如"把圆环颜色改成暖色系,循环周期缩短到 1.8 秒",这样它只需要改几个值,不会把整个结构推翻重来。迭代式修改比推倒重来效率高得多。
6. 关于"直出视频"这件事,我的真实看法
玩了这么久,我的判断是:这不是"模型会做视频了",而是"模型会写动画代码了",只是这个能力被包装成了一个更抓眼球的说法。但包装归包装,能力是真的。它把原本需要前端工程师写半天的动画,压缩到了几分钟的提示词对话,这个效率提升是实打实的。
不过也要清醒:它做不了写实画面、做不了复杂物理模拟、做不了长时序叙事。它的舒适区是矢量风格、几何风格、UI 演示风格的动态内容。认清边界,用对场景,它就是个非常顺手的工具;用错场景,就会觉得"不过如此"。
我个人的习惯是把它当成一个"动画草稿生成器":先用提示词快速出几版,挑一个方向对的,再手动精修细节。这样既享受了 AI 的速度,又保留了人工的精度。纯靠它一次成型,目前还不现实;但把它当起点,效率能翻好几倍。
最后分享一个小经验:把好用的提示词存下来,建一个自己的提示词库。动画这东西,套路就那么几类——扩散、弹跳、旋转、渐变、粒子。每类调好一个模板,下次换个颜色和尺寸就能复用。这比每次从零写提示词省事太多,也是我从这堆实验里攒下的最实在的资产。