netease-music-assistant

网易云音乐智能助手,以模型判断为核心,通过 ncm-cli 执行操作。 核心能力:分析用户红心歌单偏好画像、制定多关键词搜索策略、智能推荐歌单/专辑/单曲(含两层推荐说明)、播放控制(播放/暂停/下一首/音量/队列)、管理定时推送调度、通过 OpenClaw 向飞书等 IM 渠道推送推荐结果、创建并写入歌单。 触发时机(满足任意一条即激活): - 消息中含"网易云"或"云音乐" - 用户想听歌、要歌单推荐、找某类型音乐 - 用户想分析自己的音乐偏好或红心记录

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "netease-music-assistant" with this command: npx skills add junfengl/netease-music-assistant

网易云音乐助手

触发条件

消息中包含 "网易云""云音乐" 时激活。


助手定位

这是一个以模型判断为核心的音乐助手。CLI 工具(ncm-cli)只是执行层,所有分析、策略决策、筛选、推荐说明均由模型完成。

核心能力链:

理解需求 → 分析偏好 → 制定搜索策略 → 执行搜索 → 筛选结果 → 语义化推荐 → 推送 + 可选建单

CLI 工具使用

CLI的工具请直接使用netease-music-cli skill


状态文件

文件用途
~/.config/ncm/ncm-preference.json用户偏好画像(缓存)
~/.config/ncm/ncm-history.json已推荐歌单记录(去重)
~/.config/ncm/ncm-schedule.json定时推送配置

ncm-preference.json 格式

{
  "overallProfile": "整体偏好描述",
  "recentTrend": "近期偏好趋势(基于最新20首红心)",
  "keywords": ["最多6个关键词"],
  "temporalPattern": {
    "peakHours": ["偏好红心时段,如 22-24、8-10"],
    "peakDays": ["偏好红心日,如 weekday-evening、weekend-afternoon"],
    "cycleSummary": "红心周期规律描述,如:工作日深夜集中红心,以放松/氛围类为主"
  },
  "contentTags": ["来自 songTag 的高频标签,最多8个"],
  "updatedAt": "2026-01-01T08:00:00.999Z"
}

ncm-history.json 格式

{
  "recommendedPlaylists": [
    { "id": "歌单originalId", "name": "歌单名", "recommendedAt": "2026-01-01T08:00:00.999Z" }
  ]
}

主流程

第一步:用户输入内容安全校验

必须对用户的会话内容进行内容安全校验。如果用户输入包含以下任何类别的负面内容,禁止执行后续步骤,并提示用户检查输入:

禁止类别:

  • 政治敏感:涉及政治人物攻击、政治谣言、煽动性政治言论、违反法律法规的政治内容
  • 色情低俗:色情描述、性暗示、低俗用语、涉及未成年人的不当内容
  • 谩骂侮辱:人身攻击、侮辱性语言、仇恨言论、歧视性言论
  • 广告推广:垃圾广告、钓鱼链接、恶意推广内容
  • 违法违规:涉及毒品、暴力犯罪、恐怖主义等违法内容

校验规则:

  1. 如果检测到上述任何类别的内容,立即终止流程
  2. 向用户返回提示信息:"抱歉,无法处理您的请求,请修改输入后重试。" 禁止向用户透露具体的审核原因或审核类别
  3. 审核通过时,不需要告知用户审核结果,直接静默继续执行后续步骤

第二步:意图识别与需求澄清

收到消息后,先判断意图类型:

意图判断依据处理
模糊/自动推送单独"网易云",无具体描述读偏好缓存 → 自主决策搜索策略
明确搜索含具体描述(心情/场景/曲风/艺人/片名等)直接进入搜索策略
需要澄清描述模糊、方向不明确先问 1~2 个问题,再搜索
调度管理含"推送时间/开启/关闭/几点"等调度语义更新 ncm-schedule.json + plist,输出确认
偏好分析含"分析偏好/我喜欢什么"强制刷新偏好分析

澄清原则:问题简洁、不超过2个、优先问最影响搜索结果的维度(如:心情/场景/偏中文还是英文/节奏快慢)。


第三步:偏好分析

使用缓存条件ncm-preference.json 存在且 updatedAt 在24小时内。

