Communitygithub.com

Amartileyton/autovideo

连续场景 Remotion 摄像机系统,包含强制摄入、批准参考审核、反霓虹规则和首轮质量检查。

autovideo 是什么?

该技能为 Remotion 提供了一个结构化的摄像机系统,用于构建连续的世界场景,而不是在虚空中弹出孤立的卡片。它强制要求一个严格的摄入流程,确认格式和背景,并执行一个“绝对视觉禁令”,禁止任何霓虹、发光或赛博朋克美学。在使用前,必须审核已批准的渲染参考,以保持一致的视觉系统;如果没有参考,则会使用一个包含暖色米白背景和克制配色的安全回退方案。核心思想是构建一个大于视口的单一世界,摄像机通过平移和缩放在关键动作之间平滑移动,并留有适当的停顿。该技能包含一个严格的“首轮拒绝门”,以确保在没有霓虹效果、使用真实资产、并通过与批准参考的并排比较验证所有元素后,才能展示渲染结果。它适用于 4:3 或 9:16 的 Instagram 格式,并与其他技能如 `remotion-best-practices` 和 `motion-graphics` 配合使用。

兼容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Amartileyton/autovideo/tree/HEAD/.agent/skills/cinematic-camera

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

电影摄像机

与 remotion-best-practices 和 motion-graphics 配合使用。构建一个相连的世界,并在其中移动一个共享的摄像机,而不是在虚空中弹出孤立的卡片。

强制摄入

在开始规划或编码之前,请遵循 motion-graphics 的摄入门。如果缺失,请询问:

你想要哪种格式:4:3 半屏 Instagram 插片还是 9:16 全屏 Instagram?以及哪种背景:暖光、干净暗色、亮色网格还是暗色网格?

不要默认选择 9:16 或暗色。如果用户委托你选择,使用暖光。

绝对视觉禁令

本技能绝不引入霓虹、辉光、发光、发光边缘、彩色阴影、渐变球体、径向彩色渐变、青紫渐变、玻璃态或赛博朋克照明。摄像机运动不能将克制的场景转变为氛围编码的 AI 演示。产品强调色保持扁平且克制。

强制批准参考门

在规划或编码之前完成:

  1. 检查与同一项目、产品、宽高比、放置位置或视觉机制相关的最新 3–5 个批准渲染。
  2. 打开源合成文件,检查摄像机关键帧、时间、间距、排版、颜色、密度、入场、出场和结束停顿。
  3. 检查实际片段或代表性帧;仅凭文件名是不够的。
  4. 清点真实资产:标志、吉祥物、截图、录音、素材和先前输出。
  5. 编写一个简短的节拍图,说明该片段如何延续已批准的系统。
  6. 如果没有项目参考,使用锁定回退:暖色米白实体/编辑世界、深色墨水、柔和中性色、一个克制的扁平品牌强调色、中性阴影,以及零装饰效果。

参考优先级:同一视频 → 同一产品/系列 → 同一宽高比/用例 → 其他批准的仓库示例 → 锁定回退。

规范图库:https://github.com/Liamrjohnston/remotion-motion-graphics-skill

最近批准的工作是基线,而不是可选的灵感。不要为了新奇而发明新的美学。

核心理念

构建一个比视口更大的世界。开始时紧贴一个动作,在其完成时停顿,揭示上下文,移动到对比/回报点,然后稳定下来。

面板可以存在,但它们必须共享一个世界和有意义的空间关系。避免在空空间中独立出现不连贯的卡片。

摄像机支架

使用共享的关键帧时间线来控制焦点和缩放:

const ease = Easing.inOut(Easing.cubic);
const KEY_T = [0, 46, 62, 78, 96, 132, 174, TOTAL_FRAMES];

