claude-real-video 是一支開源 Python CLI:抓場景真正切換的關鍵幀(不是固定頻率取樣)、用滑動視窗做像素級去重、轉錄語音字幕,全部在本機執行,輸出一份任何 LLM 都能直接讀的資料夾。上線三天登上 Hacker News 首頁,同時支援 Claude Code 技能整合。這份手冊帶你安裝、看懂每個旗標、複盤 HN 上的真實質疑,並走一次完整的分析流程。
大部分 AI 工具其實沒有真的「看」影片。把 YouTube 連結貼給 ChatGPT,它讀的是逐字稿,不是畫面。Claude 直接不收影片檔案。連原生支援影片的 Gemini,也得先把整支片傳上 Google 的伺服器,並以固定的 1fps 頻率取樣——快速剪接的鏡頭照樣會漏看。
claude-real-video(CLI 指令 crv)換一種做法,而且全部在本機執行:給它一個網址或本機檔案,它抓的是真正發生場景變化的畫面,而不是固定頻率的配額;丟掉像素幾乎沒變的重複幀;轉錄音軌;最後打包成一份任何 LLM 都能讀的資料夾——關鍵幀 JPG、逐字稿、外加一份 MANIFEST.txt 摘要。
作者在 Hacker News 上線時說得直白:「我受夠了沒有一個 LLM 真的『看得到』影片——Claude 不收影片檔、ChatGPT 只讀逐字稿、Gemini 固定 1fps 取樣。」工具本身只做本機端的抽幀跟去重,決定要不要把這些幀貼給哪個 LLM,是你自己的選擇。
核心套件是純 Python,pip 直接裝。語音轉錄要另外加 [whisper] extra,而且 ffmpeg / ffprobe 不能用 pip 裝,要用系統套件管理器另外裝一次。Python 需要 3.10 以上,macOS、Windows、Linux 都支援。
| 作業系統 | 安裝 ffmpeg 的指令 |
|---|---|
| macOS | brew install ffmpeg |
| Linux | sudo apt install ffmpeg(或你發行版的套件管理器) |
| Windows | winget install Gyan.FFmpeg,或 choco install ffmpeg,或到 gyan.dev 下載後把 bin\ 加進 PATH |
如果你平常用 Claude Code,可以把它裝成技能——之後貼一個影片連結進對話,Claude 會自己判斷要不要呼叫 crv 去抽幀分析,不用你手動下指令。
pip install 成功不代表可以直接用——先跑一次 ffmpeg -version 確認它真的在 PATH 上,否則 crv 第一次執行會在抽幀階段直接失敗。第一次做語音轉錄還會自動下載約 139MB 的 Whisper base 模型,記得留網路時間。
crv 的旗標不是隨意堆出來的選項,而是精準對應 Fetch → Extract → Dedup → Text → Audio → Manifest 六個階段。下表依階段分組。不裝 [whisper]、什麼旗標都不加,直接 crv <url> 也能跑——多數情況只需要記得 --grid 跟 --why 這兩個。
| 你在看哪種影片 | 建議旗標組合 | 為什麼 |
|---|---|---|
| YouTube 教學 / 演講(語音為主) | --lang en --grid |
內容主要靠聽的,畫面變化少,--grid 把幀數再壓低一截 |
| 短影音 / Reels / TikTok(快剪) | --dedup-window 6 --grid |
快剪常常切回同一顆鏡頭,拉大比對視窗才不會重複送幀 |
| 純畫面分析,不需要逐字稿 | --no-transcribe --report |
省下 Whisper 處理時間,同時能看清楚每一幀的去留判斷 |
| 需要登入才能看的自家內容 | --cookies-from-browser chrome |
直接讀本機瀏覽器的登入狀態,不用手動匯出 cookie 檔 |
作者 cortexosmain 在 Hacker News 上直接發文,同一則討論串(#48766005)裡有支持也有質疑。比起挑好聽的留言,這裡整理四個真正被戳到、而且作者本人有回應的點。
zitterbewegung 跟 walrus01 都建議拿掉名字裡的「Claude」,理由是這工具本質是通用的影片前處理器。作者當場回應:「Took this — pip install llm-real-video works now, same tool. Kept the original repo name so existing links don't break.」
bonoboTP 指出文件裡「stays on your machine」的說法容易誤導:一旦你把抽出來的幀貼給 Claude,幀就會送到 Anthropic。工具本身確實只在本機處理,但之後要不要餵給哪個 LLM,是使用者自己的選擇,不是工具幫你保密。
來源 · HN #48766005 · bonoboTPoctember 的評論很直接:「keyframes are not videos. Motion, object permanence, are not things Claude can infer from a set of images.」一組排好的靜態圖能替代逐字稿加畫面摘要,但推不出動作本身的物理連貫性。
來源 · HN #48766005 · octemberfzysingularity 認為用 Claude 逐幀看影片「terribly expensive」,token 消耗遠高於原生支援影片的 Gemini 或本地 VLM。作者回應:這工具是為「原生看不了影片」的模型而生——Claude、ChatGPT 網頁版、本地模型;Gemini 本身就能原生吃 1fps 影片,沒必要繞這一圈。
來源 · HN #48766005 · fzysingularity、cortexosmain
場景:你把一支 YouTube 產品發表會連結貼進 Claude Code,想知道對方提到的定價策略是什麼。裝好 skills/claude-real-video 後,Claude 會自己判斷要呼叫 crv,而不用你手動打指令。
Claude 本身讀不了影片檔,--why 讓它不是漫無目的地摘要,而是帶著「找定價策略」這個焦點去讀 MANIFEST.txt;--grid 讓它看到的是有先後順序的連環圖,不是一堆散圖;--kb 則讓結果離開 crv-out、進到你自己會再打開的筆記裡。三個旗標分別解決「看什麼、怎麼看、看完存哪」三個各自獨立的問題。
pip install 成功不代表能跑——沒裝 ffmpeg / ffprobe,crv 在抽幀階段就會直接失敗。先跑 ffmpeg -version 確認再開始。
--whisper-model 時預設用 base,第一次執行會自動下載約 139MB 的模型檔案,確保有網路。
-o 目錄再跑一次 crv,舊的 frames / transcript / manifest 會直接被蓋掉,想保留就先搬走或改用 --kb 存副本。
crv 不只是一個獨立指令,它也是一支可以直接 import 的 Python 套件,而且從單支影片分析可以往上疊到批次處理、自己的知識庫、甚至完全不碰 LLM 的一般用途。
1. 用 --report 視覺化調參。不確定 --scene、--dedup-threshold 該設多少時,加 --report 生成 report.html,對照每一次去留判斷的差異百分比,再回頭微調。
2. 從 Python 直接呼叫。不想走 CLI,可以 from claude_real_video import process,拿到 frame_count、transcript_path 這類物件,接進自己的批次腳本或資料管線。
3. 裝成 Claude Code 技能常駐。把 skills/claude-real-video 複製進 ~/.claude/skills/ 後,以後貼影片連結進對話,Claude 會自己判斷要不要呼叫 crv,不用每次手動打指令。
4. 用 --keep-audio 餵給聽得懂聲音的模型。逐字稿只留下文字,語氣、配樂、環境音都不在裡面——如果下游模型是 GPT-4o 或 Gemini 這類支援音訊輸入的模型,加這個旗標把完整音軌一起送過去。
5. 需要拍攝手法分析,才考慮付費版。免費版的邊界很清楚:幀、逐字稿、manifest。鏡頭運動分類、剪輯節奏、聲音情緒時間軸屬於另一個付費產品 crv Pro,不是這支開源 CLI 的範圍。
① README.md——完整旗標表、Why not fixed-interval sampling 的技術對照、Python API 範例。
② skills/claude-real-video/SKILL.md——Claude Code 技能整合的完整步驟。
③ Hacker News #48766005——上線討論串,命名爭議、隱私措辭、成本質疑都在這裡,作者本人也有逐條回應。