Kalau kamu seorang creator konten atau pengelola kanal YouTube, pasti pernah merasa penasaran dengan performa streamingmu: berapa penonton yang menonton, durasi rata‑rata, atau bahkan demografi penonton. Nah, memantau statistik streaming YouTube dengan GitHub API bisa jadi solusi cerdas yang menggabungkan kekuatan YouTube Data API dan otomatisasi yang ditawarkan GitHub. Tanpa harus buka YouTube Studio berulang‑ulang, kamu cukup menyiapkan skrip yang berjalan otomatis di GitHub Actions, lalu hasilnya dapat kamu lihat langsung di repository atau bahkan di halaman GitHub Pages.
Selain menghemat waktu, pendekatan ini juga memberi kamu kontrol penuh atas data yang dikumpulkan. Kamu bisa menyesuaikan metrik apa yang penting, menggabungkan data dengan sistem lain, atau bahkan membuat visualisasi interaktif menggunakan JavaScript di halaman statis. Oh iya, kalau kamu masih bingung bagaimana menghubungkan YouTube dengan GitHub, coba dulu baca artikel Cara Menghubungkan YouTube Live dengan GitHub Actions—itu bakal bantu kamu mengerti dasar‑dasarnya.
Pada artikel ini, kita bakal mengupas tuntas langkah demi langkah mulai dari persiapan API, menulis skrip Python (atau Node.js), mengatur workflow GitHub Actions, sampai menampilkan data statistik di halaman GitHub Pages. Semua dijelaskan dengan bahasa santai, contoh kode yang mudah diikuti, serta tip‑tip praktis yang bisa langsung kamu terapkan.
Mengapa Memilih GitHub API untuk Statistik YouTube?
Sebelum terjun ke kode, penting untuk memahami keunggulan menggunakan GitHub sebagai “backend” sederhana untuk mengumpulkan data streaming YouTube. Berikut beberapa alasan utama:
- Automatisasi Tanpa Server: GitHub Actions menjalankan workflow di cloud GitHub, jadi kamu nggak perlu mengelola server sendiri.
- Keamanan Terintegrasi: Secrets di repo GitHub dapat menyimpan API Key YouTube dengan aman.
- Version Control: Semua skrip dan hasil data tersimpan dalam repository, memudahkan audit dan kolaborasi.
- Integrasi dengan GitHub Pages: Data yang sudah diproses dapat langsung ditampilkan di situs statis yang di‑host gratis.
Keuntungan Praktis untuk Creator
Dengan pipeline otomatis, kamu bisa menjadwalkan pengambilan data setiap jam atau setiap selesai streaming. Hasilnya? Laporan real‑time yang bisa kamu bagikan ke tim atau bahkan ke penonton lewat overlay grafik. Ini bukan cuma gimmick—banyak brand dan agensi sudah pakai teknik serupa untuk mengukur ROI kampanye video mereka.
Langkah 1: Persiapan API YouTube dan GitHub Repository
Langkah pertama tentu saja menyiapkan akses ke YouTube Data API. Ikuti langkah berikut:
- Buka Google Cloud Console dan buat project baru.
- Aktifkan YouTube Data API v3 pada project tersebut.
- Buat API key atau OAuth 2.0 client ID. Untuk keperluan statistik publik, API key biasanya cukup.
- Catat API key tersebut; nanti akan dimasukkan ke
GitHub Secrets.
Selanjutnya, buat repository baru di GitHub (misalnya youtube-stats-monitor). Di dalam repo ini, aktifkan GitHub Actions dan buat folder .github/workflows untuk menyimpan file workflow YAML.
Mengamankan API Key dengan GitHub Secrets
Masuk ke Settings → Secrets and variables → Actions → New repository secret. Tambahkan secret dengan nama YOUTUBE_API_KEY dan isi dengan API key yang tadi kamu dapatkan. Dengan cara ini, kode kamu tidak pernah menuliskan kunci secara plain‑text.
Langkah 2: Menulis Skrip Pengambil Data
Kita akan pakai Python karena library google-api-python-client sudah sangat matang. Namun, kalau kamu lebih nyaman dengan Node.js, kamu bisa pakai googleapis—prinsipnya tetap sama.
Contoh Skrip Python (fetch_youtube_stats.py)
import os
import json
from googleapiclient.discovery import build
from datetime import datetime, timedelta
# Ambil API key dari environment variable (GitHub Secrets)
API_KEY = os.getenv('YOUTUBE_API_KEY')
CHANNEL_ID = 'UCxxxxxxxxxxxxxxxxxxxx' # Ganti dengan ID channel kamu
def get_live_broadcasts():
youtube = build('youtube', 'v3', developerKey=API_KEY)
# Cari broadcast yang masih live atau baru selesai dalam 24 jam terakhir
now = datetime.utcnow().isoformat("T") + "Z"
yesterday = (datetime.utcnow() - timedelta(days=1)).isoformat("T") + "Z"
request = youtube.search().list(
part="id,snippet",
channelId=CHANNEL_ID,
eventType="live",
type="video",
publishedAfter=yesterday,
publishedBefore=now
)
response = request.execute()
return response.get('items', [])
def get_statistics(video_id):
youtube = build('youtube', 'v3', developerKey=API_KEY)
request = youtube.videos().list(
part="statistics,liveStreamingDetails",
id=video_id
)
response = request.execute()
if response['items']:
return response['items'][0]
return None
def main():
live_videos = get_live_broadcasts()
stats = []
for item in live_videos:
video_id = item['id']['videoId']
detail = get_statistics(video_id)
if detail:
stats.append({
'videoId': video_id,
'title': item['snippet']['title'],
'viewCount': detail['statistics'].get('viewCount', 0),
'likeCount': detail['statistics'].get('likeCount', 0),
'commentCount': detail['statistics'].get('commentCount', 0),
'concurrentViewers': detail['liveStreamingDetails'].get('concurrentViewers', 0),
'startedAt': detail['liveStreamingDetails'].get('actualStartTime')
})
# Simpan ke file JSON di repo
output_path = os.path.join('data', f'stats_{datetime.utcnow().strftime("%Y%m%d%H%M")}.json')
os.makedirs('data', exist_ok=True)
with open(output_path, 'w') as f:
json.dump(stats, f, indent=2)
if __name__ == '__main__':
main()
Script di atas melakukan tiga hal utama:
- Mencari video live yang terjadi dalam 24 jam terakhir.
- Mengambil statistik lengkap (view, like, komentar, penonton bersamaan).
- Menyimpan hasil ke folder
datadalam format JSON yang mudah dibaca.
Tips Penggunaan
- Jika kanal kamu memiliki banyak live, pertimbangkan pagination untuk menghindari limit quota.
- Gunakan
fieldspada request untuk hanya mengambil data yang diperlukan, sehingga menghemat kuota API. - Simpan timestamp di nama file supaya kamu dapat melacak perubahan statistik dari waktu ke waktu.
Langkah 3: Membuat Workflow GitHub Actions
Berikut contoh file .github/workflows/monitor.yml yang menjalankan skrip Python setiap jam.
name: Monitor YouTube Live Stats
on:
schedule:
- cron: '0 * * * *' # Setiap jam tepat 00 menit
workflow_dispatch: # Memungkinkan pemicu manual
jobs:
fetch-stats:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install google-api-python-client
- name: Run fetch script
env:
YOUTUBE_API_KEY: ${{ secrets.YOUTUBE_API_KEY }}
run: python fetch_youtube_stats.py
- name: Commit & push JSON data
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "Update YouTube stats $(date +'%Y-%m-%d %H:%M')"
file_pattern: data/*.json
Workflow di atas akan:
- Checkout kode repo.
- Menginstall Python dan library yang diperlukan.
- Menjalankan skrip
fetch_youtube_stats.pydengan API key yang disimpan di secret. - Commit file JSON hasil ke repository secara otomatis.
Bagaimana Menyambungkan ke GitHub Pages?
Jika kamu ingin menampilkan statistik secara visual, cukup aktifkan GitHub Pages pada branch main (atau folder docs). Kemudian buat halaman HTML/JS yang memuat file JSON terbaru menggunakan fetch API. Contoh sederhana dapat kamu temukan di artikel Mengapa Memilih GitHub Pages untuk Landing Page Streaming?.
Langkah 4: Visualisasi Data dengan Chart.js
Berikut contoh file index.html yang menampilkan grafik penonton bersamaan (concurrent viewers) dalam 24 jam terakhir.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Statistik Live YouTube</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<h1>Statistik Live YouTube (24 jam terakhir)</h1>
<canvas id="viewChart" ></canvas>
<script>
async function loadLatestJSON() {
// Ambil daftar file di folder data via GitHub API (public repo)
const resp = await fetch('https://api.github.com/repos/USERNAME/youtube-stats-monitor/contents/data');
const files = await resp.json();
// Pilih file terbaru berdasarkan nama (format stats_YYYYMMDDHHMM.json)
const latest = files.sort((a,b) => b.name.localeCompare(a.name))[0];
const dataResp = await fetch(latest.download_url);
return await dataResp.json();
}
async function renderChart() {
const stats = await loadLatestJSON();
const labels = stats.map(s => s.title);
const viewers = stats.map(s => parseInt(s.concurrentViewers) || 0);
const ctx = document.getElementById('viewChart').getContext('2d');
new Chart(ctx, {
type: 'bar',
data: {
labels: labels,
datasets: [{
label: 'Penonton Bersamaan',
data: viewers,
backgroundColor: 'rgba(54, 162, 235, 0.6)'
}]
},
options: {
responsive: true,
scales: {
y: { beginAtZero: true }
}
}
});
}
renderChart();
</script>
</body>
</html>
Catatan penting:
- Ganti
USERNAMEdengan nama pengguna atau organisasi GitHub kamu. - Jika repositori private, kamu perlu menambahkan token akses pada header fetch atau menyimpan JSON di tempat publik.
- Chart.js memberikan banyak tipe grafik; kamu bisa bereksperimen dengan line chart untuk view count atau pie chart untuk distribusi demografis (jika data tersedia).
Tips Desain Dashboard
- Gunakan warna kontras untuk membedakan tiap metrik.
- Tambahkan tooltip yang menampilkan detail seperti tanggal mulai streaming.
- Jika ingin tampilan lebih profesional, pertimbangkan Rahasia Integrasi OBS Studio dengan GitHub untuk menampilkan grafik langsung di overlay streaming.
Langkah 5: Mengelola Kuota API dan Optimasi
YouTube Data API memiliki kuota harian (biasanya 10.000 unit). Setiap request memiliki “cost” tertentu. Misalnya, search.list dengan parameter minimal menghabiskan 100 unit, sementara videos.list dengan fields spesifik bisa hanya 2 unit.
Strategi Penghematan Kuota
- Pilih Fields yang Dibutuhkan: Tambahkan parameter
fields=items(id,statistics(viewCount,likeCount),liveStreamingDetails(concurrentViewers))pada requestvideos.list. - Cache Hasil: Simpan respons pertama dalam file JSON, lalu gunakan data cached untuk pemrosesan selanjutnya dalam hari yang sama.
- Batch Request: Jika kamu memonitor banyak video, gunakan
videos.listdengan beberapa ID sekaligus (maks 50 ID per request).
Menggunakan Quota Monitor
Tambahkan langkah tambahan di workflow untuk memanggil endpoint quota Google Cloud dan mengirim notifikasi ke Slack atau email bila penggunaan mendekati limit. Ini membantu menghindari kegagalan tak terduga pada malam hari.
Studi Kasus: Channel Gaming dengan 3 Streaming per Hari
Anggap kamu mengelola channel gaming yang mengadakan tiga sesi live setiap hari (pagi, siang, malam). Dengan setup di atas, kamu dapat:
- Menjadwalkan workflow setiap 30 menit (cron: ‘*/30 * * * *’) untuk mendapatkan data real‑time.
- Menghasilkan tiga file JSON per hari, masing‑masing berisi statistik lengkap.
- Menggabungkan tiga file tersebut menjadi satu rangkuman harian menggunakan script sederhana yang dijalankan pada malam hari.
- Menampilkan rangkuman harian di GitHub Pages sebagai “Daily Dashboard”.
Dengan visualisasi yang tepat, kamu dapat dengan cepat melihat pola puncak penonton, mengidentifikasi jam paling efektif, dan menyesuaikan jadwal streaming selanjutnya. Semua tanpa meninggalkan editor kode kamu.
Integrasi dengan CI/CD Lain
Jika kamu memakai pipeline CI/CD lain seperti Jenkins atau GitLab CI, prinsipnya tetap sama: ambil data lewat YouTube API, simpan ke storage, dan publikasikan. Namun, GitHub Actions menawarkan kemudahan karena semua berada dalam satu ekosistem (repo, secret, pages).
Penutup: Mulai Eksperimen dan Kembangkan Lebih Lanjut
Setelah membaca panduan ini, kamu sudah memiliki fondasi kuat untuk memantau statistik streaming YouTube secara otomatis menggunakan GitHub API. Mulailah dengan menyiapkan API key, buat repository, dan deploy workflow pertama. Jangan ragu untuk mengkustomisasi metrik yang ingin dipantau, menambah notifikasi, atau menggabungkan data dengan alat analitik lain seperti Google Data Studio.
Ingat, kunci keberhasilan adalah konsistensi dan iterasi. Pantau kuota API, perbaiki script bila ada perubahan pada struktur respons YouTube, dan terus tingkatkan tampilan dashboard supaya semakin informatif. Siapa tahu, dalam beberapa minggu ke depan kamu akan memiliki insight yang dapat meningkatkan engagement penonton hingga 30 %!
Selamat mencoba, dan semoga statistikmu selalu naik seperti grafik di Chart.js! 🚀