论证text-to-video模型对大多数实际内容(图表、图解、标题)是过度设计且成本高,应改为LLM生成机器检查spec+确定性代码渲染。
有一个普遍的假设,认为用 AI 制作动画内容意味着要用文本转视频模型。但对于实际发布的大多数内容——一个数值上升的图表、逐步展示的图表、滑动进入的标题——这个假设既昂贵又错误。
Sora 2 的 API 在 720p 时成本为 $0.10/秒,Pro 层级为 $0.30~$0.70/秒,OpenAI 已计划在 2026 年 9 月 24 日关闭整个 API。同时,研究人员在这些模型的失败模式基准测试中一次次记录到的,正是上述内容:可读的文本。研究人员称之为"字形崩溃"(glyph collapse)——字母融化、标签拼写不全。生成式视频模型用于绘制柱状图,就像用扩散模型处理电子表格一样不合适。
替代方案不是"不用 AI"。而是一种不同的分工:LLM 编写一份机器可检验的规范,确定性代码渲染像素。我想好好阐述这种架构,因为它是真正有效的方案,但几乎没有人在讨论 AI 视频时描述它。
先承认真实的用例。如果你需要照片级逼真的场景、人物、通过物理空间的摄像机运动,或任何内容没有数据结构支撑的东西——无人机镜头、演员、天气——那么你需要生成式模型,本文都不适用。这就是这些模型的用途,当主题确实是视觉性的时,它们令人惊叹。
但论证的范围更窄:大多数企业和开发者实际发布的视频内容不是这样的。
看看实际发布的内容:产品说明、统计数据公告、流程演示、教程开场、季度财报帖、路线图、发布倒计时。剥离样式后,每一个都是结构化数据——文字、数字、节点和边、坐标、时间戳。
有结构的内容可以用规范描述,规范可以用代码渲染:确定性地、免费、任意分辨率,每个字形都是真正的矢量。
动态文本——字符串、样式、时序曲线。
图表和统计——标签和数值行、模板、时长。
图表和流程图——节点和边的有类型图。
地图——停靠点、路线、帧、摄像机。
UI 演示——屏幕和时间线上的高亮。
这方面的工具已经很成熟,这是一种认可。Remotion 将 React 组件渲染为视频;Motion Canvas 及其面向管道的分支 Revideo 从 TypeScript 生成器驱动动画;Manim 是每部 3Blue1Brown 风格数学解说的幕后引擎。我们自己的方法更窄:一切都是 CSS 关键帧或 SVG 内的 SMIL,这就是为什么导出的文件无需运行时库就能动画化。
不同的权衡,相同的属性——像素来自计算,不是从分布中采样。

这个图表中的每个标签和数字都是真正的矢量字形——正是文本转视频模型被基准测试记录失败的东西。渲染它耗费零成本,耗时毫秒。(在 dev.to 上显示为 GIF;原始文件是 20 KB SVG。)
这是端到端有效的形式。
故事板 agent 首先出场。它接受简报并逐帧编写故事——观众看到什么、顺序是什么、持续多久。故事板是语言任务,这就是为什么 LLM 擅长它,也是为什么必须不能跳过:所有下游决策都取决于这份文档。
动画推理器随后遍历故事板,决定哪些部分需要动画,以及什么样的动画。不是所有东西都会移动。静默中悬停的标题是合法场景,告诉模型可能选择静止的模型比告诉它动画化一切会产生更好的节奏。
然后是承载整个设计的部分。
每个动画类别——动态文本、图表、图表、地图、UI——都作为工具调用暴露给模型,工具的规范就是该动画形式的分类法。
// The chart contract. The model fills this; it never emits pixels,
// timelines, or code.
{
"name": "animate_chart",
"description": "Render an animated chart segment for one storyboard beat.",
"parameters": {
"type": "object",
"required": ["template", "rows", "durationSec"],
"properties": {
"template": {
"type": "string",
"enum": ["bar-chart", "bar-race", "count-up", "progress-ring", "pie-chart"]
},
"rows": {
"type": "array",
"minItems": 2,
"maxItems": 8,
"items": {
"type": "object",
"required": ["label", "value"],
"properties": {
"label": { "type": "string", "maxLength": 20 },
"value": { "type": "number", "minimum": 0 }
}
}
},
"durationSec": { "type": "number", "minimum": 1, "maximum": 12 }
}
}
}
看这个规范编码了什么:不仅仅是类型,还有形式的分类法。五个模板,因为这些是该系统中存在的图表动画。标签上的 maxLength: 20,因为更长的字符串不符合柱宽。maxItems: 8,因为九行无法布局。人类设计师用眼睛应用的约束现在被写在模型必须遵守的地方。
工具调用层强制返回值恰好采用渲染器需要的形状。验证不是事后附加的审查步骤——它就是接口。
我们的流程图工作室在生产环境中精确运行这个循环。当编写 agent 的行未通过验证时,修复提示只接收拒绝理由,没有别的,重试是有界的:
// Bounded repair. The model gets the reason, not the conversation.
async function authorSpec(brief, { maxRepairs = 2 } = {}) {
let attempt = await callModel(AUTHOR_SYSTEM, brief);
for (let i = 0; i <= maxRepairs; i++) {
const problems = validate(attempt); // pure, synchronous, no model
if (!problems.length) return attempt;
if (i === maxRepairs) throw new SpecError(problems);
attempt = await callModel(REPAIR_SYSTEM, {
spec: attempt,
problems, // ← the only new information
});
}
}
一份无法被机器检验的规范是 prompt,不是规范。
从那里开始,管道有意保持非智能。确定性渲染器将每份已填充的约定转换为动画段——相同的输入产生相同的字节。拼接器用 ffmpeg 组装段。没有模型接触这个阶段,这正是为什么它的输出可以被信任。

