1实现原理 · 为什么它能做到
默认取向是「保 UI 优先于去画布」:只有关键 UI 在缩放与滚动全程可见、且证明帧确认最紧裁切仍成立时才裁。
Default to preserving UI over removing background canvas.
先建 moment map(录屏时间戳 / 可见内容 / 对应旁白短语 / 目标全局时间 / 光标是否重要 / 滚动位置是否重要 / 字幕是否重叠 / 裁切是否安全),再决定 trim 与重定时。
Create a moment map before editing:
进入转场规则:从前一场景末帧起、用相机擦或推而非硬切(若用户要求连续)、落在录屏当前首帧;录屏开头死时间只在不断同步时才裁。
- Land on the current first frame of the product recording.
同步判据四条:产品状态必须在台词时刻可见(必要时提前启动转场)、理解重要则让末帧保持、宁可放慢产品时刻之前的片段也不要把滚动加速到不自然、绝不在词中间切。
- Do not cut mid-word in narration to reach a product state.
录屏清理有清单但要克制:光标、浏览器 UI、通知弹窗、死时间、加载白屏、桌面边缘、滚动速度、缩放焦点——只在无损产品清晰度时才处理。
- Notification popups.
裁切决策矩阵分三档:不裁(用户接受画布、缩放跨屏、正文会被切、产品状态比精致更重要)、轻裁(画布干扰但 UI 居中、字幕需空间、浏览器 chrome 或死边距可安全去除)、动态裁切(每个裁切矩形都已映射、运动显得有意、所有关键产品状态都有证明帧)。
Choose dynamic crop only when:
用户批准点前置:裁掉可见画布、去光标、大幅加速、模糊或遮罩产品细节、用重制的假 UI 替换真实录屏——这些必须先问。
Ask before: - Cropping out visible canvas.
2核心能力
3外部依赖
| 类型 | 依赖 |
|---|---|
| cli | 媒体探测与切分(时长/分辨率/帧率/音轨;trim 与重定时)——SKILL.md 只写探测要求,具体命令由同族 ffmpeg/ffprobe 链路承担 |
| cli | ffmpeg(间接:抽帧与接触表的实现工具,见仓库根 scripts/extract_proof_frames.py) |
| package | 素材输入:用户提供的原始屏幕录制(SaaS demo / app 录屏 / 浏览器录制),本地文件,无外部服务 |
| package | 参考文件 skills/product-demo-integration/references/crop-and-zoom.md(裁切安全程序与常见错误清单) |
4风险提醒 风险提醒:蓝色 · 知晓即可
- 探测与抽帧缺少具体命令,只加载本件无法闭环 — SKILL.md 只有探测这些属性与抽证明帧的要求,命令分散在同族 skill 与仓库脚本里;单独使用时需要使用者自行补齐 ffprobe/ffmpeg 调用。
- 录屏内容可能携带隐私与第三方信息 — 录屏画面常含通知弹窗、账号名、客户数据、第三方 UI;SKILL.md 把通知弹窗列为可清理项,但没有隐私审查、脱敏或授权确认的要求——商用前需自行判断。
- 动态裁切的可执行性依赖人工映射 — 规则要求每个裁切矩形都必须映射,但没有工具生成或校验裁切关键帧;实际操作中容易退化为固定裁切而失去缩放跟随,导致后续缩放把 UI 切出画面。
- 「不裁」的代价在成片里才显现 — 默认保 UI 时画布与浏览器框会占掉画面比例,可能让演示段落显得不精致或与 motion-design-systems 的卡片与尺度纪律冲突;文档没有把这一取舍量化。
- 产品真实性相关的编辑无复核机制 — 虽然要求用户批准用重制 UI 替换真实录屏,但没有要求成片标注或留痕;若被替换的 UI 与实际产品行为不一致,观众无从分辨(合规风险落在使用者身上)。
5第二遍独立确认
- [ok] 「无网络无凭证」是否成立 — 目录扫描无 URL、无 fetch、无 token/env/cookie;产品录屏作为本地素材处理,无上传、无生成服务,故不构成橙档。
- [ok] 三处裁切判据是否自相矛盾 — SKILL.md 的 Use crop only when(三个必要条件)、Crop Decision Matrix(三档适用条件)、references 的四步程序(逐帧测试与否决规则)方向一致:默认不裁、裁切需证据、动态裁切最严。未发现冲突。
- [discrepancy] 探测要求是否有可执行命令 — 本 skill 与族内多件一样只写探测要求,未点名 ffprobe 或仓库脚本;实际命令在 audio-sync-assembly(ffprobe 与探测脚本)与 render-qa-and-surgical-changes(scripts/probe_media.py)里。只加载本件时探测动作需自行补齐。
- [ok] 用户批准点是否覆盖 references 建议的所有激进编辑 — SKILL.md 的 Ask before 列表含裁掉可见画布、去光标、大幅加速、模糊或遮罩产品细节、用重制 UI 替换真实录屏;覆盖了 crop-and-zoom.md 建议的动态裁切与「更优替代方案」中涉及真实性的项,未见遗漏的高风险编辑。
- [ok] 转场规则是否与 scene-continuity-and-transitions 一致(避免两件给出不同做法) — 本件要求从前一场景末帧起、用相机擦或推而非硬切、落在当前首帧、边界抽证明帧;scene-continuity-and-transitions 的首帧匹配与边界证明程序方向相同(后者另给 0.05s 前后与转场中间的抽帧程序),互为细化而非冲突。
- [ok] 是否有未声明的素材外发(例如云端转写或云渲染) — 全目录无端点、无服务名;清理与裁切均在本地完成。唯一外生动作是宿主抽帧后的读图(若使用视觉模型),不属本 skill 声明的调用。
6结论
da34d1aa8e5b647e…f6b043d9fd