Skip to Content

12c - 端到端工作流

本文是《AI Agent 实战手册》第 12 章第 3 节。 上一节:12b-环境搭建 | 下一节:12d-实战案例集

概述

Remotion + AI Agent 的核心价值在于一条完整的管线:从自然语言描述出发,经 Claude Code + Remotion Skills 翻译为 React/TypeScript 视频代码,在 Remotion Studio 中实时预览和迭代,最终渲染为可分发的 MP4 文件。本节将逐步拆解这条管线的每一个环节,配以流程图和操作说明,帮你建立从 prompt 到成品视频的完整心智模型。


1. 工作流全景:五阶段管线

整个端到端工作流可以分为五个阶段,每个阶段有明确的输入、处理和输出。

工具推荐

工具用途价格适用场景
Claude Code自然语言→视频代码的 AI 引擎Pro $20/月;Max 5× $100/月;Max 20× $200/月全流程 AI 驱动核心
Remotion Agent Skills教 AI 写正确 Remotion 代码的知识层免费(开源)提升 AI 生成代码质量
Remotion Studio本地实时预览和调试包含在 Remotion 中(免费)预览和迭代阶段
Remotion CLI命令行渲染工具个人及 ≤3 人公司免费;企业需 Company License本地渲染输出
Remotion LambdaAWS Lambda 分布式云渲染框架免费(需付 AWS 费用,约 $0.01-0.05/视频)批量渲染、生产部署
Remotion Cloud RunGCP Cloud Run 云渲染框架免费(需付 GCP 费用)GCP 生态用户
Remotion PlayerWeb 嵌入式播放组件包含在 Remotion 中(免费)在 Web 应用中嵌入预览
FFmpeg视频后处理和格式转换免费(开源)格式转换、压缩、拼接

操作步骤

步骤 1:理解五阶段管线全景

┌─────────────────────────────────────────────────────────────────────────┐ │ Remotion + AI Agent 端到端工作流 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌───────────┐ ┌───────────────┐ ┌──────────────┐ │ │ │ 阶段 1 │ │ 阶段 2 │ │ 阶段 3 │ │ │ │ Prompt │───→│ AI 代码生成 │───→│ 预览与迭代 │ │ │ │ 需求描述 │ │ Claude Code │ │ Studio │ │ │ └───────────┘ └───────────────┘ └──────┬───────┘ │ │ │ │ │ ↓ │ │ ┌───────────────┐ ┌──────────────┐ │ │ │ 阶段 5 │ │ 阶段 4 │ │ │ │ 分发与集成 │←───│ 渲染输出 │ │ │ │ CDN/邮件/API │ │ CLI/Lambda │ │ │ └───────────────┘ └──────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────┘

五阶段概览:

阶段输入处理输出耗时
1. Prompt 需求描述自然语言文字人工构思和编写 prompt结构化视频需求2-10 分钟
2. AI 代码生成Prompt + Skills 上下文Claude Code 生成 React/TS 代码视频组件源码1-5 分钟
3. 预览与迭代视频组件源码Studio 实时渲染 + 自然语言修改满意的视频效果5-20 分钟
4. 渲染输出最终视频代码CLI/Lambda 渲染MP4/WebM 文件10 秒-5 分钟
5. 分发与集成视频文件上传/嵌入/自动化用户可见的视频视场景而定

步骤 2:理解数据流向

从 prompt 到最终视频,数据经历以下变换:

自然语言 prompt ┌──────────────────────────────────┐ │ Claude Code + Remotion Skills │ │ ┌────────────────────────────┐ │ │ │ 1. 解析需求(场景、时长、 │ │ │ │ 分辨率、动画风格) │ │ │ │ 2. 加载 Skills 知识 │ │ │ │ (API 模式、最佳实践) │ │ │ │ 3. 生成 React 组件代码 │ │ │ │ 4. 注册 Composition │ │ │ └────────────────────────────┘ │ └──────────────┬───────────────────┘ React/TypeScript 源码 (.tsx 组件文件) ┌──────────────────────────────────┐ │ Remotion 渲染引擎 │ │ ┌────────────────────────────┐ │ │ │ 对每一帧(frame 0..N): │ │ │ │ 1. 调用 React 组件 │ │ │ │ 2. 传入当前帧号 │ │ │ │ 3. 渲染为 HTML/CSS │ │ │ │ 4. Chrome Headless 截图 │ │ │ │ 5. 编码为视频帧 │ │ │ └────────────────────────────┘ │ └──────────────┬───────────────────┘ MP4 / WebM 视频文件

