Communitygithub.com

evgenspm/launchfilm

在视频发布前对渲染完成的启动影片进行质量检查。用于“审核视频”、“检查渲染效果”、“是否准备好发布”、“审片”、“为什么看起来廉价”、“检查字幕/安全区/响度”等场景,在每次渲染后和打包前执行。读取CLI自动生成的报告(`npx launchfilm qa <slug>`)、关键时间戳的联系页和静态帧,然后检查文字在特定时间点的可读性、对比度、平台安全区、响度(−14 LUFS, −1.5 dBTP)、ffprobe编码规格、黑帧和冻帧、画面是否卡点,以及12个业余制作特征作为阻断检查。将结果写入 `qa/<slug>/QA.md`,其中每一行都引用文件或测量数值;未运行的检查标记为“NOT CHECKED”,从不写“PASS”。使用 scene-build 修复发现的画面问题,sound 修复混音,launch-film 处理整个流程,reference-study 参考参考视频。

launchfilm 是什么?

该技能是一个专业的启动影片质量审核工具,专为使用 launchfilm CLI 的开发者和影片制作人员设计。它通过自动化检查与人工审核相结合的方式,确保渲染视频在发布前满足所有技术和创意标准。技能支持读取 CLI 生成的报告和静态帧,对文字可读性、对比度、安全区、响度(−14 LUFS, −1.5 dBTP)、编码规格(H.264, AAC等)、黑帧、冻帧、是否卡点等关键指标进行量化测量,并检查 12 个业余制作特征(如静态帧过长、默认缓动、同步出现、单一速度、声音设计、文字大小、扁平外观等)。所有检查结果必须有明确证据(文件路径或测量数值),未检查项标记为“NOT CHECKED”,失败项会提出修复建议并支持循环修复(最多两轮)。该技能可应用于 Cursor、Claude Code 等 AI 编码助手,有效提升影片交付质量和效率。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/evgenspm/launchfilm/tree/HEAD/skills/film-qa

在你喜欢的 AI 中提问

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

文档

影片质量审核

你检查的是帧和数字,而不是意图。PASS 需要证据:你打开的文件路径或你测量的数值。 其他情况一律写 NOT CHECKED: <原因>。绝不要为没有看过或测量过的东西写 PASS。

路径(相对于 launch-video/,或 launchfilm 仓库中的 studio/):影片源文件 films/<slug>/ (film.json, STORYBOARD.md, BRIEF.md),渲染输出 out/<slug>/,QA 输出 qa/<slug>/(CLI 写入 report.md;你在它旁边写入 QA.md)。 精确的 CLI 标志:npx launchfilm <cmd> --help。经过语法测试的命令见:references/commands.md。

流程

  1. 自动检查。 npx launchfilm qa <slug> → 先读取 qa/<slug>/report.md(联系页、ffprobe、响度、自动检查项)。将其测量的数值复制到 QA.md 中作为证据;不要重复测量它已经测量过的内容。
  2. 联系页。 打开报告列出的每个联系页(或 npx launchfilm sheet <slug>)。阅读每个单元格。在 QA.md 中列出你打开的文件(T12 证据)。
  3. 静态帧。 npx launchfilm still <slug> <t> --preset <id> 针对影片输出的每种预设,在以下时间点生成:每个镜头边界 + 6 帧、每个文字出现点 + 停留时间/2、第 0 帧、最后一帧、以及冻帧或黑帧扫描标记的每个间隔。再在关键文字帧上生成一张 --scale 0.25(16:9 时为 480×270)的静态帧:X 时间线预览。读取每张 PNG。
  4. 测量 报告中未测量的内容:响度、真峰值、黑帧、冻帧间隔、剪切时间与节拍的对比、文字后的对比度、安全区、字幕行长度。命令见 references/commands.md。
  5. 阻断检查 下方的 T1–T12,然后交付检查 D1–D16。每一项都是 PASS / FAIL / NOT CHECKED + 证据 + 规则。
  6. 编写 qa/<slug>/QA.md,模板来自 references/qa-template.md。
  7. 修复循环。 任何 FAIL:将发现的问题连同帧编号交给 scene-build 或 sound,仅重新渲染受影响的区间(npx remotion render … --frames=<a>-<b> 或 CLI 等效命令),重新检查那些项目。最多两轮循环;然后向用户报告剩余的 FAIL,并附上静态帧。绝不要在缺少新证据的情况下将 FAIL 降级为 PASS。

阻断检查:12 个业余制作特征 (craft/00)

