August 1, 2025
Judol Slayer.
Cerita ikut berkontribusi ke Judol Slayer — tool pembasmi komentar judol di YouTube — setelah menemukan logika yang lambat dan komentar judol yang lolos.
Siapa pun yang punya channel YouTube di Indonesia pasti kenal mereka: komentar promosi judi online alias judol. Namanya aneh, hurufnya “estetik”, isinya kurang lebih sama — nama situs yang katanya lagi gacor.
Suatu hari aku menemukan video dari sebuah channel YouTube yang membahas masalah spam komentar judol ini. Sebagai pemilik channel YouTube , aku langsung relate — aku juga mengalaminya. Ternyata ada yang sudah membuat aplikasi untuk membasminya secara otomatis: Judol Slayer. Aku coba, aku baca kodenya, dan di situ aku menemukan beberapa hal yang menurutku bisa diperbaiki.
Cara Kerja Versi Awal
Versi awalnya berupa script Node.js sederhana yang memakai YouTube Data API:
- Login OAuth
ke channel pemilik (scope
youtube.force-ssl). - Ambil komentar dari satu video berdasarkan
YOUTUBE_VIDEO_IDdi.env. - Cek setiap komentar dengan fungsi
getJudolComment. - Hapus komentar yang terdeteksi sebagai spam.
Deteksinya cukup cerdik. Spammer judol suka memakai huruf Unicode “fancy” supaya lolos filter, jadi script-nya membandingkan teks asli dengan hasil normalisasi Unicode:
function getJudolComment(text) {
const normalizedText = text.normalize("NFKD");
return text !== normalizedText; // kalau beda, berarti ada karakter Unicode aneh
}
Dua Masalah yang Aku Temukan
1. Harus per video
Script hanya memproses satu video ID per kali jalan. Untuk channel yang videonya sudah banyak, artinya harus copy-paste video ID satu per satu lalu menjalankan ulang script — makan waktu sekali.
2. Ada komentar judol yang lolos
Deteksi Unicode hanya menangkap komentar yang memakai huruf aneh. Komentar judol yang ditulis dengan huruf biasa — misalnya yang cuma berisi kata seperti “gacor” atau “maxwin” — tidak terdeteksi, jadi tidak ikut terhapus.
Kontribusiku
Aku fork repo-nya, lalu mengirim pull request dengan dua perubahan utama:
Dari Video ID ke Channel ID. Alih-alih satu video, script sekarang menerima YOUTUBE_CHANNEL_ID, mengambil playlist uploads channel tersebut, lalu mengumpulkan semua video dengan paginasi:
const response = await youtube.channels.list({
part: "contentDetails",
id: youtubeChannelID,
});
const uploadsPlaylistId =
response.data.items[0].contentDetails.relatedPlaylists.uploads;
// lalu playlistItems.list per 50 video sampai nextPageToken habis
Setelah itu setiap video dipindai dan dibersihkan satu per satu. Memang jadi lebih lama per sekali jalan, tapi untuk YouTuber yang videonya sudah banyak, ini jauh lebih membantu daripada mengetik video ID manual.
Daftar kata terlarang. Aku menambahkan blockedword.json sebagai lapisan deteksi kedua setelah cek Unicode:
const blockedWords = JSON.parse(fs.readFileSync("blockedword.json"));
const lowerText = text.toLowerCase();
return blockedWords.some(word => lowerText.includes(word.toLowerCase()));
Jujur, di deskripsi PR aku juga menulis bahwa fitur blocked word ini sebenarnya tidak terlalu krusial, karena YouTube sendiri sudah punya fitur kata yang diblokir. Tapi setidaknya komentar yang sudah terlanjur masuk bisa ikut dibersihkan.
Pull request-nya di-merge ke repo utama. Setelah itu kontributor lain juga ikut memperbaiki — misalnya mengubah penghapusan jadi setModerationStatus rejected yang diproses per 50 komentar.
Yang Aku Pelajari
- Membaca kode orang lain itu latihan yang bagus. Idenya sudah bagus; tugasku cuma menambal bagian yang tidak cocok dengan kasusku sendiri.
- YouTube Data API punya struktur yang perlu dipahami. Channel → playlist uploads → video → comment threads, semuanya dengan paginasi.
- Deteksi spam itu permainan kucing-tikus. Satu aturan saja tidak cukup; spammer selalu mencari celah.
- Kontribusi kecil tetap berarti. Satu PR yang menyelesaikan masalah nyata sudah cukup untuk membuat tool-nya lebih berguna bagi pemilik channel lain.
Keterbatasan
- Kuota API. Memindai seluruh video di channel besar menghabiskan kuota YouTube Data API dengan cepat.
- Aturan berbasis kata kunci perlu terus di-update karena pola spam selalu berubah.
- False positive tetap mungkin — komentar biasa yang kebetulan memakai karakter Unicode unik bisa ikut tertangkap.
Ringkasan teknis project-nya ada di halaman Judol Slayer .

Hey! I’m Fanny, the software engineer tending to this digital garden. You can read more about me, or subscribe by email.