watch

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

/watch (Watch Skill)

/watch(Watch Skill)

You don't have a video input; this skill gives you one. It is a thin wrapper around the
watch-skill
CLI — all logic lives in the engine, so this skill works identically on every harness (Claude Code, Codex, Cursor, ...).
This is a drop-in upgrade of the classic claude-video
/watch
skill: same invocation shape, plus a persistent index (
ask
answers follow-ups without re-processing), OCR on frames, scene-aware sampling with perceptual dedup, local Whisper (offline by default, no API key needed), and THE LOOP (capture -> critique -> fix -> re-capture) for iterating on your own output.
你无需提供视频输入;该Skill会为你处理视频输入。它是
watch-skill
CLI的轻量封装——所有逻辑都在引擎中,因此该Skill在所有运行环境(Claude Code、Codex、Cursor等)中的表现完全一致。
这是经典claude-video
/watch
Skill的无缝升级版:调用方式保持不变,新增了持久化索引(
ask
命令可直接回答后续问题,无需重新处理视频)、帧OCR识别、带感知去重的场景感知采样、本地Whisper(默认离线运行,无需API密钥),以及用于迭代优化输出的THE LOOP流程(捕获→评审→修复→重新捕获)。

Step 0 — Preflight (first invocation per session)

步骤0 — 预检(每个会话首次调用)

bash
watch-skill doctor --json
  • Exit 0 → proceed silently. Do NOT announce that setup is fine.
  • Non-zero → the JSON lists each failing check with a
    fix
    .
    doctor
    auto-bootstraps ffmpeg and yt-dlp into a managed bin dir on Windows/macOS/ Linux; re-run once after it reports fixes. Only involve the user when a check still fails after remediation.
  • If
    watch-skill
    itself is not on PATH:
    pip install watch-skill
    (or
    uv tool install watch-skill
    ), then re-run the doctor.
No API key is required for acquisition, transcription, OCR, indexing, or search: transcription falls back to local faster-whisper. Visual synthesis and verification can use the user's existing Anthropic, OpenAI, Gemini, or OpenRouter key, or an optional local Ollama model. The agent and provider are independent; see the
configuring-vision
skill. Cloud STT is opt-in (
--cloud-stt
) and only ever uploads extracted mono audio — the video file never leaves the machine.
bash
watch-skill doctor --json
  • 退出码0 → 静默继续。无需告知用户配置正常。
  • 非零退出码 → JSON结果会列出每个检查失败项及对应的
    fix
    方案。
    doctor
    命令会自动在Windows/macOS/Linux系统的管理bin目录中安装ffmpeg和yt-dlp;在它报告修复方案后重新运行一次。仅当修复后检查仍失败时,才需要用户介入。
  • 如果
    watch-skill
    未在PATH中:执行
    pip install watch-skill
    (或
    uv tool install watch-skill
    )安装,然后重新运行doctor命令。
视频获取、转录、OCR识别、索引或搜索均无需API密钥:转录会 fallback 到本地的faster-whisper。视觉合成与验证可使用用户现有的Anthropic、OpenAI、Gemini或OpenRouter密钥,也可选用本地Ollama模型。Agent与服务提供商相互独立;详情请查看
configuring-vision
Skill。云STT为可选功能(需添加
--cloud-stt
参数),且仅会上传提取的单声道音频——视频文件永远不会离开本地设备。

Step 1 — Watch

步骤1 — 处理视频

Parse the user input into source + optional question, then:
bash
watch-skill watch "<source>" [--start T --end T] [--max-frames N] [--transcript-only]
  • Any yt-dlp-supported site (1800+), direct media URLs, HLS/DASH manifests (
    --duration 60
    bounds live streams), and local files all work.
  • --start
    /
    --end
    (
    SS
    ,
    MM:SS
    ,
    HH:MM:SS
    ) switch to dense focused sampling of that window — use for "what happens at 2:30?" questions and for any video over ~10 minutes when the user cares about one section.
  • --timestamps T1,T2,...
    pins frames at transcript-flagged moments ("look here", "as you can see") that visual selection may miss.
  • --transcript-only
    skips frames entirely (fastest; no video download when captions exist).
  • --max-frames N
    tightens the token budget (default: duration-tiered, hard cap 100, max 2 fps).
The report prints an
Indexed: video_id ...
line, frames with
t=MM:SS
timestamps, OCR text, and the transcript.
将用户输入解析为视频源 + 可选问题,然后执行:
bash
watch-skill watch "<source>" [--start T --end T] [--max-frames N] [--transcript-only]
  • 支持所有yt-dlp兼容的网站(超过1800个)、直接媒体URL、HLS/DASH清单文件(
    --duration 60
    参数可限制直播流时长),以及本地文件。
  • --start
    /
    --end
    参数(格式为
    SS
    MM:SS
    HH:MM:SS
    )会切换为对指定时间段进行密集聚焦采样——适用于“2:30时发生了什么?”这类问题,以及用户仅关注某一章节的超10分钟长视频。
  • --timestamps T1,T2,...
    参数会在转录标记的时刻(如“看这里”、“如你所见”)固定提取帧,避免视觉选择遗漏这些关键节点。
  • --transcript-only
    参数会完全跳过帧提取(速度最快;若视频有字幕则无需下载视频文件)。
  • --max-frames N
    参数可收紧token预算(默认:按视频时长分级,硬上限为100帧,最大帧率2fps)。
