mcpField
W
watch-video

watch-video

github.com/tomgranot创意与媒体755 次安装15 周前更新
代码仓库

关于 watch-video

watch-video 是用于生成带时间戳视频分析的 Skill,区分画面观察、口述内容和推断,并通过抽帧与证据检查分析本地视频或可访问的公开视频。

主要功能

  1. 01生成带时间戳的发现
  2. 02区分画面与语音证据
  3. 03粗略及密集抽帧
  4. 04处理字幕与文字稿
  5. 05验证结构化报告

适用场景

  1. 01核实画面是否支持口述主张
  2. 02按时间戳审查视频演示
  3. 03对照字幕与可见事件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tomgranot/watch-video --skill watch-video

安装后在 Claude Code 中输入/watch-video确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
requirements-url.txt
requirements.txt
THIRD_PARTY_NOTICES.md
agents/
openai.yaml
references/
analysis-protocol.md
scripts/
acquire.py
normalize_transcript.py
package_skill.py
run.py
sample_frames.py
setup_runtime.py
smoke_test.py
validate_report.py
tests/
test_regressions.py

详细介绍

观看视频

按时间戳记录视频展示、讲述和支持的内容。将观察到的情况、口头陈述和推断分开。

要求

本地文件需要 ffmpeg、ffprobe、Python 3.10+ 和 Pillow。公共 URL 还需要 yt-dlp。将 SKILL_DIR 解析为此文件所在的目录。通过 $SKILL_DIR/scripts/run.py 运行命令,以便在 .venv 存在时使用其中的环境。如果缺少运行时环境且允许安装本地依赖,请运行 python3 "$SKILL_DIR/scripts/setup_runtime.py"。切勿登录、加载浏览器 Cookie、绕过 DRM 或付费墙,或规避访问控制。

工作流

  1. 创建专用分析目录。切勿修改源视频。

  2. 获取源文件和平台字幕:

    python3 "$SKILL_DIR/scripts/run.py" acquire <video-path-or-url> \
      --output-dir <analysis-dir> [--language en]
    

    优先使用本地文件。只有当 yt-dlp 无需登录、Cookie、付费墙、DRM 或浏览器自动化即可直接检查并下载时,才接受公共 URL。如果无法直接获取,请索要经授权的本地副本。对于 URL,优先使用平台手动字幕,其次使用自动字幕。如果两者都没有,记录 transcript unavailable 并继续进行视觉分析;不要生成转录文本。对于本地文件,检测同名的 .vtt、.srt、.json 或 .json3 旁置文件。

  3. 如存在 <analysis-dir>/source.json 和 <analysis-dir>/transcript.md,请读取。将字幕视为语音证据,而非视觉证据。

  4. 构建粗略的视觉索引:

    python3 "$SKILL_DIR/scripts/run.py" sample-frames <video-path-from-source.json> \
      --output-dir <analysis-dir>/visual-overview --mode overview --scene-threshold 0.32
    
  5. 打开 visual-overview/index.md 中列出的每张联系表。记录可见事件、演示、幻灯片变更、屏幕文字,以及与转录文本显著不符之处。

  6. 在重要或含糊的时间戳附近进行有针对性的高密度分析:

    python3 "$SKILL_DIR/scripts/run.py" sample-frames <video> \
      --output-dir <analysis-dir>/window-<start> \
      --mode dense --start <seconds> --end <seconds> --fps 4
    

    仅在较短的取证窗口中使用 --mode every-frame。它会按照报告的源帧率使用 FFmpeg 采样,因此可变帧率素材可能会出现重复或遗漏的采样。脚本默认会限制输出数量。只有当用户需要尽可能密集的检查时,才提高上限。

  7. 综合带时间戳的发现。对于每项实质性陈述,标注其依据:

    • observed:在采样帧中可见
    • spoken:出现在字幕或提供的转录文本中
    • inferred:根据观察到的或口头证据推理得出
  8. 将支持状态标记为 supported、conflicted 或 not_found。置信度较低时,说明缺少哪些证据。

  9. 对于详细分析,请按照 references/analysis-protocol.md 中的架构保存 report.json,然后进行验证:

    python3 "$SKILL_DIR/scripts/run.py" validate-report <analysis-dir>/report.json \
      --manifest <analysis-dir>/visual-overview/manifest.json
    

    对报告中引用的每个高密度窗口,重复使用 --manifest <path>。

分析规则

  • 先进行粗略分析,再以更高的时间密度检查重要窗口。
  • 切勿将转录文本中的陈述描述为视频在视觉上证明的内容。
  • 少量引用字幕;默认使用转述。
  • 为章节、发现、差异和用户指定的时刻附上时间戳。
  • 当幻灯片、代码、图表或较小的界面文字很重要时,请以更高分辨率检查帧。
  • 说明字幕是自动生成、缺失、不完整还是不同步。
  • 如果问题涉及许多分散的事实,请分多个有针对性的步骤作答,而不是进行一次宽泛扫描。
  • 没有证据时,不要推断身份、意图、因果关系或画外事件。

请阅读 references/analysis-protocol.md,了解采样模式、证据架构、长视频处理方式和失败情形。

评论

支持 Markdown