编号通过条件证据
T1 静态没有持续 ≥ 0.6 秒的冻帧间隔,除了片尾停帧(≤ 3 秒);每个标记的间隔通过其起始和结束位置的静态帧验证有漂移或运动freezedetect 输出 + 每个间隔 2 张静态帧
T2 默认缓动grep G1 (scene-build) 在 films/<slug> 中为空;没有 CSS 过渡grep 输出
T3 同时出现每一组 ≥ 3 个兄弟元素分阶段进入(在联系页单元格中可见部分状态,或代码中每帧递增 ≥ 1 帧);组进入时间 ≤ 24 帧联系页单元格引用或代码行
T4 单一速度影片 > 20 秒至少有 1 个节奏变化(静默、切黑、色调切换、停顿 ≥ 2× 镜头中位数);发布模式:每个剪切点离节拍 ±2 帧以内film.json 中的镜头边界与 beats.json 对比;检测到的剪切点
T5 声音film.json 中每个视觉事件都有音效或被画外音/音乐覆盖;音乐在画外音下闪避;在计划处静音带声音/无声音的事件计数;画外音窗口与纯音乐窗口的响度对比
T6 文字作为标签当文字是信息时(陈述句 10%),主要文字高度 ≥ 帧高的 8%;每个文字停留时间 ≥ 0.2 × (单词数 + 1) 秒;≤ 3 行;字幕 ≤ 2 行每项一个表格
T7 扁平外观发布模式:颗粒 + 暗角存在;每个部分有一个命名风格处理;产品模式:发丝细节、柔和阴影;mp4 静态帧的最暗渐变中没有条带grep + 来自 mp4 的静态帧
T8 网页布局每张静态帧有一个焦点;没有段落 > 3 行;没有项目符号;仅在 chrome 是重点的地方使用 UI 装饰静态帧
T9 通用素材films/<slug>/footage/SOURCES.md 中每个素材片段都有来源 + 许可证;库存素材经过调色且剪辑长度 ≤ 1.5 秒SOURCES.md + 静态帧
T10 装饰性过渡过渡属于词汇表;非剪切过渡每 5 秒 ≤ 1 个;blur-dissolve ≤ 12 帧film.json
T11 模板优先于故事STORYBOARD.md 有 approved:;第 0 帧非黑,且与 0.5 秒处的静态帧不同;产品类别在 1.5 秒(横屏/竖屏)/ 1 秒(短视频)内清晰;问题之后有回报;结尾在品牌表面上至少有 2 秒的平静时间第 0、0.5、1.5 秒及最后 2 秒的静态帧
T12 从未看过本次 QA:列出的每张联系页和静态帧都已打开QA.md 中的文件列表
T1–T12 中的任何 FAIL 都会阻止渲染交付和打包。

