Communitygithub.com

分析影片

使用本機 ffmpeg 與 whisper.cpp 將本地影片或會議錄影轉換為含時間戳的連環圖與逐字稿,或直接使用 Zoom、Teams 產生的逐字稿。當使用者要求檢視、觀看、轉錄、摘要或分析影片(.mp4、.mov、.webm、.mkv、.m4v、.m4a),包括 Zoom 會議與螢幕錄影,或輸入 /configure 變更技能設定時使用。錄影資料不會離開本機。

分析影片 是什麼?

此技能讓 AI 代理程式(如 Claude Code 或 Cursor)在本地端處理影片檔案,而不需將影片或音訊上傳至雲端。它使用 ffmpeg 與本地 whisper.cpp 模型產生含時間戳的連環圖(contact sheets)與逐字稿。如果 Zoom 或 Teams 錄影檔案旁有以 .vtt 格式儲存的逐字稿,則會優先使用該逐字稿以保留發言者名稱。技能輸出結果會存放在專案根目錄的 `_video/` 資料夾中,避免污染共享資料夾,並包含一個 `index.md`、完整的 `transcript.md`、連環圖與個別影格。使用者可以透過 `/configure` 命令或命令列旗標(如 `--interval`、`--model`、`--max-frames`)來設定幀間隔、Whisper 模型與場景偵測等參數。第二個對同一檔案與相同設定的執行會顯示「already processed」並跳過處理。此技能在 macOS、Linux 與 Windows 上皆可使用,且需由代理程式以絕對路徑執行對應平台的腳本。

相容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/richardjahnke-eng/ai-video-skill/tree/main

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

分析影片 是做什麼的?

在本機上處理檔案。請勿上傳影片或其音訊,也不要將它們傳送至雲端轉錄服務。

執行

從開放專案的根目錄執行命令。輸出會放置於該目錄下的 _video/ 資料夾中,此舉可將輸出保留在代理程式的沙盒內,並避免進入共享資料夾。使用此技能的進入點腳本之絕對路徑來執行。

macOS 與 Linux:

/absolute/path/to/analyze-video/scripts/analyze_video "/absolute/path/to/video.mp4"

Windows:

powershell -NoProfile -ExecutionPolicy Bypass -File \absolute\path\to\analyze-video\scripts\analyze_video.ps1 "C:\path\to\video.mp4"

從目錄清單中取得影片路徑,並按原樣傳遞。錄影檔案名稱可能包含看似普通空格但實際上不是的字元。

Zoom 的本地錄影位於 ~/Documents/Zoom/<日期時間會議名稱>/,通常為 zoom_0.mp4,以及僅音訊的 audio_only.m4a。除非使用者要求音訊檔案,否則請使用 .mp4。僅音訊檔案只會產生逐字稿,不會產生連環圖。

命令會輸出 index.md 的路徑。該資料夾包含:

  • index.md:時長、影格間隔與連環圖清單
  • transcript.md:含時間戳的逐字稿,若無音訊則標註
  • sheets/sheet_NNN.jpg:連環圖
  • frames/f_NNNN.jpg:個別影格,已印上時間戳
  • manifest.json:來源指紋與使用的設定

如果錄影檔案旁有 .vtt 逐字稿(Zoom 雲端錄影下載後為 …_Recording.transcript.vtt,Teams 為 <名稱>.vtt),則會優先使用該逐字稿而非 Whisper,並保留發言者名稱。傳遞 --whisper 可強制在本地轉錄,或傳遞 --transcript /path/to/file.vtt 指向其他名稱的逐字稿。

針對同一檔案與相同設定再次執行時,會顯示「already processed」且不會重複處理。若指定不同的間隔、模型、語言、場景設定、提示、影格上限、跳過影格選項或逐字稿檔案,則會重新處理。

如果命令失敗,請停止執行並轉換其輸出。請勿自行抽樣影格作為替代方案。如果輸出訊息指出需要設定,或 Whisper 模型下載被封鎖,請提供使用者它印出的設定命令。使用者需要在終端機中執行一次該命令。只有當使用者要求並同意在沙盒外執行時,才由您自行執行。

讀取結果

  1. 讀取 index.md。
  2. 完整讀取 transcript.md。
  3. 讀取每張連環圖影像。
  4. 僅在儲存格無法讀取時,才開啟 frames/ 下的單一檔案。

如果 index.md 表示影格已被跳過,則讀取 transcript.md 並停止。沒有連環圖。

設定

當使用者輸入 /configure,或要求設定或變更此技能的設定時,請開啟設定頁面。在自行編輯任何設定檔之前,請先執行此操作。

  1. 使用此技能的 scripts/configure 腳本的絕對路徑來執行。在 Windows 上,使用該技能的 Python 執行 python scripts/configure.py。
  2. 它會輸出一行文字:configure: http://127.0.0.1:<連接埠>/。在 Cursor 瀏覽器中開啟該 URL,讓使用者可以看到頁面。
  3. 讓伺服器保持執行。該頁面會在技能資料夾中寫入 config.local.json。下一個影片會使用這些設定。

當使用者需要不同設定時

旗標會覆蓋該次執行的 config.json。預設情況下,每 30 秒與每次場景變化(新投影片或視窗)時會擷取一個影格,長時間錄影的上限為 96 個影格(8 張連環圖)。若要取得短錄影的更多細節:

/absolute/path/to/analyze-video/scripts/analyze_video "/absolute/path/to/video.mp4" --interval 5 --max-frames 0

在 Windows 上,將相同的旗標傳遞給 scripts/analyze_video.ps1。

僅當任務中已包含這些名稱時,才傳遞 --prompt "此影片已知的術語"。請勿自行發想提示詞。--max-frames 0 可移除上限。僅當使用者要求逐字稿或摘要,且未要求觀看或檢視畫面時,才傳遞 --skip-frames。

其他旗標:--language en、--model medium、--no-scene、--scene-threshold 0.2、--min-scene-gap 1、--sheet-cols、--sheet-rows、--frame-width、--keep-audio、--output-root beside(放在影片旁)、--config /path/to/config.json。

預設值與完整金鑰清單位於此技能資料夾中的 config.json 與 README.md。僅英文的模型(medium.en 及其他 *.en 名稱)無法使用 "language": "auto"。

相關技能