Communitygithub.com

atilla777/omr

用于根据脚本实现或修改 OMR 视频并生成 out/video.mp4:在 Remotion、Manim 或混合模式下组装、渲染或导出视频,准备媒体并检查最终视频。不适用于需求访谈、内容调研、仅脚本请求、通用媒体问题或 OMR 本身的开发。

omr 是什么?

该技能用于自动化 OMR 视频的制作流程,支持 Remotion、Manim 或两者混合的渲染引擎。它首先加载项目依赖(如 omr-dialogue)和必要的 skill 模块(如 remotion-best-practices、manim、manim-local),然后根据需求文档(requirements.md)、脚本(script.md)和内容索引(content/index.md)进行实现。技能会严格遵循指定的分辨率、帧率、时长、场景、文本、样式和音频需求,并在渲染前确保所有媒体资源(图片、视频、音频)可用、合法且正确配置。对于混合模式,它会先渲染 Manim 片段,再在 Remotion 中组装最终视频。渲染完成后,技能会执行全面的质量检查:通过 ffprobe 验证编码参数,提取关键帧图片检查视觉效果,监听音频以确认同步和音质,并将所有检查结果记录在 renders/verification.md 中。仅在所有检查通过后,才会输出最终的 out/video.mp4,并报告渲染命令和参数。该技能适用于 Claude Code、Cursor 等支持 skill 调用的 AI 编码代理平台,旨在减少人工干预,提升视频生产的可重复性和可靠性。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/atilla777/omr/tree/HEAD/.opencode/skills/omr-render

在你喜欢的 AI 中提问

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

文档

OMR 视频生产

你掌握所选项目的生产成果:引擎源文件、准备好的资源以及 out/video.mp4。使用用户语言沟通。调用 /omr-render 是明确的指令,要求生成 MP4,而不仅仅是打开预览。在脚本范围内自行纠正实现缺陷。

项目与充分性

开始工作时,通过 skill 加载 omr-dialogue(如果当前上下文中尚未加载),并将其应用于所有澄清。如果依赖不可用,请报告并协商加载;将阻塞问题返回给负责人。

如果存在 reviews/render.md,请阅读它并在生产或修改时考虑其中描述的问题。如果文件不存在,则没有以前的审阅意见。请勿自行启动审阅或更改其报告:这是单独的操作。将重大问题返回给负责人,不要开始单独的访谈。

  1. 阅读适用的 AGENTS.md、请求、requirements.md、script.md、content/index.md 以及链接中的必要材料。在更改之前,研究现有代码、配置和资源。当前视频子文件夹或明确选择的项目决定了工作位置。根据规则和结构确定领域根目录,而不仅仅是根据 .git。在没有选择项目的情况下从根目录开始,首先询问子文件夹。不要在中创建视频OMR文件夹,不要在选定项目内创建嵌套项目,也不要创建新的 .git。
  2. 检查已商定的模式、尺寸、帧率、时长/帧数、场景、文本、样式、转场、音频/语音、资源以及混合插入的约定。允许使用足够等效的材料代替单独的文档;记录使用了哪些输入。在标准结构下,索引是必需的。不要为用户捏造重要内容、设计、语音或模式。
  3. 如果存在重大空白/矛盾,请指出并澄清所需内容。如果缺少前一阶段的结果,请建议相应的现有 /omr-requirements、/omr-content 或 /omr-script,并检查命令是否存在。不要启动前一阶段的步骤,也不要自行重写其文档。不需要单独确认当前文档的充分性。

必需的技术依赖

在创建、修改、调试或渲染之前,通过 skill 加载:

  • Remotion:remotion-best-practices;阅读其中关于创建、标记、合成和渲染的嵌套指南,然后根据需要阅读关于场景(时间线、媒体、音频等)的指南。
  • Manim:同时加载 manim 和 manim-local;本地 skill 明确了实际环境,并替换不合适的通用安装建议。检查当前路径、版本、字体以及 Typst/TeX 的可用性;不要将个人路径复制到项目中。
  • 混合模式:加载上述两组。你连接它们的结果并检查最终构建。

不可用的必需 skill 是相应工作的阻塞点:报告并协商加载。不要将仅读取名称或文件视为通过 skill 加载。不要默默地将缺少依赖的情况切换到另一个引擎。

项目环境

  • 在视频文件夹中执行安装、开发和渲染。只创建必要的 public/、src/remotion/、src/manim/、renders/、out/ 和配置。
  • 在 Remotion 和混合项目中本地安装 Remotion:使用兼容的精确软件包版本和锁文件。不要使用根目录或邻居目录的 node_modules。保留现有的清单/锁文件,并根据需要修改。Markdown 输入使文件夹非空:不要启动模板使其覆盖它们或创建额外的视频子文件夹;在原地准备最少的项目。
  • 对于纯 Manim,使用合适的现有环境(在当前机器上由 manim-local、uv tool 描述)。特殊依赖/版本需要项目的本地环境。未经协商,不要更改通用环境。不要为了渲染/合并 Manim 音频而添加 Remotion、package.json、node_modules。
  • 检查必要的 CLI、编解码器、浏览器、字体和媒体的可用性。列出缺失的工具;如果需要,请协商安装/访问。不要无限重试一次不可用的操作。保留独立的可用结果以及确切的阻断命令/错误,不要宣布 MP4 已就绪。

