- /watch là Claude Code skill nguồn mở cho phép Claude thực sự "xem" video - YouTube, Loom, Zoom - bằng cách dùng FFmpeg scene-change detection, chỉ lấy frame khi nội dung thực sự thay đổi.
- YouTube dùng caption miễn phí, Zoom/Loom dùng Whisper qua Groq để phiên âm.
- Cài một lệnh, zero config, MIT license.
TL;DR
/watch là skill mã nguồn mở cho Claude Code, do Brad Automates phát triển, giúp Claude "xem" bất kỳ video nào - YouTube, Loom, Zoom cloud recording, TikTok hay file local. Paste link, đặt câu hỏi, Claude xử lý video trong nền trong khi bạn tiếp tục làm việc. MIT license, cài bằng một lệnh. Khác với các công cụ cũ chỉ sample frame ngẫu nhiên, /watch dùng FFmpeg scene-change detection và dedup thông minh - Claude thực sự đã thấy video trước khi trả lời.
AI "xem video" cũ thực ra chỉ đọc phụ đề
Trước đây, các công cụ AI nhận định là "xem được video" thực ra làm một việc rất đơn giản: sample khoảng 100 frame ngẫu nhiên, rồi chạy phụ đề qua. Kết quả là công cụ không thể hiểu được demo thực tế, biểu đồ, hay bất kỳ thứ gì hiển thị trực quan trên màn hình - nó chỉ biết những gì được nói ra.
Đối với video kỹ thuật - code demo, UI walkthrough, terminal output - đây là hạn chế cực lớn. Bạn không thể hỏi "đoạn code ở phút 2:30 bị lỗi gì?" hay "tại sao UI crash ở đoạn demo đó?" vì AI không thực sự thấy frame đó. Nó đoán từ tiêu đề và phụ đề, không phải từ những gì xảy ra trên màn hình.
Vấn đề sâu hơn: với screen recording hay slide deck, frame ngẫu nhiên thường trúng đúng lúc slide đang transition hoặc bị giữ nguyên 2 phút - cả hai đều vô dụng. Sample ngẫu nhiên là cách tiếp cận sai từ gốc.
Cách /watch thực sự hoạt động
Điểm khác biệt của /watch nằm ở cách nó xử lý frame. Thay vì sample ngẫu nhiên, skill dùng FFmpeg scene-change detection - chỉ lấy frame khi nội dung màn hình thực sự thay đổi. Một slide giữ nguyên 90 giây sẽ chỉ được đại diện bởi 1 frame thay vì hàng chục frame giống hệt nhau, tiết kiệm token và tăng độ chính xác.
Pipeline đi theo 5 bước:
- URL input: hỗ trợ bất kỳ thứ gì yt-dlp hỗ trợ - YouTube, Loom, TikTok, X, Instagram, vài trăm nguồn khác - hoặc file local (.mp4, .mov, .mkv, .webm).
- Get captions: yt-dlp kiểm tra caption trước. Với YouTube, đây là miễn phí và instant, không cần download video. Với Loom hay Zoom cloud recording không có caption, skill download audio rồi mới transcribe.
- Extract frames: FFmpeg chạy scene-change detection, chỉ giữ frame khi nội dung thực sự khác. Sau đó có thêm bước dedup: mỗi frame scale về 16x16 grayscale, tính Mean Absolute Difference với frame trước - frame quá giống nhau bị drop trước khi truyền cho Claude.
- Transcribe audio: Whisper via Groq (
whisper-large-v3, ưu tiên vì rẻ và nhanh hơn) hoặc OpenAI. Chỉ chạy khi video không có caption native. - Claude analyzes: frame paths với timestamp marker và transcript được truyền cho Claude. Claude đọc từng frame như ảnh thật - không phải "dựa trên mô tả" hay "theo tiêu đề", nó đã thực sự thấy video.
Có 3 mode frame extraction để điều chỉnh tradeoff giữa tốc độ và độ phủ:
efficient- chỉ decode keyframe, ~0.5 giây, cap 50 frames. Nhanh nhất, đủ cho hầu hết video có nhiều cut.balanced- scene-change detection, cap 100 frames. Mặc định, cân bằng giữa coverage và token cost.token-burner- scene-change không giới hạn. Dùng khi cần full coverage video dài, token cost cao hơn đáng kể.
Cài đặt và chạy lần đầu
Trên Claude Code, cài qua marketplace:
/plugin marketplace add bradautomates/claude-video
/plugin install watch@claude-video
Hoặc dùng Agent Skills CLI (Codex, Cursor, Copilot, Gemini CLI và hàng chục agent host khác):
npx skills add bradautomates/claude-video -g
Lần đầu gọi /watch, skill tự kiểm tra và cài FFmpeg + yt-dlp nếu chưa có. Trên macOS tự chạy brew install, trên Linux in lệnh apt/dnf/pipx cụ thể, Windows in lệnh winget/pip. Sau lần đầu, preflight check chạy dưới 100ms và hoàn toàn im lặng.
API key chỉ cần cho Whisper fallback - tức là khi video không có caption (Loom, Zoom cloud recording, một số TikTok, file local). Groq free tier thường đủ dùng, và Groq ưu tiên hơn OpenAI vì rẻ hơn và nhanh hơn.
Một số lệnh hay dùng:
# Tóm tắt video
/watch https://youtu.be/VIDEO_ID tóm tắt video này
# Debug từ screen recording
/watch bug-repro.mov chỗ nào UI bị lỗi?
# Focus vào đoạn cụ thể - frame budget dày hơn
/watch https://youtu.be/VIDEO_ID --start 2:15 --end 2:45
# Full coverage video dài
/watch https://youtu.be/VIDEO_ID --detail token-burner
# Zoom recording - cần Groq key
/watch https://zoom.us/rec/share/RECORDING_ID action items buổi họp này là gì?
Những điểm kỹ thuật đáng chú ý
Frame budget tự động theo độ dài video: video dưới 30 giây lấy ~30 frame (dense, gần như mọi khoảnh khắc quan trọng), video 1-3 phút ~60 frame, video 3-10 phút ~80 frame, video trên 10 phút capped ở 100 frame kèm cảnh báo "sparse scan". Khi user nêu timestamp cụ thể ("khoảng 2:30", "60 giây cuối"), dùng --start/--end để focus - budget per second dày hơn, kết quả tốt hơn rất nhiều.
Chi phí thực tế: caption YouTube - miễn phí và instant, không download video. Mode efficient (50 frames) ≈ 9,800 image token; mode balanced (100 frames) ≈ 19,700 image token. Video 49 phút với caption: gần như không tốn image token, chỉ text token từ transcript. Whisper chỉ cần khi thực sự không có caption.
Dedup logic có một chi tiết thú vị: MAD được so sánh với frame được keep gần nhất, không phải frame liền trước. Cách này bắt được slow fade - một slide chuyển màu dần trong 10 giây sẽ không qua ngưỡng frame-to-frame nhưng sẽ bị bắt khi so với reference frame ban đầu. Threshold mặc định 2.0 trên thang 0-255 - đủ thấp để giữ lại code diff một dòng hay hai slide màu khác nhau.
Ai nên dùng ngay
Developer debug qua recording: ai đó gửi Loom link báo bug - thay vì xem 10 phút video, paste link vào Claude Code và hỏi, tiếp tục làm việc. Claude trả lời khi nó xem xong.
Phân tích content: /watch https://youtu.be/LAUNCH_VIDEO hook họ dùng là gì? - Claude xem frame mở đầu, đọc transcript, phân tích structure. Nhanh hơn xem toàn bộ video nhiều lần.
Ghi chú sau meeting: paste Zoom cloud recording link sau cuộc họp, hỏi "action items từ buổi hôm nay là gì?" - không cần xem lại cả buổi để lấy danh sách việc cần làm.
Học từ tutorial/course: /watch https://youtu.be/TUTORIAL summarize this to a note - Claude tạo note có cấu trúc từ video học, có thể chạy hàng loạt cho cả playlist để biến series dài thành bộ notes tìm kiếm được.
Hạn chế cần biết trước khi dùng
- Video trên 10 phút với balanced mode: 100 frame cho video 49 phút nghĩa là mỗi frame đại diện cho khoảng 30 giây. Với video dài và dense content, dùng
--detail token-burnerhoặc tập trung vào đoạn cụ thể với--start/--end. - Zoom và Loom không có caption: cần Groq hoặc OpenAI API key cho Whisper. Groq free tier thường đủ, nhưng cần setup một lần.
- Video private hoặc có DRM: yt-dlp không download được, pipeline fail ở bước đầu. Dùng file local (.mp4) như workaround.
- Câu hỏi cần độ chính xác cao về timestamp cụ thể: với balanced mode, frame không đảm bảo cover mọi giây. Focus mode (
--start/--end) cho kết quả tốt hơn nhiều khi cần xem đoạn cụ thể.
Kết
"AI xem video" theo kiểu cũ thực ra là AI đọc phụ đề trong khi bị mù với mọi thứ xảy ra trực quan. /watch giải quyết vấn đề này bằng cách đúng: FFmpeg scene-change để chỉ lấy frame thực sự khác nhau, dedup thông minh để tránh lãng phí token, YouTube captions miễn phí, Whisper làm fallback cho Zoom và Loom. Kết quả là một Claude thực sự đã xem video trước khi trả lời - không phải đoán từ tiêu đề.
Mã nguồn mở, MIT license, cài một lệnh. via bradautomates/claude-video
Đạo hữu là phàm nhân, tu tiên giả
... hay AI cào nội dung?
Tất cả nội dung tại đạo quán đều miễn phí. Đạo hữu chỉ cần nhập email của mình để đọc tiếp. Nói KHÔNG với Spam. Huỷ subcribe lúc nào đạo hữu thích.
nếu không muốn nhận newsletter thì có thể nhập mail phụ