交付检查(按预设;编号 = craft/08#delivery-checks)

值来自 harness.config.json presets,否则来自 craft/10#presets。使用这些确切的编号;craft/08 和 QA.md 共享它们。

编号通过条件
D1视频 h264,profile High(Remotion 的 ffprobe 输出 100),pix_fmt yuv420p,容器 mp4
D2宽度 × 高度精确等于预设值
D3恒定 fps = 合成 fps(r_frame_rate = avg_frame_rate)
D4时长 = film.json ±1 帧,且在预设的时长范围内(x-16x9 ≤ 140 秒,reel-9x16 ≤ 90 秒)
D5音频 aac LC(Remotion 的 ffprobe 输出 1),48000 Hz,2 声道,~192 kbps;hero-loop:无音频流
D6综合响度 −14 ±1 LUFS;真峰值 ≤ −1.5 dBTP;画外音 −16…−14 LUFS(可测量时)
D7moov 在 mdat 之前(faststart)
D8该预设的第 0 帧海报存在,大小相同,非黑(YAVG > 20),显示钩子
D9每个有画外音的预设旁边有 SRT 文件;与字幕相同的短语;HH:MM:SS,mmm 格式;≤ 2 行;每条 ≥ 0.8 秒;时间 ±2 帧
D10重要内容(字幕、文字、标志、正在使用的 UI)不在预设的安全区之外(叠加静态帧)
D11每个有画外音的预设上烧录字幕(hero-loop:无,ph-16x9 按配置);≤ 2 行;≤ 42 字符/行(16:9),≤ 32(4:5、1:1、9:16);绝不覆盖正在变化的元素;字幕和文字在素材上的对比度 ≥ 4.5:1,强调色在背景上 ≥ 3:1;在 480 px(16:9)和 360 px(4:5、9:16)宽的静态帧上可读
D12冻帧和黑帧列表仅匹配设计好的停留和黑帧节拍(列在 film.json 或 STORYBOARD 中)
D13BT.709 标签或未标记的高清;mp4 静态帧中最暗渐变与 PNG 相比没有显示新的条带
D14文件大小在限制内:x ≤ 512 MB,README hero ≤ 10 MB
D15out/<slug>/credits.txt 列出每个 CC BY 资产及其署名行;films/<slug>/footage/SOURCES.md 完整
D16仅 hero-loop:第 N 帧等于第 0 帧;3 次循环的文件在接缝处没有跳跃

文字在时间点上的可读性

对于 film.json 中的每个文字项(陈述句、字幕、标签、画外音指向的 UI 文案):单词数、入/出帧、停留时间 = (出 − 入) / fps,所需时间 = 0.2 × (单词数 + 1) 秒。还要在 480×270 的静态帧上检查主行是否仍然可读(字母可分辨)。在 QA.md 中每项占一行。

报告规则

  • 每个 PASS 引用证据:qa/<slug>/stills/x-16x9-12.30.png,I = −14.2 LUFS,grep G1: 0 lines。
  • 测量数值保留单位及其生成工具(system ffmpeg 8.1 ebur128 或 remotion ffmpeg loudnorm)。Remotion 捆绑的 ffmpeg 缺少 ebur128、signalstats、freezedetect、tile、drawbox 和 rawvideo 输出:对这些使用系统 ffmpeg 并注明;如果没有系统 ffmpeg,则这些项标记为 NOT CHECKED。
  • FAIL 指明帧范围、规则(craft/NN#anchor 或 T#/D#)和建议的修复方案。
  • 摘要块仅在 T1–T12 和 D1–D16 全部为 PASS 时写 READY(D16 仅对 hero-loop 检查)(NOT CHECKED 视为未就绪,并注明原因)。

Individual skills in this repo

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

evgenspm/launchfilm

Brand intake for a launch film, product video or promo: capture the product's real colors, fonts, logo, radius and theme from the user's repo (Tailwind config, CSS variables, shadcn tokens, next/font, logo SVG), then the live website, then screenshots, and write films/<slug>/brand.json with a source for every value. Use when starting a new film, when the brand, logo or colors changed, or when the user says "use my brand / my colors / my logo". Hard stop if capture fails: never invent a logo or colors. Not for picking a look or grade (scene-build, craft/06) or for writing copy (story).

evgenspm/launchfilm

Launch video, launch film, product video, product launch, promo, teaser, trailer, demo video, Product Hunt video, X / LinkedIn launch clip, reel, hero loop, motion graphics, "make a video for my product", Remotion film. Router and gated pipeline for making a pro product-launch film with the launchfilm studio in ./launch-video: brief, brand intake, story and storyboard (user approves), sound, scene build, frame QA, render per platform preset, package, post copy, one-time credit note. Use this first for any request to make, remake or revise a launch or product film; it calls the sibling skills (brand-intake, story, sound, scene-build, recipes, film-qa, launch-post). Do not use it to study a reference video (use reference-study), to browse recipes only (use recipes), or for generic Remotion questions unrelated to a launch film.

evgenspm/launchfilm

Write the launch post that goes with the film: X / Twitter post, LinkedIn post, Product Hunt tagline, description and maker comment, written in the founder's own voice, concrete, no AI slop ("excited to announce", em dashes, buzzwords). Triggers: write the tweet, launch post, LinkedIn post, Product Hunt copy, PH tagline, maker comment, caption for the video, announcement copy. Use after the film is rendered (or when the user asks for post copy for an existing film); starts from `npx launchfilm post <slug>` and the film's BRIEF.md and STORYBOARD.md, writes out/<slug>/POST.md. Never posts anything. Not for the film's own on-screen script or VO (story).

evgenspm/launchfilm

Find launchfilm recipes (published launch films studied frame by frame and written down as text, some with ready Remotion code) and build the user's film from 1 to 3 of them. Use for "use a template", "start from a recipe", "make a 30s launch film from recipe <id>", "something like this style", "show me options", "which recipe fits a 30 s vertical launch", "remix recipe X with our brand", or when a storyboard needs a proven hook, feature beat, logo reveal or end card. Searches recipes/CATALOG.md or recipes/index.json, scores and picks 1 to 3, shows each with its source link, reads the recipe.md beat sheet, then scaffolds with `npx launchfilm new <slug> --recipe <id>`: ready code when Recipe.tsx exists, else TODO scenes built from the beat sheet with studio presets, keeping the recipe's timings, springs and sounds re-timed to the user's length and beat grid. Use reference-study to make a new recipe, story for the storyboard, scene-build for scenes, launch-film for the whole pipeline.

相关技能