Awesome-openclaw-skills ytmusic-librarian
Manage YouTube Music library, playlists, and discovery via ytmusicapi.
install
source · Clone the upstream repo
git clone https://github.com/sundial-org/awesome-openclaw-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ytmusic-librarian" ~/.claude/skills/sundial-org-awesome-openclaw-skills-ytmusic-librarian && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/ytmusic-librarian" ~/.openclaw/skills/sundial-org-awesome-openclaw-skills-ytmusic-librarian && rm -rf "$T"
manifest:
skills/ytmusic-librarian/SKILL.mdsource content
YTMusic Librarian
This skill uses the
ytmusicapi Python library to interact with YouTube Music.
Prerequisites
- Python 3.x
package:ytmusicapipip install ytmusicapi- Authentication file (
oroauth.json
) in the skill folder.browser.json
Setup Instructions
-
Install the library:
pip install ytmusicapi -
Generate Authentication (The "cURL Handshake"):
- Open Microsoft Edge and visit music.youtube.com (ensure you are logged in).
- Press
to open DevTools, go to the Network tab.F12 - Click your Profile Icon -> Library on the page.
- Look for a request named
in the network list.browse - Right-click the
request -> Copy -> Copy as cURL (bash).browse - Paste that cURL command into a file named
in the skill folder.headers.txt - Run the following Python snippet to generate
:browser.jsonfrom ytmusicapi.auth.browser import setup_browser with open('headers.txt', 'r') as f: setup_browser('browser.json', f.read()) - Ensure
is located in the skill folder.browser.json
-
Verify:
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