架构。每份约定的左边是生成,右边是确定性——以及一个永远不必观看视频的验证器。
LLM 无法观看视频。即使用多模态模型,通过上下文窗口传送整个视频也是错误的想法——昂贵、有损、缓慢。
但验证器不需要视频。因为渲染是确定性的,它可以挑选一些合理的时间戳——中点展示、标签定位点、最终帧——请求静帧并检查那些。
// Sample where the animation is supposed to be interesting,
// not at uniform intervals.
const probes = [
{ t: 0.35 * dur, expect: "bars partially grown, labels legible" },
{ t: 0.70 * dur, expect: "ranking has changed at least once" },
{ t: dur, expect: "final values match the spec exactly" },
];
for (const probe of probes) {
const png = await renderStillAt(segment, probe.t); // deterministic seek
const verdict = await vision(png, probe.expect);
if (!verdict.ok) return repair(segment, verdict.reason);
}
这是我们从自己的捕获管道直接学到的教训:帧通过寻求动画时钟产生,从不通过竞争墙钟时间,所以"2.4 秒的帧"是一个稳定、可重现的工件。采样静帧的验证只有在渲染器是确定性的时才值得信任——像素必须来自代码的另一个原因。失败的检查将有界修复循环反馈给拥有失败规范的 agent,并附加理由。
叙述不需要等待像素。一个脚本 agent 从故事板编写语音旁白,与视觉来自同一故事板,TTS 模型说出来,同步步骤将音频与拼接的时间线对齐。
因为两条通道都源自一个故事板且有明确的持续时间,同步是算术而不是猜测。故事板是唯一真相源;其他一切都是它的投影。
一旦你看到这个模式,它随处可见。
Google 的 NotebookLM Video Overviews 始于叙述幻灯片——AI 脚本加确定性幻灯片渲染器,是最纯粹形式的模式。较新的 Cinematic 层有 Gemini 充当,用 Google 自己的话,作为协调图像和视频模型的创意总监。编排仍然是 agent 做结构决策;生成式模型是它调用的工具。
Easymotion 将聊天转换为地图动画,以及从上传的电子表格生成的动画图表——prompt 输入、模板化确定性动作输出,每月花费约 $10。
这也是我们自己的流程图工作室的工作方式。在 Describe it 模式中,agent 为人类填写的相同模板之一编写行——它登陆同一编辑器、通过相同验证、通过相同布局和时序代码渲染。在 Upload one 模式中,一个视觉 agent 将拍摄的图表读入有类型的图。在两者中,模型编写结构,模板拥有几何和运动。信息图工作室画出相同的线:AI 可能建议数据;动画是计算的。

Describe-it agent 编写行所属的输出类。布局和时序由模板计算——agent 从不接触任何一个。
上面的两个动画都是我们产品的真实输出——编写为规范,由代码渲染。在原始帖子上它们是自包含的 SVG,可以重放,因为文档本身描述了运动;这里的 GIF 来自本文描述的相同确定性管道,这也是为什么它们生成是免费的。
没有涉及视频模型、无需渲染农场、无需按秒计费。
这是诚实的总结:当你的内容有结构时,让 agent 编写规范,让代码制作像素——并为值得的场景保留生成式模型。