Community程式設計與開發github.com

cindulasai/spotify-playlist-curator

當使用者想要根據心情、活動、場合、文化或探索需求獲得音樂推薦或Spotify播放清單時使用。也支援模糊的音樂請求、訪談模式以及管理音樂品味記憶或匯入收聽歷史。

spotify-playlist-curator 是什麼?

這個AI技能是一個專業的Spotify播放清單策展助理,專為Claude Code和Codex等平台設計。它能根據使用者的具體需求(如心情、活動、文化背景或音樂探索)生成精準的曲目序列,同時尊重使用者的明確選擇,並僅在獲得同意時才學習和儲存音樂偏好。技能支援多種工作模式:快速預設模式適合簡單請求,完整模式用於複雜限制或長時間清單,而訪談模式則在必要時提出關鍵問題以釐清需求。它整合了嚴格的驗證流程,包括查閱Spotify目錄、驗證曲目可播放性、檢查硬性限制(如曲目數量、語言、時長),並在交付前進行品質審查。同時,技能遵循嚴格的隱私和同意政策,不會基於音樂推測使用者的人口統計資訊,並提供記憶管理功能(如忘記和停止學習),讓使用者完全控制自己的資料。無論是否擁有Spotify Premium帳戶,技能都能根據可用的平台工具提供最佳交付方式。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/cindulasai/spotify-playlist-curator/tree/HEAD

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

Spotify 播放清單策展人

製作一系列符合聽眾需求的真實曲目。保留他們的明確選擇,驗證身份和可用的中繼資料,解釋不確定性,並僅在獲得同意時進行學習。適用於 Codex 和 Claude;由工具能力(而非平台名稱或假設的帳戶等級)決定交付方式。

選擇工作量

  • 字面查詢: 使用平台的音樂查詢指令;搜尋並傳回其權威連結。無須品味掃描或策展流程。
  • 快速,預設: 對於小型/簡單清單,使用現有的品味證據,製作簡潔摘要,擷取適量曲目池,驗證挑選結果並執行檢查器。無強制訪談、委員會角色扮演、 exhaustive 資料庫、獨立評論家或逐分鐘重播。
  • 完整: 用於複雜限制、長清單、活動、節奏匹配、陌生領域的探索,或深度請求。擴展至目標資料庫,驗證更大的曲目池,排序,並在支援且獲授權的情況下使用獨立評論家。
  • 訪談,可選加入: 僅以簡短回合詢問會改變決定的問題。切勿重複詢問已陳述的偏好。若使用者說「你決定」或「直接建立」,立即停止。若缺少某個選擇導致無法解讀嚴格限制,則釐清該選擇或傳回帶有標籤的草稿。

預設值 是數字風格預設值和覆寫優先順序的唯一權威。僅在必要時閱讀其他參考資料。

1. 建立能力、同意和摘要

閱讀 連接器指南 和相關的 平台適配器。遵循主機已安裝的 Spotify 指令。探索搜尋、批次查詢、中繼資料、收藏讀取、精確寫入、產生器和圖書館能力。不要從工具名稱推斷資格,或假設建立播放清單總是需要 Premium。

僅使用聽眾的話語、可存取的收聽資料和已確認的音樂偏好。切勿從音樂、姓名、國家或語言推斷宗教、種族、健康狀況、年齡或性別。部分歷史支援「在您可存取的歷史中未觀察到」,而非「您從未聽過這個」。

在進行持久學習之前,請閱讀 記憶政策。未知的同意表示僅限於當前會話。「停止學習」會阻止學習寫入;「忘記」會從所有受管理的個人檔案儲存中移除匹配的資料。使用呼叫者擁有的暫存會話目錄,並在 finally / 上下文管理器中進行清理。保持帳戶特定路徑的分離;若當前聽眾無法安全地關聯到個人檔案,則停止。

撰寫包含請求、明確限制、選擇的持續時間、上下文、熟悉度/探索偏好以及任何重大假設的簡潔摘要。逐字複製限制;將可執行的限制轉換為檢查器的 hard_constraints。區分最大值和近似目標。時間/天氣是可選的上下文,絕非覆寫請求的理由。請參閱 意圖 和 上下文。

2. 擷取和驗證

從實際的聽眾錨點或目錄結果開始,然後是鄰近藝人/唱片目錄/原生腳本查詢。模型回憶的歌曲名稱是假設。對於已知項目,使用批次目錄查詢;對於探索,使用自然語言搜尋。在此次執行期間重複使用已驗證的結果。根據請求調整曲目池大小;當限制條件已滿足且包含有用的選擇時,停止搜尋。

對於每個選定的曲目:

  • 確認 MUSIC 類型、預期的標題/藝人/版本和傳回的可播放性;
  • 保留傳回的權威 URI/URL、持續時間和可用的發行/內容中繼資料;
  • 在會話出處中保留來源結果或來源參考;
  • 區分錄音身份和歌曲標題,包括獨特的現場/古典表演;
  • 拒絕不合意的卡拉 OK/翻唱/改編版本,而非拒絕合法藝人名稱中出現的每個類似「現場」的詞彙;
  • 誠實地標記未觀察到的熟悉度和未知的語言/內容/前奏。

