mcpField
V
video-to-jam

video-to-jam

github.com/jamdotdev测试与质量1165 次安装1 周前更新
代码仓库

关于 video-to-jam

video-to-jam 可将视频演示按问题拆分为独立的 Jam 录制,并返回包含片段、时间范围和链接的表格。它适合将较长录制整理为便于审阅的单项问题报告。

主要功能

  1. 01尽可能在本地转录视频
  2. 02根据转录识别问题分界
  3. 03为每个问题剪出独立片段
  4. 04创建并核验 Jam 录制
  5. 05生成片段与链接清单

适用场景

  1. 01将长篇 Bug 演示拆分为独立报告
  2. 02从团队通话录制中制作主题明确的 Jam
  3. 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 相关问题,不涉及用户的代码或其他工具。
  • 每个会话最多发送一次;不要反馈你已自行纠正的问题。
  • 不要包含密钥、客户数据、源代码、堆栈跟踪或录制内容。

评论

支持 Markdown