Automasi komentar kehadiran di seluruh video dalam playlist YouTube menggunakan Playwright (Node.js).
Dibuat untuk keperluan akademik — dosen meminta mahasiswa berkomentar sebagai bukti kehadiran di setiap video e-Learning.
- Node.js v18 atau lebih baru
- Browser berbasis Chromium (Chrome, Edge, Brave, dll.)
- Akun Google yang sudah terdaftar di YouTube
# 1. Clone gist atau salin file-file ke folder baru
mkdir youtube-commenter && cd youtube-commenter
# 2. Install dependency
npm install
# 3. Install browser Playwright (jika belum ada Chrome/Edge di sistem)
npx playwright install chromiumCatatan untuk Arch Linux / Archcraft: Jika
npx playwright install chromiumgagal, gunakan browser yang sudah terinstall di sistem. Ubahbrowser.channeldiconfig.jsonmenjadi"msedge"(Edge),"chrome"(Chrome), atau"chromium".
Edit file config.json sesuai kebutuhanmu:
Agar tidak perlu login ulang setiap kali menjalankan script, isi browser.user_data_dir dengan path folder profil browser:
"user_data_dir": "/tmp/yt-commenter-profile"Script akan menyimpan cookie/session di folder tersebut.
npm startAlur kerja:
- Browser terbuka dan membuka halaman playlist
- Jika belum login → script pause, minta kamu login manual di browser lalu tekan ENTER di terminal
- Script membaca seluruh video dari playlist
- Untuk setiap video:
- Buka video
- Scroll ke kolom komentar
- Cek apakah sudah ada komentar dari
commenter_name - Jika belum → posting komentar
- Jika sudah → skip
- Screenshot halaman (judul video + komentar terlihat)
- Tampilkan ringkasan di akhir
Cek tanpa benar-benar memposting komentar:
npm run dry-run[17:10:05] Browser terbuka.
[17:10:08] Membuka halaman playlist...
[17:10:12] Ditemukan 36 video di playlist.
[17:10:12] Akan memproses 36 video (index 1-36).
[17:10:12] Sudah login.
[17:10:15] [1/36] Membuka: Week 1 - Introduction to IoT - Part 1 (dari 5)
[17:10:25] -> Komentar berhasil diposting.
[17:10:26] -> Screenshot: screenshots/video_01_Week 1 - Introduction to IoT - Part 1 dari 5.png
...
[17:21:30] ════════════════════════════════════════════════════
[17:21:30] RINGKASAN
[17:21:30] ════════════════════════════════════════════════════
[17:21:30] Total video : 36
[17:21:30] Dikomentari : 36
[17:21:30] Sudah ada : 0 (di-skip)
[17:21:30] Gagal : 0
[17:21:30] Screenshot di : ./screenshots/
[17:21:30] ════════════════════════════════════════════════════
youtube-commenter/
├── README.md ← Dokumentasi
├── config.json ← Konfigurasi (edit ini)
├── package.json ← Dependencies
├── youtube-commenter.mjs ← Script utama
└── screenshots/ ← Hasil screenshot (auto-generated)
├── video_01_Week 1 - Introduction to IoT - Part 1 dari 5.png
├── video_02_Week 1 - Introduction to IoT - Part 2 dari 5.png
└── ...
| Masalah | Solusi |
|---|---|
Browser not found |
Pastikan Chrome/Edge terinstall, atau ubah browser.channel di config |
Comment placeholder not found |
Koneksi lambat — naikkan delays.page_load_ms dan delays.scroll_ms |
Comment box not found |
YouTube mungkin berubah layout — coba jalankan ulang |
| Login tidak tersimpan | Isi browser.user_data_dir di config untuk persistent session |
| Hanya ingin video tertentu | Ubah start_index dan end_index di config |
Script ini dibuat khusus untuk keperluan bersenang-senang, ngapain sih semester 8 masih ada matkul tugasnya juga gaje komen yt, repetitive materi diulang terus rugi bayar ukt bos
{ // URL playlist YouTube yang ingin dikomentari "playlist_url": "https://www.youtube.com/playlist?list=PLiHrX-EEKJ650iImEI-gEibMF0B2KWusz", // Isi komentar yang akan diposting di setiap video "comment": "Naufal Reky Ardhdna TI-4A, Masyallah tabakarakallah pak terimakasih materinya. Hadir", // Nama yang digunakan untuk mengecek apakah sudah pernah berkomentar (akan di-skip jika sudah ada) "commenter_name": "Naufal Reky", // Range video yang diproses (1-indexed, inklusif) "start_index": 1, "end_index": 36, // Folder tempat screenshot disimpan "screenshot_dir": "screenshots", // Pengaturan browser "browser": { "headless": false, // false = browser terlihat (wajib untuk login manual) "channel": "msedge", // "chrome" | "msedge" | "chromium" | "" "viewport": { "width": 1920, "height": 1080 }, "user_data_dir": "" // Kosong = sesi baru, isi path untuk persistent login }, // Delay antar aksi (ms) — sesuaikan jika koneksi lambat "delays": { "page_load_ms": 3000, "scroll_ms": 1500, "after_click_placeholder_ms": 2000, "typing_delay_ms": 15, "after_submit_ms": 4000, "before_screenshot_ms": 500 } }