/minara-video
🅖 字体规则:每个 Minara 视频的所有文本必须使用 Geist
标题/正文/数字/按钮/表格——全部使用
font-family: 'Geist', system-ui, -apple-system, sans-serif。 不得使用 Inter、任何衬线字体,以及任何会回退到衬线字体的系统默认字体。 加载方式:@import url('https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700;800&display=swap');数字搭配font-variant-numeric: tabular-nums。 必须同时编写两个 CSS 选择器#root, [data-composition-id="root"] {},否则font-family将不生效,页面会继承浏览器的默认衬线字体(参见“组合结构陷阱”第1条)。 此规则不可协商、不可选择,除非操作员明确声明“换字体”(change the font) 用于该任务。(由操作员于 2026-06-24 设定;2026-06-26 升级为最高规则。)
这是在 2026-05-26 ~ 27 制作 Strategy Studio 公开发布视频时遇到问题后,提炼出的 Minara 视频操作员标准操作流程。
⚠️ 路线优先:此工作流仅适用于 HyperFrames 合成的动态视频(营销/发布/演示,其中每一帧都由代码构建)。 如果任务是一个产品指南/教程视频——操作员自己录制屏幕,你只需添加旁白+字幕并交付——请使用
minara-guide-video子技能,而非此技能。如何区分:是否存在现有的屏幕录制?要求是否是“为这个录制添加旁白和字幕”?两者的旁白、字幕和交付方式不同。
⛔️ 启动前提:加载 HyperFrames + video-shotcraft(必需)
此技能一启动,立即使用 Skill 工具调用 hyperframes 技能,使其所有组合规则进入上下文,然后完整读取本地的 video-shotcraft 镜头库入口点,之后再按以下工作流程进行。
- 这是一个硬性前提,不可选择——
minara-video只是一个更严格的工作流包装器;实际的组合语法/时间线/渲染规则都存在于hyperframes中。不加载它直接编写场景 HTML 会遇到已知问题(时间线暂停、window.__timelines注册、不使用Math.random()/repeat:-1等)。 - 即使本会话中之前已经使用过 hyperframes,在启动
/minara-video时也要再次调用它,以确保规则在当前上下文中。 - 加载顺序:
Skill(hyperframes)优先 → 然后完整读取$VIDEO_WORKSPACE/video-shotcraft/SKILL.md→ 然后Read $BRAND_DIR/design.md(Minara v2 视觉系统) → 然后读取固定样式规则 → 最后按以下工作流程进行。 - 你必须读取
$BRAND_DIR/design.md(必需;源自 2026-06-24 的经验教训):这是官方的 Minara v2 视觉系统,是颜色值、字体比例、间距、圆角、卡片和布局的权威来源。此技能的固定样式规则是“视频氛围层”;design.md 是“设计令牌的权威来源”——两者都必须存在于上下文中。⚠️ design.md 中列出的品牌渐变#EB53FF/#FF538E/#FF9A32不用于视频(由操作员于 2026-09-02 移除;参见下方的固定样式规则)。只取其中的黑/白/灰令牌、语义颜色、排版比例和 4pt 间距。 - 默认加载品牌资源文件夹
$BRAND_DIR/logo/(由操作员于 2026-06-24 设定):当你需要 Logo/头像/字标时,优先使用此处的官方资源;不要自己绘制 SVG 作为替代。当前库存清单(先运行ls检查;可能变化):Minara Avatar.png- Minara 黑白像素头像(戴眼镜的女孩,半色调);片尾圆形 Logo 的默认选择。Minara Logo.png- Minara 主 Logo 标记。MInara Text Logo Light.png/MInara Text Logo Light Dark.png- 文字字标(亮色/亮暗版本)。Minara Avatar Japan.png- 日本市场头像变体。128_128.png- 小方形图标。minara X banner.jpeg- X 横幅。- 使用方法:将所需资源
cp到项目的assets/目录,然后在 HTML 中用<img src="assets/xxx.png">引用;HyperFrames 在渲染时会内联本地图片。当通过截图进行自我验证时,也请复制一份到/tmp/<test-dir>/assets/(只有这样才能解析相对路径)。
🎬 video-shotcraft 本地镜头库加载规则(2026-07-21)
- 固定的本地库路径:
$VIDEO_WORKSPACE/video-shotcraft/。每次/minara-video启动时,完整读取其SKILL.md。不要仅凭卡片名称或记忆来使用它。 - 翻译卡片的固定方法见下文“客户‘成长/自写’镜头经验 § B”部分(卡片帧 × TEMPO,使用
clip-path而非paper-color遮罩,PageCam2D 烘焙到关键帧中,缩放 ≥ 1,焦点限制在画布内)。 - 其默认角色是参考库;不会自动切换技术栈:
minara-video仍然以 HyperFrames 的寻帧安全合成、逐场景预览和渲染流程为核心;video-shotcraft提供镜头语言、运镜方案、节奏结构、声音设计、批准的演示样例和资源。当采用其某个 Remotion 实现时,首先将方法转化为确定性的、可寻帧的 HyperFrames 时间线。不要直接复制Date.now()、Math.random()或非寻帧安全的动画。 - 不要触发独立技能的模板提示:当在
/minara-video内部加载此库时,不要每次都询问是否使用 Ink Press,也不要因此中断上面已锁定的 Minara 工作流。只有当操作员明确提及Ink Press或Remotion,或要求复制该模板时,才完整读取template/TEMPLATE.md并切换到模板路线。 - 对于你使用的任何镜头卡片,请读取其权威来源:一旦决定使用某张镜头卡片,完整读取
references/shots/<card-name>.md和对应的demos/<card-name>/实现源码;当需要整片结构时读取references/sequences/;当需要音效时读取references/sound-design.md和assets/audio/ATTRIBUTION.md。不要一次性将全部 106 张卡片加载到上下文中。 - 只复制你需要的资源:从
assets/lib/、assets/audio/或demos/复制到当前视频项目中;不要让项目在运行时依赖此库的相对路径。使用音频时,保留并检查许可归属。
🧰 Remocn 本地 Remotion 组件库规则(2026-08-13)
- 固定的本地库路径:
$VIDEO_WORKSPACE/remocn/。它是一个 shadcn 风格的复制粘贴组件库,用于 Remotion,不是 HyperFrames 插件,也不是视频项目的运行时依赖。 - 按需加载;非每次启动必需:仅当故事板需要一个现成的 Remocn 动态/转场/UI 模拟,或操作员明确提及
Remocn/Remotion时,才完整读取本地的skills/remocn/SKILL.md。对于完整影片,再读取skills/remocn/references/anatomy.md和对应的references/archetypes/<type>.md;不要一次性加载所有原型。 - HyperFrames 仍是默认技术栈:在常规的
/minara-video任务中,仅将 Remocn 作为镜头/动态参考,并将所选组件的动态逻辑转化为可寻帧、确定性的 HyperFrames GSAP/DOM 时间线。不要直接将 React/Remotion TSX 放入场景 HTML 中,也不要仅仅因为存在现成组件就切换技术栈。 - 仅在明确选择 Remotion 时直接使用:在现有的 Remotion 项目中,如果缺少
components.json,先运行npx shadcn@latest init;然后只安装故事板选择的组件:npx shadcn@latest add @remocn/<name>。shadcn 会递归解析依赖;在组件复制到当前项目后修改代码。不要安装所有组件,也不要让最终影片引用本地 Remocn 仓库路径。 - 组件参数遵循在线文档:首先读取
https://remocn.dev/llms-components.txt进行筛选,然后读取表格指向的特定.../<component>.md页面;不要猜测 props、默认值或持续时间。如需研究实现,请返回本地库的registry/源码和content/docs/。 - 适配 Minara 规则;不要复制默认外观:Remocn 的镜头结构、动态和时序可以复用,但字体必须改为 Geist,颜色、字体大小、信息密度、标志性缓动函数和 ≤0.5s 的转场仍需遵循本技能的规则。文档中的
Length是组件自身动作结束的帧,而非场景总时长;根据逐秒脚本添加保持时间。其默认的1280×720 @ 30fps也不会覆盖当前 Minara 项目的输出规格。 - 区分两种 API 类型:动画层是帧驱动的,并接受
speed参数;remocn-ui原语是时间线状态驱动的,没有speed属性。两者都必须能逐帧重现,且仍然禁止使用Math.random()/Date.now()/间隔驱动动画。
📸 snapcn 本地 Remotion 产品演示组件库规则(2026-09-04)
- 固定的本地库路径:
$VIDEO_WORKSPACE/snapcn/(GitHubsnapcndev/snapcn,MIT)。与 Remocn 类似,是一个 shadcn 风格的 Remotion 复制粘贴组件库,但专注于软件产品演示镜头:AI 聊天流程、提示词输入、终端、设备框架、字幕。它不是 HyperFrames 插件也不是视频项目的运行时依赖。 - 与 Remocn 的分工:Remocn 偏向通用动态/转场/原型;snapcn 偏向“将产品 UI 放入镜头”。Minara 是一个 AI 交易副驾驶,因此 snapcn 的 AI 聊天输入 组(
search-typing/prompt-zoom/answer-stream/prompt-send/answer-highlight/agent-steps)和 屏幕与设备 组(phone-frame/laptop-frame/terminal-simulator/screen-recording/cursor-track)是首选的参考。对于像“提示你的策略”、Copilot 回答或 Autopilot 执行步骤等场景,首先在这里查找。 - 按需加载;非每次启动必需:仅当故事板需要上述产品演示镜头,或操作员明确提及
snapcn/Remotion时,才读取本地的skills/snapcn/SKILL.md。通过skills/snapcn/references/components/index.md中的路由表(包含“用于/避免用于/长度/氛围”)挑选组件,并且只打开选定的references/components/<name>.md;不要全部读取。对于影片结构,参考references/anatomy.md(钩子→定位→产品展示→功能→证据→行动号召)和references/archetypes/。 - HyperFrames 仍是默认技术栈:在常规的
/minara-video任务中,仅将 snapcn 作为镜头/动态/时序参考,并将所选组件的动态逻辑转化为可寻帧、确定性的 HyperFrames GSAP/DOM 时间线;如需实现细节,查看registry/snap-cn/<name>/源码。不要直接将 React/Remotion TSX 放入场景 HTML 中,也不要仅仅因为存在现成组件就切换技术栈。 - 仅在明确选择 Remotion 时直接使用:
npx shadcn@latest add @snapcn/<name>(@snapcn已经在 shadcn 注册表目录中,因此无需配置注册表)。Remotion 项目需要先有components.json,并且@/别名需要在tsconfig.json和remotion.config.ts中都配置好——Remotion 打包器不读取 tsconfig 路径。只安装故事板选择的组件;不要安装所有组件;最终影片不得引用本地 snapcn 仓库路径。 - 组件参数遵循文档:在线文档位于
https://snapcn.dev/llms.txt(完整版llms-full.txt);不要猜测 props/默认值/持续时间。Length是组件自身动作的自然帧长度(例如answer-stream150f,search-typing420f),不是场景总时长;根据逐秒脚本添加保持时间。预算不足会被截断;预算超支会导致静默时间。 - 三个值得直接采纳的规则(它们已经与本技能的规则指向一致):①
MOTION.md中的相机模型——镜头不是剪切,而是一台虚拟相机在同一世界中推拉/俯仰运动:向外快速移动 8–14f + 着陆弹簧稳定 10–16f + 文字保持 30–45f,与本技能的“相机推近跟随”方案同源;②skills/snapcn/references/design.md中的反 AI 套路默认值——无装饰性字距、无全大写、无渐变文字、无发光阴影,与 2026-09-02 的渐变移除一致;③ 以基线为支点缩放文本 +text-rendering: geometricPrecision,可将抖动从 0.284px 降低到 0.014px(motion-quality规则);在大型文字缩放动画中使用。 - 适配 Minara 规则;不要复制默认外观:字体必须改为 Geist;颜色、字体大小(大 UI 在手机上可读)、信息密度、标志性弹性缓动函数和 ≤0.5s 的转场仍需遵循本技能的规则。其默认的
1280×720 @ 30fps也不会覆盖当前 Minara 项目的输出规格。 - 区分两种 API 类型:
snapcn动画层是帧驱动的,并有speed参数;snap-cn-ui原语(input/caret)是时间线状态驱动的,没有speed属性。两者都必须能逐帧重现;光标闪烁使用Math.floor(frame/15) % 2,终端滚动使用阶梯步骤而非缓动函数,且仍然禁止使用Math.random()/Date.now()/间隔驱动。
🎵 所有音乐和音效通过 /minara-music 处理(2026-10-14)
在逐秒脚本确认后,使用 minara-music 技能将每个部分的情绪和屏幕动作写入 cues.json。先向操作员展示提示表;确认后,本地渲染 BGM + SFX(当有旁白时,同时输出一个闪避版本)。不要随意从网上下载音乐。
📱 UI 场景规则——大 UI,极简,不复制产品(由操作员设定)
...
