使用 Remotion 编写场景布局定义(howto-layouts):Stagewise 风格指南体系中的布局规范实战
人工智能AI Agent代码智能体开发工具【免费下载链接】stagewiseThe Open Source Agentic IDE. Create and orchestrate coding agents, show app previews and run git workflows. Use your favorite models across all providers.项目地址https://gitcode.com/gh_mirrors/st/stagewise点击查看免费下载导读在 Stagewise 开源仓库内置的 Remotion 视频生成插件中howto-layouts.md是一份面向 Agent 的风格指南写作规范它定义了场景布局Layout文档必须包含哪些信息从元素清单、位置关系到入场/退场转场再到多变体策略。本文以该文档为骨架结合SKILL.md、howto.md、howto-elements.md与transitions.md、timing.md等源码规则文件完整还原布局定义应写什么、为什么这么写并给出可直接落地的 Markdown 模板、参数说明与实现示例帮助你在自己的视频项目中把一个场景长什么样写成机器可读、Agent 可直接执行的结构化规格。一、布局定义在风格指南体系中的位置在 Stagewise 的 Remotion 技能skill体系中风格指南Styleguide被强制以技能形式存放在工作区.stagewise/skills/{STYLEGUIDE-SKILL-NAME}目录中见 howto.md。其标准目录结构为my-video-styleguide ├─ layouts │ ├─ hero-slide.md │ ├─ person-with-name-overlay.md │ └─ video-demo-slide-text-left.md ├─ storyboard-templates │ ├─ feature-launch.md │ └─ extended-product-demo.md ├─ elements │ ├─ logo.md │ └─ mascot.md ├─ DESIGN.md └─ SKILL.md其中layouts目录存放的就是本篇文章要讲的场景布局文档。它与另外三份文档的关系是layouts定义单个 Remotion 序列sequence看起来是什么样——内容、排列、入场/出场转场属于一屏级规格storyboard-templates定义多个场景以什么顺序组成一个视频属于一片级规格见 howto-storyboard-templates.mdelements定义可复用的视觉部件logo、吉祥物、遮罩、渐变图属于一物级规格见 howto-elements.mdDESIGN.md定义设计系统级 token颜色、字体、间距、圆角等是所有布局的底层数值来源见 howto-write-design-md.md。布局文档的编写时机由SKILL.md强制约定在Spec video阶段Agent 为每个序列使用风格指南中的布局定义如果缺少某个布局就必须先按howto-layouts.md的结构创建新布局先写布局规格再写代码一旦用户提出布局/模板修改请求也要先更新风格指南定义再改代码。这保证了Storyboard 始终是结构的唯一事实来源详见 SKILL.md。二、布局定义必须覆盖的三个维度howto-layouts.md开宗明义一份合格的布局定义必须包含以下三大部分——用哪些元素、元素之间的相对位置关系、如何转到其他布局。维度一元素清单Elements每个布局都要说清楚这一屏用了哪些元素并对每个元素逐项声明以下属性属性含义示例元素类型Type文本、视频、Demo 组件等text、video、demo-component、image、logo尺寸 / 变体 / 颜色Size, Variant, Color引用 DESIGN.md 中的 token 或具体数值h1、variant: monochrome、{colors.accent}入场/出场动画与转场Enter/Exit Animations/Transitions明确用哪种 easing、时长、transitionEasing.out入场、fade()15 帧序列内的移动Moving during sequence元素在场景持续期间的位置变化从右往左横移、缩放、位移可选还是必选Optional or mandatory该元素能否被省略optional/mandatory位置Position绝对/相对定位、到边框的距离absolute距右边缘 50px缩放与截断行为Resizing Truncation behavior空间不足时如何缩放或截断文本单行截断加省略号、等比缩放维度二元素之间的相对位置原文档强调必须定义场景的中心点是什么What is center point of the scene整个场景如何移动How does the scene move。这里的中心点指视觉重心例如人物讲解场景中人物面部是中心标题覆盖层围绕它排布产品 Demo 场景中屏幕是中心说明文字贴在左侧。而场景如何移动则指整屏的运动方式——是整体平移如滑入滑出、镜头推拉缩放还是保持静止只让内部元素动。这两点决定了布局在视频中的镜头感是布局区别于静态排版稿的关键。维度三到其他布局的转场每个布局都必须声明它与相邻布局之间的转场方式允许多个入场/出场变体Multiple variants for enter and exit possible明确每种变体何时使用Define when to use which variant。例如同一套产品截图 左侧说明文字布局可以定义两种出场方式exit-a: slide left用于连续讲解、保持叙事连续性、exit-b: fade blur用于章节收尾、进入 outro。何时用哪种必须在布局文档里写清楚而不是留给 Agent 现场发挥。三、布局文档的推荐结构可直接套用结合 howto-elements.md 的写法风格facts、短句、数字、可重复措辞、微型示例一份合格的layouts/xxx.md可以组织为# hero-slide: 产品发布 Hero 页 ## 用途 - 视频第 1 屏必选 - 也用于 outro 最后一屏可选去掉按钮 ## 元素清单 | 元素 | 类型 | 尺寸/变体/颜色 | 位置 | 入场 | 出场 | 序列内移动 | 可选性 | 缩放/截断 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 标题 | text | h1, {typography.h1} | 绝对距顶 20%居中 | Easing.out, 45 帧 | Easing.in, 30 帧 | 无 | mandatory | 最长 2 行超长字号 0.9x | | Logo | logo | variantmonochrome, 60px | 绝对右下角距边 50px | fade 20 帧 | fade 20 帧 | 无 | optional | 不缩放始终等宽比 | | 主视觉 | video | 100% 宽, 铺满背景 | 相对absolute fill | 无 | slide left 15 帧 | 从 1.05x 缩放到 1x | mandatory | 裁切 16:9 | ## 场景中心点与整体移动 - 中心点标题文本垂直中心x 轴居中 - 整屏移动入场时整屏自下方 40px 上移至最终位置之后静止 ## 转场 - 入场变体 A默认fade blur translate见 transitions.md - 入场变体 B用于接续前一场景slide from-left20 帧保持叙事连续性 - 出场变体 A默认slide to-left20 帧 - 出场变体 B章节收尾/outrofade blur30 帧关键纪律用表格承载可复制的数值用短句承载判断规则何时用变体 A、何时用 B。这与 howto.md 要求的压缩式写作一致——Guide 必须压缩成 facts numbers避免长段落散文。四、把布局描述转译为 Remotion 实现布局文档的价值在于它能被直接翻译成 Remotion 代码。以下是几组与布局定义强相关的实现要点均可在 SKILL.md 的规则文件索引中找到对应源码级说明。4.1 元素入场/出场动画只用 Remotion 原生 API规则文件 animations.md 明确所有动画必须使用useCurrentFrame()禁止 CSS transition、CSS animation 与 Tailwind 动画类名会导致渲染错误。时间统一用秒数乘以fpsimport { useCurrentFrame, useVideoConfig, interpolate, Easing } from remotion; export const FadeIn () { const frame useCurrentFrame(); const { fps } useVideoConfig(); const opacity interpolate(frame, [0, 2 * fps], [0, 1], { extrapolateRight: clamp, extrapolateLeft: clamp, easing: Easing.bezier(0.16, 1, 0.3, 1), }); return div style{{ opacity }}Hello World!/div; };4.2 缓动曲线选择进入用 Easing.out退出用 Easing.intiming.md 给出了与布局入场/出场直接对应的规则入场enter用Easing.out——起速快、落位稳观感自然出场exit用Easing.in——起速慢、加速离去如果设计稿给出了具体曲线优先用单个Easing.bezier(...)而非叠加预设曲线它等价于 CSScubic-bezier(x1,y1,x2,y2)Web 端 timing 可以直接搬过来。timing.md 还提供了三条可直接复制的曲线// 1. 锐利 UI 入场强 ease-out、无过冲 const enter interpolate(frame, [0, 45], [0, 1], { easing: Easing.bezier(0.16, 1, 0.3, 1), extrapolateLeft: clamp, extrapolateRight: clamp, }); // 2. 编辑部式慢淡入对称 ease-in-out const progress interpolate(frame, [0, 90], [0, 1], { easing: Easing.bezier(0.45, 0, 0.55, 1), extrapolateLeft: clamp, extrapolateRight: clamp, }); // 3. 俏皮过冲控制点 y 1先越界再回弹谨慎使用 const pop interpolate(frame, [0, 30], [0, 1], { easing: Easing.bezier(0.34, 1.56, 0.64, 1), extrapolateLeft: clamp, extrapolateRight: clamp, });技巧当多个属性共享同一套 timing 时先算一个归一化进度0→1再让所有属性从它派生实现timing 与 mapping 分离详见 timing.md。4.3 场景间转场Transition 与 Overlay布局文档中声明的到其他布局的转场在实现层面对应 transitions.md 的TransitionSeriesTransitionsTransitionSeries.Transition两个场景在转场期间同时播放因此会缩短时间线OverlaysTransitionSeries.Overlay在切点上方渲染一层效果不缩短时间线如 light leaks。import { TransitionSeries, linearTiming } from remotion/transitions; import { fade } from remotion/transitions/fade; TransitionSeries TransitionSeries.Sequence durationInFrames{60}SceneA //TransitionSeries.Sequence TransitionSeries.Transition presentation{fade()} timing{linearTiming({ durationInFrames: 15 })} / TransitionSeries.Sequence durationInFrames{60}SceneB //TransitionSeries.Sequence /TransitionSeries;转场类型可从remotion/transitions/*子模块导入fade、slide支持from-left/from-right/from-top/from-bottom、wipe、flip、clockWipetiming 可选linearTiming()与springTiming()。计算总时长时要注意两段各 60 帧、中间 15 帧转场总长为60 60 - 15 105帧而非 120 帧。4.4 序列内移动与元素出现时机Sequence / Series布局中序列内移动元素出现时机对应 sequencing.md 的Sequence/Series。要点用Sequence from{...} durationInFrames{...}控制元素在时间线上的出现窗口from建议写为1 * fps这种秒数形式总是为Sequence加premountFor提前加载组件避免卡帧Sequence from{1 * fps} durationInFrames{2 * fps} premountFor{1 * fps}Title //Sequence多个元素顺序播放且无重叠时用Series需要重叠时用负offset进入Sequence后useCurrentFrame()返回的是局部帧从 0 开始嵌套Sequence可实现更复杂的时间编排。五、写布局时的三条纪律先规格后代码创建或更新布局时先按本文结构写布局定义再写组件代码用户要求改动时同样先改风格指南再改代码见 SKILL.md。元素级复用与参数化可复用的布局应独占一个文件放进layouts/真正一次性使用的场景可以留在局部。布局中引用的 logo、吉祥物等元素优先复用elements/中已定义的组件并给出className、variant等参数说明参考 howto-elements.md 的LogoCombo示例。用 token 而非裸值颜色、字体、间距一律引用 DESIGN.md 中的 token如{colors.accent}布局文档只写用哪个 token具体数值收敛在 DESIGN.md保证全局风格改动只需改一处。六、用一帧渲染快速校验布局布局写好、代码实现后可用 SKILL.md 提供的一帧渲染命令快速检查排版、颜色与 timing 是否符合布局定义npx remotion still [composition-id] --scale0.25 --frame30在 30fps 下--frame30即 1 秒处--frame从 0 开始计数。对纯重构或已在 Studio 中充分预览的场景可跳过此步涉及多屏布局转换时建议逐帧抽查入场、停留、出场三个关键帧。总结howto-layouts.md虽然只是一份不到 20 行的规范清单但它把一个 Remotion 场景拆解成了可写、可读、可执行的结构化规格元素清单类型、尺寸、动画、位置、可选性、截断规则、元素间相对关系中心点、整屏移动、以及到其他布局的多变体转场。配合 Stagewise 风格指南体系中的SKILL.md流程约束、transitions.md与timing.md的实现规则任何 Agent 都能据此写出风格一致、可复用的视频场景并保证风格指南先行、代码随后的正确工作顺序。赞分享人工智能AI Agent代码智能体开发工具【免费下载链接】stagewiseThe Open Source Agentic IDE. Create and orchestrate coding agents, show app previews and run git workflows. Use your favorite models across all providers.项目地址https://gitcode.com/gh_mirrors/st/stagewise点击查看免费下载相关推荐Stagewise Remotion 风格指南可复用元素Elements的定义规范与实操指南Stagewise Remotion 风格指南可复用元素Elements的定义规范与实操指南 导读 本指南讲解如何在 Stagewise 的 Remoti人工智能AI Agent代码智能体开发工具mdx-deck 幻灯片布局Layouts完全指南自定义模板与内置布局实战mdx deck 幻灯片布局Layouts完全指南自定义模板与内置布局实战 导读 本文聚焦 mdx deck 的 幻灯片布局Layouts 机制如何开发工具前端vue-grid-layout 响应式预定义布局responsive-layouts实战指南vue grid layout 响应式预定义布局responsive layouts实战指南 本文基于仓库中 website/docs/guide/08 r前端UI组件上一篇Bytebase 预定义角色统一重构方案从 IAM 管理器到 Store 层的权限体系治理下一篇SurfSense 主 Agent 的 Gemini 适配提示词深入解析 provider_hints 设计创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

