关于 video-to-jam
video-to-jam 可将视频演示按问题拆分为独立的 Jam 录制,并返回包含片段、时间范围和链接的表格。它适合将较长录制整理为便于审阅的单项问题报告。
主要功能
- 01尽可能在本地转录视频
- 02根据转录识别问题分界
- 03为每个问题剪出独立片段
- 04创建并核验 Jam 录制
- 05生成片段与链接清单
适用场景
- 01将长篇 Bug 演示拆分为独立报告
- 02从团队通话录制中制作主题明确的 Jam
- 03检查片段转录是否覆盖对应问题
MCP 相关
该流程主要通过 Jam CLI 创建和检查 Jam。本地无法转录时,可在上传后使用 Jam 转录。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jamdotdev/ skills --skill video-to-jam安装后在 Claude Code 中输入/video-to-jam确认已加载。
附带文件agents/openai.yaml
详细介绍
video-to-jam
输入一个视频,为每个问题输出一个 Jam,并附上片段、时间范围和链接表。一场 40 分钟的通话中,如果有人依次讲解十个错误,就会变成十个简短的 Jam,每个 Jam 只讲一件事。
这些 Jam 只包含视频及其转录文本。视频文件不包含控制台或网络捕获数据;请如实说明,不要让人误以为包含这些数据。
设置 CLI
command -v jam >/dev/null || echo "jam is not installed"
export PATH="$HOME/.local/bin:$PATH"
jam auth status --json || jam auth login
如果 jam 不在 PATH 中,请停止并让用户从
https://jam.dev/docs/cli 安装,然后再继续。不要自行安装。
退出代码 3 表示尚未登录。如果没有浏览器(CI、云端 Agent),请让用户将 https://jam.dev/s/settings/mcp 上的个人访问令牌设置为密钥 JAM_TOKEN。切勿将令牌写入文件。
jam agent-context 会列出所有命令和标志。
同时检查 PATH 中是否有 ffmpeg 和 ffprobe。如果没有,请让用户安装。
1. 检查文件
ffprobe -v error -show_entries format=duration:stream=codec_type,width,height -of json input.mp4
记下时长、分辨率,以及是否有音轨。上传包含团队外人员的通话录音前,请先征求用户同意。
2. 获取转录文本
在本机转录,这样只有片段会离开本机。如果项目有转录工具,请使用该工具;否则使用 Whisper:
ffmpeg -i input.mp4 -vn -ac 1 -ar 16000 audio.wav
uvx [email protected] audio.wav --model small --output_format vtt --output_dir . # writes audio.vtt
uvx 可以运行它,无需长期安装;whisper CLI 使用相同的标志。首次运行时会下载模型。
如果没有本地转录工具,Jam 可以转录视频,但只有在上传整段录音之后才能进行,其中也包括无关内容。请先征求同意,并说明文件将存放在哪个文件夹中。用户同意后,找到或创建该文件夹,并使用第 5 步的命令和载荷上传文件,标题设为 <file name> (full recording),然后读取 jam get transcript "$FULL_ID" --json(transcript 字段中为 WebVTT)。
没有音轨时:使用 ffmpeg 查找场景切换,并询问用户每个问题从哪里开始。
3. 确定剪辑点
浏览转录文本,在说话者转向新问题的位置开始新片段,例如“下一个错误”“还有一件事”“另一个问题”“好,现在”。为每个片段指定开始时间、结束时间、简短标题,以及点明问题的句子。每个片段应从第一句话之前的停顿处开始;在不包含上一句话的前提下,尽可能提前开始,并在问题结束后 1 秒结束。时间提示可能比第一个词晚零点几秒,因此绝不要从时间提示本身开始。
显示剪辑列表,然后继续操作,除非用户要求先审核。
4. 剪辑片段
重新编码,使剪辑精确到秒。相邻片段可以重叠一两秒,这没问题。
ffmpeg -ss 724 -to 870 -i input.mp4 -c:v libx264 -preset veryfast -crf 23 -c:a aac clip-03.mp4
5. 为每个片段创建一个 Jam
将载荷写入文件,避免转录文本进入 shell 参数:
{
"kind": "video",
"url": "",
"title": "Pro price cut off on the pricing page",
"description": "From onboarding-call.mp4, 12:04 to 14:30. Video and transcript only.",
"videoPath": "/abs/path/clip-03.mp4",
"screenDimensions": { "width": 1920, "height": 1080 }
}
jam list folders --query "Onboarding call, Oct 9" --json # reuse it on a rerun
jam create folder "Onboarding call, Oct 9" --json # otherwise; returns its id
jam create jam @clip-03.json --folder "$FOLDER_ID" --json # returns the Jam's id and url
jam create folder 每次都会新建文件夹,即使文件夹名称已存在也一样,因此请先检查,再传入其 ID。创建文件夹可能会将 Viewer 升级为 Creator,从而改变席位计费;如果是 Viewer 账户,请先征求同意。
在载荷中使用绝对路径。根据第 1 步中的宽度和高度设置 screenDimensions。如果知道页面地址,请将其设置为 url。当用户提供的 Playwright trace 覆盖相同时间范围时,添加 "playwrightTracePath",Jam 就会包含该 trace 的控制台、网络和点击数据。请先说明 trace 中的 Cookie、标头和请求正文也会一并进入 Jam。
边上传边维护片段到 Jam 链接的清单。一次只上传一个片段。如果遇到速率限制或上传错误,请停止、等待,然后从第一个没有链接的片段继续,这样重跑就不会创建重复项。
6. 检查
jam get jam "$ID" --json
jam get transcript "$ID" --json
Jam 会在上传后转录每个片段。在此之前,jam get transcript 会以代码 4 退出,并显示 "Captions are not available for this video";每隔 30 到
60 秒重试一次。每份转录文本都应以点明片段问题的句子开头,并以该问题的最后一句话结束。如果开头或结尾位于句子中间,说明剪辑点不正确:重新剪辑该片段并上传,然后将有问题的 Jam 列出来供用户删除。
完成后
返回表格:
| # | Clip | From | Jam |
|---|------|------|-----|
| 3 | Pro price cut off | 12:04 to 14:30 | https://jam.dev/c/... |
如果步骤 2 上传了完整录制内容,请添加一行。只有用户提出要求时,才删除本地片段。
向 Jam 发送反馈
如果此技能、Jam MCP 工具、jam 命令或 Jam 文档有错误、内容过时或令人困惑,或者运行效果异常出色,请告知 Jam。请自行发送:Jam 的 Agent 会阅读反馈,因此无需审批。
调用 submitFeedback MCP 工具,并提供 body、category 和 subject。
MCP 不可用时,请使用 CLI:
jam feedback "<what you were doing, what you expected, what happened, the mistake>" --category <skills|mcp|cli|docs> --subject <skill name, tool name or command>
- 仅反馈 Jam 相关问题,不涉及用户的代码或其他工具。
- 每个会话最多发送一次;不要反馈你已自行纠正的问题。
- 不要包含密钥、客户数据、源代码、堆栈跟踪或录制内容。