音楽再生履歴からおすすめを通知するdiscord bot

公開日:

[tech] #音楽 #n8n #Navidrome

経緯

普段通勤中など音楽を聞くときは、youtube musicもしくはnavidrome(実際にはAndroid用subsonicクライアントアプリのsymfonium)を使って聞いている。

YTMに関しては勝手におすすめしてきたり年次の振り返り機能だとか色々あって面白いけど、navidromeに関しては特にそういう機能があるわけではない。

そもそも既存のライブラリを再生するソフトだからレコメンドされたところでよほど恐ろしい規模のライブラリでもなければあまりうれしい結果は得られなさそう。(一応プラグインで良さそうなものも見つけたけど事前の楽曲のスキャンがめっちゃ大変そうで触ってない)

本当はその辺のレコメンド結果から自動でダウンロードして、みたいな方法も無くはないが勿論法律的にアウト。

そうじゃなくとも、YTMでおすすめされるものは勿論YTMの再生履歴にだけ基づくもの。どうにかYTMとnavidrome両方の再生履歴を反映させたレコメンドエンジン的なものを用意できないかとなんとなく考えていた。

そんな折、ふと思い出してスマホの買い替え以来再設定していなかったlast.fmへのscrobbleを再開しようとした所でこれ使えばいいじゃんねと考え作業を開始。

last.fmはいい感じのレコメンドAPIが無いのを作業開始時点で知ったためListenBrainzへもscrobbleするようにし、両方をソースにするように構想。claude codeとn8nを仕事の間にしばいて作った。

完成したもの

毎朝こんな感じでDiscordに4曲ずつおすすめが届くようになった。

1曲ごとに、こんな情報が載っている。

構想

おすすめされた後にやりたいのはYTMで聞くかあるいはレンタルCDやototoy、bandcampやboothで購入したりといった事になるが、まぁ後ろの方はちょっと面倒そうなので一旦YTMの検索リンクだけとかで考えてみよう。

また、既にnavidromeのライブラリに含まれてるものをおすすめされてもあまり嬉しくないからざっくりで良いからフィルタして欲しい。

そうなると、ざっくりこんなフローで考えてみよう。

おすすめ楽曲収集ワークフロー

ストックから通知するワークフロー

実装

上の構想をclaude codeに投げては生ゴミが出力されては罵倒してを繰り返して出来上がったのはn8nのワークフロー3本とData Table2つ。

仕組みのざっくり要約

外部APIを叩くわけだから、ちゃんとお行儀よくエラーハンドリングしたりレートリミットに気を付けようねせやね。

使ってみて

通知が届くようになって10日くらい経つけど、正直まだこれ経由で実際に聴いたりはしていない。たまに眺めるくらい。

ここから聞くのが習慣になるまではかなり時間がかかりそう。

検索Esc で閉じる