docker-selenium 4.34.0 版 Chrome 108 镜像标签全解:从 tag_and_push_browser_images.sh 看发布脚本与版本矩阵

docker-selenium 4.34.0 版 Chrome 108 镜像标签全解:从 tag_and_push_browser_images.sh 看发布脚本与版本矩阵

测试后端云原生容器编排可观测性 【免费下载链接】docker-selenium Provides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Container Platform, making it easier to perform browser automation at scale 项目地址: https://gitcode.…

2026/10/9 7:42:16 阅读更多 →
嵌入式蓝牙开发:AC2005B 芯片技术解析 —— 省晶振设计、13dBm 射频与 Auracast 广播音响开发指南

嵌入式蓝牙开发:AC2005B 芯片技术解析 —— 省晶振设计、13dBm 射频与 Auracast 广播音响开发指南

AC2005B是什么芯片?杰理蓝牙双模Auracast方案解析与开发支持指南本文以硬件工程师第一视角,系统介绍杰理科技2026年8月新发布的AC2005B蓝牙双模芯片。文章覆盖芯片定位、核心技术特点(省晶振设计、13dBm发射功率、Auracast广播音响&#xff0…

2026/10/9 7:42:16 阅读更多 →
Apache Pulsar 长期支持(LTS)版本机制:PIP-162 的设计目标、认定流程与落地实现

Apache Pulsar 长期支持(LTS)版本机制:PIP-162 的设计目标、认定流程与落地实现

消息队列流处理后端微服务消息路由 【免费下载链接】pulsar Apache Pulsar - distributed pub-sub messaging system 项目地址: https://gitcode.com/gh_mirrors/pu/pulsar 点击查看 免费下载 本文基于仓库内的 PIP-162: LTS Releases 提案展开,介绍 Ap…

2026/10/9 7:42:16 阅读更多 →

最新新闻

树结构核心术语解析:根、父子兄弟、深度高度与路径的工程意义

树结构核心术语解析:根、父子兄弟、深度高度与路径的工程意义

1. 为什么“树”这个词在计算机里被反复提起,却没人真去种一棵?你打开任何一本算法入门书,翻到第三章,大概率会看到一个分叉的图示:一个圆圈在最上面,下面连着两个圆圈,再往下又分出更多——旁边…

2026/10/9 11:18:10 阅读更多 →
锂电池清洗水枪EMC整改实战:从超标12dB到6dB余量的系统化方案

锂电池清洗水枪EMC整改实战:从超标12dB到6dB余量的系统化方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 11:18:10 阅读更多 →
GCC编译全解析:从预处理到链接的实战指南

GCC编译全解析:从预处理到链接的实战指南

1. 从一行报错说起:为什么值得花时间搞懂gcc很多人第一次接触gcc,不是因为想学它,而是因为被它拦住。编译一个C文件,终端甩出一堆看不懂的英文,什么undefined reference to、implicit declaration of function&#xf…

2026/10/9 11:18:10 阅读更多 →
电机测试数据飘?先查平台再查传感器——机械安装细节全解析

电机测试数据飘?先查平台再查传感器——机械安装细节全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 11:18:10 阅读更多 →
Eclipse导出可执行Jar的原理与三种依赖策略详解

Eclipse导出可执行Jar的原理与三种依赖策略详解

简介:本资源是一份面向Java初学者与中小型项目开发者的Eclipse工程打包实战指南,聚焦解决「如何导出含第三方Jar依赖的可执行Jar文件」这一高频部署痛点。内容基于Eclipse Indigo(3.7)环境,系统讲解Runnable JAR File导…

2026/10/9 11:18:10 阅读更多 →
Codex 额度重置后,开发者如何用 TaoToken 统一管理 API 调用?

Codex 额度重置后,开发者如何用 TaoToken 统一管理 API 调用?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 11:17:09 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →