สกิล watch: ให้ Claude ดู YouTube แทนเรา แล้วมันหยิบซับภาษาอาหรับมา

งานที่ผมเจอบ่อยมากคือมีคนส่งลิงก์วิดีโอมาแล้วถามว่า "ช่วยดูหน่อย คลิปนี้พูดเรื่องอะไร" ถ้าเป็นคลิปรีวิวคู่แข่ง คลิปสอนใช้โปรแกรม หรือคลิปสัมมนายาว ๆ ผมก็ต้องนั่งดูเองทั้งคลิป เพราะ Claude รับไฟล์วิดีโอตรง ๆ ไม่ได้ วางลิงก์ YouTube ไปก็ไม่ได้ดูคลิปจริง
watch เป็นสกิลโอเพนซอร์สที่มาแก้จุดนี้ มันใช้ yt-dlp โหลดวิดีโอ ใช้ ffmpeg ดึงภาพนิ่งตามจุดที่ฉากเปลี่ยน ดึงคำบรรยายที่มีอยู่แล้วในคลิปมาเป็นทรานสคริปต์ แล้วส่งทั้งภาพและข้อความให้ Claude อ่าน บทความนี้ผมรันสคริปต์ของสกิลจริงกับคลิปสาธารณะความยาว 2 นาทีกว่า ใช้แค่คำบรรยายของ YouTube ไม่ได้ใช้ API ที่เสียเงิน ผมเจอปัญหาจริง 2 จุดระหว่างทดสอบ จะเล่าไว้ในบทความด้วย ส่วน Whisper, WhisperX และโหมด Gemini ผมยังไม่ได้ลอง
$ npx skills add https://github.com/bradautomates/claude-video --skill watchUse the watch skill on example.mp4 in the folder I shared.
For setup, choose balanced detail and captions only (none).
Summarize what is visible, with timestamps.ให้ Claude "ดู" วิดีโอจากลิงก์หรือไฟล์ในเครื่อง แล้วตอบคำถามโดยอ้างเวลาในคลิปได้
- โหลดวิดีโอด้วย yt-dlp รองรับ YouTube, Vimeo, X, TikTok และเว็บส่วนใหญ่ที่ yt-dlp รองรับ
- ใช้ ffmpeg ดึงภาพนิ่งตามจุดเปลี่ยนฉาก จำนวนภาพปรับตามความยาวคลิป และตัดภาพที่ซ้ำกันทิ้ง
- ใช้คำบรรยายของแพลตฟอร์มเป็นหลัก ถ้าคลิปไม่มีคำบรรยาย ค่อยไปใช้ Whisper (Groq/OpenAI) หรือ WhisperX ในเครื่อง
- ปรับความละเอียดได้ 4 ระดับ ตั้งแต่อ่านทรานสคริปต์อย่างเดียวไปจนถึงดึงภาพไม่จำกัดจำนวน และเลือกช่วงเวลาให้ดูละเอียดขึ้นได้
ตัวเลขจาก skills.sh และ GitHub ณ 26 ก.ย. 2569 · พรอมต์ในแท็บ Prompt มาจาก README ของ repo
วิธีใช้ติดตั้งและให้ Claude ดูคลิปแรก
ต้องเตรียมอะไรบ้าง
- Claude Code ใช้ได้ทั้งแท็บ Code ใน Claude Desktop, ส่วนเสริม VS Code และเทอร์มินัล README บอกไว้ชัดว่าใช้ใน Claude Chat กับ Cowork ไม่ได้ ส่วน Codex และเอเจนต์อื่นที่รองรับ Agent Skills ใช้ได้
- Python 3.10 ขึ้นไป เวอร์ชันล่าสุด (v0.3.2) ต้องใช้ 3.10+ แต่ Python ที่มากับ macOS เครื่องผมเป็น 3.9 ผมเลยใช้ python3.11 ที่ลงไว้แยก
- ffmpeg กับ ffprobe ใช้ดึงภาพนิ่งและแยกเสียง
- yt-dlp เวอร์ชันล่าสุด README บอกว่ารองรับแค่เวอร์ชันล่าสุด เพราะเว็บวิดีโอเปลี่ยนระบบบ่อย และถ้าจะโหลดจาก YouTube ควรมี Deno (JavaScript runtime) ด้วย
- API key ไม่บังคับ ถ้าคลิปมีคำบรรยายอยู่แล้วก็ไม่ต้องใช้คีย์ คีย์ Groq หรือ OpenAI ใช้กับคลิปที่ไม่มีคำบรรยาย ส่วนคีย์ Gemini ใช้กับโหมดที่ส่งวิดีโอให้ Google ดูทั้งคลิป
บน Mac ติดตั้งเครื่องมือทั้งหมดได้ด้วย brew install python ffmpeg yt-dlp ตามที่ README แนะนำ ถ้ายังไม่มี Homebrew สคริปต์ setup.py ของสกิลจะบอกคำสั่งที่ต้องรันให้
ติดตั้ง watch ใน Claude Code
ขั้นที่ 1: เพิ่ม marketplace แล้วติดตั้งปลั๊กอิน
ถ้าใช้ Claude Code ในเทอร์มินัล README แนะนำให้ติดตั้งเป็นปลั๊กอิน โดยพิมพ์ 2 คำสั่งนี้ในช่องแชตของ Claude Code
/plugin marketplace add bradautomates/claude-video
/plugin install watch@claude-video
ถ้าอยู่ที่ prompt ของเทอร์มินัลปกติ ให้ใช้ claude plugin marketplace add bradautomates/claude-video ตามด้วย claude plugin install watch@claude-video แทน ติดตั้งเสร็จแล้วให้เปิด session ใหม่ แล้วเลือก /watch:watch จากรายการที่เด้งขึ้นมาตอนพิมพ์ /watch
คำสั่ง npx skills add ในการ์ดด้านบนเป็นอีกทางหนึ่ง ใช้ได้กับเอเจนต์หลายตัว แต่ต้องมี Node.js ส่วนคนใช้ Claude Desktop ไปที่ Customize → Plugins → Add marketplace แล้ววางลิงก์ repo ได้เลย ไม่ต้องเปิดเทอร์มินัล มีข้อควรระวังคือให้ติดตั้งวิธีเดียวต่อเอเจนต์หนึ่งตัว ถ้าลงทั้งแบบปลั๊กอินและแบบสกิลธรรมดา จะเห็น watch ซ้ำกัน 2 อัน
ขั้นที่ 2: ตรวจเครื่องมือด้วย setup.py
ครั้งแรกที่เรียก /watch สกิลจะรัน setup.py เพื่อตรวจว่ามี ffmpeg, ffprobe และ yt-dlp ครบหรือยัง จากนั้นจะถามว่าอยากใช้ความละเอียดระดับไหน และจะใช้ระบบถอดเสียงอะไรตอนคลิปไม่มีคำบรรยาย ค่าที่เลือกจะเก็บไว้ในไฟล์ ~/.config/watch/.env
ช่อง can_proceed: false ดูน่าตกใจ แต่คู่มือในสกิลอธิบายไว้ว่ามันแค่แนะนำให้ใส่คีย์ ถ้าเราตอบว่าไม่ใช้ Whisper ก็ใช้งานต่อได้ โดยใส่ --no-whisper หรือเลือก captions only ในขั้นตั้งค่า
ขั้นที่ 3: สั่งให้ดูคลิป
ใน Claude Code พิมพ์ลิงก์ตามด้วยคำถามได้เลย
/watch https://www.youtube.com/watch?v=xxxx คลิปนี้สอนอะไรบ้าง สรุปเป็นข้อพร้อมเวลา
Claude จะรันสคริปต์ watch.py ได้รายงานที่มีรายการภาพนิ่งพร้อมเวลา (t=MM:SS) และทรานสคริปต์ จากนั้นจะเปิดภาพทุกภาพมาดู แล้วตอบโดยใช้ทั้งภาพและคำพูดประกอบกัน
ผลทดสอบจริงกับคลิป 2 นาที 55 วินาที
คลิปที่ผมใช้ทดสอบคือ What is Claude Code? จากช่อง Claude บน YouTube เป็นคลิปทางการ มีทั้งคนพูดหน้ากล้องและภาพหน้าจอโปรแกรมสลับกัน เหมาะกับการทดสอบว่าสกิลจับฉากได้ดีแค่ไหน ผมรันสคริปต์ตรงจากเทอร์มินัลโดยไม่ผ่าน /watch เพื่อจะได้เห็น output ทุกบรรทัด
ปัญหาที่ 1: เวอร์ชันเก่าพังกับ ffmpeg 9
สกิลที่ติดตั้งในเครื่องผมอยู่ก่อนเป็น v0.2.0 พอรันกับ ffmpeg 9.0.1 มันโหลดวิดีโอและคำบรรยายได้ แต่ตอนดึงภาพกลับหยุดทำงาน เพราะ ffmpeg 9 ถอดตัวเลือก -vsync ออกไปแล้ว
ใน CHANGELOG ของ v0.3.0 เขียนไว้ว่าแก้เรื่องนี้แล้ว ตอนนี้สกิลจะเช็กก่อนว่า ffmpeg ในเครื่องรองรับ -fps_mode หรือ -vsync และบอกว่าทดสอบกับ ffmpeg 4.4 ถึง 9.0 ผมเลย clone v0.3.2 ลงโฟลเดอร์ทดสอบแล้วรันใหม่ ถ้าใครลงสกิลไว้ตั้งแต่กลางปี ให้อัปเดตก่อนใช้ ถ้าลงเป็นปลั๊กอินใช้ /plugin update watch@claude-video ถ้าลงผ่าน skills CLI ใช้ npx skills update watch -g
รอบที่สอง: ได้ภาพ 37 ภาพ
คลิปยาว 175 วินาที สกิลตั้งเป้าไว้ 60 ภาพ แต่ ffmpeg เจอจุดเปลี่ยนฉากแค่ 37 จุด ก็เลยได้ 37 ภาพ แต่ละภาพกว้าง 512px ทั้งรอบใช้เวลาราว 3 นาที ส่วนใหญ่หมดไปกับการดาวน์โหลด เพราะเน็ตช่วงนั้นช้า ขั้นดึงภาพเองใช้เวลาไม่กี่วินาที
ภาพที่ได้ครอบคลุมทุกช่วงของคลิป มีทั้งหน้าจอเทอร์มินัล VS Code หน้าเว็บแอปตัวอย่าง และภาพแผนผัง agent loop แต่เกือบครึ่งเป็นภาพคนพูดหน้ากล้องซึ่งแทบไม่ต่างกัน ระบบตัดภาพซ้ำไม่ได้ตัดภาพพวกนี้ทิ้ง เพราะแสงกับท่าทางเปลี่ยนนิดหน่อยทุกครั้งที่ตัดกลับมา
ปัญหาที่ 2: ได้ทรานสคริปต์ภาษาอาหรับ
ในรายงานเขียนว่า via captions (ar, automatic, unknown) ทั้งที่คลิปเป็นภาษาอังกฤษ
ผมเปิดไฟล์ข้อมูลของคลิปดู เลยรู้ว่าคลิปนี้มีเสียงพากย์ 21 ภาษา และแต่ละภาษามีคำบรรยายอัตโนมัติของตัวเอง CHANGELOG บอกว่าสกิลจะเลือกภาษาต้นฉบับ และถ้าไม่รู้ภาษาจะเลือกอังกฤษก่อน แต่กับคลิปแบบนี้มันเลือกผิด ผมเดาว่าน่าจะเกิดกับคลิปที่มีเสียงพากย์หลายภาษาเท่านั้น วิธีแก้คือกำหนดภาษาเองด้วย --sub-lang ในรอบนี้ผมใช้ --detail transcript ด้วย สกิลเลยไม่โหลดวิดีโอซ้ำ ใช้เวลาไม่ถึง 1 นาทีครึ่ง
อีกเรื่องที่เห็นในภาพคือ คำบรรยายอัตโนมัติของ YouTube จะมีข้อความซ้ำกันเป็นทอด ๆ เช่นประโยคเดียวกันขึ้น 3 บรรทัด เพราะ YouTube แสดงคำบรรยายแบบเลื่อนขึ้นทีละบรรทัด ทรานสคริปต์เลยยาวกว่าที่ควร แต่ Claude ยังอ่านรู้เรื่อง
ลองถามคำถามจริง
พอมีทั้งภาพและทรานสคริปต์ ผมลองถามว่า "คลิปพูดเรื่อง Claude Code ขออนุญาตก่อนรันคำสั่งช่วงไหน และมีภาพให้ดูไหม" ผมให้ Claude ใน session ที่ใช้ทดสอบเปิดภาพกับทรานสคริปต์ชุดนี้เอง ไม่ได้เรียกผ่าน /watch คำตอบคือช่วงนาที 02:10 ถึง 02:16 ผู้พูดบอกว่า Claude Code จะถามก่อนรันคำสั่งหรือแก้โค้ด แต่ภาพหน้าจอที่ขึ้นกล่อง "This command requires approval / Do you want to proceed?" ของคำสั่ง npx tsc --noEmit อยู่ที่ภาพ t=02:29 ซึ่งช้ากว่าเสียงพูดราว 15 วินาที ถ้าใช้ทรานสคริปต์อย่างเดียวจะไม่รู้ว่ามีภาพนี้ ถ้าดูแค่ภาพก็จะไม่รู้ว่าผู้พูดกำลังอธิบายเรื่องอะไร นี่คือเหตุผลที่สกิลต้องส่งทั้งสองอย่างให้ Claude
รีวิวมันคืออะไร ทำงานยังไง และข้อจำกัด
watch คืออะไร
watch คือสกิลสำหรับ Claude Code และเอเจนต์ที่รองรับมาตรฐาน Agent Skills ผู้ทำคือ bradautomates ใช้ MIT license ข้างในมีไฟล์ SKILL.md ที่บอก Claude ว่าต้องทำอะไรตามลำดับไหน กับโฟลเดอร์ scripts/ ที่มีสคริปต์ Python สำหรับดาวน์โหลด ดึงภาพ ถอดเสียง และตั้งค่า รุ่นล่าสุดตอนผมเขียนคือ v0.3.2 ออกวันที่ 25 ก.ย. 2569 ตัวสคริปต์หลักใช้แค่ไลบรารีมาตรฐานของ Python ไม่ต้องลงแพ็กเกจเพิ่ม
สกิลนี้ไม่ได้ทำให้ Claude ดูวิดีโอได้จริง สิ่งที่มันทำคือแปลงวิดีโอเป็นภาพนิ่งกับข้อความ ซึ่งเป็นสิ่งที่ Claude อ่านได้อยู่แล้ว
ขั้นตอนการทำงาน
- ดึงคำบรรยายก่อน yt-dlp เช็กข้อมูลคลิปและดึงคำบรรยาย ถ้าใช้ระดับ
transcriptและคลิปมีคำบรรยายอยู่แล้ว จะไม่โหลดวิดีโอเลย - โหลดวิดีโอ แล้วดึงภาพ มี 3 ระดับให้เลือก
efficientดึงเฉพาะ keyframe สูงสุด 50 ภาพbalancedดึงตามจุดเปลี่ยนฉากสูงสุด 100 ภาพ ส่วนtoken-burnerไม่จำกัดจำนวน ทุกระดับดึงได้ไม่เกิน 2 ภาพต่อวินาที - ตัดภาพซ้ำ ย่อภาพเหลือ 16×16 จุดแล้วเทียบสี ภาพที่แทบไม่ต่างจากภาพก่อนหน้าจะถูกตัดทิ้ง เช่น สไลด์ที่ค้างอยู่นาน ๆ
- ถอดเสียงเฉพาะเมื่อจำเป็น ถ้าคลิปไม่มีคำบรรยาย จะแยกเสียงออกมาแล้วส่งให้ Whisper ของ Groq หรือ OpenAI หรือใช้ WhisperX ที่รันในเครื่อง
- ส่งรายงานให้ Claude Claude เปิดภาพทุกภาพพร้อมกัน แล้วตอบโดยอ้างเวลาในคลิป
ตั้งแต่ v0.3.0 มีโหมดใหม่ชื่อ Gemini ถ้าใส่ GEMINI_API_KEY สกิลจะส่งวิดีโอให้โมเดลของ Google ดูทั้งคลิป รวมเสียงด้วย แล้วส่งคำตอบกลับมาให้ Claude ถ้าเป็นลิงก์ YouTube จะส่งลิงก์ไปตรง ๆ ถ้าเป็นไฟล์ในเครื่องจะอัปโหลดขึ้น Google แล้วลบทิ้งหลังได้คำตอบ ผมไม่ได้ลองโหมดนี้ ถ้าคลิปเป็นงานลูกค้าหรือมีข้อมูลลับ ให้ใช้ --engine local เพื่อบังคับให้ทำงานในเครื่องอย่างเดียว
จุดที่ผมชอบ
- ใช้คำบรรยายของคลิปก่อน คลิปบน YouTube ส่วนใหญ่มีคำบรรยายอัตโนมัติอยู่แล้ว เลยใช้ฟรีได้ในหลายกรณี
- ดูเฉพาะช่วงได้ ใส่
--startกับ--endสกิลจะดึงภาพถี่ขึ้นในช่วงนั้น เหมาะกับคลิปยาวที่อยากดูแค่บางช่วง - กำหนดเวลาดึงภาพเองได้ ถ้าในทรานสคริปต์ผู้พูดบอกว่า "ดูตรงนี้" เราใส่เวลานั้นใน
--timestampsให้ดึงภาพตรงจุดนั้นเพิ่มได้ ภาพแบบนี้มักหลุดจากการจับจุดเปลี่ยนฉาก เพราะภาพแทบไม่เปลี่ยน - รายงานบอกที่มาชัดเจน เช่น ทรานสคริปต์มาจากคำบรรยายภาษาอะไร และมาจากคำบรรยายอัตโนมัติหรือไม่ ปัญหาภาษาอาหรับที่ผมเจอ ผมก็รู้ได้จากบรรทัดนี้
- เก็บคีย์ในเครื่อง คีย์อยู่ใน
~/.config/watch/.envสิทธิ์ไฟล์ 0600 และคู่มือระบุว่าไม่เขียนคีย์ลง log
ข้อจำกัดที่ควรรู้ก่อนใช้
- ใช้ token เยอะ SKILL.md รุ่น 0.2.0 ประเมินไว้ว่าภาพ 80 ภาพกว้าง 512px ใช้ราว 50,000–80,000 token ถ้าคลิปยาวหรือถามหลายคลิป โควตาจะหมดเร็ว ถ้าอยากได้แค่เนื้อหาที่พูด ใช้
--detail transcriptประหยัดกว่ามาก - คลิปยาวจะดูได้หยาบลง README แนะนำคลิปไม่เกิน 10 นาที ถ้ายาวกว่านั้น ภาพจะห่างกันจนพลาดรายละเอียดได้ ควรเลือกเฉพาะช่วง
- ตัวหนังสือบนจออ่านยาก ภาพกว้าง 512px อ่านโค้ดหรือตัวเลขเล็ก ๆ ไม่ค่อยได้ ถ้าต้องอ่านให้ใช้
--resolution 1024แต่จะกิน token เพิ่มประมาณ 4 เท่า - ต้องใช้ yt-dlp ตัวล่าสุดเสมอ ระหว่างทดสอบผมเจอ YouTube ตอบ 429 (ขอบ่อยเกินไป) ตอนดึงคำบรรยายบางภาษา และมีคำเตือนว่าไม่มี JavaScript runtime ถ้า yt-dlp เก่าหรือเว็บเปลี่ยนระบบ สกิลจะโหลดคลิปไม่ได้
- ต้องอัปเดตให้ตรงกับเครื่องมือ อย่างที่ผมเจอ v0.2.0 ใช้กับ ffmpeg 9 ไม่ได้เลย
- คลิปที่มีเสียงพากย์หลายภาษาอาจได้คำบรรยายผิดภาษา ถ้ารายงานบอกภาษาไม่ตรงกับคลิป ให้ระบุ
--sub-langเอง - คลิปที่ต้องล็อกอิน ต้องส่ง cookies ให้เองด้วย
--cookiesสกิลจะไม่ไปหยิบ session จากเบราว์เซอร์ให้อัตโนมัติ ซึ่งผมว่าดีแล้วในแง่ความปลอดภัย
คำถามที่พบบ่อย
watch ใช้ฟรีไหม
ตัวสกิลใช้ MIT license ใช้ฟรี ถ้าคลิปมีคำบรรยายอยู่แล้ว ทั้งกระบวนการไม่ต้องจ่ายค่า API เพิ่ม ผมทดสอบทั้งบทความนี้โดยไม่ใช้คีย์เลย ค่าใช้จ่ายที่มีแน่ ๆ คือ token ของ Claude ที่ใช้อ่านภาพ ส่วน Groq, OpenAI และ Gemini คิดเงินตามเงื่อนไขของแต่ละเจ้า
ใช้กับคลิปภาษาไทยได้ไหม
ถ้าคลิปมีคำบรรยายภาษาไทย ใส่ --sub-lang th ได้ ถ้าไม่มีคำบรรยาย ต้องใช้ Whisper หรือ WhisperX ซึ่ง README แนะนำให้ระบุภาษาด้วยค่า WATCH_WHISPERX_LANGUAGE เพราะโมเดล small อาจเดาภาษาที่ไม่ใช่อังกฤษผิด ผมยังไม่ได้ลองกับคลิปภาษาไทย
ใช้ใน Claude บนเว็บหรือแอปมือถือได้ไหม
ไม่ได้ README ระบุว่า Claude Chat และ Cowork ไม่รองรับ ต้องใช้ใน Claude Code เท่านั้น ใช้ได้ทั้งแท็บ Code ใน Claude Desktop, VS Code และเทอร์มินัล เพราะสกิลต้องรัน yt-dlp กับ ffmpeg ในเครื่อง
ใช้กับไฟล์วิดีโอในเครื่องได้ไหม
ได้ ใส่ path ของไฟล์แทนลิงก์ได้เลย แต่ไฟล์ในเครื่องไม่มีคำบรรยายให้ดึง ถ้าไม่ได้ตั้งค่าระบบถอดเสียงไว้ จะได้แค่ภาพนิ่ง ถ้าต้องการคำพูดด้วยต้องใช้ WhisperX ในเครื่อง หรือส่งเสียงไปถอดกับ Groq หรือ OpenAI
ต่างจากการโยนลิงก์ YouTube ให้ Claude ตรง ๆ ยังไง
ถ้าโยนลิงก์ให้ Claude ตรง ๆ Claude จะเห็นแค่ข้อมูลในหน้าเว็บ เช่น ชื่อคลิปกับคำอธิบาย แต่ไม่เห็นเนื้อหาในคลิป watch ส่งภาพจริงจากคลิปพร้อมเวลาและทรานสคริปต์ให้ Claude เลยตอบได้ว่าในนาทีไหนมีอะไรขึ้นจอ และผู้พูดพูดอะไร
Logo Design Skill: ให้ AI ออกแบบโลโก้แบบมืออาชีพ ลองจริง 5 เครื่องมือ (2026)
วัดผลแอดโปรโมทแอปยังไง: SDK, MMP และ iOS ATT ที่ต้องรู้ก่อนยิง App Install (2026)
Marketing Funnel คืออะไร? วางฟันเนลให้วัดผลได้ทุกขั้น พร้อมตัวอย่าง B2B และร้านค้า (2026)
เคสจริง: M Creation วัดผลลีดจากแอด ตั้งแต่คลิกโฆษณาจนปิดการขาย