Music Recommender

v1.0.0

Analyze NetEase Cloud Music (网易云音乐) playlist and recommend songs matching their taste. Use when user asks for music recommendations, wants a daily playlist,...

0· 113·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for geekfoxcharlie/music-recommender.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Music Recommender" (geekfoxcharlie/music-recommender) from ClawHub.
Skill page: https://clawhub.ai/geekfoxcharlie/music-recommender
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install music-recommender

ClawHub CLI

Package manager switcher

npx clawhub@latest install music-recommender
Security Scan
VirusTotalVirusTotal
Pending
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the included scripts: fetch_playlist.py queries NetEase, analyze_taste.py profiles tracks, search_bilibili.py finds Bilibili links, and history.py manages local daily history. No unrelated credentials, binaries, or external services are required.
Instruction Scope
SKILL.md instructs the agent to run the provided scripts, query NetEase and Bilibili APIs, and read/write history files under ~/.openclaw/workspace/music-history. That is within the skill's scope. Minor scope mismatch: SKILL.md mentions offering to write to Notion (and other external saves) but there is no Notion integration code or required env vars in the package—this is an unimplemented optional feature and should not be assumed available.
Install Mechanism
Instruction-only skill with bundled scripts; no installer, downloads, or archive extraction. Scripts run directly with the system Python interpreter. No high-risk install behavior detected.
Credentials
The skill requests no environment variables or credentials. It performs unauthenticated HTTP GETs to public NetEase and Bilibili endpoints (using a static Cookie header fragment for NetEase). This is proportional to its stated functionality. Note: network access will expose playlist metadata and search queries to those external services.
Persistence & Privilege
The skill writes and reads JSON files under ~/.openclaw/workspace/music-history to enforce daily recommendations and de-duplication. This is expected for the feature but means recommendation history is stored unencrypted in the user's home directory. always is false and the skill does not modify other skills or system-wide settings.
Assessment
This skill appears to do what it says: it fetches a NetEase playlist, analyzes it, searches Bilibili for playable links, and saves daily recommendations locally. Before installing, be aware it will: (1) make outbound requests to music.163.com and api.bilibili.com, (2) create/read/write files at ~/.openclaw/workspace/music-history (clear-text JSON), and (3) has an unimplemented mention of Notion saving (no credentials or code provided). If you are comfortable with those network calls and local files, the skill is coherent. If you want to limit data exposure, run it in an environment with controlled network access or inspect/modify the scripts (they are plain Python) to change the history path or disable saving.

Like a lobster shell, security has layers — review code before you run it.

latestvk97cvm2s6mmqpg0q894xpr07xh842p77
113downloads
0stars
1versions
Updated 3w ago
v1.0.0
MIT-0

Music Recommender

Analyze a user's NetEase Cloud Music playlist, profile their taste, and recommend songs with clickable Bilibili links (free, no membership required).

Workflow

Step 1 — Parse Playlist

Extract playlist ID from user's link. Supported formats:

  • https://music.163.com/playlist?id=XXXXX
  • https://music.163.com/#/playlist?id=XXXXX

Run the fetch script:

python3 {baseDir}/scripts/fetch_playlist.py <playlist_id> > /tmp/playlist_<id>.json

Output: JSON array of {name, artists, album} objects.

Step 2 — Analyze Taste

Read the JSON output. Profile the user's taste:

  1. Top artists — count occurrences, identify top 10-20
  2. Language mix — estimate Chinese/English/Japanese/Korean ratio from song titles
  3. Genre tags — infer from artists and song names (e.g. 气声唱法, 90s怀旧, indie folk, dream pop)
  4. Era — identify decade distribution
  5. Mood — upbeat/melancholic/dreamy/energetic based on song names and artists

Summarize the taste profile in 3-5 bullet points.

Step 3 — Recommend

Based on the taste profile, recommend 10 songs that:

  • Match the user's preferences (similar artists, genres, mood)
  • Are NOT already in their playlist
  • Are diverse — mix of Chinese and foreign, different sub-genres
  • Include both well-known and lesser-known picks

For each recommended song, search Bilibili for a playable link:

python3 {baseDir}/scripts/search_bilibili.py "<artist> <song> 官方MV"

Output: BV_ID|TITLE|URL

Step 4 — Format Output

Present the recommendations as a plain text list (NOT HTML/markdown links) for Telegram compatibility:

🎵 Vulpis 今日推荐歌单

**华语女声:**
1. 陈粒 — 奇妙能力歌
https://www.bilibili.com/video/BVxxxxx

2. ...

**欧美梦幻:**
6. ...

Rules for Telegram formatting:

  • Use bold for section headers, NOT markdown links [text](url)
  • Put URL on its own line after the song name
  • Group by genre/language (华语/欧美/日语 etc.)
  • Keep descriptions short (5-10 words)

Step 5 — Record & De-duplicate

IMPORTANT: Only recommend ONCE per day. Before recommending:

  1. Check if today's recommendation file exists:

    ~/.openclaw/workspace/music-history/YYYY-MM-DD.json
    

    If it exists, reply with today's list and say "今天已经推荐过了". Do NOT generate a new one.

  2. If not, load the full history to avoid repeats:

    python3 {baseDir}/scripts/history.py show
    

    This outputs all previously recommended songs across all days.

  3. When generating recommendations, exclude any song that appears in the history.

  4. After generating, save today's recommendations:

    python3 {baseDir}/scripts/history.py save
    

    Pipe in JSON array: [{"name":"...","artists":"...","bvid":"...","url":"..."}]

History Storage

~/.openclaw/workspace/music-history/
├── 2026-03-29.json
├── 2026-03-30.json
└── ...

Each file: JSON array of recommended songs for that day.

Step 6 — (Optional) Extra Save

If user wants to save elsewhere, offer to:

  • Write to Notion (Content Calendar or a Music DB)
  • Generate an HTML page in the workspace
  • Create a text file in the workspace

Notes

  • NetEase API endpoint: https://music.163.com/api/v6/playlist/detail?id=<ID>&n=1000
  • Required headers: User-Agent: Mozilla/5.0, Referer: https://music.163.com/, Cookie: os=pc;
  • Artist field is ar (not artists) in NetEase API response
  • Bilibili search API: https://api.bilibili.com/x/web-interface/search/all/v2?keyword=<query>
  • Required headers for Bilibili: User-Agent: Mozilla/5.0, Referer: https://www.bilibili.com/
  • Default recommendation count: 10 songs
  • Always use Bilibili links (free, no membership) instead of NetEase links

Comments

Loading comments...