스포티파이 감정 전환 뉴스 카드 생성기 (APITemplate.io + Slack)
고급
이것은Content Creation, AI Summarization분야의자동화 워크플로우로, 21개의 노드를 포함합니다.주로 Set, Code, Slack, Spotify, RssFeedRead 등의 노드를 사용하며. LLM, 구글 뉴스, APITemplate.io를 사용하여 스포티파이 감정에서 뉴스 카드 생성
사전 요구사항
- •Slack Bot Token 또는 Webhook URL
사용된 노드 (21)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "OMGFOlTIKsAAAwUG",
"meta": {
"instanceId": "15d6057a37b8367f33882dd60593ee5f6cc0c59310ff1dc66b626d726083b48d",
"templateCredsSetupCompleted": true
},
"name": "Spotify Emotion-to-News Card Generator (APITemplate.io + Slack)",
"tags": [],
"nodes": [
{
"id": "773130e9-c130-4276-b4f5-6fa0cd79ba91",
"name": "감정 분석기",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
304,
-16
],
"parameters": {
"text": "=You are an emotion analyst.\nGiven the following song title and artist, infer the main emotion it conveys \n(e.g., joyful, nostalgic, melancholic, energetic, angry, romantic).\nReturn JSON.\n\nInput:\n\"{{ $json.track.name }} - {{ $json.track.album.artists[0].name }}\"\n\nOutput:\n{\n \"emotion\": \"nostalgic\",\n \"reason\": \"The song's tone and lyrics evoke reflection and memory.\"\n}\n",
"options": {},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "734a0e4f-1a01-4bfd-8877-4629ef89d1a4",
"name": "예약 시작 (Cron)",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-144,
-16
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1
},
{
"id": "3c9cf5ff-747e-436c-b47d-8d55b2fdde40",
"name": "Spotify 최근 재생 목록 가져오기",
"type": "n8n-nodes-base.spotify",
"position": [
80,
-16
],
"parameters": {
"operation": "recentlyPlayed"
},
"credentials": {
"spotifyOAuth2Api": {
"id": "NBaU7bOuJl4YNkeB",
"name": "Spotify account 3"
}
},
"typeVersion": 1
},
{
"id": "e051c66b-fdfb-4ef7-860a-9a14c9c29f9e",
"name": "LLM: 트랙에서 감정 추론",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"position": [
384,
208
],
"parameters": {
"options": {}
},
"credentials": {
"openRouterApi": {
"id": "fMR5QJezr3tD108w",
"name": "簡易デモ"
}
},
"typeVersion": 1
},
{
"id": "ee6e19e5-8843-4669-87e6-432d0c944db7",
"name": "각 트랙별 처리 (배치)",
"type": "n8n-nodes-base.splitInBatches",
"position": [
656,
-16
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "282fbf38-97c2-4510-bed4-08072dea9f71",
"name": "Google 뉴스 RSS 쿼리 구성",
"type": "n8n-nodes-base.set",
"position": [
880,
-16
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{\n (() => {\n const raw =\n $json.emotion ||\n (JSON.parse($json.output || '{}').emotion) ||\n 'music';\n const clean = String(raw).replace(/\\s+/g,' ').replace(/\\u3000/g,' ').trim();\n const base = 'https://news.google.com/rss/search?hl=en-US&gl=US&ceid=US%3Aen&q=';\n return { feedUrl: base + encodeURIComponent(clean) }; // ← オブジェクトで返す\n })()\n}}\n"
},
"typeVersion": 3.4
},
{
"id": "1636d83b-5ff3-4360-b70c-c469691e7d15",
"name": "Google 뉴스 RSS 가져오기",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
1104,
-16
],
"parameters": {
"url": "={{\n (() => {\n const emotionRaw =\n $json.emotion ||\n (JSON.parse($json.output || '{}').emotion) ||\n 'music';\n\n const q = encodeURIComponent(String(emotionRaw).trim());\n const url = `https://news.google.com/rss/search?hl=en-US&gl=US&ceid=US%3Aen&q=${q}`;\n return url.trim();\n })()\n}}\n",
"options": {}
},
"typeVersion": 1.2
},
{
"id": "89aab605-b6bb-4206-8866-c6bb97f269e5",
"name": "상위 뉴스 선정 및 포맷팅",
"type": "n8n-nodes-base.code",
"position": [
1328,
-16
],
"parameters": {
"jsCode": "return items.slice(0, 1);"
},
"typeVersion": 2
},
{
"id": "20707f6c-fbec-45a8-94e0-a42574e9c90e",
"name": "뉴스 카드 생성 (APITemplate)",
"type": "n8n-nodes-base.apiTemplateIo",
"position": [
1552,
-16
],
"parameters": {
"overridesJson": "={{ JSON.stringify([\n { \"name\": \"text_emotion\", \"text\": $json.emotion ?? \"neutral\" },\n { \"name\": \"text_url\", \"text\": $json.link ?? \"https://example.com\" },\n { \"name\": \"text_1\", \"text\": $json.contentSnippet ?? \"Unknown source\" },\n { \"name\": \"text_2\", \"text\": $json.title ?? \"No title\" }\n]) }}\n",
"jsonParameters": true,
"imageTemplateId": "="
},
"credentials": {
"apiTemplateIoApi": {
"id": "whAPW33pjYrGW6Cb",
"name": "APITemplate.io account 2"
}
},
"typeVersion": 1
},
{
"id": "abed781e-894c-4239-8f89-34532fe17022",
"name": "Slack에 게시 (제목 + 링크 + 카드 URL)",
"type": "n8n-nodes-base.slack",
"position": [
1776,
-16
],
"webhookId": "b33a2d51-5fd8-460f-8ea8-0fabfdcf359b",
"parameters": {
"text": "={{\n $(\"Pick Top News & Format\").item.json.title + \"\\n\" +\n $(\"Pick Top News & Format\").item.json.link + \"\\n\" +\n \"📰 ニュースカード\\n\" +\n ( $(\"Generate News Card (APITemplate)\").item.json.download_url_png || $(\"Generate News Card (APITemplate)\").item.json.download_url )\n}}\n",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "list",
"value": "CKUCBTG0H",
"cachedResultName": "general"
},
"otherOptions": {
"unfurl_links": false,
"unfurl_media": false
},
"authentication": "oAuth2"
},
"credentials": {
"slackOAuth2Api": {
"id": "2kyw7TSL5VT4S3md",
"name": "Slack account 8"
}
},
"typeVersion": 2.3
},
{
"id": "259a3bb9-d297-442c-b998-ea7aed02d1d1",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1072,
-352
],
"parameters": {
"width": 416,
"height": 1344,
"content": "## 📄 Workflow Overview\n\nTitle: Spotify Emotion-to-News Card Generator (APITemplate.io + Slack)\n\n## What it does:\nThis workflow analyzes the emotion of your recently played Spotify track using OpenRouter (LLM), fetches a related trending Google News article, generates a visual news card with APITemplate.io, and posts it to Slack.\n\n## 👥 Who’s it for\n\nMusic lovers, marketers, and developers who want to automatically turn their listening mood into a visual daily digest or Slack update.\n\n## ⚙️ How it works\n\nSpotify Trigger — Fetch your recently played tracks.\n\nLLM (Emotion Analyzer) — Infer the main emotion from the track title and artist.\n\nGoogle News Query — Build an RSS URL based on the emotion keyword.\n\nRSS Reader — Retrieve trending news headlines.\n\nAPITemplate.io — Render the top article into an image card.\n\nSlack — Post title, link, and card image into your channel.\n\n## 🧰 Requirements\n\nSpotify API credentials\n\nOpenRouter API key\n\nAPITemplate.io account (with template ID)\n\nSlack OAuth2 connection\n\n## 🪄 How to customize\n\nReplace the APITemplate.io template ID with your own.\n\nAdjust the RSS URL language (hl=en-US → hl=ja-JP for Japanese news).\n\nModify the Slack message text for your preferred channel tone.\n\n## ⚠️ Disclaimer\n\nIf you use community nodes (LangChain), this template is for self-hosted n8n only."
},
"typeVersion": 1
},
{
"id": "930501ea-23fc-4014-b2e1-8547d609680e",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-224,
-240
],
"parameters": {
"color": 7,
"content": "## Start on Schedule (Cron)\n“Triggers this workflow on a fixed schedule. You can adjust interval in node settings.”"
},
"typeVersion": 1
},
{
"id": "4b84f0fc-1f3f-4ebf-934e-3092759aae9f",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
16,
192
],
"parameters": {
"color": 7,
"height": 176,
"content": "## Fetch Spotify Recently Played\n“Retrieves your last played Spotify tracks. Requires Spotify OAuth2 credentials.”"
},
"typeVersion": 1
},
{
"id": "8fe180e8-594c-470b-9b1d-fa754582ae19",
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
304,
-208
],
"parameters": {
"color": 7,
"height": 128,
"content": "## Emotion Analyzer\n“Uses LLM (OpenRouter) to infer the dominant emotion from song title and artist.”"
},
"typeVersion": 1
},
{
"id": "7017bd67-3219-492c-9334-16883310c843",
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
160
],
"parameters": {
"color": 7,
"height": 176,
"content": "## For Each Track (Batch)\n“Processes each track individually for emotion-to-news mapping.”"
},
"typeVersion": 1
},
{
"id": "c0ad00c2-c320-41c2-ad1e-982c192fc81c",
"name": "스티키 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
816,
-256
],
"parameters": {
"color": 7,
"height": 176,
"content": "## Build Google News RSS Query\n“Converts emotion into a Google News RSS query string. Modify hl and gl for language/country.”"
},
"typeVersion": 1
},
{
"id": "ab9563f1-d47a-49fc-ba02-149b251e8a0e",
"name": "스티키 노트6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1056,
160
],
"parameters": {
"color": 7,
"content": "## Fetch Google News RSS\n“Reads top articles matching the emotion keyword.”"
},
"typeVersion": 1
},
{
"id": "1d92ea4b-bba2-4be9-8401-1174cbefef9a",
"name": "스티키 노트7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
-240
],
"parameters": {
"color": 7,
"content": "## Pick Top News & Format\n“Selects the first article from RSS feed and prepares title/link/snippet.”"
},
"typeVersion": 1
},
{
"id": "afe292e6-24aa-42c8-9de5-e1d78b7acf30",
"name": "스티키 노트8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1504,
176
],
"parameters": {
"color": 7,
"height": 208,
"content": "## Generate News Card (APITemplate)\n“Creates a news card image using APITemplate.io. Replace template ID with yours.”"
},
"typeVersion": 1
},
{
"id": "9914e9fa-6135-40ce-abf3-053a3c798c03",
"name": "스티키 노트9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1712,
-208
],
"parameters": {
"color": 7,
"content": "## Post to Slack (Title + Link + Card URL)\n“Posts the generated card, title, and link to Slack. Unfurling disabled for clean appearance.”"
},
"typeVersion": 1
},
{
"id": "842092ca-795b-4330-b1c8-b83b6c8652e8",
"name": "스티키 노트10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
-304
],
"parameters": {
"color": 7,
"width": 288,
"height": 752,
"content": "## Setup (Step-by-Step)\n\nGoal: Analyze your recent Spotify listening history, infer the emotional tone, and generate a matching news image card that’s automatically posted to Slack.\nPrerequisites: n8n (Cloud or Self-hosted), and active accounts for Spotify, Slack, APITemplate.io, and OpenRouter.\n\n1) Create Credentials (Required)\n\nSpotify OAuth2 — Go to Settings → Credentials → New → Spotify OAuth2, create a credential, and assign it to the “Fetch Spotify Recently Played” node.\n\nSlack OAuth2 — Create it under Settings → Credentials, and assign it to “Post to Slack.”\n\nAPITemplate.io — Create it under Settings → Credentials, and assign it to “Generate News Card (APITemplate).”\n\nOpenRouter API (LLM) — Create it under Settings → Credentials, and assign it to “Infer Emotion from Track (LLM).”\nIf you’re concerned about Cloud compatibility, refer to the “Self-host / Cloud” alternative described below."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "b0b1e713-4148-491c-ba26-71d4520280bf",
"connections": {
"773130e9-c130-4276-b4f5-6fa0cd79ba91": {
"main": [
[
{
"node": "ee6e19e5-8843-4669-87e6-432d0c944db7",
"type": "main",
"index": 0
}
]
]
},
"1636d83b-5ff3-4360-b70c-c469691e7d15": {
"main": [
[
{
"node": "89aab605-b6bb-4206-8866-c6bb97f269e5",
"type": "main",
"index": 0
}
]
]
},
"ee6e19e5-8843-4669-87e6-432d0c944db7": {
"main": [
[],
[
{
"node": "282fbf38-97c2-4510-bed4-08072dea9f71",
"type": "main",
"index": 0
}
]
]
},
"89aab605-b6bb-4206-8866-c6bb97f269e5": {
"main": [
[
{
"node": "20707f6c-fbec-45a8-94e0-a42574e9c90e",
"type": "main",
"index": 0
}
]
]
},
"734a0e4f-1a01-4bfd-8877-4629ef89d1a4": {
"main": [
[
{
"node": "3c9cf5ff-747e-436c-b47d-8d55b2fdde40",
"type": "main",
"index": 0
}
]
]
},
"282fbf38-97c2-4510-bed4-08072dea9f71": {
"main": [
[
{
"node": "1636d83b-5ff3-4360-b70c-c469691e7d15",
"type": "main",
"index": 0
}
]
]
},
"3c9cf5ff-747e-436c-b47d-8d55b2fdde40": {
"main": [
[
{
"node": "773130e9-c130-4276-b4f5-6fa0cd79ba91",
"type": "main",
"index": 0
}
]
]
},
"e051c66b-fdfb-4ef7-860a-9a14c9c29f9e": {
"ai_languageModel": [
[
{
"node": "773130e9-c130-4276-b4f5-6fa0cd79ba91",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"20707f6c-fbec-45a8-94e0-a42574e9c90e": {
"main": [
[
{
"node": "abed781e-894c-4239-8f89-34532fe17022",
"type": "main",
"index": 0
}
]
]
},
"abed781e-894c-4239-8f89-34532fe17022": {
"main": [
[]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 콘텐츠 제작, AI 요약
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Perplexity와 GPT를 사용하여 WordPress에 SEO 최적화 블로그 생성, 키워드와 미디어 포함
Perplexity와 GPT를 사용하여 WordPress에 SEO 최적화 블로그를 만들어 키워드와 미디어 포함
Set
Code
Limit
+
Set
Code
Limit
124 노드Paul
콘텐츠 제작
특정 도구를 사용하여 WordPress에 SEO 최적화 블로그 생성
특정 도구를 사용하여 WordPress에 SEO 최적화 블로그 생성
Set
Code
Limit
+
Set
Code
Limit
124 노드Paul
콘텐츠 제작
콘텐츠생성기 v3
AI驱动블로그자동화:사용GPT-4생성并게시SEO기사至WordPress및Twitter
If
Set
Code
+
If
Set
Code
144 노드Jay Emp0
콘텐츠 제작
AI 기반 회의 연구 및 일일 아젠다 (Google 캘린더, Attio CRM 및 Slack)
AI 기반 회의 연구 및 일일 아젠다: Google 캘린더, Attio CRM 및 Slack 활용
If
Set
Code
+
If
Set
Code
30 노드Harry Siggins
AI 요약
사용Slack및Asana의虚拟Scrum Master
基于AI의Scrum Master어시스턴트,통합OpenAI、Slack및Asana
Set
Code
Html
+
Set
Code
Html
35 노드Łukasz
프로젝트 관리
RSS 피드 스마트 허브 및 매일 Slack 요약
Gemini AI를 사용한 RSS 피드 뉴스 인텔리전스 자동화, Notion 및 Slack으로 푸시
Set
Code
Sort
+
Set
Code
Sort
29 노드Takuya Ojima
시장 조사