ลองใช้งานได้เลย: https://ytdownload.justfather.com — โหลดวิดีโอจาก YouTube, TikTok, Facebook ฟรี!
จุดเริ่มต้น
เรื่องมันเริ่มจากความขี้เกียจล้วนๆ ครับ
ผมอยากโหลดวิดีโอสั้นๆ จาก YouTube Shorts, TikTok, Facebook Reels มาเก็บไว้ดูออฟไลน์ แต่ทุกครั้งที่ต้องไปหาเว็บโหลด…
- เว็บเต็มไปด้วยโฆษณา Pop-up 😤
- ต้องกดหลายที กว่าจะโหลดได้
- บางทีโหลดมาไม่มีเสียง
- คุณภาพไม่ได้ตามที่อยากได้
“ทำเองดีกว่า” — ความคิดเริ่มต้นแค่นี้แหละ
ลองใช้ Claude Code เขียน
แทนที่จะนั่งเขียนเองตั้งแต่ศูนย์ ลองให้ AI ช่วยดู
บอกไปแค่:
“อยากได้ webapp download shortvideo จาก youtube, fb reel, tiktok จาก url ที่ส่งให้”
แค่ประโยคเดียว Claude Code ก็เริ่มถามกลับมา:
- ใช้ Tech Stack อะไร? → Next.js + TypeScript
- ดาวน์โหลดยังไง? → ลงเครื่องเลย
- เลือกคุณภาพได้ไหม? → ได้ 360p, 720p, 1080p
หลังจากตอบคำถาม มันก็วางแผน research libraries แล้วลุยเลย
Design 8-bit เพราะ… ทำไมไม่ล่ะ? 🕹️
บอก Claude ไปว่า:
“Design ขอเว็บแนว 8-bit เก่าๆ กวนๆ”
ได้มา:
- สี Neon ฉูดฉาด (ชมพู, เขียว, เหลือง)
- Scanline effect เหมือนจอ CRT เก่าๆ
- ปุ่มแบบ Pixel พร้อม shadow
- ASCII Art logo
ขี้เหร่แบบ vintage 😂
Test Agent หาบัค
สิ่งที่ผมทำคือบอกให้ Claude สร้าง agent ขึ้นมาทดสอบโค้ดเอง
ผลลัพธ์? เจอ 15 bugs 🐛
รวมถึง:
- ⚠️ SSRF – ใครก็ส่ง URL อะไรก็ได้มาโหลด (อันตราย!)
- ⚠️ Memory Leak – Stream ไม่ cleanup
- ⚠️ Race Condition – กดปุ่มเร็วๆ แล้วพัง
Claude แก้ให้หมดเลย ไม่ต้องนั่ง debug เอง
บัคที่ต้องแก้เอง
มีอันนึงที่ agent ไม่เจอ — วิดีโอไม่มีเสียง 🔇
YouTube บาง format มันแยก video กับ audio ออกจากกัน ต้องบอก yt-dlp ให้ merge เอง
ปัญหาคือ ytdlp.stream() ไม่สามารถ merge ได้ และถ้าไม่มี ffmpeg ก็ merge ไม่ได้อีก
วิธีแก้: เปลี่ยนไปใช้ format ที่มีทั้ง video + audio อยู่แล้ว
// format string ที่ใช้
best[ext=mp4][acodec!=none][vcodec!=none][protocol=https]/18/best
- หลีกเลี่ยง HLS/m3u8 (มักโดน 403)
- Fallback ไป format 18 (360p mp4 มีเสียง)
อันนี้ต้องทดสอบเองถึงรู้ 555
Bulk Download Mode 📦
หลังจากใช้ไปสักพัก รู้สึกว่าโหลดทีละตัวมันช้า…
บอก Claude ไปว่า:
“ขอแบบ bulk ได้ไหม สูงสุด 10 url”
ได้มา:
- Mode Switcher – สลับระหว่าง SINGLE / BULK
- Bulk URL Input – วาง URLs หลายตัวได้ (แยกบรรทัด, comma, หรือ space)
- Download Queue – เห็นสถานะแต่ละตัว
- ○ Pending → ◐ Fetching → ● Ready → ▼ Downloading → ✓ Completed
- เลือก Format แยก – แต่ละวิดีโอเลือกคุณภาพต่างกันได้
- Download All – กดปุ่มเดียวโหลดทุกตัว
ใช้เวลาเพิ่มอีกแค่ไม่กี่นาที!
Deploy ขึ้น Production 🚀
หลังจากทำเสร็จแล้ว ก็อยากเอาขึ้นให้คนอื่นใช้ด้วย
Stack ที่ใช้:
- Docker – containerize app พร้อม yt-dlp และ ffmpeg
- Coolify – self-hosted PaaS (ทางเลือกแทน Vercel/Heroku)
- GitHub App – เชื่อม private repo กับ Coolify
สิ่งที่ต้องทำ:
- สร้าง
Dockerfileที่ติดตั้งyt-dlpและffmpeg - ตั้งค่า
next.config.tsให้ build แบบstandalone - สร้าง GitHub App เพื่อเชื่อมกับ Coolify
- ตั้งค่า DNS ชี้ subdomain มาที่ server
- กด Deploy!
สรุป
| หัวข้อ | รายละเอียด |
|---|---|
| เวลาทั้งหมด | ~1.5 ชั่วโมง |
| บรรทัดโค้ด | ไม่รู้ ไม่ได้นับ 😅 |
| Bugs ที่เจอ | 15+ ตัว |
| Tech Stack | Next.js, TypeScript, Tailwind, yt-dlp |
| Features | Single + Bulk download (สูงสุด 10 URLs) |
| Deployment | Docker + Coolify |
| Live URL | ytdownload.justfather.com |
สิ่งที่ได้เรียนรู้
- AI ช่วยได้เยอะ — แต่ต้องรู้ว่าจะถามอะไร
- Test Agent เวิร์ค — หาบัคได้เยอะกว่าที่คิด
- ยังต้อง manual test — AI ไม่รู้ว่าเสียงหายไปหรือเปล่า
- Design กวนๆ = สนุกกว่า — ไม่จำเป็นต้องเรียบร้อยตลอด
- Feature request ง่ายมาก — บอกแค่ “ขอ bulk download” ก็ได้เลย
- Deploy ไม่ยาก — Docker + Coolify ทำให้ทุกอย่างง่ายขึ้น
ลองเล่นเอง?
วิธีที่ 1: ใช้ออนไลน์เลย (แนะนำ)
👉 https://ytdownload.justfather.com
วาง URL แล้วโหลดได้เลย ไม่ต้องติดตั้งอะไร!
วิธีที่ 2: รันบนเครื่องตัวเอง
cd yt-downloader
npm install
npm run dev
เปิด http://localhost:3000 แล้วลองวาง URL ดู
⚠️ หมายเหตุ: ใช้ส่วนตัวเท่านั้นนะ เคารพลิขสิทธิ์ด้วย
ลองใช้งานกันเลย!
🎬 ytdownload.justfather.com — โหลดวิดีโอจาก YouTube, TikTok, Facebook ได้ฟรี ไม่มีโฆษณา!
สร้างด้วย Claude Code + ความขี้เกียจ 💪
