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 ytmusicReview the files below or copy the command above to add this skill to your agents.
---
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`
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.
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).
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.