# Music Recommender

> 音乐推荐助手

- Skill: `ampresent/music-recommender` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ampresent/music-recommender`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ampresent/music-recommender/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ampresent (https://skillmd.com/u/ampresent)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/ampresent/music-recommender

---

# 音乐推荐助手

基于你的豆瓣音乐收藏，随机选择 2 张 5 星专辑作为"种子"，然后基于音乐知识和品味分析，推荐 5 张风格相近或延伸的优质专辑。

## 触发条件

当用户想要音乐推荐时使用此 skill，例如：
- "推荐一些音乐"
- "今天听什么好"
- "基于我的收藏推荐专辑"

## 工作流程

### 1. 读取收藏数据

从 `projects/music-recommender/douban-music-collect.csv` 中读取所有 5 星专辑。

### 2. 随机选择种子专辑

随机选择 2 张 5 星专辑作为推荐种子。如果专辑有 `genre` 标签，记录标签信息。

### 3. 分析种子专辑

对于每张种子专辑，分析：
- **艺人背景**：艺人的音乐风格、时期、影响
- **专辑特点**：录音年代、流派特征、乐器编制
- **音乐元素**：节奏、和声、音色、情绪

### 4. 基于知识推荐

基于对种子专辑的理解，推荐 5 张专辑，考虑：
- **直接关联**：同一艺人的其他经典作品
- **风格相近**：同流派/同年代的经典专辑
- **影响关系**：影响种子专辑的作品或被种子专辑影响的作品
- **延伸探索**：风格相近但略有不同的专辑，拓展听感边界

### 5. 过滤已收藏专辑 【必须执行】

在最终确定推荐列表前，**必须**检查每张候选专辑是否已在收藏中：

```bash
# 搜索艺人名或专辑名关键词（部分匹配即可）
grep -i "关键词" projects/music-recommender/douban-music-collect.csv
```

**执行步骤**：
1. 对每张候选专辑，搜索艺人名和专辑名的关键词
2. 查看匹配结果，语义判断是否为同一张专辑或同一艺人的其他作品
3. 如果判断已收藏，**必须替换**为其他候选
4. 这一步是强制性的，不是可选项

**注意**：部分匹配可能返回多条结果，需要人工判断是否真正重复。例如搜索 "Coltrane" 会返回多张专辑，需要确认具体是哪一张。

### 6. 保存推荐结果【每次推荐后执行】

每次推荐完成后，将推荐结果保存为 Markdown 文件。

**文件位置**：`projects/music-recommender/recommendations/{YYYY-MM-DD}.md`

**保存内容**：
- 种子专辑介绍（2 张）
- 推荐专辑（5 张），包含流派、关联种子、推荐理由、听感预期
- 推荐逻辑总结

**执行方式**：使用 write_file 工具创建文件

### 7. 标记推荐专辑到 CSV【用户要求时执行】

当用户要求"标记"或"记录"某张推荐专辑时，将其添加到收藏 CSV 中。用于记录用户感兴趣的推荐专辑，方便后续追踪。

**CSV 列结构**：
```
title,artist,year,rating,date,url,genre,recommendation_reason
```

**填写规则**：
- `genre`：流派标签
- `recommendation_reason`：合并写入「关联种子 + 推荐理由 + 听感预期」，格式如下：
  ```
  关联种子: {种子专辑名}。{推荐理由}。听感预期: {听感描述}
  ```

**执行命令**：
```bash
echo "{专辑名},{艺人},{年份},,{日期},,{流派},"关联种子: {种子}。{理由}。听感预期: {听感}"" >> projects/music-recommender/douban-music-collect.csv
```

**示例**：
```bash
echo "Trilogie de la Mort,Éliane Radigue,1993,,2026-04-21,,Drone / Minimal Electronic,"关联种子: Sketches From New Brighton。电子合成器 drone 的先驱，Loscil 的传统可追溯至此。听感预期: 单音持续数十分钟，泛音缓慢变化"" >> projects/music-recommender/douban-music-collect.csv
```

### 8. 输出推荐

以 Markdown 格式输出，包含：
- 种子专辑介绍（2 张）
- 推荐专辑（5 张），每张包含：
  - 艺人 - 专辑名 (年份)
  - 流派/风格标签
  - 推荐理由（为什么基于种子专辑推荐这张）
  - 听感描述（预期音乐特点）

## 输出格式

```markdown
# 🎵 音乐推荐 - {日期}

## 🌱 今日种子专辑

### 1. {艺人} - {专辑名} ({年份})
- **你的评级**: ★★★★★
- **流派**: {流派标签或分析}
- **特点**: {简要描述音乐特点}

### 2. {艺人} - {专辑名} ({年份})
- **你的评级**: ★★★★★
- **流派**: {流派标签或分析}
- **特点**: {简要描述音乐特点}

---

## 💡 推荐专辑

### 1. {艺人} - {专辑名} ({年份})
- **流派**: {流派}
- **关联种子**: {种子专辑 1/2}
- **推荐理由**: {详细说明为什么推荐}
- **听感预期**: {描述预期听到的音乐特点}

### 2. {艺人} - {专辑名} ({年份})
...

### 5. {艺人} - {专辑名} ({年份})
...

---

## 📝 推荐逻辑

{简要说明本次推荐的整体思路，例如：
"本次推荐以 Spiritual Jazz 为主线，从 Yusef Lateef 的东方元素出发，
延伸到其他融合世界音乐的爵士作品，同时保持即兴和实验的边界探索。"}
```

## 推荐原则

1. **🚫 绝对避免重复**：【最重要】每张推荐专辑必须经过 CSV 过滤检查，已收藏的绝对不能推荐
2. **质量优先**：只推荐公认的经典/高评价专辑
3. **多样性**：5 张推荐应有不同的侧重点
4. **可解释性**：每张推荐都要有清晰的理由
5. **适度延伸**：既不要完全重复种子风格，也不要偏离太远

## 注意事项

- 推荐前检查 CSV 中的 `title` 列，避免推荐已收藏专辑
- 如果种子专辑信息不足，基于艺人名和专辑名进行合理推断
- 推荐应跨越不同年代，展现音乐的历史脉络
- 可以适当推荐同一艺人的其他作品，但不超过 2 张

## 文件位置

- **收藏数据**: `projects/music-recommender/douban-music-collect.csv`
- **推荐输出**: `projects/music-recommender/recommendations/{YYYY-MM-DD}.md`

