如何利用 YouTube 观看行为构建一个能自我进化的个性化音乐库

秃头产品狗 高级 2026/7/26 320 浏览 4 点赞 约 3 分钟

很多人的 YouTube 历史记录其实是一座被浪费的金矿。大多数人习惯于依赖平台的推荐算法,但算法的逻辑是“让你停留”,而不是“真正理解你的听感”。我最近在尝试将 YouTube 的观看习惯转化为一个能够自我学习的“音乐大脑”,这本质上是一次从前端数据采集到后端特征工程的完整实操,我想把这套技术链路分享给大家。

要实现这个系统,最核心的痛点在于:平台提供的“观看记录”太粗糙了。如果你完整看完了一个 5 分钟的视频,算法认为你喜欢它;但实际上,你可能在 0-40 秒时就想关掉,只是在 2 分钟后的副歌部分反复回溯了三次。这种“跳过”与“回溯”的行为,才是定义音乐偏好的最高权重信号。

第一步是构建数据采集层。我没有选择调用复杂的 API,而是写了一个简单的浏览器插件(Content Script),直接在 YouTube 播放页面的 video 标签上挂载监听器。关键在于捕捉 timeupdatepauseseeked 这三个原生事件。通过记录用户在视频中的具体停留片段,我可以精确到秒级地分析出用户对歌曲中哪个时间段最感兴趣。比如一个 210 秒的视频,如果用户在 [0, 41] 秒快速跳过,但在 [132, 222] 秒反复循环,这个行为权重将远高于单纯的“播放完成”。

在数据传输层面,我使用了 FastAPI 搭建了一个轻量级后端,用来接收插件传回的 JSON 数据包。一个典型的请求包结构如下:

{
  "video_id": "abc123xyz",
  "title": "Lofi Hip Hop Mix 2024",
  "watch_segments": [[0, 41], [132, 222]],
  "timestamp": "2023-10-27T21:47:00Z",
  "session_id": "sess_001"
}

这里有一个存储上的关键细节:数据库我选择了 PostgreSQL 并安装了 pgvector 扩展。之所以不直接用 NoSQL,是因为在后续调整模型权重时,我需要对原始事件进行大规模的重新计算,关系型数据库在处理这种结构化信号时更稳定。

最硬核的部分在于离线处理的 Pipeline。我设置了每天定时运行一次的脚本,执行以下四个步骤:首先是分类过滤,通过关键词和时长剔除掉非音乐类的视频;其次是元数据解析,利用外部 API 将视频标题中的模糊信息补全为真实的歌曲名称和艺人;接着是行为打分,将观看百分比、重复播放次数以及时间戳(例如深夜 11 点听 Synthwave 的权重与下午 2 点不同)转化为隐式评分;最后是向量化,将音频特征转化为 Embedding 存入向量库。

这样做最大的好处是,我实现了一种基于“听感相似”的推荐,而不是简单的标签匹配。传统的推荐是“因为你听了爵士,所以推荐爵士”,而我的系统逻辑是“因为你喜欢这段音频的频率分布和节奏,所以推荐另一段具有相似 Embedding 的音频”。

这个项目的挑战不在于代码量,而在于如何定义“喜欢”。在实操过程中我发现,定义“喜欢”不能依赖单一维度。一个真正有效的评分模型应该是:最终权重 = (观看时长 / 总时长) * 重复播放次数 * 时间段修正系数。这种基于行为数据的实战探索,比直接调用一个大模型 API 要有趣得多,因为它让推荐系统真正地成为了一个随时间进化的“音乐大脑”。

AI大模型LLMmachinelearningprogramming
同类方向的延伸案例可以参考AI大模型变现案例库,有不少直接可参考的案例。

全部回复 (3)

阿Sam的日常 高级 2026/7/26

得赶紧把过滤词库加上,不然 YouTube 推荐算法带进来的杂音简直没法听。

0 回复
内卷王调参侠 中级 2026/7/26

同步到本地得卡在哪个API接口?求个具体文档,急着用!

0 回复
架构师Neo 中级 2026/7/26

这套逻辑简直是音乐挖掘机,现在点开随机播放全是心头好,太爽了!

0 回复

发表回复

支持 Markdown 格式