Aplikasi untuk scrape YouTube Live Chat secara real-time dan mengirim data melalui WebSocket.
demo.mp4
- β Scrape live chat YouTube secara real-time
- β WebSocket server untuk broadcast chat ke multiple clients
- β HTTP server untuk menampilkan chat di browser
- β Support emoji custom
- β Support member badge & moderator badge
- β Chat history (max 100 pesan)
- β Auto-reconnect ke server
- Node.js v14+ (download dari https://nodejs.org/)
- Tampermonkey browser extension (Chrome, Firefox, dll)
# Clone atau download project ini
git clone https://github.com/dipaadipati/yt-livechat-server.git
# Pindah lokasi
cd yt-livechat-server
# Install dependencies
npm install- Chrome: https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
- Firefox: https://addons.mozilla.org/en-US/firefox/addon/tampermonkey/
- Buka extension Tampermonkey di browser
- Klik Create a new script
- Copy-paste isi dari tampermonkey_script.js
- Save script (Ctrl + S)
node server.jsOutput yang benar:
HTTP server listening on http://localhost:3000
WebSocket server listening on ws://localhost:8080
- Buka YouTube Live Chat di tab browser
- Pastikan Tampermonkey script sudah aktif
- Buka browser console (F12) untuk melihat debug log
- Tunggu sampai muncul:
[YT Chat] Connected to WebSocket server
Opsi A: Browser
- Buka
http://localhost:3000di browser baru - Chat akan muncul real-time
Opsi B: OBS
- Buka OBS Studio
- Add Source β Browser
- URL:
http://localhost:3000 - Width: 500 (dapat disesuaikan)
- Height: 600 (dapat disesuaikan)
- Centang Shutdown source when not visible (optional)
β yt-livechat-server
βββ server.js # Main WebSocket + HTTP server
βββ tampermonkey_script.js # Script untuk scrape YouTube
βββ public/
β βββ index.html # UI untuk menampilkan chat
β βββ config.html # UI untuk konfigurasi langsung
β βββ script.js # Frontend logic
β βββ style.css # Styling
βββ emojis/ # Folder untuk custom emoji (optional)
βββ package.json
βββ README.md # File ini
- Buka
http://localhost:3000/config.htmldi browser lokal - Ubah beberapa konfigurasi
- Klik Save untuk menyimpan dan akan langsung ditampilkan
Edit di server.js:
const PORT = 8080; // WebSocket port
const HTTP_PORT = 3000; // HTTP server portEdit di server.js:
const MAX_HISTORY = 100; // Ubah 100 ke nilai lainEdit di tampermonkey_script.js:
setInterval(scrapeLiveChat, 500); // 500ms = 0.5 detik
// Ubah ke:
// 200 = ultra real-time (lebih boros)
// 1000 = 1 detik (lebih hemat)
// 2000 = 2 detik (sangat hemat)- Buat folder
emojisdi root project - Taruh file emoji (.png, .jpg, .webp) ke sana
- Nama file harus sesuai dengan kode emoji di chat
- Contoh:
YT_emote1.webpβYT_emote1di chat akan diganti gambar
- Contoh:
Contoh struktur:
emojis/
βββ emote_name.png
βββ lol.jpg
βββ YT_emote1.webp
βββ thumbsup.png
Penyebab: Server tidak running atau port terblokir
Solusi:
# Pastikan server sudah running
node server.js
# Cek apakah port 8080 & 3000 tidak terpakai
# Windows:
netstat -ano | findstr :8080
netstat -ano | findstr :3000Penyebab: Tampermonkey script hanya berjalan di tab yang aktif
Solusi:
-
Background Tab Script
- Buka live chat di tab tersendiri
- Jangan tutup tab tersebut (bisa dimininimalkan)
- Script akan terus berjalan di background
-
Prevent Tab Sleeping (Chrome Extension)
- Install "Don't Close Window With Last Tab" atau extension sejenis
- Agar tab live chat tidak auto-close
-
Dedicated Device
- Gunakan device/laptop terpisah hanya untuk live chat
- Hanya jalankan server, tidak perlu buka UI
Penyebab: Browser source setting salah atau URL tidak accessible
Solusi:
- Buka
http://localhost:3000di browser lokal, pastikan chat muncul - Di OBS, cek ulang URL dan settings
- Restart OBS browser source (right-click β Refresh)
- Cek firewall Windows tidak memblokir port 3000
Penyebab:
- Folder
emojistidak ada - Nama file emoji tidak sesuai
Solusi:
- Buat folder
emojisdi root project - Pastikan nama file emoji sesuai format di chat
- Cek di
/api/emojisapakah emoji sudah ter-load:http://localhost:3000/api/emojis
Penyebab:
- Chat history terlalu banyak
- Rendering 100+ chat items
Solusi:
- Kurangi
MAX_HISTORYdi server.js:const MAX_HISTORY = 50; // Ubah dari 100 ke 50
Di Tampermonkey (YouTube):
- Buka F12 β Console
- Filter:
[YT Chat] - Lihat apakah ada error atau message
Di Browser OBS (localhost:3000):
- Buka F12 β Console
- Lihat apakah WebSocket connected atau ada error
Restart server:
# Stop: Ctrl + C
# Start: node server.jsJika butuh integrate ke aplikasi lain:
# Get all chat history
GET http://localhost:3000/api/chats
# Get all emoji mappings
GET http://localhost:3000/api/emojis
# Get specific emoji
GET http://localhost:3000/emojis/emoji_name.pngUntuk production / long-term streaming:
-
Gunakan PM2 untuk auto-restart:
npm install -g pm2 pm2 start server.js --name "yt-chat" pm2 startup pm2 save -
Gunakan VPS/Cloud jika perlu akses dari luar
-
Setup HTTPS jika perlu secure connection
- Tambah halaman live konfigurasi
- Tambah custom membership join style
- Tambah support member & moderator badge
- Tambah support custom emoji
- Tambah chat history API
- Fix memory leak (process cache limit)
- Initial release
- Basic scrape & broadcast
Jika ada masalah:
- Cek console F12 untuk error message
- Restart server & browser
- Cek firewall & antivirus tidak memblokir
- Tambahkan issue pada repo ini
Free to use for personal & streaming purpose
Author: Adipati Rezkya
Last Updated: October 28, 2025