
1. 当模型开始画视频一个反直觉的实测发现第一次看到Claude Opus 5.5 直出视频这个说法我的反应和大多数人一样——不信。大语言模型输出的是 token视频是像素帧序列这两者之间隔着一整套渲染管线怎么可能直出但把提示词丢进去跑了一遍之后我盯着浏览器里那个自己动起来的画面沉默了大概十秒钟。这里说的直出视频准确讲是模型一次性生成一段可运行的 HTML CSS JavaScript 代码在浏览器里渲染出连续动画效果。它不是生成 mp4 文件而是生成一个活的页面。你打开这个 HTML就能看到物体在运动、光影在变化、镜头在推进。从观感上讲这和看一段短视频几乎没有区别但它的本质是代码驱动的实时渲染。这件事为什么值得单独写一篇因为它彻底改变了内容生产的成本结构。以前做一个几秒钟的动画要么用 AE 逐帧调要么用代码手写 canvas 动画门槛都不低。现在你只需要把想要的画面用自然语言描述清楚模型把 HTML/CSS/JS 一次性吐出来复制粘贴就能跑。对于做前端 demo、做产品原型、做教学演示、甚至做社交媒体素材的人来说这是一条全新的路径。这篇文章我会把整套东西拆开讲模型到底生成了什么、提示词该怎么写才能稳定出效果、HTML/CSS/JS 三层各自承担什么职责、实测中踩过的坑、以及怎么把这套流程固化下来反复用。关键词里的 Claude Opus、Claude Code、提示词、HTML、CSS 都会落到具体操作上不空谈。先说结论能直出但有前提。前提是你的提示词得把画面结构、运动逻辑、视觉风格、技术约束这四件事说清楚。少任何一项出来的东西就会跑偏。下面逐层拆。2. 拆开看直出视频到底生成了什么2.1 它不是视频文件是一个自包含的网页模型输出的东西本质是一个完整的 HTML 文档。结构上通常长这样!doctype html开头html langzh-cnhead里放meta charsetutf-8和meta nameviewport然后是style块写 CSSbody里放 DOM 结构最后script块写动画逻辑。为什么是这种形态而不是别的因为浏览器是最通用的播放器。你不需要装任何东西双击 HTML 文件就能看。模型选择这个载体是因为它的训练数据里有海量的网页代码它最擅长生成的就是这种结构完整、能独立运行的单文件页面。我实测下来一个中等复杂度的动画场景模型一次输出的代码量大概在 200 到 600 行之间。这个体量刚好卡在能一次生成完和足够表达复杂画面的平衡点上。再复杂就得拆成多轮对话让它先出骨架再补细节。2.2 三层结构各干什么活理解这三层的分工是写好提示词的基础。很多人提示词写得糊就是因为没搞清楚自己要的效果该由哪一层来实现。层级职责典型内容提示词里怎么描述HTML定义画面里有什么容器 div、canvas、文字节点、层级嵌套画面中央有一个圆形底部有一行标题文字CSS定义长什么样、静态布局颜色、尺寸、圆角、阴影、渐变、定位深蓝到紫色的径向渐变背景元素带发光边缘JavaScript定义怎么动、随时间变化定时器、requestAnimationFrame、状态更新粒子持续向外扩散镜头缓慢推进关键认知静态的视觉归 CSS动态的变化归 JS。如果你想要涟漪光圈扩散光圈本身的样式颜色、粗细、透明度是 CSS扩散这个动作是 JS 在每一帧改它的尺寸和透明度。提示词里把这两件事分开说模型生成的质量会明显更高。2.3 为什么直出能成立有人会问模型又没运行过这段代码怎么保证动画是对的答案是它不需要运行它需要的是符合语法且逻辑自洽。动画的本质是数学——位置随时间变化、透明度随距离衰减、角度随速度累加。这些规律在训练数据里被反复强化过模型对什么样的代码会产生什么样的运动有很强的模式识别能力。我做过一个对照实验同一个鹈鹕骑自行车的场景用模糊提示词和精确提示词各生成一次。模糊版出来的鹈鹕是几个色块拼的自行车轮子不转精确版出来的鹈鹕有明确的喙、翅膀、身体比例车轮会转背景还有视差滚动。差距全在提示词的颗粒度上。3. 提示词工程把想要什么翻译成模型能执行的语言3.1 四要素框架结构、运动、风格、约束我总结了一套写这类提示词的固定框架四个要素缺一不可。这套框架不是拍脑袋来的是踩了十几次坑之后归纳出来的。结构——画面里有哪些元素它们的位置关系。比如画面中央是一只鹈鹕鹈鹕下方是一辆自行车背景是横向滚动的城市剪影。位置关系一定要说否则模型会随机摆放。运动——每个元素怎么动动的节奏是什么。比如自行车轮子匀速旋转鹈鹕身体随踩踏节奏上下起伏背景以较慢速度向左滚动形成视差。运动要分层不同元素速度不同才有层次感。风格——视觉调性。是扁平插画、像素风、写实、还是霓虹赛博颜色偏好、线条粗细、是否有阴影和发光都要交代。风格词越具体越好好看这种词等于没说。约束——技术边界。画布尺寸比如宽 1440px、高 810px、是否用 canvas、是否允许外部依赖、性能要求。约束能防止模型生成一堆跑不起来的东西。把这四要素写成一段连贯的描述比列清单效果更好因为模型对自然语言的上下文理解比结构化列表更顺。3.2 一个可直接抄的提示词模板下面这个模板我用了很多次改改细节就能套不同场景用单个 HTML 文件生成一段循环动画宽 1440px 高 810px居中显示。画面主体是【主体描述】位于画面【位置】。背景是【背景描述】带有【背景运动】。主体做【主体运动】节奏是【节奏描述】。整体风格是【风格关键词】主色调【颜色】【光影/质感要求】。用 CSS 做静态样式用 JavaScript 的 requestAnimationFrame 驱动动画不要引入任何外部库确保双击 HTML 文件即可运行。这个模板的价值在于它把四要素都覆盖了而且明确了技术实现方式requestAnimationFrame、无外部依赖减少了模型的自由发挥空间输出更可控。3.3 为什么鹈鹕骑自行车成了经典测试用例你可能注意到热搜词里反复出现鹈鹕骑自行车提示词。这个场景之所以被拿来当基准测试是因为它同时考验好几项能力鹈鹕的形态识别喙、脖子、翅膀、自行车的结构两个轮子、车架、脚踏、两者的空间关系鹈鹕坐在车上、以及运动逻辑轮子转、身体动。一个模型能不能把这个场景画对基本能反映它的空间理解和代码组织能力。我实测的经验是先让模型生成静态的鹈鹕骑车画面确认形态对了再加运动。一次性要求会动的鹈鹕骑车失败率明显更高。分两步走先静态后动态是提高成功率的实用技巧。3.4 提示词里的常见误区说几个我踩过的坑。第一个是过度描述颜色数值比如写#3A7BD5 到 #00D2FF 的渐变模型有时候会理解偏差不如写蓝色到青色的渐变来得稳。第二个是运动描述太抽象写动起来有活力模型完全不知道该怎么动得写上下弹跳每秒两次。第三个是忘了说循环不说明的话模型可能生成只播一次的动画播完就停在那了。还有一个隐蔽的坑同时要求太多元素动。画面里五个东西都在动模型容易顾此失彼生成出来的代码逻辑会乱。我的做法是主次分明主体动得明显背景动得轻微其余元素保持静止。4. 从代码到画面HTML/CSS/JS 的协作细节4.1 CSS 负责的静态美学模型生成的 CSS 里最常出现的几类效果值得单独说。渐变背景几乎每个动画都有radial-gradient做径向光晕linear-gradient做线性过渡这两个用得最多。发光效果靠box-shadow叠加多层实现比如box-shadow: 0 0 20px rgba(100,200,255,0.8)就能让元素边缘泛蓝光。涟漪光圈扩散这个效果CSS 部分通常是定义一个圆环用border或者box-shadow画出来然后 JS 控制它的transform: scale()和opacity。这里有个细节transform和opacity是性能最好的动画属性因为它们不触发重排只触发重绘甚至合成。模型如果用了width/height来做扩散动画性能会差很多你可以手动改成transform。字体渐变也是个高频需求实现方式是background: linear-gradient(...)配合-webkit-background-clip: text和color: transparent。模型一般能写对但偶尔会漏掉-webkit-前缀导致在某些浏览器里不生效这个要检查。4.2 JavaScript 驱动的时间维度动画的心脏是requestAnimationFrame。模型生成的 JS 通常长这样定义一个animate函数里面根据当前时间戳计算各个元素的状态更新 DOM 或 canvas然后递归调用requestAnimationFrame(animate)。为什么用requestAnimationFrame而不是setInterval因为前者跟着浏览器的刷新率走通常 60fps页面切到后台时会自动暂停省电且不卡顿。setInterval是固定间隔容易和刷新不同步产生抖动。模型现在基本都默认用前者但如果你看到它用了setInterval可以要求它改。时间驱动的核心是用时间戳算状态而不是用帧数累加。比如让一个元素转圈正确写法是angle (timestamp / 1000) * speed这样无论帧率怎么变转速都一致。错误写法是每帧angle 0.01帧率一波动速度就变了。这个细节模型有时候会搞错值得留意。4.3 视差滚动是怎么做出来的视差是让画面有纵深感的关键技巧。原理很简单不同层用不同的移动速度。背景层慢中景层中速前景层快。在代码里就是给每层设一个速度系数JS 里按offset baseSpeed * layerFactor * time来算位移。我实测发现模型对视差这个词的理解还不错但如果你只说背景动起来它可能让整个背景一起平移没有层次。所以提示词里要明确多层视差背景慢前景快。速度比例一般设成 0.2 : 0.5 : 1 这种视觉上比较舒服。4.4 性能与兼容性的隐藏问题生成的代码能跑不代表跑得好。几个常见问题一是元素太多导致掉帧比如生成了几百个粒子每个都是独立 DOM 节点浏览器扛不住。解决办法是改用 canvas 绘制或者减少粒子数量。二是没做响应式固定 1440px 宽度的画面在小屏幕上会溢出加个transform: scale()或者用相对单位能缓解。三是颜色和字体在不同系统上表现不一致。模型可能用了某个特定字体但用户机器上没装就回退成默认字体画面感觉全变了。稳妥的做法是只用系统通用字体族比如sans-serif、monospace。5. 实测踩坑记录那些文档不会告诉你的问题5.1 生成成功但画面全黑第一次遇到这个的时候我懵了代码看着没问题打开就是一片黑。排查了半天发现是层级问题背景层用了position: absolute但没设z-index把前景元素盖住了。或者反过来前景元素的z-index是负的跑到背景后面去了。这类问题的根源是模型对层叠上下文的理解偶尔会出错。修复方法很简单给关键元素显式加上z-index背景设 0内容设 1浮层设 2。养成这个习惯能避免大部分看不见的问题。5.2 动画只播一次就停前面提过这是提示词没说明循环导致的。但还有一种情况代码里明明写了循环逻辑动画还是停了。这通常是状态没有重置。比如一个元素从左边移到右边移出屏幕后没有回到起点自然就停了。修复方式是在位移超过阈值时把位置重置或者用取模运算position (position speed) % range让它自动循环。5.3 元素位置和预期完全不符模型对中央左上角这类方位词的理解依赖它生成的布局方式。如果它用了flex居中那中央就是对的如果它用了绝对定位但坐标算错了元素就偏了。我的经验是在提示词里同时给出方位和大致坐标比如位于画面中央偏下大约在高度 70% 的位置双保险。5.4 中文显示成方块这个坑很典型。模型生成的 HTML 里如果meta charset没写对或者字体设置里没有中文字体中文就会显示成方块或乱码。检查两点meta charsetutf-8必须在head最前面CSS 的font-family里要包含中文字体比如Microsoft YaHei, PingFang SC, sans-serif。5.5 复制到本地后样式丢失有时候在对话窗口里预览是好的复制成 HTML 文件打开就变样了。原因通常是代码被截断或者复制时丢了部分内容。模型输出长代码时末尾可能被省略。解决办法是让它分段输出或者明确要求输出完整代码不要省略任何部分。6. 把一次性生成变成可复用的工作流6.1 用 Claude Code 固化流程如果你在用 Claude Code 这类工具可以把这套流程脚本化。思路是准备一个提示词模板文件把变量部分主体、背景、风格抽出来每次生成时替换变量让模型填充。这样能保证每次输出的结构一致减少随机性。具体做法是建一个目录里面放template.md存提示词骨架再写个简单的脚本读取模板、替换占位符、调用模型接口。跑通之后生成一个动画就是改几个参数的事。这套东西对需要批量产出素材的场景特别有用。6.2 建立自己的效果库每次生成出满意的效果别用完就扔。把 HTML 文件存下来按效果类型分类渐变背景类、粒子类、视差类、文字动画类。积累到一定数量后你会发现很多效果可以拆出来复用。比如那个涟漪光圈换个颜色和尺寸就能用在完全不同的场景里。我现在的做法是维护一个effects文件夹每个效果一个独立 HTML文件名写清楚它是什么。需要的时候直接翻比重新生成快得多而且质量稳定。6.3 迭代而不是重来生成结果不理想时不要推翻重来而是基于现有结果提修改意见。比如把背景改成深色让运动慢一点给主体加个阴影。模型在已有代码基础上改比从零生成更精准也更省 token。这个习惯能大幅提升效率。6.4 参数化你的提示词把常用的参数抽出来做成变量比如画布尺寸、主色调、动画速度、循环周期。这样同一套提示词能快速适配不同需求。比如做竖版短视频素材就把尺寸改成 1080x1920做横版演示就改成 1920x1080其余逻辑不变。7. 这套方法适合谁以及它的边界在哪7.1 最适合的三类人前端开发者——拿它快速做交互原型比手写快十倍。想要个加载动画、想要个背景特效描述一下就有了改改就能用进项目。内容创作者——做视频封面、做动态贴纸、做社交媒体素材不需要会 AE会描述就行。生成的 HTML 可以录屏转成视频也可以直接嵌入网页。教学和演示场景——讲算法、讲物理、讲数学用动画演示比静态图直观得多。以前做这种演示要专门写代码现在描述一下就有。7.2 它做不到什么得说清楚边界免得期望过高。它生成不了写实级别的视频那种需要真实拍摄或三维渲染的画面它做不出来。它不擅长复杂的人物动作人形角色的骨骼动画它搞不定出来的会很僵硬。它对物理模拟是近似的不是真的在算物理方程所以复杂的碰撞、流体效果会失真。理解这些边界才能把它用在合适的地方。它是个快速出效果的工具不是替代专业制作的方案。7.3 一个务实的定位我的看法是把它当成从想法到可视化的最短路径。你脑子里有个画面以前要么找设计师要么自己学软件现在描述一下就能看到雏形。这个雏形可能不完美但它能帮你快速验证想法、快速沟通、快速迭代。等方向确定了再决定是用它直接交付还是交给专业工具精修。这个定位下它的价值不在于生成得多完美而在于生成得多快。快就意味着你能试更多方案能更快找到对的那个。8. 几个能立刻上手的实操建议如果你现在就想试我给你几条最实用的建议。第一条从最简单的场景开始一个圆在动、一个渐变在变先跑通流程建立信心。第二条提示词里永远写清楚画布尺寸和循环播放这两个是最容易漏又最影响结果的。第三条生成后先看代码有没有meta charsetutf-8没有就手动加上能省掉一堆乱码问题。第四条想要复杂效果就分步来先静态后动态先主体后背景。第五条把满意的结果存下来建自己的素材库这是长期收益最高的一件事。第六条遇到画面全黑或者元素不见先查z-index和position八成是这俩的问题。最后分享一个我最近常用的技巧让模型在生成动画的同时在代码里加注释说明每个部分的作用。这样你拿到代码后能快速看懂哪里改什么二次修改的效率高很多。这个要求加在提示词末尾就行模型一般都会照做。这套东西我用了几个月最大的感受是门槛真的降下来了。以前觉得做动画是件需要专门技能的事现在发现把想法说清楚本身就是一种能力而模型负责把这种能力翻译成代码。这个转变挺有意思的值得每个做内容、做产品、做开发的人都试试。