Communitygithub.com

Clipper

將長影片轉換為帶有逐字字幕的短垂直短片,準備好發布。

Clipper 是什麼?

Clipper 是一款 AI 代理技能,旨在自動從長影片(如 Podcast、YouTube 影片、演講錄影或直播)中提取最精彩的時刻,並將其轉換為帶有逐字字幕的短垂直短片,適用於 Reels、Shorts 或 TikTok 等平台。它完全在本機運行,無需 API 金鑰,所有處理都在用戶的電腦上完成,確保資料不外洩。技能流程包括:使用 Whisper 模型進行語音轉錄(首次使用會下載約 500 MB 的模型)、由 AI(Claude)根據鉤子、獨立性、回報和能量等標準手動挑選 3 到 5 個最強烈片段、然後自動剪輯並加上字幕。支援自訂設定,如片段數量、長度、字幕顏色等。最終產出為 1080x1920 解析度的垂直影片,並確保說話者的臉部在畫面中,聲音標準化至 -14 LUFS。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/corbinsylk/clipper-skill/tree/HEAD/skills/clipper

在你喜歡的 AI 中提問

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

說明文件

Clipper 是做什麼的?

放入一段影片,Claude 會找出最精彩的時刻,然後將它們轉換成帶有字幕的短片,準備好發布。

所有處理都在這台電腦上執行。沒有任何資料被上傳。此技能位於 ~/.claude/skills/clipper/;其工具是 scripts/transcribe.py 和 scripts/make_clips.py,使用技能自身的 Python 環境執行:~/.claude/skills/clipper/.venv/bin/python。

0. 檢查安裝 (每次執行)

test -x ~/.claude/skills/clipper/.venv/bin/python && command -v ffmpeg

如果任一缺失,用一行訊息告訴使用者,然後從他們 clone 的儲存庫中執行安裝程式 (bash install.sh 在 clipper-skill 資料夾內)。如果你找不到該資料夾,再次 clone 它: git clone https://github.com/corbinsylk/clipper-skill && cd clipper-skill && bash install.sh。

1. 取得影片

使用者拖曳檔案或提供路徑。如果兩者都沒有提供,用一行訊息詢問。兩個腳本都使用 <影片名稱>-clips/ 作為工作資料夾(位於影片旁),除非你傳遞其他路徑。使用者可能會提供的設定(否則使用預設值,永遠不要詢問):

設定預設值
片段數量3 到 5 個,取實際真正強的片段數量
片段長度20 到 60 秒 (目標為 30 到 45 秒)
字幕顏色米白色 #F5F1EA,正在說的字為陶土色 #B03926
字幕開啟

2. 轉錄

~/.claude/skills/clipper/.venv/bin/python ~/.claude/skills/clipper/scripts/transcribe.py "<video>"

它會先印出工作資料夾。第一次執行會下載語音模型一次(small 模型約 500 MB);一個 2 分鐘的影片 大約需要一分鐘,一個小時的則需要幾分鐘。對於超過約 10 分鐘的影片,請將命令作為後台命令執行(在 Claude Code 中:使用 Bash 工具的 run_in_background),並告訴使用者它正在處理。對於口音很重或音質不佳的影片,請加上 --model medium。首次執行時出現關於 HF token 的警告或速度提示是無害的。

3. 挑選時刻 (這是你的工作,不是腳本的工作)

完整閱讀 <工作資料夾>/transcript.md。挑選 3 到 5 個最強烈的時刻。一個強烈的時刻:

  • 開場第一句就有一個鉤子。 一個大膽的主張、一個驚人的數字、一個問題、一個錯誤、一個故事的開始。 絕對不要以「所以」、「然後」、「嗯」、「像我說的」或需要前後文才能理解的句子開頭。
  • 能獨立存在。 從未看過完整影片的人也能理解。沒有「這個」、「那個東西」或「如我之前提到的」指向片段之外的內容。
  • 有回報。 它結束在答案、笑點、結果或教訓上:一個完整的想法,絕對不要停在句子中間。
  • 有能量。 觀點、具體細節、數字、情感、轉折。跳過問候、贊助段落、行政事項和緩慢的鋪陳。
  • 不與其他選取重複。 每個片段都提出不同的觀點,且片段之間在時間上絕不重疊。短的影片 提供較少的片段:少於約 5 分鐘的影片,1 到 3 個片段是正常的;永遠不要為了湊數量而延長或重疊。

每個片段評分 1 到 10(綜合鉤子、獨立性、回報、能量)。只保留得分 7 分以上的;如果少於 3 個, 保留最好的 3 個並說明它們較弱。然後寫入 <工作資料夾>/moments.json:

[
  {"title": "檔案的簡短標題", "start": 63.2, "end": 101.8, "score": 9,
   "hook": "片段的開場第一句,逐字逐句",
   "why": "一行:為什麼這個時刻有效",
   "caption": "準備好的發布文案:一行鉤子,然後 2-3 行短句,最後一個問題或行動呼籲"}
]

start 和 end 是從影片開始算起的秒數(轉錄時間是分鐘:秒鐘,所以 01:03.2 = 63.2)。 <工作資料夾>/words.json 包含每個單字及其精確的開始 (s) 和結束 (e) 時間:閱讀它以設定邊界。將 start 設定為鉤子第一個單字的 s,end 設定為回報最後一個單字的 e。腳本會保留從 start 到 end 的單字(有 0.05 秒的寬容度),並且絕不觸及前後的字,所以要丟掉像「所以」這樣的字,請將 start 設定在下一個字的 s。

4. 製作片段

~/.claude/skills/clipper/.venv/bin/python ~/.claude/skills/clipper/scripts/make_clips.py "<video>"

對於其他字幕顏色,加上 --text-color "#FFFFFF" --active-color "#FFD400",或加上 --no-captions 關閉字幕。每個片段大約需要 一分鐘的處理時間。 每個片段:在單字邊界處剪輯,重新調整為 1080x1920(寬螢幕影片會圍繞說話者的臉部裁剪;任何持續超過一秒鐘、 沒有臉部的片段,例如圖形、螢幕畫面或 B-roll,會以模糊背景完整顯示而非被裁掉; 直式影片則保持原樣),字幕每次顯示三個單字,並突出顯示正在說的單字,聲音標準化至 -14 LUFS。

5. 交付前檢查

打開每一個 clips/NN-*.jpg:每個都是一張橫跨整個片段的 8 幀縮圖。全部檢查:

  • 臉部在畫面中,且字幕可閱讀,位於下巴下方,在所有說話的幀上。
  • 影片已經內嵌了字幕(你看到兩組文字):使用 --no-captions 重新製作所有片段。
  • 腳本會印出每個片段的「face in X/Y checks」。如果 X 是 0,則表示沒有臉部可以對焦(例如螢幕錄製、投影片): 片段會置中對齊,所以在報告中說明此情況。在編輯過的影片中,沒有臉部的幀是預期的;它們是會被完整顯示的過場畫面。
  • 如果一個片段在單字中間或想法中間開始或結束,請修正 moments.json 中的 start/end,並使用 --only N 只重新製作該片段。

6. 報告

一個簡短的列表:每個片段的檔案、長度、評分、為何有效,以及它的發布文案。將使用者引導至 clips/scores.md(所有內容都在一個檔案中)和 clips/ 資料夾。提供一個下一步選項:不同的時刻、其他字幕 顏色,或更長/更短的片段。

相關技能