Communitygithub.com

kaustubhupadhyaya/clip-picker

從冗長、非結構化的影片中取出精彩短片段。當使用者提供一或多段長影片,並希望找出/剪出精華片段時使用。

clip-picker 是什麼?

Clip Picker 技能專為繞過 Claude 無法直接觀看影片的限制而設計,透過將影片取樣為時間戳記圖像(contact sheet),讓 Claude 能「閱讀」並判斷內容。此技能首先根據使用者提供的素材(預設為 POV 摩托車/自行車騎乘)確認評分標準(rubric),然後使用 `survey.py` 將影片每隔數秒取樣為一張縮圖,組合成易於閱讀的圖板。接著,Claude 會視覺化檢視這些圖板,標記出候選片段,並生成一份 `candidates.json`。最後透過 `score.py` 和 `board.py` 進行全解析度銳利度確認與互動式選擇,最終輸出剪輯完成的影片。支援 ffmpeg、numpy 和 pillow 相依套件,並能自動處理 HDR/HLG 色調映射。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kaustubhupadhyaya/editor-pack/tree/HEAD/skills/clip-picker

在你喜歡的 AI 中提問

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

說明文件

Clip Picker

從長影片中找出值得保留的片段。整個方法的設計是為了解決一個硬性限制:

Claude 無法觀看影片。 它只能讀取靜態圖片。因此「挑選精彩片段」實際上就是:將影片取樣成足夠密集的圖像以了解內容,根據評分標準進行判斷,在全解析度下確認,然後進行剪輯。修剪本身是簡單且近乎即時的;真正耗費成本的是「看到」30 分鐘以上的影片內容 — 請為此做好預算,且無需感到抱歉。

腳本位於 scripts/ 目錄(survey.py、score.py、board.py)。它們負責機械性部分;Claude 在中間進行視覺判斷。相依套件:系統 PATH 中需有 ffmpeg/ffprobe、numpy、pillow(本機已安裝 — 請參閱 [[editor-pack-video-editing-stack]])。

處理流程

在暫存區中選擇一個 WORKDIR(例如 .../scratchpad/clippick)。然後:

1. 確認評分標準。 如果影片內容不是 POV 摩托車/自行車騎乘(以下內建的預設標準),請向使用者提問 1-2 個問題:對他們而言什麼樣的片段是好的、想要的片段長度、輸出畫面比例(16:9 或 9:16),以及篩選的嚴格程度(只要幾個精華還是盡可能多)。一句好的準則就能改變每一次的挑選 — 請在進行取樣之前先取得這些資訊。

2. 取樣 — 將影片轉換為可讀的圖板。

python scripts/survey.py "C:\path\to\videos_or_dir" --out WORKDIR --interval 4

每隔 4 秒產生一張縮圖,以 6x6 方式排列,並在每張縮圖上燒錄原始時間碼。對於快速/事件密集的影片,請使用 --interval 2-3;對於節奏緩慢的影片,則使用 --interval 6-8。它會印出每個片段的基本資訊,並標記 HDR(HLG/PQ)來源。對於多個或較長的 HEVC 片段,此過程會較慢(軟體解碼是瓶頸)— 請在背景執行,並在圖板產生後進行檢視。