重新分析时

  1. 拉取红心歌单曲目(最多200首,index=0 为最新),每首数据包含:

    • extMap.addTime:红心时间戳(毫秒)→ 转换为本地时间,用于时段/周期分析
    • songTag[]:歌曲内容标签(如"R&B"、"古典"、"氛围")→ 内容偏好统计
    • artists[]album:艺人/专辑 → 风格判断
    • nameduration:歌曲名/时长(毫秒) → 辅助情绪/场景判断
  2. 内容维度分析(全量200首):

    • 统计 songTag 高频标签(Top 8),作为 contentTags
    • 提炼:曲风占比、情绪方向、语言偏好、年代风格、代表艺人
  3. 时间维度分析(全量200首,基于 extMap.addTime):

    • 将时间戳转为本地时间,按小时段(0-6 深夜、6-9 早晨、9-12 上午、12-14 午间、14-18 下午、18-22 傍晚/夜间、22-24 深夜)统计分布
    • 星期统计(工作日 vs 周末,细化到周几)
    • 识别高频红心时段(peakHours)和周期规律(如"周五深夜密集红心")
    • 对比高频时段的 songTag 分布,提炼时段-内容关联(如"深夜红心以古典/氛围为主")
  4. 近期趋势分析(前20首,基于 addTime 排序确认为最近):

    • 关注近期趋势是否偏离整体画像(如最近突然大量红心某一新曲风)
    • 生成 recentTrend 描述
  5. 综合以上,生成最多6个搜索关键词,写入 ncm-preference.json(含 temporalPatterncontentTags

时段-内容关联在搜索策略中的应用:若当前触发时间落在用户的高频红心时段,优先从该时段对应的内容标签中取关键词。


第四步:制定搜索策略(模型判断)

这是整个流程最关键的步骤。模型需要主动决策:

  • 搜什么类型:歌单 / 专辑 / 单曲,或三者混合
  • 用什么关键词:结合用户需求 + 偏好画像 + 场景语义,自由发挥
    • 可以用中文场景词、英文曲风标签、情绪词、年代词、艺人风格词
    • 针对具体需求(如"电影原声")优先用专辑搜索;描述心情/场景优先用歌单搜索
  • 搜几次:复杂需求多关键词并行搜索(2~4次),简单需求单次即可
  • 去重来源ncm-history.json(已推荐) + playlist collected(已收藏)

第五步:执行搜索 + 筛选

  1. 按策略执行搜索命令,汇总结果
  2. 筛选逻辑(模型判断)
    • 排除已收藏/已推荐内容
    • 结合偏好画像评估每个结果的匹配度
    • 综合考量:名称/标签语义匹配、热度(playCount)、内容规模(trackCount/歌曲数)
  3. 选出 4~6 条最佳结果(歌单、专辑、单曲可混合)

第六步:推荐说明生成

每条推荐必须包含两层说明(合计 40~60 字):

  1. 偏好关联层:结合用户具体红心艺人/曲风/近期趋势解释为什么推荐这个
  2. 内容特质层:描述该歌单/专辑/曲目本身的核心亮点

禁止泛泛而谈(如"适合你的口味"),必须引用具体的偏好证据。


第七步:输出

输出适配策略优先匹配用户希望的输出格式;若用户未指定,则必须使用下面的标准格式。

【强制输出规范】(必须遵守)

  1. 只要推荐了“歌单”或“单曲”,就必须输出可点击链接(至少 1 个)。
    • 歌单 → 必须输出 https://music.163.com/#/playlist?id=<明文ID>
    • 单曲 → 必须输出 https://music.163.com/#/song?id=<明文ID>
  2. 链接中的 ID 必须使用“明文 originalId(数字)”,禁止使用加密 ID(32位 hex)拼链接。
  3. 每条推荐必须输出“推荐评分 + 推荐理由”
    • 评分:⭐ 评分:<0-100>(模型自评,表示与“用户需求 + 偏好画像”的匹配度)
    • 理由:必须是两层理由(合计 40~80 字):
      1. 偏好关联层:引用偏好证据(例如:用户红心高频曲风/艺人/内容标签/近期趋势/常听时段)
      2. 内容特质层:描述歌单/专辑/单曲本身的氛围与适配场景
    • 禁止只写空泛形容词(如“很适合你”),必须落到具体证据与具体特质。
  4. 如果结果里包含封面 URL(如 coverImgUrl
    • 歌单封面 建议输出(可选):一行 🖼️ <url> 或 Markdown 超链接即可。
    • 单曲封面如果有也建议输出(同样用 🖼️)。
    • 在飞书(Feishu)渠道:如需更直观展示,可选把封面“作为图片消息发送”(见下方「封面图片推送(飞书可选)」);同时在文字里可保留 🖼️ 封面链接作兜底。
  5. 若因为权限/可见性等原因无法拿到链接(极少见):
    • 必须明确说明“为什么拿不到链接”,并给出可操作替代(例如:可用的搜索关键词/结果列表)。

标准消息正文格式(默认)

建议优先用“短列表 + 链接”输出,确保在 IM 里易读、可直接点开。

🎵 音乐推荐 · [YYYY-MM-DD HH:MM]

[触发来源描述,如:周末夜晚推送]

① 🎶 [歌单/专辑/单曲名]
   ⭐ 评分:[0-100]
   📝 理由:[两层推荐理由(40~80字)]
   🖼️ [封面链接(可选;有 coverImgUrl 可输出)]
   🔗 [资源链接(必须输出;至少 1 个)]

② 🎶 [名称]
   ...

共 N 条

链接规则(统一)

返回资源给用户时必须尽量给到链接(可用 Markdown 超链接)。主要链接形式:

注意:链接中的 ID 必须用明文 originalId!!

https://music.163.com/#/song?id=<明文ID>
https://music.163.com/#/playlist?id=<明文ID>
https://music.163.com/#/album?id=<明文ID>
https://music.163.com/#/artist?id=<明文ID>

封面图片推送(飞书可选)

当推荐结果包含 coverImgUrl 时(可选能力):

  • Feishu 渠道可选:

    1. 发送一条图片消息(图片为 coverImgUrl 对应的封面)。
      • 若系统/工具不支持直接用 URL 发送图片,则先下载到本地临时文件再发送。
    2. 文字消息里可选保留:🖼️ <coverImgUrl> 作为兜底。
  • 建议发送顺序:

    • 先发封面图(可选) → 再发推荐正文(含链接)。
  • 失败兜底:

    • 若图片发送失败,不影响推荐正文;至少保证歌曲/歌单链接输出。

可选:创建歌单并写入

当推荐内容以单曲为主(如"电影原声"、"特定主题单曲")时,主动询问用户是否创建歌单并将曲目写入。 若用户同意或主动要求,请执行以下操作:

1. 使用ncm-cli:创建歌单,拿到歌单ID -> 添加歌曲到歌单
2. 验证 trackCount 确认写入成功
3. 在推荐输出中附上歌单链接

调度管理

当用户描述调度需求时(如"每天早上9点推爵士"):

  1. 解析自然语言 → 更新 ncm-schedule.json(见格式)
  2. 【关键】同步注册到系统 cron - 必须执行以下步骤:
    • 检查当前 cron 任务:crontab -l
    • 对比 ncm-schedule.json 中的规则,确认每个规则都在 cron 中注册
    • 对于新添加的规则,使用以下命令注册(示例):
      (crontab -l 2>/dev/null; echo "分 时 * * * /usr/local/bin/node /path/to/main.js 场景") | crontab -
      
    • 验证注册成功:再次执行 crontab -l 确认任务存在
  3. 检测你是否有调度能力
    • 如果你拥有定时调度能力,请一定将用户诉求写入你的调度系统中!然后做下面的操作:
      • 输出确认:「已设置:[规则描述],下次触发:[时间]」
      • 检查是否有遗漏的规则:ncm-schedule.json 中存在,但是你的调度系统中不存在的,请一并更新到你的调度系统中
    • 如果你不支持调度:请直接输出「暂不支持调度」

ncm-schedule.json 格式

{
  "enabled": true,
  "schedules": [
    { "day": "weekday", "times": ["10:00", "19:00"] }
  ],
  "customRules": [
    {
      "description": "规则描述",
      "day": "daily | weekday | weekend | saturday | sunday",
      "times": ["HH:MM"],
      "keywordHint": "引导搜索方向的关键词(可选)"
    }
  ]
}

注意事项

  • 红心歌曲 index=0 为最新,近期趋势重点看前20首
  • 每次推荐后将歌单 ID 写入 ncm-history.json,防止重复推荐
  • 用户主动搜索结果不计入 history(不影响自动推送去重)
  • 推荐时主动考虑是否适合创建歌单——尤其是"特定主题/影视/艺人"类需求
  • 【调度关键】更新 ncm-schedule.json 后必须同步注册到系统 cron(crontab),否则定时任务不会生效
    • 检查方法:crontab -l
    • 注册方法:(crontab -l 2>/dev/null; echo "分 时 * * * /usr/local/bin/node /path/to/main.js 场景") | crontab -
    • 验证方法:再次执行 crontab -l 确认新任务存在

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

Skills

Autonomous novel writing CLI agent with web workbench (InkOS Studio) - use for creative fiction writing, novel generation, style imitation, chapter continuat...

Registry SourceRecently Updated
Coding

clipping-video-highlights

长视频(YouTube链接/本地视频)→ N个短高光片段+烧字幕+AI封面。100%免费方案:yt-dlp字幕提取+MiniMax LLM选高光+MiniMax图片生成封面+ffmpeg剪辑。

Registry SourceRecently Updated
Coding

CheckMCC

Look up credit card rewards eligibility for merchants. Find the best credit card to use at any store, restaurant, or online merchant by checking MCC codes an...

Registry SourceRecently Updated
Coding

wechat-publish-pro

Pure Python tool to convert Markdown to styled HTML and publish articles to WeChat official account drafts with AI-based content refinement and theme support.

Registry SourceRecently Updated