const fx = interpolate(frame, KEY_T, [/* 焦点 x */], {
  easing: ease,
  extrapolateLeft: 'clamp',
  extrapolateRight: 'clamp',
});
const fy = interpolate(frame, KEY_T, [/* 焦点 y */], {
  easing: ease,
  extrapolateLeft: 'clamp',
  extrapolateRight: 'clamp',
});
const z = interpolate(frame, KEY_T, [/* 缩放 */], {
  easing: ease,
  extrapolateLeft: 'clamp',
  extrapolateRight: 'clamp',
});

<AbsoluteFill style={{backgroundColor: BG}}>
  <div
    style={{
      position: 'absolute',
      transform: `translate(${VIEW_W / 2 - fx}px, ${VIEW_H / 2 - fy}px) scale(${z})`,
      transformOrigin: `${fx}px ${fy}px`,
    }}
  >
    {/* 整个世界坐标中的场景 */}
  </div>
</AbsoluteFill>
  • 尺寸来自已确认的格式,从不使用隐藏的默认值。
  • 世界宽度通常是视口宽度的 2–2.5 倍。
  • 重复的相邻关键帧会创建停顿。
  • 摄像机移动通常需要 14–24 帧。
  • 以两个几乎相同的关键帧结束,以获得稳定的编辑器停顿。
  • 摄像机、光标、效果和连接的对象保持在同一个坐标系中。

编排

  1. 开始时紧贴一个已经在运动的物体。
  2. 在主要动作完成时停顿。
  3. 揭示其更大的系统。
  4. 移动到对比/回报点。
  5. 在支撑对象以交错顺序完成时拉远。
  6. 稳定下来,准备干净地切换场景。

规则:

  • 摄像机移动到下一个动作;动作在停顿期间完成。
  • 每个节拍一个主要动作。
  • 仅使用微动来显示状态:打字、滴答、检查、播放、进度、光标移动。
  • 优先选择连续变换而非场景替换。
  • 优先选择平滑移动而非疯狂的甩动。
  • 运动解释因果关系;它从不弥补薄弱的概念。

真实性与文本

  • 尽可能使用真实标志、素材、截图、录音、UI 和经过验证的数据。
  • 绝不用通用的彩色方块、虚假标记、虚构的 UI 或虚假指标来替代。
  • 产品名称、文件名、计数器、命令、进度和真实的 UI 文本是允许的。
  • 不要重复叙述的句子或因为帧感觉空旷而添加解释性徽章。

首轮拒绝门

在每一个答案都是“否”之前,不要展示渲染结果:

  1. 格式或背景是否未经确认?
  2. 是否存在任何霓虹、辉光、彩色照明、渐变洗色、玻璃面板或氛围编码的 AI 处理?
  3. 场景是否是一组在虚空中不连贯的通用卡片?
  4. 是否在没有用户选择或批准参考要求的情况下使用了暗色?
  5. 摄像机运动是否仅仅为了装饰而偏离了引导因果关系的目的?
  6. 当真实资产可用时是否缺失了?
  7. 在选择的 Instagram 放置位置中,基本元素是否难以辨认?
  8. 结果是否未能匹配批准参考的间距、密度、材质和运动节奏?

私下修改直到通过该门。

质量保证与交付

  1. 为开场、每个摄像机目标位置、过渡、回报点和结束停顿渲染静帧。
  2. 与批准参考并排比较取景、密度、身份、材质克制和精致度。
  3. 验证真实资产是否保持可读。
  4. 验证停顿 → 移动 → 停顿,并确保没有动作在移动过程中被隐藏。
  5. 检查完整的 MP4 文件中的空白移动、裁切、死帧、通用填充、霓虹/辉光和软弱的结束停顿。
  6. 只有在其看起来与批准的视觉系统一致时才交付。

技术约束

  • 使用 useCurrentFrame()、spring() 和 interpolate() 驱动运动;不使用 CSS 动画。
  • interpolate() 的输入范围必须严格递增。
  • 保持世界规模适中;大型的模糊/阴影图层计算成本高,且通常违反视觉规则。
  • 对滴答数据使用等宽数字。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相关技能