大家好,鐵人賽堂堂邁入第十天!
在前兩天,我們教會了 AI Agent 如何查詢天氣和新聞,這些都是基於明確指令的任務。今天,我們要挑戰一個更「人性化」、更「模糊」的主題:讓 AI Agent 根據使用者的「心情」,推薦相對應的 Spotify 歌單!
這個專案不僅有趣,還會讓我們學會如何處理更複雜的 OAuth 2.0 認證,這是串接許多主流平台(如 Google, Facebook, Spotify 等)時都必須掌握的關鍵技能。
最終,你將擁有一個如下圖所示,能理解你心情的音樂助理!
與之前的天氣、新聞 API 直接使用 API Key 不同,Spotify API 需要遵循 OAuth 2.0 的「客戶端憑證流程 (Client Credentials Flow)」,簡單來說分為兩步:
Client ID
和 Client Secret
,去跟 Spotify 的認證伺服器換取一個有時效性的「存取令牌 (Access Token)」。這意味著我們的「邏輯核心」工作流中,至少需要兩個 HTTP Request
節點來完成這個流程。
我們同樣從建立最內層的「工人」——searchForItem
工作流開始。
獲取 Spotify 憑證:
Client ID
和 Client Secret
。請妥善保管它們,並將其存入 n8n 的憑證庫中。新建工作流,並命名為 searchForItem
。
觸發器: 使用 When Executed by Another Workflow
節點,並且設定傳入的參數mood
。
第一個 HTTP Request
節點 (獲取 Token):
POST
https://accounts.spotify.com/api/token
Header Auth
Authorization
Basic
認證。其值是 Base64Encode(你的ClientID:你的ClientSecret)
。你可以使用 n8n 的表達式或線上工具生成。application/x-www-form-urlencoded
grant_type
,值為 client_credentials
。第二個 HTTP Request
節點 (搜尋歌單):
GET
https://api.spotify.com/v1/search?q={{ $json.query }}&type=playlist&limit=5
Header Auth
Authorization
Bearer {{ $('HTTP Request').item.json.access_token }}
。這個表達式會從上一個 HTTP Request
節點的輸出中,取得 access_token
。Edit Fields
(或 Set
) 節點:
external_urls.spotify
(也就是歌單的公開連結)。Basic LLM Chain
節點:
你是一位友善的音樂 DJ。請根據下面提供的 Spotify 歌單連結列表,用繁體中文生成一段推薦語,並以條列式清單呈現歌單。
儲存並啟用 (Active) 工作流。
這個工作流完美展示了先 POST 請求 Token,再 GET 請求資料的 OAuth 2.0 完整流程。
MCPClient
伺服器上新增「點歌」工具現在,讓我們的「專案經理」學會這項新技能。
MCPClient
工作流。
MCP Server Trigger
下方新增第四個工具 (Call n8n Workflow Tool
)。get_spotify_playlist_by_mood
根據使用者描述的心情或情境(例如:放鬆、派對、運動),推薦適合的 Spotify 歌單
query
的參數。searchForItem
工作流。我們的 MCP 伺服器現在更加多才多藝了!
同樣地,我們無需修改 MCP Demo
主流程。
MCP Demo
工作流的聊天視窗。我今天心情很放鬆,請給我相對應的歌單
你會看到 AI Agent 展現出驚人的理解力:
get_spotify_playlist_by_mood
這個工具最適合這個任務。放鬆
或 chillhop
)作為 query
參數傳遞給工具。今天,我們成功地打造了一個充滿創意和情感的 AI 工具,並且攻克了更進階的 OAuth 2.0 認證流程。我們學到了:
我們的 MCP 伺服器功能越來越豐富,AI Agent 也變得越來越聰明。明天,我們將迎來 n8n 篇章的最高潮——將我們辛苦打造的這台強大 MCP 伺服器,使用開源的介面(OpenWebUI)連接起來!