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.md
source content

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:

    pip install ytmusicapi
    
  2. Generate Authentication (The "cURL Handshake"):

    • Open Microsoft Edge and visit 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
      :
      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:

    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