PLAYLIST SPEC
プレイリストの仕組み
AI MUSIC JUDGE のプレイリストには ユーザーが自由に作るもの と、 サイトが毎日自動生成する AI Curated の 2 種類があります。 ここではそれぞれの仕組み・更新ルール・使い方を解説します。
プレイリストは 2 種類
AI Curated
毎日 03:00 JST 更新 ・ サイト自動生成
AI 審査員のスコアや乖離タグを使ってサイトが自動で組む 3 種類。 「いま聴くべき曲」が常に新しく入れ替わる。
ユーザープレイリスト
作成時のみ ・ ユーザーが手動編集
誰でも作成可。楽曲詳細から保存して並べ替え、公開/非公開を選べる。 Premium ユーザーは共有リンクも発行可能。
AI Curated 3 種類の中身
対象は 過去 14 日に投稿された楽曲のみ。それぞれ別の評価軸で選び、 重複が出ても気にしません (=「同じ曲が複数のリストに入る」のは仕様)。
AI 絶賛 TOP 10 weekly_ai_top
- 条件: 過去 14 日 ・ s1_ai_score IS NOT NULL ・ 公開・公開ステータス done
- 並び: S1 (Dr.鷹野・KENJI・田中・Rina) の平均スコア降順
- サイト主軸の総合ランキング上位を「プレイリストとして聴ける」形にしたもの。
みんな認めた名曲 weekly_divergence
- 条件: 過去 14 日 ・ divergence_tag = 'all-agree' (AI ・ 人間 両方 80 点以上)
- 並び: AI 平均スコア降順
- 「賛否が割れない、安心して人に薦められる」枠。
評価が割れる問題作 chaos
- 条件: 過去 14 日 ・ divergence_tag = 'problem-work' (AI ・ 人間 両方 40 点以下)
- 並び: 再生数降順 (=どれだけ「話題」だったか)
- ネタ枠。クセが強くて議論を呼んだ楽曲を集めるコーナー。
AI Curated の更新タイミング
Vercel Cron が 毎日 18:00 UTC = 03:00 JST に走り、3 つのプレイリストの中身を全て削除→最新条件で再投入します。refreshed_at カラムに最終更新時刻が記録され、サイトマップの changeFrequency も daily 扱いです。
ユーザーが「お気に入りの曲が AI 絶賛 TOP に入った!」と思った瞬間にスクリーンショットを撮るのを推奨します (翌日には入れ替わる可能性があります)。
ユーザープレイリストの作り方
- 新規作成: /playlists/new から。タイトル必須 (50 字以内)、説明任意 (200 字以内)。公開/非公開を選べます。
- 楽曲を追加: 各楽曲の詳細ページにある「保存」ボタンから、自分の任意のプレイリストに追加します。
- 並び替え: 詳細ページで楽曲行の左端をドラッグすると順番を入れ替えられます (オーナーのみ)。
- 全曲再生: 「🎵 全曲再生」ボタンで GlobalPlayer に流し込み、上から順に連続再生します。
- 編集: 右上の歯車アイコンからモーダルでタイトル・説明・公開設定・カバー画像・削除を行います。
カバー画像の仕組み
優先順位
- 1. 手動アップロードした画像 (PNG/JPG、2MB 以下、推奨 1:1)
- 2. 入っている楽曲の先頭 4 曲のサムネを 2×2 で自動モザイク
- 3. 楽曲数が 1〜3 曲のときは最初の 1 枚を全面表示
- 4. それも無ければ ♪ アイコンのプレースホルダ
手動アップロードした画像はいつでも「自動モザイクに戻す」ボタンで元に戻せます。 モザイクは楽曲を追加・削除するたびに自動で更新されます。
Like 機能
♥ Like の意味
ログイン中のユーザーが他人の公開プレイリストにつけるブックマーク的な機能です。 押し直しで解除でき、Like 数が 人気タブの並び順 (like_count desc) に直結します。
- 自分のプレイリストには Like できない (Like ボタンは非表示)
- AI Curated にも Like 可能 (人気投票として機能)
- Like カウントはプレイリスト詳細とカードに「♥ N」で表示
公開 ・ 非公開
- /playlists 一覧 (人気・新着) に出る
- サイトマップ ・ OG 画像対応
- 誰でも閲覧 ・ Like 可能
- 一覧から除外 ・ 検索エンジンにも出ない
- 本人のみ閲覧可能
- 共有リンク (Premium) 経由でも開けない
未公開でも作成後にいつでも公開/非公開を切替可能。「とりあえず作って、整ったら公開」が運用しやすいです。
共有 ・ シェア
URL を貼るだけ
プレイリスト詳細の URL (/playlists/[id]) をそのまま X / Discord / 任意のチャットに貼ると、カバー画像 + プレイリスト名 + 「N tracks ・ ♥ N」+ AI MUSIC JUDGE ロゴ のリッチカードが展開します。
- OG 画像はカバー画像があればそれを優先、無ければ自動モザイクで生成
- AI Curated プレイリストは「✨ AI CURATED」バッジが OG にも入る
- ?lang=en を付ければ英語タイトル・英語 OG にも切替可
よくある質問
Q. AI Curated の chaos が空なんですが
divergence_tag = ‘problem-work’ のタグが付いた楽曲が過去 14 日内に存在しない場合は空になります。 該当楽曲が増えると翌日の cron で自動的に埋まります。
Q. プレイリストの楽曲数の上限は?
現状ハードな上限は設けていませんが、UX 上は 30〜50 曲程度を目安にすると一覧性が保てます。 全曲再生は順次プリロード方式なので、極端に長くてもクライアントは耐えます。
Q. 他人のプレイリストを自分用にコピーしたい
現状コピー機能は未実装です。需要があれば実装するのでお問い合わせ から声を上げてください。
Q. AI Curated のロジックを変えてほしい
現在は 3 種類固定 (S1 上位 / all-agree / problem-work) ですが、ジャンル別 TOP / 季節 ・ 時間帯テーマ / Premium 限定キュレーション など追加余地は十分あります。 意見があればフィードバックしてください。
Q. 自分のプレイリストを削除したらどうなる?
プレイリスト本体と紐づきレコード (playlist_tracks, playlist_likes) は完全削除されます。楽曲そのものは消えません (他人が同じ曲を別プレイリストで保持していても影響なし)。
プレイリストを見る
✨ AI Curated と、みんなが作った公開プレイリストを発見できます。
