Communitygithub.com

MBehtemam/montagent-skills

适用于任何 Montagent 视频的时序、缓动与布局工艺:源自音乐的节拍网格、缓动与保持时长、安全区域、字号层级、克制原则。在判断画面是否“看起来对”之前,请先加载此技能。

montagent-skills 是什么?

该技能为 Montagent 视频创作提供了核心的排版、节奏与运动规范,确保所有视觉元素在时间和空间上都精确、协调且符合专业标准。它定义了一套可量化的检查清单(如节拍对齐、安全区域、可读性、对比度等),指导 AI 代理在生成或评估视频时,按步骤逐一验证每个画面的正确性。技能支持任何帧率和宽高比,通过将尺寸定义为画面短边的比例,实现了跨不同分辨率的统一度量。其核心机制包括:从音乐中自动或手动提取节拍网格,基于此网格对齐所有剪辑、入场和转场;定义了不同运动(如敲击、弹出、标准移动)的时长与缓动曲线,并提供速度限制参数以避免视觉闪烁或重影;规定了文字保持时间、安全边距和字体层级,确保信息的有效传达。该技能主要面向使用 Montagent 平台的 AI 代理(如 Claude Code、Cursor 等),在 `montagent` 的检查步骤之前运行,作为判断视觉输出是否“正确”的最终依据。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/MBehtemam/montagent-skills/tree/HEAD/skills/montagent-craft

在你喜欢的 AI 中提问

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

文档

工艺:时序、缓动与布局

这些数字构成了每一件 Montagent 作品的基石,无论其用途、形状或帧率如何。时间单位是毫秒。尺寸是画面短边的分数(宽画面的高度,高画面的宽度),因此它们在任何尺寸和宽高比下都有效。一个 Job 技能的配方会为其自身的移动提供数字;在该配方内部,它的数字具有优先权。

检查清单

在每一次“look”步骤中,对照以下每条规则检查该步骤命名的帧,并在渲染前再次检查整个视频。判断画面中实际呈现的内容,而不是你原本意图构建的内容。如果你无法从查看的画面中检查某条规则,则该规则视为未检查:请重新查看。

  1. 在节拍上。 每一次剪辑、入场和章节变更都落在其节拍的绘制帧上,或者最多提前一帧(节拍网格)。query --from --to 可列出剪辑点,请与网格进行对比。
  2. 在安全区域内。 每个文字都位于标题安全区内,每张脸和产品都位于动作安全区内(安全区域)。对于文本,query --at <t> --json 会给出每个元素的墨盒像素坐标。
  3. 足够大。 任何需要被阅读的文字都不应小于画面短边的 3%,并且各个层级应明显分开(字体)。
  4. 可读。 文字与其背景的对比度需达到字体部分的要求,并且在文字出现的每一帧都满足。在视频素材或照片上叠加时,需检查最亮和最繁忙的帧。
  5. 一个焦点。 在任何时刻,只有一个主导元素:最新的、最大的、最亮的或带有重音色的。其他元素要么已消失、保持静止,或明显位于后方(克制)。
  6. 流畅。 在 preview 中,没有闪烁、抖动或出现重影的现象(速度限制)。
  7. 足够长以供阅读。 每行文字在发生任何移动之前,都应保持其可读时间(保持时长)。
  8. 结尾。 最后一帧应完整且静止,并至少保持 1 秒。声音应在该帧归零。

当每个规则在联系表中的每个缩略图上,以及在命名的步骤中的每一帧都成立时,“look”步骤才算完成。修复失败的部分,然后返回到 montagent 的检查步骤。

节拍网格

音乐设定时钟。在放置任何东西之前,先找到速度和第一个强拍。

  • 简介或素材注释中注明了速度:使用它以及其指明的强拍。
  • 未注明速度:运行 python3 scripts/beat_grid.py <project> <spec>(使用 --help 查看 spec 格式)。它会监听音轨,放置音轨以使强拍落在你希望的位置,并在最后一帧淡出。它会将项目打印到标准输出(stdout),因此请将其重定向到一个新文件,并将网格以 JSON 格式输出到标准错误(stderr)。请关注两个置信度:低于 1.5,或者 downbeat_by 为 first,则说明网格是猜测的。当你知晓时,请在 spec 中提供 bpm(和 downbeat),并在你的交接说明中说明网格是估算的。
  • 无音乐:一个 500 毫秒的节拍(120 BPM)。

算法:

  • 一个节拍是 60000 / BPM 毫秒,一个小节是四个节拍,一个乐句是四个小节(有时是八个)。
  • 从第一个强拍开始计数,切勿累加。 第 n 个节拍是 downbeat + n × beat,然后移动到其绘制帧:floor(round(t * fps / 1000) * 1000 / fps)。反复累加四舍五入后的节拍,每几个小节就会漂移一帧。measure --at 可确认一个瞬间是否被绘制。
  • 在 90、100 和 120 BPM 时,一个节拍在 30 和 60 fps 下是整数帧(在 90 和 120 BPM 下也是 24 fps 的整数帧,在 100 BPM 下也是 25 fps 的整数帧)。在其他速度下,节拍会间隔 14、14、15……帧落下。只要每个节拍都是从强拍开始计数的,这没问题。

元素放置位置:

  • 章节变更在强拍上,作品的最大转折点(揭示、品牌)在乐句的第一个强拍上。
  • 主要事件在节拍上:剪辑、文字落地、颜色变化。次要动作为半拍或四分之一拍:稳定效果、组内错开、条形图后的标签。
  • 哪一帧算“准时”:剪辑、闪光或弹出效果在其第一帧时算在节拍上。持续超过半拍的移动,且其到达是重点,则应在节拍上结束。
  • 提早,切勿推迟:观众会注意到画面比声音晚约 45 毫秒,这相当于一两帧。提前一帧的敲击感觉像在节拍上;推迟一帧则感觉迟到。

持续时间和缓动

移动类型时长30 fps 下的帧数
敲击:闪光帧、猛击的冲击、硬切换70–130 毫秒(低于 2 帧会读作故障)2–4
小移动:弹出、轻推、标签淡入200–350 毫秒6–10
标准移动:卡片移入、在画面部分区域移动400–600 毫秒12–18
重型移动:英雄揭示、大推力700–1000 毫秒21–30
漂移:推近、慢速浮游在屏幕上的整个持续时间
  • 退场持续时间是其对应入场时间的 60–70%。
  • 错开组内元素的时间差为 60–130 毫秒(30 fps 下为 2–4 帧),整个错开过程保持在 500 毫秒以内。更长的组应让每个元素有自己的节拍。
  • 曲线。 到达的物体减速;离开的物体加速;在两个屏幕位置之间移动的物体两端都使用缓动。为整个作品中的每种角色选择一个曲线并保持不变:曲线是作品风格的一部分。
角色曲线峰值速度,×平均速度
长稳定效果的入场[0.16, 1, 0.3, 1]6.3
较温和的入场[0.25, 1, 0.5, 1]4.0
带约 10% 过冲的弹出[0.34, 1.56, 0.64, 1]4.6
退场ease-in1.7
在两个位置之间、擦除、扫掠[0.65, 0, 0.35, 1]2.9
旋转[0.3, 0.3, 0.5, 1]1.6
漂移、声音淡入、持续旋转linear1.0

峰值列用于下面的速度检查:移动的最快瞬间是其平均速度乘上该数字。

速度限制

对于快速移动,请在移动元素上设置 motion_blur(`

Individual skills in this repo

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

相关技能