报告中会打印
Indexed: video_id ...
行、带
t=MM:SS
时间戳的帧、OCR文本以及转录内容。

Step 2 — Read the frames

步骤2 — 读取帧

Read every frame path the report lists, in a single message (parallel Read calls), so you see them together in chronological order.
在一条消息中读取报告列出的所有帧路径(并行Read调用),以便按时间顺序查看所有帧。

Step 3 — Answer

步骤3 — 回答问题

Answer from frames + OCR + transcript, citing timestamps. No question → summarize structure, key moments, notable visuals, spoken content.
结合帧、OCR文本和转录内容回答问题,并标注时间戳。若无问题,则总结视频结构、关键节点、显著视觉元素和语音内容。

Follow-ups — use the index, not re-processing

后续问题 — 使用索引,无需重新处理

The video is already indexed. For any follow-up question in this or a LATER session:
bash
watch-skill ask <video_id> "<question>"      # self-healing answer + evidence
watch-skill search "<phrase>"                 # across every video ever watched
ask
(v0.6) answers text-first with timestamped evidence, a confidence score, and a
~N tokens saved
line. It escalates on its own when unsure (dense re-sampling, zoom-crop re-OCR) and states plainly when the video does not clearly show the answer — trust that refusal; do NOT invent an answer past it. Frame paths are listed only when the engine wants you to look yourself (or pass
--frames
); Read them then. Never re-run
watch
for a follow-up on an already-indexed video.
If the user corrects one of your video answers, report it so the system learns (locally):
bash
watch-skill lessons add <video_id> "<question>" "<your wrong answer>" "<the correction>"
视频已建立索引。针对本次或后续会话中的任何后续问题:
bash
watch-skill ask <video_id> "<question>"      # 自修复回答 + 证据
watch-skill search "<phrase>"                 # 检索所有已处理过的视频
ask
命令(v0.6版本)优先以文本形式回答,附带带时间戳的证据、置信度评分,以及
~N tokens saved
行。当不确定答案时,它会自动升级处理(密集重新采样、放大裁剪后重新OCR);若视频未清晰展示答案,会直接说明——请信任该拒绝结果,切勿编造答案。仅当引擎希望你自行查看时(或添加
--frames
参数)才会列出帧路径;此时再读取这些帧。对于已建立索引的视频,后续问题绝不要重新运行
watch
命令。
如果用户纠正了你对视频的回答,请报告该信息以便系统本地学习:
bash
watch-skill lessons add <video_id> "<question>" "<your wrong answer>" "<the correction>"

THE LOOP — iterate on your own output

THE LOOP — 迭代优化自身输出

When the user asks you to fix UI/visual output and verify the fix:
bash
watch-skill loop start "<url-or-screen:-or-file>" "<pass criteria>" [--script '<json steps>']
当用户要求你修复UI/视觉输出并验证修复效果时:
bash
watch-skill loop start "<url-or-screen:-or-file>" "<pass criteria>" [--script '<json steps>']

... you apply the suggested fixes ...

... 你应用建议的修复方案 ...

watch-skill loop iterate <loop_id>

The critique returns structured issues with timestamps and suggested fixes.
YOU change the code; the loop only observes. On pass it renders a
before/after MP4+GIF proof. `watch-skill capture "<target>"` records without
critiquing.
watch-skill loop iterate <loop_id>

评审结果会返回带时间戳的结构化问题及建议修复方案。由你修改代码;loop仅负责观察。验证通过后,会生成前后对比的MP4+GIF证明文件。`watch-skill capture "<target>"`命令仅录制内容,不进行评审。

Security posture

安全态势

  • The video file itself NEVER leaves the machine. Only extracted mono-16kHz audio may go to a cloud STT API, and only with explicit
    --cloud-stt
    .
  • No cookies, no logins — only public data is requested.
  • API keys live in env vars /
    .env
    ; they are never logged or echoed.
  • Downloads are cached under
    ~/.watch-skill/cache
    (LRU, size-capped).
  • 视频文件本身永远不会离开本地设备。仅当明确添加
    --cloud-stt
    参数时,提取的16kHz单声道音频才可能上传至云STT API。
  • 无需cookie或登录——仅请求公开数据。
  • API密钥存储在环境变量或
    .env
    文件中;永远不会被记录或回显。
  • 下载内容会缓存到
    ~/.watch-skill/cache
    目录(采用LRU算法,有大小限制)。