chengfeng-check-update…
剪辑环境的唯一管理者:就绪检查(skills 是否最新 → Runtime 是否配套)、Skills 更新激活、Runtime…
给剪好的口播配画面:在录屏上盖 HTML 层(圈重点标注 / 小黑整屏动画 / 推近),层绑字幕屏、由播放器逐帧驱动、直接在预览里看。用户说做分镜、配画面、加动画、圈重点、B-roll、做 storyboard 时使用。不要用于删词剪辑、字幕、物理剪切或成片渲染。
$ npx -y skills add Agentchengfeng/chengfeng-videocut-skills --skill chengfeng-visual --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/chengfeng-visualContext preview
The summary Claude sees to decide when to auto-load this skill.
给剪好的口播配画面:在录屏上盖 HTML 层(圈重点标注 / 小黑整屏动画 / 推近),层绑字幕屏、由播放器逐帧驱动、直接在预览里看。用户说做分镜、配画面、加动画、圈重点、B-roll、做 storyboard 时使用。不要用于删词剪辑、字幕、物理剪切或成片渲染。
name: chengfeng-visual description: 给剪好的口播配画面:在录屏上盖 HTML 层(圈重点标注 / 小黑整屏动画 / 推近),层绑字幕屏、由播放器逐帧驱动、直接在预览里看。用户说做分镜、配画面、加动画、圈重点、B-roll、做 storyboard 时使用。不要用于删词剪辑、字幕、物理剪切或成片渲染。 user-invocable: true
**这是一件事,不是流程的一段。** 用户什么时候喊它就什么时候做,改完剪辑可以回来再做。
前提只有两个:**账本和字幕已经存在**(层按字幕屏放、时间从账本算)。
需要 edit-list.json、transcript.json、subtitles.json 产出 visuals.json + modules/<序号-名字>/index.html
干完就停,**不指挥用户下一步**。
先读取并执行 [业务 Skill 的阶段合同](../../references/business-workflow-contract.md)。 模块写法的硬规矩见 [模块契约](references/visual-module-contract.md), 判断规则见 [画面判断](references/visual-judgment.md)。
先执行 [检查更新](../chengfeng-check-updates/SKILL.md) 的「就绪检查」——skills 是否 最新、Runtime 是否配套;**插件根**也在那里定位(本文命令里的 `<插件根>` 都代入 那个字面路径)。只有「就绪」才继续;「需新会话」或「停」按它的处置执行 (含「禁止自制替代界面」禁令),业务 Skill 不自带环境逻辑。
若就绪结果为 `runtime.kind=desktop-managed`,直接复用桌面 App 已安装的稳定 CLI 与 同一 `launchd/windows-task` 服务;不要解析 Electron 路径、另装依赖或起第二个 Runtime。
node "<插件根>/scripts/ensure-running.cjs" --json node "<插件根>/scripts/videocut-cli.cjs" visual get <project> --json node "<插件根>/scripts/videocut-cli.cjs" visual frame <project> --cues sub-0004,sub-0005 --count 12 --out <dir> --json node "<插件根>/scripts/videocut-cli.cjs" visual add <project> --module modules/01-xx/index.html --cues sub-0004,sub-0005 [--zoom x,y,w,h] [--id vis-0001] --json node "<插件根>/scripts/videocut-cli.cjs" visual remove <project> --id vis-0001 --json
`ensure-running` 必须先证明 canonical 5190 属于当前平台的托管服务;失败就透传并 停止,不回退 foreground 或自选端口。
层绑**字幕屏**(`--cues`),产品自己换算成词 id——层永远不可能绑上没人说的词, 剪辑变了层自己跟着挪。**不存秒数。**
① 文字定任务 读 subtitles.json,按语义分段,每段回答:
教程/演示/证明,还是概念/逻辑/过渡?
② 抽帧看画面 visual frame 抽 8-12 帧,真的用眼睛看。
实测 12 段里有 2 段被画面推翻文字预判 —— 这步不是走形式
③ 量运动窗口 相邻帧做像素差,找出滚动/切换/操作的时刻。
层只盖稳定窗口,圈在画面开始动之前退场
④ 做层放层 写模块 → visual add → 在预览里逐层核对画面正是他说的东西 → 标注:圈住、说到哪个词圈哪里。真证据不许盖 画面弱相关/空白 → 小黑动画:整屏白底,从风格库做 画面自身足够清楚 → 不动。这是最常见的正确答案(实测 13 段里 4 段不动)
圈的坐标 像素统计量出来(灰度扫描找文字行),不许目测 —— 目测差过 50px 互动时刻 逐帧像素差找突变(实测一次从 4 跳到 335),圈在它之前 0.2s 退完 稳定窗口 开头常有滚动(他在找内容),层从停稳那屏的 cue 开始绑
默认不推近。 960x720 的录屏放大就糊,用户会立刻看出来 非推不可时 ≤1.6 倍、区域取 62.5% 见方居中 —— 构图完整 > 读清小字 字太小读不清 用圈引导视线就够了;真要读清,答案是高分辨率重录,不是放大
模块目录用**序号命名**(`01-daily-report`、`05-anim-task-split`), 时间线轨道上显示目录名,用户报号你改那一层,别的不动。
两条改层纪律,各对应一次真事故:
改层必查模块 层收窄/延长后,模块里写死的相对时刻不会跟着变 ——
圈的出场时刻可能落到层结束之后,永远不出现
验收看像素 截图看画面,不查 DOM 属性。「可见性翻转正确」的 iframe
曾经物理上不在画面里 —— 属性全对、屏幕全空本地索引没有的,从 simple-icons 取单色官方 glyph(黑白风格正好配), 原 svg 存进模块目录备查;同一条片里同一品牌只能长一个样
chengfeng-videocut 的公开 Codex Plugin 安装入口。软件本体 Runtime / Studio 的源码与发行产物在 chengfeng-videocut。 Plugin 提供给 Agent 的方法和确认工具;Runtime 执行工程操作并提供工作台。安装 Plugin、准备 Runtime、完成视频是三件不同的事。本仓不是已经停用的链接页,也不是新的独立 Skills 全套下载器。
Repo: Agentchengfeng/chengfeng-videocut-skills
剪辑环境的唯一管理者:就绪检查(skills 是否最新 → Runtime 是否配套)、Skills 更新激活、Runtime…
整理、脱敏并上报 chengfeng-videocut 的 GitHub Bug。用户说上报 Bug、反馈剪口播问题、提交 GitHub…
给剪好的口播做字幕:直接用已有的逐词稿加账本算出剪后时间(不必导出、不必重新转录)、用词典和作者文稿改写听错的专名、按句子分屏、在 Studio…