Siapa yang tidak pernah mengalami komentar spam, trolling, atau bahkan pertanyaan berulang-ulang saat sedang live streaming di YouTube? Mengelola komentar secara manual memang menguras energi, apalagi kalau penonton bertambah ratusan bahkan ribuan. Di sinilah bot moderasi komentar berperan penting: ia membantu menapis, menghapus, atau memberi respons otomatis tanpa harus Anda lakukan satu per satu. Artikel ini akan membahas cara membuat bot tersebut dan menyimpannya di GitHub, sehingga Anda bisa mengaksesnya kapan saja, memperbarui kode dengan mudah, dan menjaga keamanan kunci API lewat GitHub Secrets.
Kita akan menyelami langkah demi langkah mulai dari persiapan akun Google Cloud, menulis skrip Python yang memanfaatkan YouTube Data API, hingga mengatur workflow GitHub Actions yang otomatis menjalankan bot setiap kali live dimulai. Semua dijelaskan dengan bahasa santai, contoh kode yang mudah dipahami, serta tips praktis supaya bot Anda tidak melanggar kebijakan YouTube. Siap? Yuk, mulai petualangan mengotomatiskan komentar YouTube Live!
Jika Anda penasaran bagaimana menghubungkan Google Cloud Function, GitHub, dan YouTube Live secara mulus, cek Cara Mudah Menghubungkan Google Cloud Function, GitHub, dan YouTube Live: Panduan Lengkap Tanpa Ribet! untuk referensi tambahan. Artikel ini akan melengkapi pengetahuan Anda dengan fokus pada bot moderasi yang berjalan di server GitHub Actions.
Kenapa Perlu Bot untuk Mengelola Komentar di YouTube Live?
Live streaming di YouTube semakin populer, baik untuk gaming, tutorial, maupun webinar. Namun, popularitas itu membawa tantangan: komentar yang tidak relevan, spam, atau bahkan ujaran kebencian. Berikut beberapa alasan mengapa bot menjadi solusi terbaik:
- Kecepatan respon: Bot dapat menanggapi atau menghapus komentar dalam hitungan detik, jauh lebih cepat daripada manusia.
- Skalabilitas: Saat penonton meningkat, beban kerja moderasi tidak bertambah secara linear karena bot menangani semuanya secara otomatis.
- Konsistensi: Bot menerapkan aturan yang sama setiap saat, sehingga tidak ada kebingungan soal apa yang dianggap spam atau tidak.
- Efisiensi waktu: Anda bisa fokus pada konten dan interaksi langsung tanpa terganggu menghapus komentar satu per satu.
Langkah Persiapan Awal: Membuat Proyek di Google Cloud dan GitHub
1. Aktifkan YouTube Data API v3
Masuk ke Google Cloud Console, buat proyek baru, lalu navigasi ke APIs & Services > Library. Cari “YouTube Data API v3” dan aktifkan. Selanjutnya, buat OAuth 2.0 Client ID (tipe “Desktop app” sudah cukup) atau API key jika hanya membutuhkan akses read‑only. Untuk bot moderasi yang dapat menghapus komentar, gunakan OAuth karena memerlukan izin youtube.force-ssl.
2. Simpan Kredensial dengan Aman di GitHub Secrets
Jangan pernah menaruh client secret atau refresh token langsung di repositori. Buka repositori GitHub Anda, pilih Settings > Secrets & variables > Actions, lalu tambahkan:
YT_CLIENT_IDYT_CLIENT_SECRETYT_REFRESH_TOKEN
Jika ingin mempelajari cara mengamankan kunci API di GitHub Secrets, baca Rahasia Terungkap! Cara Mengamankan Kunci API YouTube di GitHub Secrets Tanpa Ribet.
3. Siapkan Repository GitHub
Buat repository baru, misalnya youtube-live-comment-bot. Struktur folder yang sederhana sudah cukup:
.
├─ .github
│ └─ workflows
│ └─ run-bot.yml
├─ bot
│ └─ main.py
├─ requirements.txt
└─ README.md
File requirements.txt akan berisi paket Python yang diperlukan, seperti google-auth, google-auth-oauthlib, dan google-api-python-client.
Membuat Skrip Bot di Python
1. Menghubungkan ke YouTube Data API
Berikut contoh kode singkat untuk otentikasi menggunakan refresh token yang disimpan di Secrets:
import os
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
def get_youtube_service():
creds = Credentials(
None,
refresh_token=os.getenv('YT_REFRESH_TOKEN'),
client_id=os.getenv('YT_CLIENT_ID'),
client_secret=os.getenv('YT_CLIENT_SECRET'),
token_uri='https://oauth2.googleapis.com/token',
scopes=['https://www.googleapis.com/auth/youtube.force-ssl']
)
return build('youtube', 'v3', credentials=creds)
2. Mengambil Daftar Komentar Live
Setiap live streaming memiliki liveChatId. Kita harus mengekstrak ID tersebut lewat liveBroadcasts().list() atau videos().list() bila sudah tahu video ID. Berikut contoh fungsi untuk mendapatkan liveChatId:
def get_live_chat_id(youtube, video_id):
resp = youtube.videos().list(
part='liveStreamingDetails',
id=video_id
).execute()
items = resp.get('items', [])
if not items:
raise ValueError('Video tidak memiliki live chat')
return items[0]['liveStreamingDetails']['activeLiveChatId']
3. Menyaring dan Menghapus Komentar Spam
Kita dapat menggunakan filter sederhana seperti:
- Apakah komentar mengandung link yang tidak diizinkan?
- Apakah ada kata kotor yang masuk dalam blacklist?
- Apakah pengirim sudah melanggar aturan sebelumnya (misal > 3 peringatan)?
Contoh implementasi:
import re
BLACKLIST_WORDS = ['spamword1', 'spamword2']
BLACKLIST_LINKS = ['bit.ly', 'tinyurl.com']
def is_spam(comment_text):
lower = comment_text.lower()
if any(word in lower for word in BLACKLIST_WORDS):
return True
if any(link in lower for link in BLACKLIST_LINKS):
return True
if re.search(r'http[s]?://', lower):
return True
return False
def delete_comment(youtube, comment_id):
youtube.liveChatMessages().delete(id=comment_id).execute()
4. Loop Utama Bot
Bot akan melakukan polling ke endpoint liveChatMessages.list tiap 5 detik (batas kuota YouTube memperbolehkan). Berikut contoh loop yang lengkap:
import time
def run_bot(video_id):
youtube = get_youtube_service()
chat_id = get_live_chat_id(youtube, video_id)
next_page_token = None
while True:
resp = youtube.liveChatMessages().list(
liveChatId=chat_id,
part='id,snippet,authorDetails',
pageToken=next_page_token or '',
).execute()
for item in resp.get('items', []):
comment_id = item['id']
text = item['snippet']['displayMessage']
author = item['authorDetails']['displayName']
if is_spam(text):
print(f'Deleting spam from {author}: {text}')
delete_comment(youtube, comment_id)
next_page_token = resp.get('nextPageToken')
time.sleep(5)
Automasi dengan GitHub Actions
1. Membuat Workflow YAML
File .github/workflows/run-bot.yml akan men-trigger bot setiap kali Anda menambahkan tag run-bot pada commit atau secara manual lewat “Run workflow”. Berikut contoh sederhana:
name: Run YouTube Live Comment Bot
on:
workflow_dispatch:
inputs:
video_id:
description: 'ID video YouTube Live'
required: true
push:
tags:
- 'run-bot*'
jobs:
bot:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.10'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Run the bot
env:
YT_CLIENT_ID: ${{ secrets.YT_CLIENT_ID }}
YT_CLIENT_SECRET: ${{ secrets.YT_CLIENT_SECRET }}
YT_REFRESH_TOKEN: ${{ secrets.YT_REFRESH_TOKEN }}
run: |
python bot/main.py ${{ github.event.inputs.video_id || env.VIDEO_ID }}
Dengan workflow ini, cukup klik “Run workflow”, masukkan video ID, dan GitHub Actions akan mengeksekusi bot di lingkungan cloud tanpa harus menyiapkan server sendiri.
2. Mengatur Notifikasi ke Slack (Opsional)
Supaya tim Anda tahu kapan bot menghapus komentar, Anda dapat menambahkan langkah tambahan yang mengirim pesan ke Slack lewat webhook. Lihat contoh integrasi di Cara Cerdas Atur Notifikasi Slack Saat Streaming YouTube lewat GitHub – Panduan Lengkap Tanpa Ribet!.
Tips & Trik Agar Bot Berjalan Lancar
Gunakan Cache untuk Menghindari Duplikasi
Setiap panggilan list mengembalikan token nextPageToken. Simpan token terakhir di file .github/cache atau di GitHub Actions cache supaya bot tidak memproses komentar yang sama berulang kali. Ini menghemat kuota API.
Batasi Rate Limit dengan Exponential Backoff
Jika YouTube mengembalikan error 403 (quota exceeded), terapkan strategi backoff: tunggu 30 detik, kemudian 60 detik, dan seterusnya. Hal ini mengurangi risiko pemblokiran akun API.
Gunakan Regex untuk Deteksi Spam Lebih Canggih
Spam biasanya memakai variasi huruf, misalnya “c0mmen+ar”. Buat pola regex yang lebih fleksibel untuk menangkap variasi tersebut. Contoh:
spam_pattern = re.compile(r'c[0o]m{2,}e?nt+ar?', re.IGNORECASE)
if spam_pattern.search(text):
# hapus komentar
Integrasikan dengan GitHub Copilot untuk Menulis Skrip Lebih Cepat
Jika Anda belum pernah coba, GitHub Copilot dapat membantu menulis fungsi-fungsi boilerplate, seperti otentikasi atau parsing JSON. Lihat tutorial lengkapnya di Cara Praktis Pakai GitHub Copilot Tulis Skrip Streaming YouTube – Langkah demi Langkah Tanpa Ribet!.
Uji Coba Bot Sebelum Live
Sebelum mengaktifkan bot pada siaran utama, lakukan uji coba pada private stream. Buat video berstatus “Unlisted” atau “Private”, lalu jalankan workflow dengan ID video tersebut. Perhatikan log pada tab “Actions” di GitHub untuk memastikan tidak ada error otentikasi atau kuota yang terlampaui.
Jika ada komentar yang terhapus namun seharusnya tidak, perbaiki BLACKLIST_WORDS atau tambahkan pengecualian pada fungsi is_spam. Selalu lakukan iterasi; spam terus berubah, jadi bot juga harus terus di‑update.
Skalabilitas Lebih Lanjut: Menggabungkan Bot dengan Sistem Lain
1. Menghubungkan Bot ke Sistem Analitik
Data tentang komentar yang di‑delete dapat dikirim ke Google BigQuery atau ke spreadsheet Google Sheets untuk analisis tren spam. Dengan begitu, Anda dapat melihat kata kunci apa yang paling sering muncul dan menyesuaikan filter.
2. Menyediakan Respons Otomatis
Selain menghapus, bot bisa membalas pertanyaan umum secara otomatis, misalnya “Kapan sesi Q&A?” atau “Link materi ada di deskripsi”. Tambahkan endpoint liveChatMessages().insert dengan parameter snippet.type = 'textMessageEvent'.
3. Integrasi dengan CI Pipeline untuk Transcoding
Jika Anda juga meng‑record livestream dan perlu melakukan transcoding otomatis, pertimbangkan untuk menghubungkan bot dengan pipeline CI yang menangani proses tersebut. Baca selengkapnya di Kenapa Perlu CI Pipeline untuk Transcoding? untuk melihat cara mengotomatiskan workflow video pasca‑live.
Dengan kombinasi bot moderasi, analitik, dan respon otomatis, pengalaman penonton akan terasa lebih profesional dan interaktif, sementara Anda tetap dapat fokus pada konten utama.
Semoga panduan ini membantu Anda membangun bot yang handal, aman, dan mudah dikelola lewat GitHub. Selamat mencoba, dan selamat streaming tanpa gangguan komentar tak diinginkan!
