home / skills / openclaw / skills / ytmusic

This skill helps you manage YouTube Music libraries and playlists programmatically using ytmusicapi for discovery and organization.

npx playbooks add skill openclaw/skills --skill ytmusic

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
1.9 KB
---
name: ytmusic-librarian
description: Manage YouTube Music library, playlists, and discovery via ytmusicapi.
---

# YTMusic Librarian

This skill uses the `ytmusicapi` Python library to interact with YouTube Music.

## Prerequisites

- Python 3.x
- `ytmusicapi` package: `pip install ytmusicapi`
- Authentication file (`oauth.json` or `browser.json`) in the skill folder.

## Setup Instructions

1. **Install the library:**
   ```bash
   pip install ytmusicapi
   ```

2. **Generate Authentication (The "cURL Handshake"):**
   - Open **Microsoft Edge** and visit [music.youtube.com](https://music.youtube.com) (ensure you are logged in).
   - Press `F12` to open DevTools, go to the **Network** tab.
   - Click your **Profile Icon -> Library** on the page.
   - Look for a request named `browse` in the network list.
   - **Right-click** the `browse` request -> **Copy -> Copy as cURL (bash)**.
   - Paste that cURL command into a file named `headers.txt` in the skill folder.
   - Run the following Python snippet to generate `browser.json`:
     ```python
     from ytmusicapi.auth.browser import setup_browser
     with open('headers.txt', 'r') as f:
         setup_browser('browser.json', f.read())
     ```
   - Ensure `browser.json` is located in the skill folder.

3. **Verify:**
   ```bash
   python -c "from ytmusicapi import YTMusic; yt = YTMusic('browser.json'); print(yt.get_library_songs(limit=1))"
   ```

## Workflows

### Library Management
- List songs/albums: `yt.get_library_songs()`, `yt.get_library_albums()`
- Add/Remove: `yt.rate_song(videoId, 'LIKE')`, `yt.edit_song_library_status(feedbackToken)`

### Playlist Management
- Create: `yt.create_playlist(title, description)`
- Add Tracks: `yt.add_playlist_items(playlistId, [videoIds])`
- Remove Tracks: `yt.remove_playlist_items(playlistId, [videoIds])`

### Metadata & Discovery
- Get Lyrics: `yt.get_lyrics(browseId)`
- Get Related: `yt.get_watch_playlist(videoId)` -> `related`

Overview

This skill manages a YouTube Music library, playlists, and discovery features using the ytmusicapi Python client. It automates common tasks like listing library items, creating and editing playlists, and fetching metadata such as lyrics and related tracks. It requires a browser-authentication file to operate against your account.

How this skill works

The skill uses ytmusicapi to talk to YouTube Music endpoints via an authentication file (browser.json or oauth.json) exported from a logged-in browser. It exposes functions to list library songs and albums, like or unlike tracks, create and modify playlists, and request metadata like lyrics and related play queue. Actions are executed by calling specific ytmusicapi methods (for example, get_library_songs, create_playlist, add_playlist_items).

When to use it

  • Backup or audit your YouTube Music library contents
  • Batch-create, populate, or clean up playlists
  • Automate liking or unliking tracks and managing library status
  • Fetch lyrics and discover related tracks for metadata tasks
  • Integrate YouTube Music data into a personal music catalog or archive

Best practices

  • Generate authentication via a secure browser export and store browser.json only on trusted machines
  • Test read-only calls (like get_library_songs) before running write operations (create_playlist, add/remove items)
  • Run operations in small batches and verify playlist IDs and item IDs to avoid accidental changes
  • Keep ytmusicapi up to date and pin versions in your environment to avoid breaking changes
  • Log actions and keep a local backup of playlist and library exports before bulk edits

Example use cases

  • Export all library songs for an archival backup or migration
  • Create themed playlists programmatically and populate them with video IDs from searches or existing lists
  • Remove duplicates or unwanted tracks from multiple playlists in a single script run
  • Fetch lyrics and related tracks to build discovery feeds or recommended playlists
  • Automate liking a curated set of tracks to seed YouTube Music recommendations

FAQ

What authentication file is required?

A browser-based auth file such as browser.json (created from a copied browse request headers) or oauth.json is required and must be present in the working folder.

Do I need to run in a browser to authenticate?

Yes—generate the authentication headers from a logged-in browser (DevTools network cURL) and convert them to browser.json using ytmusicapi helper utilities.

Can this edit my playlists and likes?

Yes—write methods like create_playlist, add_playlist_items, remove_playlist_items, and rate_song will modify your account. Test carefully and back up data first.