Siapa yang tidak pernah merasa kesal karena harus mengedit playlist YouTube satu per satu lewat antarmuka web? Nah, kalau kamu ingin cara yang lebih rapi, terkontrol, dan bisa versioning, mengelola playlist lewat file YAML di GitHub adalah jawabannya. Dengan pendekatan ini, kamu bisa menambahkan, menghapus, atau mengubah urutan video hanya dengan mengedit teks, lalu biarkan proses otomatis meng‑update playlist kamu di YouTube.
Keyword utama artikel ini adalah mengelola playlist YouTube lewat file YAML di GitHub. Menggabungkan kekuatan YAML yang mudah dibaca dengan kekuatan GitHub untuk kolaborasi dan otomatisasi membuat alur kerja menjadi lebih terstruktur. Bahkan kalau kamu belum terlalu mengerti API YouTube, tidak usah khawatir—kami akan membahas semua langkahnya secara santai, lengkap dengan contoh kode dan tip praktis.
Selain itu, artikel ini juga akan menyinggung beberapa integrasi lain yang sudah banyak dibahas di blog kami, seperti cara mengatur thumbnail otomatis YouTube lewat GitHub Actions atau cara cerdas upload video ke YouTube pakai Python & GitHub Actions. Jadi, siap‑siap catat, ya!
Kenapa Pakai YAML untuk Playlist?
Mudah Dibaca dan Ditulis
YAML (YAML Ain’t Markup Language) memang dirancang supaya manusia bisa membacanya tanpa harus menebak‑tebakan. Struktur indentasinya yang sederhana membuat daftar video, judul, dan urutan menjadi jelas. Misalnya, satu entry playlist hanya butuh tiga baris:
- video_id: dQw4w9WgXcQ
title: "Never Gonna Give You Up"
position: 1
Bandingkan dengan JSON yang penuh kurung kurawal atau XML yang berlapis‑lapis; YAML terasa lebih “kasual” untuk developer atau content creator yang tidak terlalu suka syntax ribet.
Version Control Tanpa Drama
Dengan menyimpan file YAML di GitHub, setiap perubahan tercatat di commit history. Jadi kalau tiba‑tiba ada video yang salah masuk atau urutan berubah, kamu tinggal revert ke versi sebelumnya. Kolaborasi pun jadi lebih mudah: teman tim bisa mengirim pull request untuk menambah video baru, sambil memberi komentar langsung di baris yang diubah.
Integrasi Mudah dengan CI/CD
GitHub Actions dapat memicu skrip setiap kali ada perubahan pada file YAML. Artinya, setelah kamu meng‑push perubahan, action otomatis memanggil YouTube Data API untuk memperbarui playlist di sisi YouTube. Tidak perlu lagi login ke dashboard, cukup “push‑and‑go”.
Membuat Repository dan Menyiapkan File YAML
Langkah 1: Buat Repository Baru
Masuk ke GitHub, klik tombol “New repository”, beri nama youtube-playlist-manager (atau nama lain yang kamu suka). Pastikan repository bersifat public atau private sesuai kebutuhan, lalu inisialisasi dengan file README.md dan .gitignore (tambahkan *.pyc jika kamu pakai Python).
Langkah 2: Tambahkan File playlist.yml
Di dalam repository, buat folder config dan letakkan file playlist.yml. Struktur dasarnya:
playlist:
- video_id: dQw4w9WgXcQ
title: "Never Gonna Give You Up"
position: 1
- video_id: 9bZkp7q19f0
title: "Gangnam Style"
position: 2
# Tambahkan video lain di sini
Gunakan editor di GitHub atau kloning repository ke laptop dan edit dengan editor favoritmu. Pastikan setiap entry memiliki video_id (ID video YouTube), title (opsional, tapi membantu dokumentasi), dan position yang menentukan urutan di playlist.
Langkah 3: Simpan dan Commit
Setelah menambah atau mengubah entri, lakukan commit dengan pesan yang jelas, misalnya “Add new video: Gangnam Style”. Jika kamu bekerja dalam tim, buat branch terpisah, push, dan ajukan pull request. Semua perubahan akan terdokumentasi di git log.
Menghubungkan YAML ke API YouTube
Persiapan API Key dan OAuth 2.0
Untuk dapat meng‑update playlist secara programatik, kamu membutuhkan kredensial Google Cloud. Ikuti langkah berikut:
- Buka Google Cloud Console dan buat project baru.
- Aktifkan YouTube Data API v3 pada project tersebut.
- Buat OAuth 2.0 client ID (pilih “Desktop app” atau “Web application” sesuai kebutuhan).
- Unduh file
client_secret.jsondan simpan di repository (atau lebih aman, gunakan GitHub Secrets).
Jangan lupa menambahkan scope https://www.googleapis.com/auth/youtube supaya script kamu bisa menulis ke playlist.
Script Python yang Membaca YAML
Berikut contoh skrip sederhana update_playlist.py yang akan membaca playlist.yml dan meng‑sync ke YouTube:
import yaml
import os
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
# 1. Load file YAML
with open('config/playlist.yml', 'r') as f:
data = yaml.safe_load(f)
playlist_items = data['playlist']
# 2. OAuth2 flow (gunakan token yang disimpan di token.json)
SCOPES = ['https://www.googleapis.com/auth/youtube']
flow = InstalledAppFlow.from_client_secrets_file(
'client_secret.json', SCOPES)
credentials = flow.run_console()
youtube = build('youtube', 'v3', credentials=credentials)
# 3. Dapatkan ID playlist (buat dulu di YouTube & catat ID-nya)
PLAYLIST_ID = os.getenv('YOUTUBE_PLAYLIST_ID')
# 4. Hapus semua item lama (opsional, tergantung strategi)
def clear_playlist():
request = youtube.playlistItems().list(
part='id',
playlistId=PLAYLIST_ID,
maxResults=50
)
while request:
response = request.execute()
for item in response['items']:
youtube.playlistItems().delete(id=item['id']).execute()
request = youtube.playlistItems().list_next(request, response)
clear_playlist()
# 5. Tambah item baru sesuai urutan di YAML
for item in sorted(playlist_items, key=lambda x: x['position']):
youtube.playlistItems().insert(
part='snippet',
body={
'snippet': {
'playlistId': PLAYLIST_ID,
'resourceId': {
'kind': 'youtube#video',
'videoId': item['video_id']
},
'position': item['position'] - 1 # API zero‑based
}
}
).execute()
print('Playlist berhasil diperbarui!')
Script di atas melakukan tiga hal utama: membaca YAML, membersihkan playlist lama (jika diperlukan), dan menambahkan video sesuai urutan yang ditentukan. Kamu bisa menyesuaikan logika clear_playlist() kalau ingin melakukan “diff” alih‑alih hapus‑tambah total.
Menjaga Kredensial dengan GitHub Secrets
Agar tidak menaruh client_secret.json di repo publik, gunakan GitHub Secrets. Pada halaman repository, pilih Settings → Secrets and variables → Actions, lalu buat secret dengan nama YOUTUBE_CLIENT_SECRET. Di dalam workflow, kamu dapat menuliskan file sementara menggunakan langkah echo "$YOUTUBE_CLIENT_SECRET" > client_secret.json.
Automasi dengan GitHub Actions
Workflow Dasar
Buat file .github/workflows/update_playlist.yml dengan isi seperti berikut:
name: Update YouTube Playlist
on:
push:
paths:
- 'config/playlist.yml'
jobs:
sync:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
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 pyyaml google-auth google-auth-oauthlib google-api-python-client
- name: Write client secret
env:
YOUTUBE_CLIENT_SECRET: ${{ secrets.YOUTUBE_CLIENT_SECRET }}
run: |
echo "$YOUTUBE_CLIENT_SECRET" > client_secret.json
- name: Run sync script
env:
YOUTUBE_PLAYLIST_ID: ${{ secrets.YOUTUBE_PLAYLIST_ID }}
run: python update_playlist.py
Workflow ini akan terpicu setiap kali ada perubahan pada config/playlist.yml. Ia akan menyiapkan environment Python, meng‑install dependency, menuliskan secret ke file, lalu menjalankan skrip yang telah kita bahas sebelumnya.
Menggunakan GitHub Actions untuk Notifikasi
Supaya kamu atau tim tahu apakah proses berhasil, tambahkan langkah notifikasi Slack atau Discord di akhir workflow. Contoh singkat:
- name: Send Discord notification
uses: appleboy/discord-action@v1
with:
webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }}
webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
message: "✅ Playlist YouTube berhasil diperbarui pada ${{ github.sha }}"
Dengan begitu, setiap update otomatis akan langsung memberi tahu lewat channel yang kamu pilih.
Tips dan Trik Praktis
Gunakan Alias untuk Video ID
Kalau kamu sering menambah video dari channel tertentu, buat sebuah file aliases.yml yang memetakan nama alias ke ID video. Misalnya:
aliases:
intro: dQw4w9WgXcQ
tutorial: 9bZkp7q19f0
Lalu dalam playlist.yml, kamu bisa menuliskan video_id: !ref intro dengan bantuan library ruamel.yaml yang mendukung tag kustom. Ini mengurangi typo dan mempercepat penulisan.
Batch Update untuk Playlist Besar
YouTube API membatasi maksimal 50 item per request. Jika playlist kamu punya ratusan video, pastikan skrip membagi batch secara otomatis. Di contoh script sebelumnya, fungsi clear_playlist() dan insert sudah mematuhi batas, namun kamu dapat menambah logika while len(batch) < 50 untuk efisiensi.
Integrasi dengan Repo Lain
Kalau kamu memiliki repositori terpisah untuk konten video (misalnya repo yang berisi metadata video dalam format CSV), kamu bisa menambahkan langkah di GitHub Actions yang meng‑convert CSV ke YAML sebelum menjalankan skrip utama. Ini berguna bila tim konten meng‑upload file CSV tiap minggu.
Pengujian Lokal Sebelum Push
Sebelum men‑push perubahan ke GitHub, jalankan skrip secara lokal dengan python update_playlist.py. Pastikan variabel lingkungan YOUTUBE_PLAYLIST_ID sudah diset, misalnya:
export YOUTUBE_PLAYLIST_ID=PLxxxxxxxxxxxxxx
python update_playlist.py
Jika ada error, biasanya terkait autentikasi atau format YAML yang tidak valid. Kamu bisa menggunakan yamllint untuk memeriksa sintaks.
Contoh Implementasi di Proyek Besar
Jika kamu ingin melihat contoh repository yang sudah mengimplementasikan konsep ini, kunjungi contoh repository GitHub untuk proyek streaming YouTube berbasis React. Di sana, file playlist.yml dipadukan dengan front‑end React yang menampilkan playlist secara real‑time.
Dengan semua langkah di atas, mengelola playlist YouTube menjadi semudah meng‑edit file teks. Kamu tidak perlu lagi masuk ke dashboard YouTube, men‑drag‑drop video secara manual, atau khawatir kehilangan histori perubahan. Seluruh proses dapat dipantau lewat commit, pull request, dan log GitHub Actions, memberikan transparansi dan kontrol penuh.
Jadi, mulailah sekarang: buat repo, susun playlist.yml pertama kamu, dan biarkan GitHub Actions melakukan sisanya. Selamat ber‑automation, dan semoga playlist kamu selalu teratur seperti playlist musik favorit!