媒体与音频

首先列出场景资源清单:已提供、需要搜索、生成或录制。检查实际文件:类型、尺寸、时长、方向、Alpha 通道、音频频率。不要将脚本中的路径视为实际存在的文件。

  • 使用提供的资源。对于外部图像、视频、音乐和效果,通过可用搜索或 webfetch(已知地址)找到合适的页面/目录,检查来源和条件,将所需文件下载到 public/。webfetch 的存在本身并不意味着搜索结果的可用性或可下载性。检查实际响应:HTML/错误而不是图片——不是准备好的资源。
  • 通过可用的本地工具或连接的服务在任务范围内生成图形/音频/视频。程序化的 SVG、绘图、音调和 TTS 是不同的能力;不要仅因为你能编写代码就承诺生成图像/语音。
  • 对于现成的配音,测量录制内容并将台词与动作对齐。对于 TTS,在请求之前检查实际工具、商定的语音/语言、可用性和成本。缺少密钥/付费服务需要协商;不要将密钥写入源代码/报告。不要将指定的语音替换为其他语音、将语音替换为音调,或将必需的媒体替换为占位符。
  • 在 public/assets.md(或现有清单)中保存外部文件的路径、用途、来源/URL、作者和使用条件;对于生成的文件,保存工具、参数/任务以及再现命令(如适用)。不要将他人资源声称是 MIT OMR,标记未知条件并确认适用性。
  • 检查音量、裁剪、停顿和同步。未经讨论,不要拉伸语音或更改重要文本/时长。对于无声视频,不要添加音乐。如果必需的资源不可用,请报告确切的阻断点并请求文件/访问或协商替换;独立实现可以明确是部分的。

实现

遵循脚本;在接受的设计范围内具体化技术细节。在修改之前,考虑用户的更改。重新运行仅更改被分配的结果;不要自动更新需求、内容或脚本。

Remotion

在 src/remotion/ 中实现合成和场景,使用指定的尺寸、帧率和帧数。动画应依赖于帧,而不是时间/CSS 动画。使用关于合成、时间线、媒体和音频的技术指南。通过支持的 API 从 public/ 提供媒体;等待字体/资源加载。在可用的情况下检查构建和预览;标记缺少浏览器预览的情况。将 MP4 导出到 out/video.mp4,不要止步于 Studio。记录确切的重新渲染命令。

独立 Manim CE

在 src/manim/ 中实现 Scene;将 play/wait 的时长与脚本帧数进行核对。使用从已加载 skill 中获得的有效文本/数学引擎。首先渲染并查看特征 PNG/简短草稿,然后使用所需参数渲染完整视频,明确指定 FPS/尺寸,而不是使用不合适的质量预设。将中间文件定向到 renders/。将最终结果复制/合并到 out/video.mp4。使用 Manim 工具或可用合并工具(例如 FFmpeg)添加音频,无需 Remotion。不要使用 -shortest 来悄悄缩短指定的视频时长。

混合模式

首先在 renders/ 中获取 Manim 片段并检查其参数和帧数。在 public/ 中准备可供构建的副本;然后在 Remotion 中组装最终结果。检查片段本地帧是否与全局时间线、FPS、尺寸、宽高比/裁剪、背景颜色或格式对透明度的实际支持相匹配。常规 H.264 MP4 没有 Alpha 通道。不要拉伸片段、不要重复音频/字幕。如果不兼容,在约定范围内修复实现;讨论重大内容、设计或模式更改,不要默默引入。

检查与交付

成功编码只是检查的一部分。使用可用工具,而不是虚构的预览结果。在 renders/verification.md(或现有项目报告)中记录输入、版本、命令、参数、检查点、修复和未执行的检查。

  1. 检查构建/渲染和最终 MP4 的解码;通过 ffprobe 测量编解码器、分辨率、帧率、时长/帧数和音频流。与脚本进行比对,单独考虑音频包的时长和视频帧的时长。
  2. 从完成的 MP4 中提取实际帧:开头、关键动作/文本、结尾、每个接缝前后以及转场内的帧。使用可用的图像查看工具打开 PNG,检查可读性、公式、边距、裁剪、叠加重叠、丢失的媒体和色彩跳变。联系表有助于覆盖时间线;对于运动,如果可用,请查看序列/视频。来自单独静止渲染的 PNG 不能替代对最终 MP4 及其接缝的检查。
  3. 如果包含音频,不仅要检查流:时长、信号/静音间隔、电平和与场景的事件匹配。通过可用方式收听结果。如果无法收听,请明确说明,将测量的同步/电平与未经检查的可理解性和听觉质量区分开来。对于无声视频,请检查没有意外的音频。
  4. 修复检测到的实现缺陷并重复受影响的检查。脚本/模式的重要更改需要用户决策。如果必需的检查不可用,不要宣布结果为完全验证;列出已完成的操作以及具体的剩余/阻断项。

报告 out/video.mp4 的实际路径、源文件和报告、重新渲染命令、主要参数和限制。如果无法保存,请给出明确未保存的结果;如果存在阻断点,请给出准确的部分状态;不要将旧的 MP4 冒充为新的。在生产与检查后停止。未经单独指示,不要发布、提交/推送或启动其他阶段。

Individual skills in this repo

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

相关技能