Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

netease-music-assistant

v1.0.0

网易云音乐智能助手,以模型判断为核心,通过 ncm-cli 执行操作。 核心能力:分析用户红心歌单偏好画像、制定多关键词搜索策略、智能推荐歌单/专辑/单曲(含两层推荐说明)、播放控制(播放/暂停/下一首/音量/队列)、管理定时推送调度、通过 OpenClaw 向飞书等 IM 渠道推送推荐结果、创建并写入歌单。 触...

1· 377·7 current·8 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 junfengl/netease-music-assistant.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "netease-music-assistant" (junfengl/netease-music-assistant) from ClawHub.
Skill page: https://clawhub.ai/junfengl/netease-music-assistant
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 netease-music-assistant

ClawHub CLI

Package manager switcher

npx clawhub@latest install netease-music-assistant
Security Scan
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The skill claims to act via a CLI layer (ncm-cli / netease-music-cli) and to analyze the user's liked-song data and manage scheduled pushes — those capabilities are coherent with the name. However, the skill metadata declares no required binaries, no required config paths, and no credentials, while the instructions explicitly reference ~/.config/ncm/*.json, crontab manipulation, and invoking node scripts. Not declaring these operational requirements is inconsistent with the stated purpose.
!
Instruction Scope
SKILL.md instructs the agent to: read and update files under ~/.config/ncm (user preference/history/schedule), fetch up to 200 liked songs (implying access to user account data), download cover images to local temp files, and register scheduled jobs by editing the system cron (using crontab -l and piping new entries). These are beyond simple query/formatting tasks and involve persistent system state and potentially sensitive user data. The doc also requires strict output/link formats (use original numeric IDs) and conditional behavior for Feishu image uploads.
Install Mechanism
There is no install spec (instruction-only), so nothing is written at install time — this reduces supply-chain risk. However, the runtime instructions call for downloading cover images and saving temp files, and for running external CLI tooling (ncm-cli or node scripts). Because there is no declared install, it's unclear which tool provides those binaries and whether they are trusted; that ambiguity is a concern but not an install-spec risk per se.
!
Credentials
The skill requests no environment variables or credentials in metadata, yet it presumes access to NetEase user data (liked songs) and to IM channels like Feishu for pushes. Either authentication is expected to be handled by another skill (netease-music-cli / OpenClaw integrations) or the SKILL.md omits required credentials. The absence of declared credentials (tokens/API keys) while instructing account-level operations and scheduled pushes is disproportionate and should be clarified.
!
Persistence & Privilege
The instructions explicitly require registering cron jobs (persistent system-level scheduled tasks) and writing/updating ~/.config/ncm/*.json state. Modifying system crontab and user config files is persistent privilege and should be declared and consented to up front. The skill metadata does not reflect this persistence or request explicit permission, which is a red flag.
What to consider before installing
Before installing or enabling this skill, ask the developer to clarify and explicitly declare the runtime requirements and permissions. Specifically: - Confirm which binaries/tools are required at runtime (ncm-cli / netease-music-cli, node, crontab) and add them to required binaries so you know what will be invoked. - Clarify how NetEase account authentication is handled: which credentials or delegated skill provide access to the user's liked songs and playlist-writing capability? If it requires your NetEase credentials or cookies, understand where those are stored and who can access them. - Confirm how IM pushes (Feishu) are authorized: which token/credential is used and where it is stored. The skill currently implies sending messages/images but declares no env vars for tokens. - Do not permit automatic crontab modifications without an explicit, granular prompt. Cron registration is persistent and system-affecting — request an explicit confirmation UI before any cron entry is written, and prefer using a user-level scheduler managed via an approved API rather than piping into crontab blindly. - Because the SKILL.md asks the agent to read/write ~/.config/ncm and to download cover images to local temp files, consider whether you trust the skill to access that data and disk space; if not, run it in a sandboxed environment or require manual review of any files to be written. If the developer cannot provide precise declarations (required binaries, credentials, and exact cron commands) or if you cannot sandbox or review cron writes, treat the skill as higher-risk and avoid granting it persistent system access.

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

latestvk971pchfg0wde9hmhdha6fdk898394te
377downloads
1stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

网易云音乐助手

触发条件

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


助手定位

这是一个以模型判断为核心的音乐助手。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 确认新任务存在

Comments

Loading comments...