3. 視覺化檢查每張圖板。 讀取 每個 WORKDIR/montages/*_sheet_*.jpg。根據評分標準,透過時間碼標記候選視窗。如果兩次取樣之間發生了轉瞬即逝的事件,可能會被遺漏 — 如果某張圖板暗示了某些內容(角落的閃光、一個人影),請記下並在之後對該時段進行更密集的取樣。

4. 建立 WORKDIR/candidates.json — 每個候選視窗一個物件(結構如下)。將每個視窗保持在 15-30 秒(或使用者指定的長度)。為每個視窗指定一個 pick 代碼(P01、P02、... 按您的排名順序)、一行 title(說明其入選原因)以及 tags。

5. 以全解析度 + 銳利度進行確認。

python scripts/score.py --work WORKDIR

為每個候選片段提取一張全解析度的關鍵畫面,計算拉普拉斯變異數(一種對焦度量),並將其排列成一張 review.jpg 圖板。讀取 它。移除任何確實模糊/無趣的片段;微調 start/end 以捕捉最佳節拍。低銳利度 = 整個畫面的運動殘影 — 對於流暢畫面來說是理想的,並非要拒絕的項目。 編輯後重新執行。

6. 呈現一個已排序的挑選圖板(由使用者選擇)。

python scripts/board.py --work WORKDIR --mode thumbs     # -> WORKDIR/pickboard.html(可作為 Artifact 發布)

或者,當他們想要先觀看再選擇時,使用一個可播放的圖板,該圖板也會同時剪輯片段:

python scripts/board.py --work WORKDIR --mode play --out "%USERPROFILE%\Downloads\clips"

play 模式會將每個候選片段剪輯成瀏覽器友善的 H.264 格式(自動對 HLG/PQ 進行 HDR->SDR 色調映射),並在 mp4 檔案旁寫入 review_player.html,其中包含原生的 <video> 播放器(請在 Chrome/Edge 中開啟以進行本機播放)。預設輸出為 16:9,僅修剪,不裁切。

7. 剪輯 / 完成使用者選擇的精彩片段。 對於像素級精確度或格式選擇,請透過 [[editor-pack-video-editing-stack]] 的 video-tool-router 技能進行處理(串流複製與重新編碼的選擇、HLG 防護、使用 Resolve 進行調色/穩定/升頻)。提供後續選項:對流暢片段進行動態模糊增強、9:16 垂直畫面、調色、字幕、蒙太奇。

選擇標準(這才是真正的「如何挑選」)

一個片段值得保留,當它通過品質門檻且至少攜帶一個「特殊」訊號。

品質門檻(必須全部滿足)

  • 來源的子集,長度 15-30 秒(預設值;請尊重使用者指定的長度)。
  • 主體清晰且穩定 — 主要主體(機車/把手、臉部、玩家)清晰且構圖穩定。拒絕因顛簸/晃動造成的整體模糊、失焦、過曝或過暗、鏡頭被遮擋。
  • 有事情正在發生 — 有動作或變化。拒絕靜止/停放/等待和單調的無變化內容。

「特殊」訊號(需要 >=1 個;越多且越強 = 排名越高)

  • 速度 / 動態 — 周圍環境因動態模糊而產生殘影,同時主體保持清晰。這是正向訊號,也是進行動態模糊增強編輯的絕佳素材。
  • 互動 — 與其他人/騎士/車輛/動物的互動;超車、車隊騎行、某人的反應。
  • 動作 / 動態 — 過彎與傾斜、轉彎、海拔變化、特技、驚險時刻。
  • 光線與環境 — 日出/日落、黃金時刻、戲劇性的雲彩、霧/薄霧、隧道、遠景或豁然開朗的景色、水景。一天中不同時段的光線是最大的「電影感」槓桿 — 務必標記它。
  • 新穎性 — 場景/地形變化、出入口、任何在視覺上與周圍幾分鐘不同的東西。

調和「清晰、不模糊」與「動態模糊是好的」

保持主體清晰且瞬間是有意圖的;將周邊的速度模糊視為一種特色。僅拒絕整體模糊(因顛簸導致整個畫面模糊)。胸部或車把安裝的攝影機可以讓機車保持清晰,同時讓世界產生殘影 — 這是我們想要的效果,不是缺陷。

排名

根據以下因素排序:特殊訊號的強度與稀有性,然後是清晰度,最後是多樣性(不要將五個幾乎相同的視窗排在頂部位置 — 分散風格:一個遠景、一個動態模糊流、一個超車、一個有氛圍的片段)。當某個標準確實不存在時(例如,任何地方都沒有日出/日落),請誠實地說出來,而不是勉強選出一個弱項。

POV 騎乘設定檔(此使用者影片的內建預設值)

摩托車/自行車的安全帽或車把攝影機。具體來說:保留速度模糊掃掠、過彎/傾斜、超車與車隊騎行、路邊景色、霧/薄霧和山區遠景、隧道/林蔭大道。跳過:停車、信號燈、停放車輛、滑手機、長直線的無變化路段。(這正是使用者喜歡的片段集所依據的評分標準。)

candidates.json 結構

[
  {"pick":"P01","clip":"clip_6318","file":"%USERPROFILE%/Downloads/clip_6318.mov",
   "start":96,"end":120,"hero":104,"title":"高大的樹木隧道,前方有騎士,強烈的速度模糊",
   "tags":["speed-blur","scenery"]}
]
  • start/end/hero 的單位是秒。hero 是視窗內一個具代表性的瞬間(用於縮圖和銳利度評分)— 請選擇最具特色的節拍,不一定是中點。
  • pick 代碼同時作為使用者的選擇代號(例如「剪輯 P01, P03, P10」)。
  • tags(可自由填寫,但這些會獲得漂亮的標籤):speed-blur, corner, vista, interaction, overtake, atmosphere, scenery, action, light, wildlife。

效率與注意事項

  • HEVC/HDR 解碼是瓶頸,而非剪輯本身。對約 30 分鐘的 HEVC 影片進行取樣需要數分鐘的解碼時間。僅根據影片內容的需要進行取樣;讓取樣和播放模式的編碼在背景執行。
  • HLG/HDR 影片在簡單的 SDR H.264 匯出時會變灰 — board.py play 會自動檢測並進行色調映射,但任何對此類影片的手動剪輯也必須這樣做。請參閱 video-tool-router 中的 HLG 防護機制。
  • 根據要求加快速度: 如果使用者一開始就說明了想要的風格(例如「只要山路彎道和隧道模糊」),請使用較粗的取樣間隔,只列出那些候選片段,並僅對他們想要的少數片段進行編碼 — 這可以將 20 分鐘的處理時間縮短到幾分鐘。
  • 不要捏造內容。 只能聲稱取樣畫面實際顯示的內容。如果不確定某個 1-2 秒的事件是否存在,請在斷言之前對該時段進行更密集的取樣。
  • Windows 字型路徑已在腳本中硬編碼(C:/Windows/Fonts/...);在其他作業系統上請進行調整。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相關技能