用途
Video Review Canvas 用于将完成的或草稿阶段的视频剪辑发布到一个类似 frame.io 风格的评审画布。评审者可以在画布上播放视频,用逐帧精确的 scrubber 定位画面,点击时间轴固定批注,并查看「节拍图」(beat map) 了解每个片段原本要表达什么。批注保存在 here.now Site Data 中,下一次会话可以读回并逐条处理。
主要能力
- 逐帧定位:方向键步进、帧计数器与时钟并排显示,帧固定记录整数帧、未舍入的 t = frame / fps 以及 FPS。
- 时间轴批注:评审者点击时间轴固定批注,支持回复、标记已解决/重新打开。
- 节拍图:为每个卡片、剪辑或段落命名并说明其目的,帮助评审者把「感觉不对」转化为具体的反馈。
- 编辑者说明:可选的 notes 数组用于说明修改内容与仍需人工决定的事项,渲染为侧栏卡片。
- 版本对比与修订追踪:配置 versions 保留旧版本媒体在同一 URL 下可用,支持版本选择器和同步对比播放。
- 证据附件:批注可附带前后版本 + 帧对及变更描述,打开两个实际渲染视频的对应点。
- 导出与读回:Export review JSON 按钮下载原始 comments/events 和重放的 notes 列表;命令行读取器支持分页响应。
- 本地演示:可设置 storage.mode 为 local 使用浏览器 localStorage,无需发布即可演示。
- 发布前检查:build-canvas.mjs 探测视频实际时长/帧率,按版本戳命名媒体文件,并打印发布命令。
使用方式
- 编写配置:一个 JSON 文件,包含 video、outDir、title、version、eyebrow、blurb、author、accents、facts、beats 等字段;beats 中 t 为时间点、n 为名称、s 为说明、tone 为色调(空、red、green、amber、mute)。可选 notes 与 notesHint。
- 构建:运行 node .claude/skills/video-review-canvas/scripts/build-canvas.mjs <config.json>。
- 发布:使用 here-now skill 的 publish.sh 发布输出目录,可加 --slug 更新同一 URL。
- 冒烟测试:用 curl 检查首页返回 200、视频返回 206(支持流式)、批注接口返回 JSON。
- 读回批注:运行 node .claude/skills/video-review-canvas/scripts/read-notes.mjs <slug> [version],按版本和时间戳排序输出批注及其记录 ID、状态、回复和证据。
- 发布新版本:渲染新文件(不要覆盖已批准的版本),提升 version 并重新构建,更新 blurb 说明改动,用 --slug 发布到同一 URL。
适用场景
- 视频剪辑多轮评审与修订协作。
- 品牌广告交付前需要精确时间点反馈的评审。
- 需要保留历史版本并对比变更的剪辑项目。
- 需要把评审意见以结构化 JSON 导出给代理或存档的流程。
限制与注意事项
- 使用前需 Node.js 20 及以上版本、PATH 中的 ffprobe(或通过 FFPROBE 环境变量指定),以及 ~/.herenow/credentials 中的 here.now 凭据。
- 共享评审 URL 是协作工作区,不是经过认证的签核。
- 精确帧索引需要 CFR 评审编码;VFR 源应先行归一化。
- 内容寻址:同一字节可重新构建,变更媒体需要新的版本 ID 和文件。
- 账户只接受一个 Site Data 集合;默认清单声明 comments + reviewEvents,若账户受限需在发布前用 assets/data-single.json 覆盖。
- 不能删除测试记录,应使用独立版本并通过版本过滤器隐藏。
- 手机上高码率母版可能卡顿,建议发布限码率副本(-crf 22 -maxrate 6M -bufsize 12M, faststart),母版保留用于发布。
- 回复交付时必须首行放置完整画布 URL,否则视为未交付。
- 本地演示数据存于 localStorage,清除站点数据会丢失,需导出 JSON 备份。
- 工具本身的定价、收费模式等事实暂未提供。
文件构成
- scripts/build-canvas.mjs:配置 + 视频 → 可发布画布目录(探测帧率/时长,版本戳命名媒体)。
- scripts/read-notes.mjs:从已发布画布拉取固定批注。
- assets/canvas-template.html:页面本身,可按项目调整三个强调色令牌。
- assets/data.json:here.now comments + 追加式 review events 清单。
- assets/review-model.mjs:共享的帧、事件重放、持久化与导出模型。
- assets/review-app.mjs:版本/对比播放、批注、回复、状态与证据 UI。
- tests/review.test.mjs:本地模型、持久化、构建器兼容性与转义检查。