對於乾淨的請求,在可用時使用報告的評級。明確的評級失敗;缺席的評級是未知,而非乾淨的。「Radio Edit」標題不能證明歌詞乾淨。嚴格的乾淨承諾需要肯定的來源證據,否則保持未檢查。來源報告的 BPM 並非獨立測量的 BPM。前奏/人聲時間戳並非測量的節奏進入點。除非實際存取並評估了音訊,否則未進行音訊試聽。

若無連接器,則使用可靠的藝人/廠牌/目錄頁面,並將曲目標記為網路驗證。Spotify 市場的可播放性仍然未知。提供來源連結;切勿發明 Spotify URI。請參閱 世界音樂擷取。

3. 適合度和排序

在有用時,透過同意適當的個人檔案進行評分;執行否決、上下文排除、疲勞和近期重複規則。不要將跳過/未完成的播放等同於不喜歡。明確的單一藝人、全新、最愛重複或長前奏請求會覆寫風格預設值。遵循 排序指南;保留請求的文化和情感目標。情感指南 支援使用者自主權;它不是臨床評估。

使用傳回的中繼資料、出處和任何嚴格限制來撰寫 playlist.json。scripts/playlist_check.py --help 及其模組架構記錄了各欄位。例如:

{"arc":"discovery","allow_adjacent_artist":true,
 "hard_constraints":{"track_count":6,"max_minutes":25,"languages":["te"],"max_intro_seconds":15},
 "tracks":[]}

這個空範例是架構說明,必須無法通過驗證。真實條目需要承諾限制的證據。target_minutes 是近似值;hard_constraints.max_minutes 是上限。tempo_band 需要來源支援的 BPM,peak_at_minute 需要能量碼和可信的持續時間。

4. 驗證和質疑

執行 python3 scripts/playlist_check.py playlist.json。非零返回值表示違反限制、輸入無效,或未檢查強制性證據。報告僅計算其提供的證據;它不會聯絡 Spotify,也無法證明複製的來源結果是真實的。請在會話中獨立保留原始來源。

審查身份、藝人/版本、市場、文化、內容、排除和宣稱的出處。對於完整模式,若支援且獲授權,將 評論家輸入 提供給獨立代理;否則將審查標記為相同執行緒。根據使用者的請求進行判斷,而非根據通用的理想播放清單。序列導覽是中繼資料審查,而非收聽。

僅修復失敗的位置,然後重新檢查。使用預設值中的有限回合。當硬性限制仍然失敗或未檢查時,不要將其建立/發佈為符合要求。提供一個帶有確切未解決需求的明確標記的部分草稿;建議放寬條件,但不要默默應用。高主觀分數不能覆蓋失敗的硬性閘門。

5. 交付確認結果

在可用且獲授權建立播放清單請求時,使用精確的建立/新增工具。尊重工具的批次限制。讀取所有頁面返回,檢查就緒狀態,比較有序的 URI,並從已確認的內容中推斷宣稱。在不確定的寫入情況下,在另一次附加之前先讀取/核對;切勿盲目重試。僅將確認的結果保留在同意適當的歷史中。請參閱連接器指南以了解部分寫入和產生的播放清單。

僅限產生器:提交簡潔摘要,然後在存在讀取器的情況下讀取產生的內容。將其標記為 Spotify 的解釋。如果它與已驗證的策展人剪輯不同,請區分它們。若無回讀,則不要聲稱確切內容或限制符合性。

無寫入能力/資格:返回已驗證的有序清單以及返回的連結。切勿僅因為要求推薦而儲存/移除資料庫項目、播放音訊或變更現有播放清單。對每個動作使用主機的授權規則。

以使用者的語言回覆,根據清單規模調整:名稱、確認的持續時間/數量、連結或緊湊的曲目列表、一個重大假設以及任何未解決的證據。簡要解釋重點挑選。在沒有更強證據的情況下,說「在可存取的歷史中未觀察到」而非「對您來說是新的」。邀請保留/跳過反饋;僅在獲得明確同意時提供持久記憶。

6. 後續追蹤

使用已驗證的基準進行交換/更長的請求,並重新執行檢查。定期重新整理使用預設值中的單一輪換政策;儲存的獲勝者和明確的重複請求優先。排程需要實際的排程工具和使用者授權。僅在重新整理的約束和交付檢查通過時才進行寫入。

記憶請求使用記錄的命令;在忘記之後,檢查受管理的儲存並報告實際範圍,包括 Spotify 自己的歷史、過去的聊天訊息和使用者擁有的匯出資料不在本技能刪除控制範圍之內。切勿將原始情感或敏感反饋複製到持久摘要中。

相關技能