核心洞察: 整条管线的本质是”自然语言 → 代码 → 像素”的两次翻译。第一次翻译由 AI 完成(语言→代码),第二次翻译由 Remotion 渲染引擎完成(代码→像素)。Skills 的作用是确保第一次翻译的准确性。


2. 阶段 1:Prompt 需求描述

好的 prompt 是整条管线的起点。描述越精确,AI 生成的代码越接近预期,迭代次数越少。

操作步骤

步骤 1:确定视频的基本参数

在写 prompt 之前,先明确以下基本参数:

参数常见选项说明
分辨率1920×1080(横屏)、1080×1920(竖屏)、1080×1080(方形)根据分发平台选择
帧率30fps(标准)、60fps(流畅动画)30fps 适合大多数场景
时长5-60 秒短视频平台建议 15-30 秒
风格暗色/亮色、极简/丰富、企业/创意影响配色和动画风格

步骤 2:使用结构化 prompt 模板

一个高质量的视频 prompt 应包含以下要素:

请帮我创建一个 Remotion 视频组件: 【基本参数】 - 分辨率:1080x1920(竖屏,适合抖音/YouTube Shorts) - 时长:15 秒 - 帧率:30fps 【内容结构】 - 场景 1(0-3 秒):标题 "[标题文字]" 从底部弹入,带 spring 动画 - 场景 2(3-10 秒):依次展示 5 个要点,每个要点淡入停留后淡出 - 场景 3(10-15 秒):结尾 CTA 文字 + Logo 【视觉风格】 - 背景:深色渐变(#0a0a0a → #1a1a2e) - 主色调:#6366f1(靛蓝色) - 字体:大标题 72px 粗体,正文 36px 常规 - 动画风格:流畅弹性(使用 spring 而非线性 interpolate) 【数据驱动】 - 要点内容从 props 传入,方便批量生成不同版本 - 导出 Props 类型接口 【输出要求】 - 创建组件文件并注册到 Root.tsx - 使用 Sequence 组织时间线 - 使用 AbsoluteFill 做全屏布局

步骤 3:Prompt 编写的关键原则

原则说明示例
指定时间线明确每个场景的起止时间”场景 1(0-3 秒)” 而非 “先显示标题”
指定动画类型说明用 spring 还是 interpolate”使用 spring 弹性动画”
指定颜色值给出具体色值而非模糊描述”#6366f1” 而非 “蓝色”
指定参数化需求说明哪些内容需要动态替换”标题从 props 传入”
指定 Remotion API提及具体 API 名称”使用 Sequence 和 AbsoluteFill”

提示词模板

你是一个 Remotion 视频开发专家。我需要创建一个 [类型] 视频。 【视频概述】 [用 2-3 句话描述视频的整体内容和目的] 【基本参数】 - 分辨率:[宽]x[高] - 时长:[秒数] 秒 - 帧率:[30/60] fps 【场景分解】 - 场景 1([起始秒]-[结束秒] 秒):[描述内容和动画] - 场景 2([起始秒]-[结束秒] 秒):[描述内容和动画] - ... 【视觉规范】 - 背景:[颜色/渐变] - 主色调:[色值] - 字体大小:[标题/正文] - 动画风格:[弹性/线性/缓动] 【参数化需求】 - [列出需要从 props 动态传入的内容] 请生成完整的组件代码并注册到 Root.tsx。

3. 阶段 2:AI 代码生成

这是管线的核心环节——Claude Code 读取你的 prompt,结合 Remotion Skills 的知识,生成可运行的 React/TypeScript 视频代码。

工具推荐

工具用途价格适用场景
Claude Code + Remotion Skills自然语言→Remotion 代码Claude 订阅费 + Skills 免费最佳 Remotion 代码生成方案
Cursor + Remotion 文档IDE 内 AI 辅助编写Cursor Pro $20/月偏好 IDE 内交互
Remotion AI SaaS 模板浏览器内 prompt→预览免费(开源模板)构建面向用户的 SaaS 产品
ChatGPT / Gemini + 手动粘贴通用 LLM 生成代码各模型订阅费无 Claude Code 时的替代方案

操作步骤

步骤 1:启动 Claude Code 并输入 prompt

在 Remotion 项目根目录启动 Claude Code:

cd my-video-project claude

将阶段 1 中编写的 prompt 粘贴到 Claude Code 中。Claude 会:

  1. 解析需求:理解视频的场景结构、时间线、视觉风格
  2. 加载 Skills:自动读取 .claude/skills/remotion-best-practices/ 中的知识
  3. 规划组件结构:决定需要创建哪些文件和组件
  4. 生成代码:输出完整的 React/TypeScript 代码

步骤 2:理解 AI 生成的代码结构

Claude Code 通常会生成以下文件结构:

src/ ├── Root.tsx # 更新:注册新的 Composition ├── MyVideo/ │ ├── index.tsx # 主视频组件(组合所有场景) │ ├── TitleScene.tsx # 场景 1:标题动画 │ ├── ContentScene.tsx # 场景 2:内容展示 │ ├── OutroScene.tsx # 场景 3:结尾 CTA │ └── types.ts # Props 类型定义

典型的主组件结构:

// src/MyVideo/index.tsx import { AbsoluteFill, Sequence } from "remotion"; import { TitleScene } from "./TitleScene"; import { ContentScene } from "./ContentScene"; import { OutroScene } from "./OutroScene"; import { MyVideoProps } from "./types"; export const MyVideo: React.FC<MyVideoProps> = (props) => { return ( <AbsoluteFill style={{ backgroundColor: "#0a0a0a" }}> {/* 场景 1:标题(第 0-90 帧,即 0-3 秒 @30fps) */} <Sequence from={0} durationInFrames={90}> <TitleScene title={props.title} /> </Sequence> {/* 场景 2:内容(第 90-300 帧,即 3-10 秒) */} <Sequence from={90} durationInFrames={210}> <ContentScene items={props.items} /> </Sequence> {/* 场景 3:结尾(第 300-450 帧,即 10-15 秒) */} <Sequence from={300} durationInFrames={150}> <OutroScene cta={props.cta} /> </Sequence> </AbsoluteFill> ); };

步骤 3:理解 Skills 如何影响代码质量

Remotion Skills 确保 AI 生成的代码遵循 Remotion 的最佳实践:

方面无 Skills(通用 React 模式)有 Skills(Remotion 模式)
动画驱动useState + CSS transitionuseCurrentFrame() + interpolate()
时间控制setTimeout / useEffectSequence + 帧号计算
弹性动画CSS ease-in-outspring() 物理弹簧
布局div + flexboxAbsoluteFill + 绝对定位
音频同步<audio> 标签<Audio> 组件 + useCurrentFrame()
视频嵌入<video> 标签<OffthreadVideo> 组件

关键区别: 没有 Skills 时,AI 会用 Web 开发的思维写代码——这些代码在浏览器中可能看起来正常,但在 Remotion 渲染时会失败(因为渲染是逐帧截图,不是实时播放)。Skills 让 AI 理解”每一帧都是独立渲染的静态画面”这一核心概念。

步骤 4:处理 AI 生成代码中的常见问题

AI 生成的代码并非总是完美的。以下是常见问题和处理方式:

问题症状解决方法
帧数计算错误动画时长与预期不符提醒 AI:“30fps 下 3 秒 = 90 帧,请重新计算”
缺少 extrapolateRight: "clamp"动画结束后值继续变化要求 AI 在所有 interpolate() 中添加 clamp
使用了 CSS 动画渲染时动画不生效要求 AI 改用 useCurrentFrame() + interpolate()
组件未注册Studio 中看不到新视频要求 AI 在 Root.tsx 中添加 <Composition>
TypeScript 类型错误编译失败要求 AI 修复类型定义

提示词模板

我在 Remotion Studio 中预览时发现以下问题: [描述具体问题,如"第二个场景的文字没有动画效果"] 请检查代码并修复。注意: - 必须使用 useCurrentFrame() 驱动动画,不能用 CSS transition - 所有 interpolate() 必须设置 extrapolateRight: "clamp" - 确保帧数计算正确(当前 fps 是 30)

4. 阶段 3:预览与迭代

这是工作流中最具交互性的阶段——在 Remotion Studio 中实时预览效果,通过自然语言与 AI 对话进行迭代修改,直到满意为止。

操作步骤

步骤 1:启动 Studio 预览

# 在项目根目录启动 npm run dev # 或 npx remotion studio

浏览器自动打开 http://localhost:3000,在侧边栏选择 AI 生成的 Composition。

步骤 2:使用 Studio 检查视频效果

Studio 提供以下检查能力:

┌─────────────────────────────────────────────────────────────┐ │ Remotion Studio 界面 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────┐ ┌──────────────────┐ │ │ │ │ │ Composition 列表 │ │ │ │ 预览画布 │ │ ├─ MyVideo │ │ │ │ (当前帧的渲染结果) │ │ ├─ TitleScene │ │ │ │ │ │ └─ ContentScene │ │ │ │ │ │ │ │ │ │ │ │ Props 编辑器 │ │ │ │ │ │ title: [____] │ │ │ │ │ │ items: [____] │ │ │ └─────────────────────────────────┘ └──────────────────┘ │ │ │ │ ◀◀ ◀ ▶ ▶▶ ⏹ 帧: 045 / 450 时间: 01.5s / 15.0s │ │ ├────────────●──────────────────────────────────────────┤ │ │ 时间线拖动条 │ │ │ │ 快捷键:J(快退) K(暂停) L(快进) ←→(逐帧) │ │ │ └─────────────────────────────────────────────────────────────┘

检查清单:

  • 播放完整视频,确认整体节奏
  • 逐帧检查场景切换点,确认过渡流畅
  • 在 Props 编辑器中修改参数,确认参数化正常
  • 检查文字是否完整显示(无截断、无溢出)
  • 检查颜色和字体是否符合品牌规范

步骤 3:通过自然语言迭代修改

这是 AI + Remotion 工作流的核心优势——用对话代替手动改代码:

迭代循环: ┌──────────────┐ │ Studio 预览 │ │ 发现问题 │ └──────┬───────┘ ┌──────────────┐ │ 自然语言描述 │ "把标题动画改成从左侧滑入, │ 修改需求 │ 而不是从底部弹入" └──────┬───────┘ ┌──────────────┐ │ Claude Code │ │ 修改代码 │ └──────┬───────┘ ┌──────────────┐ │ Studio 热更新│ ← 代码保存后 Studio 自动刷新 │ 查看效果 │ └──────┬───────┘ 满意?──否──→ 回到"自然语言描述" 进入渲染阶段

常见迭代请求示例:

迭代类型Prompt 示例
调整动画”让文字出现的动画更有弹性,使用 spring 替代 interpolate”
修改配色”把背景色改成 #1e1b4b,主色调改成 #818cf8”
调整时间”第一个场景太短了,延长到 4 秒,总时长保持 15 秒”
添加元素”在右下角添加一个半透明的 Logo 水印”
修复问题”第三个要点的文字被截断了,请缩小字号或换行”
添加音效”在每个要点出现时添加一个轻微的 ‘pop’ 音效”
数据绑定”把硬编码的文字改成从 props 传入,方便批量生成”

步骤 4:利用 Props 编辑器快速测试

Remotion Studio 的 Props 编辑器允许你在不改代码的情况下修改组件参数:

  1. 在侧边栏找到 Props 编辑器面板
  2. 修改 titleitems 等参数值
  3. 预览画面实时更新
  4. 确认参数化方案是否满足批量生成需求

这对于验证”同一模板 + 不同数据 = 不同视频”的参数化方案特别有用。

提示词模板

我在 Remotion Studio 中预览了视频,整体效果不错,但需要以下调整: 1. [具体修改 1,如"标题动画太快,延长到 2 秒"] 2. [具体修改 2,如"背景添加微妙的粒子效果"] 3. [具体修改 3,如"结尾场景添加渐隐效果"] 请修改代码。修改后我会在 Studio 中重新预览。

5. 阶段 4:渲染输出

预览满意后,将视频代码渲染为可分发的视频文件。Remotion 提供三种渲染方式,适用于不同场景。

工具推荐

渲染方式适用场景速度成本配置复杂度
本地 CLI 渲染开发测试、单个视频中等(取决于机器性能)免费(仅电费)
Remotion Lambda批量生产、SaaS 产品快(并行渲染)AWS 费用约 $0.01-0.05/视频中等
Remotion Cloud RunGCP 生态用户快(并行渲染)GCP 费用中等
Studio 内渲染快速导出、非技术用户中等免费最低

操作步骤

步骤 1:本地 CLI 渲染(推荐起步方式)

# 基本渲染命令 npx remotion render <CompositionId> <输出路> # 示例:渲染 MyVideo 组合为 MP4 npx remotion render MyVideo out/my-video.mp4 # 指定编码器和质量 npx remotion render MyVideo out/my-video.mp4 --codec=h264 --crf=18 # 渲染为 WebM 格式 npx remotion render MyVideo out/my-video.webm --codec=vp8 # 渲染为 GIF npx remotion render MyVideo out/my-video.gif --codec=gif --every-nth-frame=2 # 传入自定义 Props(JSON 格式) npx remotion render MyVideo out/my-video.mp4 \ --props='{"title":"自定义标题","items":["A","B","C"]}'

常用渲染参数:

参数说明默认值推荐值
--codec视频编码器h264h264(兼容性最好)
--crf质量(0-51,越低越好)自动18(高质量)/ 23(平衡)
--concurrency并行渲染线程数50% CPU 核心不指定(自动优化)
--props传入 JSON 格式的 PropsdefaultProps批量渲染时使用
--every-nth-frameGIF 跳帧(降低帧率)12(GIF 推荐)
--scale缩放因子10.5(快速预览)/ 1(正式输出)

步骤 2:理解渲染过程

渲染过程详解: npx remotion render MyVideo out/video.mp4 ┌─────────────────────────────────┐ │ 1. 打包 React 代码(Webpack) │ ← 约 5-15 秒 └────────────┬────────────────────┘ ┌─────────────────────────────────┐ │ 2. 启动 Chrome Headless Shell │ ← 首次需下载,约 100MB └────────────┬────────────────────┘ ┌─────────────────────────────────┐ │ 3. 逐帧渲染 │ │ 帧 0: React 渲染 → 截图 → 编码│ │ 帧 1: React 渲染 → 截图 → 编码│ ← 主要耗时 │ ... │ │ 帧 N: React 渲染 → 截图 → 编码│ └────────────┬────────────────────┘ ┌─────────────────────────────────┐ │ 4. FFmpeg 合成最终视频 │ ← 约 2-5 秒 └────────────┬────────────────────┘ out/video.mp4 ✓

步骤 3:批量渲染(参数化生产)

当你需要用同一模板生成多个不同内容的视频时:

# 方法 1:Shell 脚本循环 for i in 1 2 3 4 5; do npx remotion render MyVideo "out/video-$i.mp4" \ --props="$(cat data/video-$i.json)" done # 方法 2:使用 Node.js 脚本(推荐) # render-batch.mjs import { bundle } from "@remotion/bundler"; import { renderMedia, selectComposition } from "@remotion/renderer"; import { readFileSync } from "fs"; const bundleLocation = await bundle("./src/index.ts"); const videos = JSON.parse(readFileSync("./data/videos.json", "utf-8")); for (const video of videos) { const composition = await selectComposition({ serveUrl: bundleLocation, id: "MyVideo", inputProps: video.props, }); await renderMedia({ composition, serveUrl: bundleLocation, codec: "h264", outputLocation: `out/${video.id}.mp4`, inputProps: video.props, }); console.log(` 渲染完成: ${video.id}`); }

步骤 4:Studio 内渲染(最简单方式)

如果不想用命令行,可以直接在 Remotion Studio 界面中渲染:

  1. 在 Studio 中选择要渲染的 Composition
  2. 点击右上角的”Render”按钮
  3. 选择输出格式(MP4/WebM/GIF)和质量
  4. 点击”Start Render”
  5. 渲染完成后自动保存到 out/ 目录

提示词模板

我的视频预览效果已经满意,现在需要渲染输出。请帮我: 1. 生成渲染命令(MP4 格式,h264 编码,高质量) 2. 如果需要批量渲染 [数量] 个不同版本,请生成批量渲染脚本 3. 数据源格式:[描述数据格式,如 JSON 文件/API 接口] 额外要求: - [如:需要同时输出横屏和竖屏版本] - [如:需要生成缩略图(静态帧)]

6. 阶段 5:分发与集成

渲染完成的视频需要到达最终用户。根据使用场景,分发方式各不相同。

操作步骤

步骤 1:选择分发方式

分发方式适用场景实现方式
手动上传社交媒体、视频平台直接上传 MP4 到 YouTube/抖音/B站
CDN 托管Web 嵌入、邮件链接上传到 S3/Cloudflare R2 + CDN
API 集成SaaS 产品、自动化管线Remotion Lambda API + Webhook 回调
邮件附件/链接个性化报告视频渲染后通过邮件服务发送
Web 嵌入网页内实时预览使用 @remotion/player 组件

步骤 2:自动化分发管线示例

完整自动化管线: ┌──────────┐ ┌──────────────┐ ┌──────────────┐ │ 数据源 │ │ 渲染服务 │ │ 分发服务 │ │ (API/DB) │───→│ (Lambda) │───→│ (CDN/邮件) │ └──────────┘ └──────────────┘ └──────────────┘ 具体流程: 1. 定时任务触发(cron / webhook) 2. 从数据库/API 拉取最新数据 3. 为每条数据生成 Props JSON 4. 调用 Remotion Lambda 渲染 5. 渲染完成后上传到 S3/CDN 6. 通过邮件/消息推送视频链接给用户

步骤 3:使用 Remotion Player 实现 Web 嵌入预览

如果你的产品需要在网页中展示视频预览(而非下载 MP4),可以使用 @remotion/player

import { Player } from "@remotion/player"; import { MyVideo } from "./MyVideo"; export const VideoPreview: React.FC = () => { return ( <Player component={MyVideo} durationInFrames={450} fps={30} compositionWidth={1920} compositionHeight={1080} style={{ width: "100%" }} controls inputProps={{ title: "实时预览", items: ["功能 A", "功能 B", "功能 C"], }} /> ); };

Player 在浏览器中实时渲染 React 组件,无需预先生成 MP4 文件。适合需要实时预览或交互式编辑的场景。


7. 完整工作流实战演示

将五个阶段串联起来,展示一个从零到成品的完整流程。

操作步骤

步骤 1:完整流程时间线

以”制作一个 Top 5 编程语言排行榜短视频”为例:

时间线(约 25 分钟): 00:00 ─── 阶段 1:编写 Prompt ─────────────────────── │ 确定参数:竖屏 1080x1920,15 秒,30fps │ 编写结构化 prompt:标题→5 个排名项→结尾 05:00 ─── 阶段 2:AI 生成代码 ─────────────────────── │ 在 Claude Code 中输入 prompt │ AI 生成 4 个文件:主组件 + 3 个场景组件 │ AI 自动注册 Composition 到 Root.tsx 08:00 ─── 阶段 3:预览与迭代 ─────────────────────── │ npm run dev → 打开 Studio │ 第 1 轮迭代:"动画太生硬,改用 spring" │ 第 2 轮迭代:"添加 emoji 图标" │ 第 3 轮迭代:"背景加渐变和粒子效果" │ 第 4 轮迭代:"把数据改成从 props 传入" 20:00 ─── 阶段 4:渲染输出 ───────────────────────── │ npx remotion render TopFive out/top5.mp4 │ 等待渲染完成(约 30 秒) │ open out/top5.mp4 → 确认效果 23:00 ─── 阶段 5:分发 ───────────────────────────── │ 上传到 YouTube Shorts / 抖音 │ 修改 JSON 数据 → 渲染第 2 个版本 25:00 ─── 完成 ✓

步骤 2:实际 Prompt 示例

请帮我创建一个 "Top 5 编程语言 2026" 的 YouTube Shorts 视频: 【基本参数】 - 分辨率:1080x1920(竖屏) - 时长:15 秒 - 帧率:30fps 【内容结构】 - 场景 1(0-3 秒):标题 "Top 5 编程语言 2026" 从底部弹入,带 spring 动画 - 场景 2(3-12 秒):依次展示 5 个编程语言,每个 1.8 秒 - 每项包含:排名数字、语言名、emoji、一句话描述 - 每项从右侧滑入,带 spring 弹性效果 - 底部有进度条显示当前进度 - 场景 3(12-15 秒):结尾文字 "关注获取更多" + 渐隐 【视觉风格】 - 背景:深色渐变(#0f0f23 → #1a1a3e),带微妙粒子效果 - 主色调:#a78bfa(紫色) - 排名数字:大号粗体,带发光效果 - 动画:全部使用 spring 弹性动画 【数据驱动】 - 所有内容从 props 传入(标题、5 个项目的数据) - 导出 Props 类型接口 - 创建示例数据文件 data.json

步骤 3:迭代对话示例

第 1 轮迭代: 用户:"动画看起来有点僵硬,能不能让每个排名项出现时有更明显的弹跳效果?" AI:修改 spring 参数(增大 mass,减小 damping),添加 overshoot 第 2 轮迭代: 用户:"进度条太粗了,改成 3px 高度,颜色跟主色调一致" AI:修改进度条样式 第 3 轮迭代: 用户:"背景的粒子效果太密了,减少到 20 个粒子,移动速度放慢" AI:调整粒子数量和速度参数 第 4 轮迭代: 用户:"很好!现在帮我生成渲染命令,同时生成一个批量渲染脚本, 我想用不同的数据生成 10 个不同主题的视频" AI:生成 CLI 渲染命令 + Node.js 批量渲染脚本

8. 高级工作流:SaaS 模式与自动化管线

除了开发者本地使用的工作流,Remotion 还支持面向终端用户的 SaaS 模式和全自动化管线。

工具推荐

工具用途价格适用场景
Remotion AI SaaS 模板面向用户的 prompt→视频 Web 应用免费(开源模板)构建视频生成 SaaS
Remotion Lambda云端无服务器渲染AWS 费用约 $0.01-0.05/视频生产级批量渲染
n8n / Make.com工作流自动化n8n 自托管免费;Make 免费层可用触发渲染 + 分发
Next.js全栈 Web 框架免费(开源)SaaS 前后端

操作步骤

步骤 1:理解 SaaS 模式架构

Remotion 官方提供了 AI SaaS 模板(prompt-to-motion-graphics),架构如下:

┌─────────────────────────────────────────────────────────┐ │ 用户浏览器 │ │ ┌───────────────────────────────────────────────────┐ │ │ │ 聊天界面 实时预览 │ │ │ │ ┌─────────────────┐ ┌─────────────────┐ │ │ │ │ │ 用户输入 prompt │ │ Remotion Player │ │ │ │ │ │ "做一个旋转的 │ │ (浏览器内实时 │ │ │ │ │ │ Logo 动画" │ │ 渲染预览) │ │ │ │ │ └────────┬────────┘ └────────▲────────┘ │ │ │ │ │ │ │ │ │ └───────────┼─────────────────────────┼─────────────┘ │ │ │ │ │ └──────────────┼─────────────────────────┼─────────────────┘ │ │ ▼ │ ┌──────────────────────────────┐ │ │ Next.js 后端 │ │ │ ┌────────────────────────┐ │ │ │ │ LLM API(OpenAI/Claude)│ │ │ │ │ 生成 React 代码 │──┼─────────┘ │ │ JIT 编译 → 浏览器执行 │ │ (流式返回代码, │ └────────────────────────┘ │ 浏览器即时编译预览) │ ┌────────────────────────┐ │ │ │ Remotion Lambda │ │ │ │ 最终渲染 → MP4 下载 │ │ │ └────────────────────────┘ │ └──────────────────────────────┘

关键特性:

  • 用户在聊天界面输入自然语言描述
  • LLM 流式生成 React 代码
  • 浏览器通过 JIT(即时编译)实时预览,无需服务器渲染
  • 用户满意后,通过 Lambda 渲染为 MP4 下载
  • 支持对话式迭代修改

步骤 2:搭建 SaaS 模板

# 使用官方模板创建项目 npx create-video@latest --template prompt-to-motion-graphics # 配置环境变量 # .env OPENAI_API_KEY=sk-... # (可选)配置 Lambda 渲染 REMOTION_AWS_ACCESS_KEY_ID=... REMOTION_AWS_SECRET_ACCESS_KEY=... # 启动开发服务器 npm run dev

步骤 3:自动化管线架构

对于需要全自动化的场景(如每日数据报告视频),可以构建以下管线:

┌──────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐ │ 触发器 │ │ 数据处理 │ │ 视频渲染 │ │ 分发 │ │ │ │ │ │ │ │ │ │ • Cron │───→│ • 拉取数据 │───→│ • Lambda │───→│ • S3/CDN │ │ • Webhook│ │ • 生成 Props │ │ • 并行渲染 │ │ • 邮件 │ │ • API │ │ • 验证数据 │ │ • 输出 MP4 │ │ • Slack │ └──────────┘ └──────────────┘ └──────────────┘ └──────────┘

实现要点:

  1. 视频模板代码只需开发一次(用 Claude Code + Remotion Skills)
  2. 数据变化时只需更新 Props,无需修改代码
  3. Lambda 渲染支持并行,200 个视频可在几分钟内完成
  4. 整个管线可以用 n8n、GitHub Actions 或自定义脚本编排

实战案例:从 Prompt 到 YouTube Shorts 的完整旅程

场景描述

一位内容创作者想要批量制作”每日科技新闻”系列 YouTube Shorts。每期视频展示 3 条新闻标题,配以简洁的动画效果。他希望每天只需更新新闻数据,就能自动生成新视频。

完整操作流程

阶段 1:Prompt 设计(5 分钟)

请创建一个"每日科技新闻"YouTube Shorts 模板: - 竖屏 1080x1920,20 秒,30fps - 开头 3 秒:日期 + "今日科技快讯" 标题弹入 - 中间 12 秒:3 条新闻依次展示,每条 4 秒 - 新闻编号(01/02/03)+ 标题 + 来源 - 从右侧滑入,带 spring 动画 - 结尾 5 秒:"关注获取每日更新" + 频道 Logo - 深色科技风背景,主色调 #00d4ff(青色) - 所有内容从 props 传入(日期、3 条新闻数据)

阶段 2:AI 生成代码(3 分钟)

Claude Code 生成了 5 个文件:DailyNews/index.tsxTitleScene.tsxNewsItem.tsxOutroScene.tsxtypes.ts,并更新了 Root.tsx

阶段 3:预览与迭代(10 分钟)

  • 迭代 1:“新闻标题太长时会溢出,请添加自动截断和省略号”
  • 迭代 2:“添加一个扫描线效果,增强科技感”
  • 迭代 3:“新闻切换时添加一个短暂的闪烁过渡”

阶段 4:渲染(1 分钟)

npx remotion render DailyNews out/daily-news-2026-07-15.mp4 \ --props='{"date":"2026-07-15","news":[{"title":"Apple 发布 M5 芯片","source":"TechCrunch"},{"title":"OpenAI 推出 GPT-5","source":"The Verge"},{"title":"Rust 2.0 正式发布","source":"GitHub Blog"}]}'

阶段 5:分发与自动化

创建 data/ 目录存放每日新闻 JSON,编写批量渲染脚本,每天更新数据后一键生成视频。

案例分析

关键决策点:

  1. 模板化设计:将所有可变内容(日期、新闻标题、来源)抽象为 Props,实现”一次开发,每日复用”
  2. 迭代效率:3 轮自然语言迭代就完成了视觉调优,总共不到 10 分钟
  3. 批量生产成本:模板开发完成后,每个视频的边际成本接近零(仅渲染算力)
  4. 可扩展性:同一模板可以轻松扩展为”每周回顾”(5 条新闻)或”月度总结”(10 条新闻),只需调整 Props 结构

避坑指南

❌ 常见错误

  1. Prompt 过于模糊

    • 问题:写”做一个好看的视频”,AI 不知道具体要什么,生成的代码需要大量迭代
    • 正确做法:明确指定分辨率、时长、场景结构、颜色值、动画类型。越具体,迭代越少
  2. 跳过 Studio 预览直接渲染

    • 问题:渲染一个 30 秒视频可能需要 1-2 分钟,发现问题后重新渲染浪费时间
    • 正确做法:始终先在 Studio 中预览确认效果,满意后再渲染。Studio 预览是实时的,零成本
  3. 在迭代时手动改代码而非用 AI

    • 问题:手动修改 AI 生成的代码容易引入不一致,且后续 AI 修改可能覆盖你的改动
    • 正确做法:所有修改都通过自然语言告诉 Claude Code,让 AI 保持对代码的完整理解
  4. 忽略参数化设计

    • 问题:把文字、颜色、数据硬编码在组件中,每次改内容都要改代码
    • 正确做法:在第一次 prompt 中就要求 AI 将可变内容设计为 Props,方便批量生成
  5. 渲染时不指定 --crf 质量参数

    • 问题:默认质量可能不满足需求,或文件过大
    • 正确做法:正式输出用 --crf=18(高质量),测试用 --crf=28(小文件快速验证)
  6. 混淆 Studio 预览和最终渲染的效果

    • 问题:Studio 中的预览是浏览器实时渲染,可能与最终 MP4 有细微差异(如字体渲染、抗锯齿)
    • 正确做法:最终确认以渲染后的 MP4 文件为准。如果发现差异,调整代码后重新渲染
  7. 批量渲染时未做错误处理

    • 问题:渲染 100 个视频时,某个视频因数据问题失败,导致整个批次中断
    • 正确做法:在批量渲染脚本中添加 try-catch,记录失败项,完成后重试失败的视频

✅ 最佳实践

  1. Prompt 先写场景分解:在描述视觉效果之前,先用”场景 1(0-3 秒):…”的格式规划时间线
  2. 每次迭代只改一件事:避免一次提出 5 个修改,逐个修改更容易定位问题
  3. 善用 Props 编辑器:在 Studio 中用 Props 编辑器快速测试不同数据,确认参数化方案
  4. 保存有效的 Prompt:将成功的 prompt 模板保存为文件,下次类似需求直接复用
  5. Git 管理视频代码:将 Remotion 项目纳入版本控制,每次迭代都有记录可回溯
  6. 先用 --scale=0.5 快速渲染:正式渲染前用半分辨率快速验证,确认无误后再全分辨率渲染

相关资源与延伸阅读


参考来源


📖 返回 总览与导航 | 上一节:12b-环境搭建 | 下一节:12d-实战案例集

Last updated on