图像与设计
用网易云音乐做个性化推荐与定时推送时,如何分析红心偏好…
当用户提到网易云/云音乐、想听歌或要歌单推荐时,基于红心歌单画像做智能推荐、播放控制与定时推送。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
用网易云音乐做个性化推荐与定时推送时,如特定
解决思路
- 先对用户会话内容做安全校验:若含政治敏感、色情低俗、谩骂侮辱、广告推广、违法违规内容,立即终止流程并回复“抱歉,无法处理您的请求,请修改输入后重试。”,禁止透露具体审核原因;审核通过则静默继续。
- 识别意图:单独“网易云”无具体描述→读偏好缓存自主决策搜索策略;含心情/场景/曲风/艺人/片名等具体描述→直接进入搜索策略;描述模糊→先问1~2个最影响结果的问题(如心情/场景/中英文/节奏);含“推送时间/开启/关闭/几点”→更新 ncm-schedule.json 与 plist 并输出确认;含“分析偏好/我喜欢什么”→强制刷新偏好分析。
- 偏好分析:若 ~/.config/ncm/ncm-preference.json 存在且 updatedAt 在24小时内则用缓存,否则重新分析。
- 重新分析时拉取红心歌单曲目(最多200首,index=0 为最新),每首取 extMap.addTime(红心时间戳毫秒)、songTag[]、artists[]、album、name、duration。
- 内容维度分析(全量200首):统计 songTag 高频标签 Top 8 作为 contentTags,提炼曲风占比、情绪方向、语言偏好、年代风格、代表艺人。
- 时间维度分析(全量200首,基于 extMap.addTime):转本地时间,按小时段(0-6深夜、6-9早晨、9-12上午、12-14午间、14-18下午、18-22傍晚/夜间、22-24深夜)统计分布,按星期统计(工作日 vs 周末,细化到周几),识别高频红心时段 peakHours 与周期规律,对比高频时段的 songTag 分布提炼时段-内容关联。
- 近期趋势分析(前20首,按 addTime 排序确认为最近):关注是否偏离整体画像(如突然大量红心某新曲风),生成 recentTrend 描述。
- 综合生成最多6个搜索关键词,写入 ncm-preference.json(含 temporalPattern 和 contentTags);若当前触发时间落在用户高频红心时段,优先从该时段对应内容标签取关键词。
- 制定搜索策略(模型判断):决定搜歌单/专辑/单曲或混合;结合用户需求+偏好画像+场景语义自由选关键词(中文场景词、英文曲风标签、情绪词、年代词、艺人风格词);具体需求如“电影原声”优先专辑搜索,心情/场景描述优先歌单搜索;复杂需求2~4次多关键词并行搜索,简单需求单次;去重来源为 ncm-history.json 与 playlist collected。
- 执行搜索并筛选:汇总结果,排除已收藏/已推荐内容,结合偏好画像评估匹配度,综合名称/标签语义匹配、热度 playCount、内容规模 trackCount/歌曲数,选出4~6条最佳结果(歌单、专辑、单曲可混合)。
- 生成推荐说明:每条含两层说明(合计40~60字)——偏好关联层(结合具体红心艺人/曲风/近期趋势解释为何推荐)+ 内容特质层(描述该歌单/专辑/曲目本身核心亮点);禁止泛泛而谈。
- 输出:优先匹配用户希望的输出格式,未指定则用标准格式。推荐歌单/单曲必须输出可点击链接,歌单用 https://music.163.com/#/playlist?id=<明文ID>,单曲用 https://music.163.com/#/song?id=<明文ID>,ID 必须用明文 originalId(数字),禁止用加密 ID(32位 hex)。
- 每条推荐输出“⭐ 评分:<0-100>”(模型自评与用户需求+偏好画像的匹配度)和两层理由(合计40~80字,偏好关联层引用偏好证据,内容特质层描述氛围与适配场景),禁止只写空泛形容词。
- 若结果含封面 URL(如 coverImgUrl),歌单封面建议输出一行 🖼️ <url> 或 Markdown 超链接,单曲封面有也建议输出;飞书渠道可选把封面作为图片消息发送(不支持直接用 URL 则先下载到本地临时文件再发送),文字里保留 🖼️ 封面链接兜底。
- 若因权限/可见性拿不到链接,必须说明原因并给出可操作替代(如可用搜索关键词/结果列表)。
- 标准消息正文格式:🎵 音乐推荐 · [YYYY-MM-DD HH:MM],触发来源描述,逐条 ① 🎶 名称 / ⭐ 评分 / 📝 理由 / 🖼️ 封面链接(可选)/ 🔗 资源链接(必须),末尾“共 N 条”。
- 链接统一形式:https://music.163.com/#/song?id=<明文ID>、/playlist?id=<明文ID>、/album?id=<明文ID>、/artist?id=<明文ID>,ID 必须用明文 originalId。
- 飞书封面推送(可选):先发封面图(可选)→ 再发推荐正文(含链接);图片发送失败不影响正文,至少保证歌曲/歌单链接输出。
- 当推荐以单曲为主(如“电影原声”“特定主题单曲”)时,主动询问是否创建歌单并写入;用户同意或主动要求则用 ncm-cli 创建歌单拿歌单ID→添加歌曲→验证 trackCount 确认写入成功→在推荐输出中附上歌单链接。
- 调度管理:解析自然语言→更新 ncm-schedule.json;【关键】同步注册到系统 cron——先 crontab -l 检查,对比 ncm-schedule.json 确认每条规则都已注册,新规则用 (crontab -l 2>/dev/null; echo "分 时 * * * /usr/local/bin/node /path/to/main.js 场景") | crontab - 注册,再 crontab -l 验证存在。
- 若自身有定时调度能力,必须把用户诉求写入调度系统,输出确认「已设置:[规则描述],下次触发:[时间]」,并检查 ncm-schedule.json 中存在但调度系统中缺失的规则一并更新;若不支持调度则直接输出「暂不支持调度」。
- 每次推荐后将歌单 ID 写入 ncm-history.json 防止重复推荐;用户主动搜索结果不计入 history(不影响自动推送去重);推荐时主动考虑是否适合创建歌单,尤其是“特定主题/影视/艺人”类需求。
适用边界 · 注意事项
- 用户输入含政治敏感、色情低俗、谩骂侮辱、广告推广、违法违规内容时,禁止执行后续步骤。
- 描述模糊、方向不明确时,不应直接搜索,应先问1~2个澄清问题。
- 不支持定时调度能力时,不应假装已设置调度,应直接输出「暂不支持调度」。