Gemini AI 및 CoinGecko를 사용하여 Discord에 자동화된 암호화폐 시장 요약 전송
고급
이것은Crypto Trading, AI Summarization분야의자동화 워크플로우로, 18개의 노드를 포함합니다.주로 Code, Merge, Discord, Function, HttpRequest 등의 노드를 사용하며. Gemini AI 및 CoinGecko 데이터를 사용한 자동화된 암호화폐 시장 요약
사전 요구사항
- •Discord Bot Token 또는 Webhook
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Gemini API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "vdiGM9CVl45uLWNS",
"meta": {
"instanceId": "c4eae34af81eeff658410c97c38d8a485e4c73ba5cea5b25eef189aa5e5a73b9",
"templateCredsSetupCompleted": true
},
"name": "Automated Crypto Market Summaries to Discord using Gemini AI & CoinGecko",
"tags": [],
"nodes": [
{
"id": "1743c462-8ac0-4fcd-8292-3044723128a9",
"name": "매일 오전 8시",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-48,
16
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 8
}
]
}
},
"typeVersion": 1.2
},
{
"id": "f23773ff-70db-4f38-b6e0-2b059eb4631b",
"name": "시장 심리 데이터",
"type": "n8n-nodes-base.httpRequest",
"position": [
272,
-80
],
"parameters": {
"url": "=https://newsapi.org/v2/everything",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "crypto OR bitcoin OR ethereum OR solana"
},
{
"name": "language",
"value": "en"
},
{
"name": "sortBy",
"value": "publishedAt"
},
{
"name": "pageSize",
"value": "10"
}
]
}
},
"credentials": {
"httpHeaderAuth": {
"id": "dX3eyicfCIeMJzdO",
"name": "News API"
}
},
"typeVersion": 4.2
},
{
"id": "af2d66f9-0daf-46bf-b82e-ef39a02efb29",
"name": "시장 데이터",
"type": "n8n-nodes-base.httpRequest",
"position": [
272,
112
],
"parameters": {
"url": "https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=bitcoin,ethereum,solana",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "7a09fb3c-bd9c-4ed9-9c4a-96f65769077c",
"name": "데이터 병합",
"type": "n8n-nodes-base.code",
"position": [
784,
16
],
"parameters": {
"jsCode": "// Extract merged inputs\nconst newsData = items[0].json.articles || [];\nconst marketData = items.slice(1).map(item => item.json);\n\n// Prepare clean dataset\nconst formatted = marketData.map(market => {\n // Filter relevant articles (mentioning BTC, ETH, SOL)\n const symbol = market.symbol.toUpperCase();\n const relatedArticles = newsData\n .filter(a =>\n a.title?.toLowerCase().includes(symbol.toLowerCase()) ||\n a.description?.toLowerCase().includes(symbol.toLowerCase())\n )\n .slice(0, 5) // limit to 5 for AI token efficiency\n .map(a => ({\n title: a.title,\n description: a.description,\n source: a.source?.name,\n publishedAt: a.publishedAt,\n url: a.url\n }));\n\n return {\n symbol,\n market_overview: {\n current_price: market.current_price,\n price_change_24h: market.price_change_24h,\n price_change_percentage_24h: market.price_change_percentage_24h,\n volume_24h: market.total_volume,\n market_cap: market.market_cap,\n high_24h: market.high_24h,\n low_24h: market.low_24h\n },\n related_news: relatedArticles\n };\n});\n\n// Output one item per crypto asset\nreturn formatted.map(f => ({ json: f }));"
},
"typeVersion": 2
},
{
"id": "5145760a-c928-45fb-a236-3edd3ece1c7f",
"name": "리서치 애널리스트",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1408,
16
],
"parameters": {
"text": "=Analyze the following market and sentiment data, then produce a concise and insightful investment summary.\n\nMarket Data:\n{{ $json.market_overview[0] }}\n{{ $json.market_overview[1] }}\n{{ $json.market_overview[2] }}\n\nSentiment Headlines:\n{{ $json.related_news[0] }}\n{{ $json.related_news[1] }}\n{{ $json.related_news[2] }}\n{{ $json.related_news[3] }}\n\nPerform the following tasks:\n1. Summarize the overall market direction and volatility based on the price changes, highs/lows, and trading volume.\n2. Highlight the top 3 cryptocurrencies by 24h performance and describe what’s driving their movement (e.g., technical strength, on-chain trend, or narrative).\n3. Analyze sentiment — what narratives, themes, or risks dominate current discussions?\n4. Provide a short actionable takeaway (e.g., “Neutral short-term, bullish mid-term” or “High volatility ahead, watch key support zones”).\n5. Assign a **confidence score** (0–100) to your market bias based on alignment between sentiment and market data.\n\nReturn your final answer strictly in this JSON format:\n{\n \"market_summary\": \"\",\n \"top_coins\": [\n {\n \"symbol\": \"\",\n \"performance_summary\": \"\",\n \"driver\": \"\"\n },\n {\n \"symbol\": \"\",\n \"performance_summary\": \"\",\n \"driver\": \"\"\n },\n {\n \"symbol\": \"\",\n \"performance_summary\": \"\",\n \"driver\": \"\"\n }\n ],\n \"sentiment_summary\": \"\",\n \"actionable_takeaway\": \"\",\n \"confidence_score\": \"\",\n \"discord_message\": \"🔥 **Daily Crypto Market Briefing** 🔥\\n\\n**Market Summary:** ...\\n**Top Performers:** ...\\n**Sentiment:** ...\\n**Takeaway:** ...\\n\\nConfidence: ...\\n\\n*This is for informational purposes only and not financial advice.*\"\n}",
"options": {
"systemMessage": "You are a professional financial analyst with expertise in crypto fundamentals, market structure, and sentiment research.\n\nYour tone should be analytical yet engaging — like a daily market newsletter.\nYou must remain objective, concise, and data-driven.\n\nRules:\n\t•\tUse only the data provided.\n\t•\tNever speculate beyond observable data.\n\t•\tFormat clearly for readability in Discord (markdown-friendly).\n\t•\tAlways end with a one-line summary: “This is for informational purposes only, not financial advice.”\n\nYour goal: Deliver a polished, professional market insight post ready to publish to Discord."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "101175a4-e194-43dc-a679-a380c2d74175",
"name": "메시지 게시",
"type": "n8n-nodes-base.discord",
"position": [
2112,
16
],
"webhookId": "6e688502-6f46-476d-935b-f041687deec8",
"parameters": {
"content": "=🔥 **Daily Crypto Market Briefing** 🔥 \n📅 {{ $json.date || (new Date().toISOString().slice(0,10)) }}\n\n**📊 Market Summary:** \n{{ $json.reports[0].market_summary }}\n\n**🏆 Top Coins:** \n- **{{ $json.reports[0].top_coins[0].symbol }}** → {{ $json.reports[0].top_coins[0].performance_summary }}\n_Driver:_ {{ $json.reports[0].top_coins[0].driver }}\n- **{{ $json.reports[0].top_coins[1].symbol }}**→ {{ $json.reports[0].top_coins[1].performance_summary }}\n_Driver:_ {{ $json.reports[0].top_coins[1].driver }}\n- **{{ $json.reports[0].top_coins[2].symbol }}**→ {{ $json.reports[0].top_coins[2].performance_summary }}\n_Driver:_ {{ $json.reports[0].top_coins[2].driver }}\n\n**📰 Sentiment Overview:** \n{{ $json.reports[0].sentiment_summary }}\n\n**💡 Takeaway:** \n{{ $json.reports[0].actionable_takeaway }}\n\n**📈 Confidence:** {{ $json.reports[0].confidence_score }}/100\n\n---\n📢 _This is for informational purposes only, not financial advice._",
"guildId": {
"__rl": true,
"mode": "list",
"value": "1280652666577354803",
"cachedResultUrl": "https://discord.com/channels/1280652666577354803",
"cachedResultName": "Renz's server"
},
"options": {},
"resource": "message",
"channelId": {
"__rl": true,
"mode": "list",
"value": "1280652667408089210",
"cachedResultUrl": "https://discord.com/channels/1280652666577354803/1280652667408089210",
"cachedResultName": "general"
}
},
"credentials": {
"discordBotApi": {
"id": "9ivVgYWgpq4MNHqd",
"name": "Discord Bot Token"
}
},
"typeVersion": 2
},
{
"id": "02f04821-bcd6-4106-88a2-4b6c41fdb8d0",
"name": "키워드 추출",
"type": "n8n-nodes-base.function",
"position": [
1840,
16
],
"parameters": {
"functionCode": "// 🧠 AI Output Parser for n8n\n// Handles multiple outputs with ```json ... ``` wrappers\n\nconst parsedReports = [];\n\nfor (const item of items) {\n const raw = item.json.output;\n if (!raw || typeof raw !== \"string\") continue;\n\n // Extract JSON inside ```json ... ```\n const match = raw.match(/```json([\\s\\S]*?)```/);\n if (!match) continue;\n\n try {\n const parsed = JSON.parse(match[1].trim());\n\n // Filter out placeholder reports (no real data)\n if (\n parsed.market_summary &&\n !parsed.market_summary.toLowerCase().includes(\"not provided\") &&\n !parsed.market_summary.toLowerCase().includes(\"no market data\")\n ) {\n parsedReports.push(parsed);\n }\n } catch (err) {\n console.error(\"❌ Failed to parse AI output:\", err.message);\n }\n}\n\n// If no valid reports were parsed\nif (parsedReports.length === 0) {\n return [\n {\n json: {\n message: \"⚠️ No valid AI reports found.\",\n merged_discord_message: \"⚠️ No valid AI reports found.\",\n reports: [],\n avg_confidence: 0\n }\n }\n ];\n}\n\n// Merge reports into one summary object\nconst mergedMessage = parsedReports\n .map(r => r.discord_message)\n .filter(Boolean)\n .join(\"\\n\\n---\\n\\n\");\n\nconst avgConfidence = Math.round(\n parsedReports.reduce((sum, r) => sum + (Number(r.confidence_score) || 0), 0) /\n parsedReports.length\n);\n\nreturn [\n {\n json: {\n total_reports: parsedReports.length,\n avg_confidence: avgConfidence,\n merged_discord_message: mergedMessage,\n reports: parsedReports\n }\n }\n];"
},
"typeVersion": 1
},
{
"id": "ff3c7874-f1da-469d-b670-79d068ca95a8",
"name": "병합",
"type": "n8n-nodes-base.merge",
"position": [
624,
16
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "25879578-b139-4395-b8d1-f4d821b0292b",
"name": "데이터 파싱",
"type": "n8n-nodes-base.code",
"position": [
1088,
16
],
"parameters": {
"jsCode": "const data = items.map(i => i.json);\n\nconst merged = {\n market_overview: data.map(d => ({\n symbol: d.symbol,\n ...d.market_overview\n })),\n related_news: data.flatMap(d => \n d.related_news.map(n => ({\n symbol: d.symbol,\n ...n\n }))\n )\n};\n\nreturn [{ json: merged }];"
},
"typeVersion": 2
},
{
"id": "f595a543-332d-4e6d-8e2d-1352b8b1d206",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1408,
192
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "rJzDGbm8eDazr9g5",
"name": "Google Gemini API"
}
},
"typeVersion": 1
},
{
"id": "35e848bf-1da0-43c7-a6ce-9fffb770ad2e",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
-176
],
"parameters": {
"width": 256,
"height": 432,
"content": "### Schedule Trigger \nAutomatically runs every morning at 8AM (modifiable). \nThis node initiates the workflow by fetching real-time market data and crypto news for AI analysis. \nAdjust timing to align with your preferred report cadence (e.g., 12H or weekly).\n"
},
"typeVersion": 1
},
{
"id": "12d5ee8c-0a6f-4528-8b81-a094014aa3d5",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
144,
-512
],
"parameters": {
"color": 2,
"width": 368,
"height": 768,
"content": "### CoinGecko API — Market Overview \nFetches live market data for top coins (BTC, ETH, SOL, etc.) using CoinGecko’s public API. \nPulls: \n- Price (USD), Market Cap, 24H % Change, Volume \n- Ranking & Symbol metadata \nThis forms the quantitative foundation of the AI summary. \nNo authentication required.\n\n### NewsAPI — Latest Crypto Headlines \nRetrieves the most recent crypto-related news articles. \nIncludes: title, URL, source, and publishedAt fields. \nKeyword filters: “crypto”, “bitcoin”, “ethereum”, “solana”, “blockchain”. \nRequires your **NewsAPI Key** credential. \nThis forms the narrative layer for the AI to interpret sentiment and narrative shifts.\n"
},
"typeVersion": 1
},
{
"id": "408b1da5-a9bd-4b08-8a4a-4f5a82d90ddf",
"name": "스티키 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
-144
],
"parameters": {
"color": 3,
"width": 432,
"height": 400,
"content": "### Data Merger \nCombines outputs from CoinGecko, NewsAPI, and CryptoPanic into one unified dataset. \nEnsures synchronized market metrics and sentiment for AI analysis. \nActs as the bridge between raw data collection and structured AI input.\n"
},
"typeVersion": 1
},
{
"id": "510a7cd8-3750-4e6d-b7b1-f4aebbfde89d",
"name": "스티키 노트3",
"type": "n8n-nodes-base.stickyNote",
"position": [
976,
-192
],
"parameters": {
"color": 4,
"width": 320,
"height": 448,
"content": "### Market Data Formatter \nNormalizes all incoming data into a standardized schema:\n- coin_name, price_usd, pct_change_24h, sentiment_score, and news_summary \nRemoves duplicates, aligns timestamps, and ensures uniform key-value pairs. \nPrepares data for LLM input with clear structure and readability.\n"
},
"typeVersion": 1
},
{
"id": "cc3abf93-eb89-4d22-a7da-5dbb43206958",
"name": "스티키 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1312,
-384
],
"parameters": {
"color": 5,
"width": 416,
"height": 704,
"content": "### AI Market Analyst (Gemini Model) \nUses **Google Gemini 1.5 Pro** to interpret both quantitative and narrative data. \nProduces a concise market intelligence brief containing: \n- Top 5 Movers (by % change) \n- Sentiment Overview (Bullish/Bearish/Neutral) \n- Market Summary (100–150 words) \n- Analyst Takeaway (Short actionable insight) \nActs as the “analyst brain” of the entire workflow.\n\n### Gemini AI Engine \nPrimary LLM responsible for market analysis and summary generation. \nYou may switch to OpenAI or Anthropic models by adjusting the connection node. \nCredential: “Google Gemini API”. \nOutputs are structured JSON for consistent downstream parsing.\n"
},
"typeVersion": 1
},
{
"id": "be9ff135-8b9a-468d-8f1e-78a01b762e1b",
"name": "스티키 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1744,
-224
],
"parameters": {
"color": 6,
"width": 272,
"height": 544,
"content": "### Market Summary Formatter \nConverts parsed JSON into a visually formatted Discord embed message. \nSections:\n- 🪙 Top Movers \n- 📊 Market Summary \n- 💬 Sentiment \n- ⚡ Analyst Takeaway \nAdds bold titles, emojis, and clean spacing for Discord readability.\n"
},
"typeVersion": 1
},
{
"id": "037f9870-33c2-4ef7-9f73-e2af5ebb90e4",
"name": "스티키 노트6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2032,
-224
],
"parameters": {
"color": 7,
"width": 256,
"height": 544,
"content": "### Discord Auto-Poster \nPublishes the formatted AI-generated market report directly to your chosen Discord channel. \nUses either Bot Token or Webhook URL for authentication. \nDefault channel: #daily-market-summary \nThis is the final output node — the polished AI summary goes live here.\n"
},
"typeVersion": 1
},
{
"id": "7117884e-da79-465f-b006-4c8f683eb943",
"name": "스티키 노트7",
"type": "n8n-nodes-base.stickyNote",
"position": [
2304,
-592
],
"parameters": {
"width": 752,
"height": 912,
"content": "## Automated Crypto Market Summaries to Discord using Gemini AI & CoinGecko\n\n### Try It Out! \nAutomate professional-grade crypto market reports directly in Discord. \nThis workflow analyzes live prices, sentiment, and news to produce actionable daily summaries via Gemini AI.\n\n### How It Works \n1. Triggers daily at 8AM. \n2. Fetches market data (CoinGecko) + headlines (NewsAPI). \n3. Merges and formats clean dataset. \n4. AI Agent (Gemini) creates a market summary + sentiment report. \n5. Final message is formatted and posted to Discord.\n\n### How to Use \n- Configure your CoinGecko & NewsAPI credentials. \n- Set preferred coins or keywords. \n- Enter your Discord Webhook or Bot Token. \n- Adjust the trigger time to fit your timezone.\n\n### (Optional) Extend This Workflow \n- Add CoinMarketCap or Binance API for extended metrics. \n- Append Twitter API node for trending mentions. \n- Use Google Sheets or Notion node to archive daily summaries.\n\n### Requirements \n- Google Gemini API key \n- NewsAPI key \n- Discord Bot or Webhook URL \n\n### Summary \nA fully automated, AI-powered Discord summary system delivering crypto intelligence, top movers, and market context every day — hands-free.\n\n## AfK Crypto Website: afkcrypto.com\n## Join our Discord Server! https://discord.com/invite/v4DgTEUUJJ"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "3bd52abd-c5e9-441c-b5df-53d209a2fff7",
"connections": {
"ff3c7874-f1da-469d-b670-79d068ca95a8": {
"main": [
[
{
"node": "7a09fb3c-bd9c-4ed9-9c4a-96f65769077c",
"type": "main",
"index": 0
}
]
]
},
"7a09fb3c-bd9c-4ed9-9c4a-96f65769077c": {
"main": [
[
{
"node": "25879578-b139-4395-b8d1-f4d821b0292b",
"type": "main",
"index": 0
}
]
]
},
"25879578-b139-4395-b8d1-f4d821b0292b": {
"main": [
[
{
"node": "5145760a-c928-45fb-a236-3edd3ece1c7f",
"type": "main",
"index": 0
}
]
]
},
"af2d66f9-0daf-46bf-b82e-ef39a02efb29": {
"main": [
[
{
"node": "ff3c7874-f1da-469d-b670-79d068ca95a8",
"type": "main",
"index": 1
}
]
]
},
"1743c462-8ac0-4fcd-8292-3044723128a9": {
"main": [
[
{
"node": "af2d66f9-0daf-46bf-b82e-ef39a02efb29",
"type": "main",
"index": 0
},
{
"node": "f23773ff-70db-4f38-b6e0-2b059eb4631b",
"type": "main",
"index": 0
}
]
]
},
"f23773ff-70db-4f38-b6e0-2b059eb4631b": {
"main": [
[
{
"node": "ff3c7874-f1da-469d-b670-79d068ca95a8",
"type": "main",
"index": 0
}
]
]
},
"02f04821-bcd6-4106-88a2-4b6c41fdb8d0": {
"main": [
[
{
"node": "101175a4-e194-43dc-a679-a380c2d74175",
"type": "main",
"index": 0
}
]
]
},
"5145760a-c928-45fb-a236-3edd3ece1c7f": {
"main": [
[
{
"node": "02f04821-bcd6-4106-88a2-4b6c41fdb8d0",
"type": "main",
"index": 0
}
]
]
},
"f595a543-332d-4e6d-8e2d-1352b8b1d206": {
"ai_languageModel": [
[
{
"node": "5145760a-c928-45fb-a236-3edd3ece1c7f",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 암호화폐 거래, AI 요약
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
SOL/USDT 다중 시간 프레임 AI 시장 분석기 및 트레이딩 시스템 (Telegram 승인 포함)
Gemini AI, 멀티 타임프레임 분석 및 AFK Crypto를 사용한 Solana 트레이딩 자동화
If
Code
Wait
+
If
Code
Wait
56 노드Jeff
암호화폐 거래
매일 AI 기반 글로벌 트렌드 분석 (GDELT, NewsAPI, Discord)
Gemini AI, GDELT, NewsAPI 및 Discord를 사용한 매일 글로벌 트렌드 분석
Code
Merge
Discord
+
Code
Merge
Discord
18 노드Jeff
시장 조사
감정 분석 봇
사용Google Gemini및EODHD新闻API实现자동화股票情感분석
If
Code
Http Request
+
If
Code
Http Request
18 노드Raz Hadas
암호화폐 거래
K선도와 뉴스 분석을 사용하여 AI로운 주식 거래 추천 생성
K선도와 뉴스 분석을 사용하여 AI로운 주식 거래 추천 생성
Code
Merge
Switch
+
Code
Merge
Switch
22 노드Paul Abraham
암호화폐 거래
Telegram을 통해 Finnhub API와 Gemini AI를 사용하여 IPO 일정 알림
Telegram을 통해 Finnhub API와 Gemini AI를 사용하여 IPO 일정 알림을 가져옵니다.
Set
Code
Telegram
+
Set
Code
Telegram
15 노드Malik Hashir
암호화폐 거래
Reddit 뉴스 자동화 프로페셔널 버전 - 다중 플랫폼 요약
Gemini를 사용하여 Telegram, Discord, Slack에 AI精选Reddit 요약 생성
If
Set
Code
+
If
Set
Code
25 노드Hemanth Arety
시장 조사
워크플로우 정보
난이도
고급
노드 수18
카테고리2
노드 유형9
저자
Jeff
@afkcryptoAutomation expert and founder of AFK Crypto with over 5 years of experience in crypto automations.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유