Binance SM 뉴스 및 정서 분석가 Webhook 도구
고급
이것은Finance, AI분야의자동화 워크플로우로, 28개의 노드를 포함합니다.주로 Set, Code, Merge, Webhook, RssFeedRead 등의 노드를 사용하며인공지능 기술을 결합하여 스마트 자동화를 구현합니다. GPT-4o와 Telegram 알림을 사용한 모든 토큰의 암호화폐 뉴스 감정 분석
사전 요구사항
- •HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
- •OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "f8Zow3PmilvRq85m",
"meta": {
"instanceId": "a5283507e1917a33cc3ae615b2e7d5ad2c1e50955e6f831272ddd5ab816f3fb6"
},
"name": "Binance SM News and Sentiment Analyst Webhook Tool",
"tags": [],
"nodes": [
{
"id": "1d71285d-a4bf-456a-a356-b9fa8b74c9d3",
"name": "OpenAI 채팅 모델",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1020,
1220
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "yUizd8t0sD5wMYVG",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "300cab6c-63ee-4271-a63e-b3afb135bdcf",
"name": "쿼리 설정",
"type": "n8n-nodes-base.set",
"position": [
-460,
1040
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9128e9e7-d1b8-4e89-8422-849b8dd519d8",
"name": "query",
"type": "string",
"value": "={{ $json.output }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d7307bc3-f7c2-4db1-8674-5c6025ce7e2a",
"name": "암호화폐 뉴스 및 감정 에이전트",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-960,
1040
],
"parameters": {
"text": "={{$json.body.message}}",
"options": {
"systemMessage": "Your job is to analyze the keyword of the question and output it as a single word. The keyword will always be the name of a cryptocurrency."
},
"promptType": "define"
},
"typeVersion": 1.8
},
{
"id": "c4ad1805-cb48-45a3-b850-4960f59299f0",
"name": "RSS 코인텔레그래프",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
160,
200
],
"parameters": {
"url": "https://cointelegraph.com/rss",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "5fc71ef5-a376-41a0-9213-15cc4527b049",
"name": "RSS 비트코인매거진",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
160,
360
],
"parameters": {
"url": "https://bitcoinmagazine.com/.rss/full/",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "bdbf7bab-c3a6-4f65-bbb9-a6cd83763dc5",
"name": "RSS 코인데스크",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
160,
520
],
"parameters": {
"url": "https://www.coindesk.com/arc/outboundfeeds/rss/",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "836d7edd-62c5-4819-aa30-c48c4b1f005d",
"name": "RSS 비트코인리스트",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
160,
680
],
"parameters": {
"url": "https://bitcoinist.com/feed/",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "a0778852-e86b-41e5-a3f8-6d4352e397a1",
"name": "RSS 뉴스비티씨",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
160,
840
],
"parameters": {
"url": "https://www.newsbtc.com/feed/",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "d5c5cc4f-ef15-40af-be33-31ce2dbdc45e",
"name": "RSS 크립토포테이토",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
160,
1200
],
"parameters": {
"url": "https://cryptopotato.com/feed/",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "5f02ad60-9b0a-49fc-afd7-558ac5aeee2d",
"name": "RSS 99비트코인즈",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
160,
1380
],
"parameters": {
"url": "https://99bitcoins.com/feed/",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "cc5373ab-931a-4b95-a1d4-6d21fa18273a",
"name": "RSS 크립토브리핑",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
160,
1560
],
"parameters": {
"url": "https://cryptobriefing.com/feed/",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "e5baa2ef-0455-42b0-a597-dedd551ae1aa",
"name": "RSS 크립토.뉴스",
"type": "n8n-nodes-base.rssFeedRead",
"position": [
160,
1720
],
"parameters": {
"url": "https://crypto.news/feed/",
"options": {}
},
"typeVersion": 1.1
},
{
"id": "2cb96040-0e47-41b5-9c32-8362d397333c",
"name": "모든 아티클 병합",
"type": "n8n-nodes-base.merge",
"position": [
840,
880
],
"parameters": {
"numberInputs": 10
},
"typeVersion": 3.1
},
{
"id": "a1f53681-504a-445a-9aa1-35c40f174e0c",
"name": "쿼리별 필터링",
"type": "n8n-nodes-base.code",
"position": [
1080,
1020
],
"parameters": {
"jsCode": "const term = $node[\"Set Query\"].json.query.toLowerCase();\nreturn items.filter(item => {\n const j = item.json;\n const title = (j.title || \"\").toLowerCase();\n const snippet = (j.contentSnippet || j.description || \"\").toLowerCase();\n const fullContent = (j.content || \"\").toLowerCase();\n return title.includes(term)\n || snippet.includes(term)\n || fullContent.includes(term);\n});"
},
"typeVersion": 2
},
{
"id": "3b886f03-884f-4c9a-bb74-46be78c941fe",
"name": "프롬프트 구성",
"type": "n8n-nodes-base.code",
"position": [
1400,
1020
],
"parameters": {
"jsCode": "const q = $node[\"Set Query\"].json.query;\nconst list = items\n .map(i => `- ${i.json.title} (${i.json.link})`)\n .join(\"\\n\");\nconst prompt = `\nYou are a crypto-industry news analyst.\nSummarize current news and market sentiment for **${q}** based on these articles:\n${list}\n\nAnswer in 3 parts:\n1. Summary of News\n2. Market Sentiment\n3. Links to reference news articles\n`;\nreturn [{ json: { prompt } }];"
},
"typeVersion": 2
},
{
"id": "936b9c46-0ea4-498a-9dbb-b4f6b62cf70f",
"name": "뉴스 및 감정 요약 (GPT-4o)",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1680,
1020
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {},
"messages": {
"values": [
{
"content": "={{ $node[\"Build Prompt\"].json.prompt }}"
},
{
"role": "assistant",
"content": "You are a crypto‐industry news analyst. Summarize sentiment clearly and concisely."
}
]
}
},
"credentials": {
"openAiApi": {
"id": "yUizd8t0sD5wMYVG",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "2c1b4212-3675-416d-a0f4-f1bce7b1581b",
"name": "Telegram 메시지 준비",
"type": "n8n-nodes-base.set",
"position": [
2100,
1020
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "565fb705-ac83-4a96-9343-2e29e348cc4f",
"name": "summary",
"type": "string",
"value": "={{ $json.message.content }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ae4eacc3-281d-4c40-a1c8-fbd580fb49a8",
"name": "고정 메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1120,
900
],
"parameters": {
"color": 6,
"width": 600,
"height": 460,
"content": "## Extract Keyword \nThis AI agent parses the user input and returns a single-word keyword to help match relevant news articles."
},
"typeVersion": 1
},
{
"id": "ea8734d6-5f17-4587-88aa-fcd342a563c5",
"name": "고정 메모4",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"color": 5,
"width": 460,
"height": 1980,
"content": "## News Aggregators\nPulls articles from major crypto news sources. You can add more RSS feeds here to expand coverage."
},
"typeVersion": 1
},
{
"id": "214d3fa9-d3f2-4e8a-bfab-5d4deb2881cf",
"name": "고정 메모5",
"type": "n8n-nodes-base.stickyNote",
"position": [
760,
680
],
"parameters": {
"color": 2,
"width": 480,
"height": 760,
"content": "## Merge & Filter News\nCombines all RSS articles and filters them using the extracted keyword to match only relevant results."
},
"typeVersion": 1
},
{
"id": "c6942449-1e0b-4bca-b1e0-411a3deaf26d",
"name": "고정 메모6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1320,
840
],
"parameters": {
"color": 7,
"width": 260,
"height": 360,
"content": "## Prepare AI Prompt\nConstructs the input prompt for GPT-4o with a list of filtered articles. Output includes summary, sentiment, and article links."
},
"typeVersion": 1
},
{
"id": "7f401bd0-f14d-49d6-9d4a-fcb6e01bd64c",
"name": "고정 메모7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1640,
800
],
"parameters": {
"color": 3,
"width": 340,
"height": 440,
"content": "## Summarize News & Sentiment (GPT-4o)\nUses OpenAI GPT-4o to generate a concise summary of the news, analyze market sentiment, and return formatted results.\n\n"
},
"typeVersion": 1
},
{
"id": "f60cb8e4-8d3f-4112-a200-6affb3b80cb3",
"name": "고정 메모8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2040,
760
],
"parameters": {
"color": 6,
"height": 460,
"content": "## Format for Telegram\n\nExtracts the AI summary and prepares it for Telegram delivery. Change the variable if you want to include other data.\n\n\n"
},
"typeVersion": 1
},
{
"id": "e19e48b4-36cb-4b0b-87c5-0bae7f6068d7",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-1440,
1040
],
"webhookId": "a41af97d-6bd6-44d2-b79e-dca6df1e6e7e",
"parameters": {
"path": "a41af97d-6bd6-44d2-b79e-dca6df1e6e7e",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "7fae635b-2c8d-44e5-ac2a-b8a458653905",
"name": "Webhook 응답",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
2440,
1020
],
"parameters": {
"options": {},
"respondWith": "allIncomingItems"
},
"typeVersion": 1.2
},
{
"id": "96b562cd-1a55-40ef-aa0c-5d553d7f9818",
"name": "고정 메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1500,
740
],
"parameters": {
"color": 4,
"height": 480,
"content": "## Webhook Trigger\nNode: Webhook\nAccepts **incoming HTTP POST requests**.\nExpected body format:\n\njson\n{ \"message\": \"<symbol>\" }\n\nThis kicks off the **full news + sentiment analysis process** for a given crypto asset."
},
"typeVersion": 1
},
{
"id": "8422e6bb-320e-4b5b-b392-2ba3adb215b7",
"name": "고정 메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
2380,
760
],
"parameters": {
"color": 4,
"height": 480,
"content": "## Return Results to Caller\nNode: Respond to Webhook\n**Sends the final formatted message** back to the parent workflow that triggered the call."
},
"typeVersion": 1
},
{
"id": "f323030f-c92f-4bff-a5df-f498aa70d9c4",
"name": "고정 메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2780,
-360
],
"parameters": {
"width": 1340,
"height": 2360,
"content": "# 📰 Binance SM News and Sentiment Analyst Webhook Tool – Documentation\n\nA sentiment intelligence sub-agent that aggregates crypto news from top-tier RSS feeds, filters it based on a given token, and generates a market sentiment summary + headline list formatted for Telegram.\n\n---\n\n## 🎯 Purpose\n\nThis tool is responsible for:\n\n* Accepting a webhook request with a token symbol (e.g., `DOGE`, `SOL`)\n* Aggregating recent articles from 9+ major crypto news feeds\n* Filtering for articles relevant to the symbol\n* Summarizing the sentiment and key headlines using GPT-4o\n* Returning a Telegram-friendly formatted response to the caller\n\n---\n\n## 🛠️ Architecture & Key Components\n\n| Component | Role |\n| ---------------------------------- | -------------------------------------------------------------- |\n| 🔗 `Webhook` | Triggered externally with `{ message: \"BTC\" }` |\n| 🧠 `Crypto News & Sentiment Agent` | Uses GPT to extract the correct crypto keyword |\n| 🔄 RSS Feed Readers | Pull from Cointelegraph, Coindesk, NewsBTC, Bitcoinist, etc. |\n| 📦 `Merge All Articles` | Combines articles into one stream |\n| 🧹 `Filter by Query` | Keeps only the news relevant to the requested token |\n| 📝 `Build Prompt` | Builds natural-language prompt to send to GPT |\n| 🧠 `Summarize News & Sentiment` | GPT-4o summarizes the filtered articles with sentiment scoring |\n| 🧾 `Prepare Telegram Message` | Formats the final summary in clean, Telegram-readable style |\n| 📤 `Respond to Webhook` | Returns the message to the triggering parent workflow |\n\n---\n\n## 📥 Webhook Input\n\n> Expects a simple HTTP POST to the webhook endpoint:\n\n```json\n{\n \"message\": \"ETH\"\n}\n```\n\nThis triggers a full pipeline execution, resulting in a text summary like:\n\n---\n\n## 📤 Sample Output Format\n\n```\n📣 ETH Sentiment: Neutral\n\n• BlackRock’s tokenized fund expands to Ethereum mainnet (CoinDesk) \n• Ethereum fees remain high, analysts call for L2 migration (NewsBTC) \n• Vitalik warns about centralized risks in staking (Cointelegraph)\n```\n\n---\n\n## 🔍 Use Cases\n\n| Scenario | Outcome |\n| ------------------------------------------ | ---------------------------------------------------- |\n| Sentiment summary for BTC | Fetches 8–12 filtered headlines, extracts tone |\n| Daily news pulse for SOL | Shows project-related news with brief sentiment flag |\n| Enhances technical analysis interpretation | Adds macro/emotional context to trend setups |\n| Telegram bot asks for XRP sentiment | Sends full response back to user instantly |\n\n---\n\n## 📚 How to Install\n\n### 1. Import & Activate\n\n1. Load the `.json` into your n8n instance\n2. Enable the webhook\n3. Link to parent agent (`Financial Analyst`, `Quant Agent`)\n\n### 2. Set Credentials\n\n* Requires a working **OpenAI API Key** (for GPT-4o)\n* No authentication required for RSS sources\n\n### 3. Connect to Caller\n\nAny external workflow (like your `Quant AI Agent`) can call this by:\n\n* Using HTTP Request Node\n* POSTing to this webhook with `{ message: \"BTC\" }` in the body\n\n---\n\n## 🧾 Licensing & Support\n\n🔗 **Don Jayamaha – LinkedIn**\n[http://linkedin.com/in/donjayamahajr](http://linkedin.com/in/donjayamahajr)\n\n© 2025 Treasurium Capital Limited Company. All rights reserved.\nThis system—including workflow architecture, prompt design, and logic structure—is protected under U.S. copyright law. Unauthorized resale or reproduction is prohibited.\n\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "9c17a79d-f8a4-413e-a486-2e89229994cf",
"connections": {
"e19e48b4-36cb-4b0b-87c5-0bae7f6068d7": {
"main": [
[
{
"node": "d7307bc3-f7c2-4db1-8674-5c6025ce7e2a",
"type": "main",
"index": 0
}
]
]
},
"300cab6c-63ee-4271-a63e-b3afb135bdcf": {
"main": [
[
{
"node": "c4ad1805-cb48-45a3-b850-4960f59299f0",
"type": "main",
"index": 0
},
{
"node": "5fc71ef5-a376-41a0-9213-15cc4527b049",
"type": "main",
"index": 0
},
{
"node": "bdbf7bab-c3a6-4f65-bbb9-a6cd83763dc5",
"type": "main",
"index": 0
},
{
"node": "836d7edd-62c5-4819-aa30-c48c4b1f005d",
"type": "main",
"index": 0
},
{
"node": "a0778852-e86b-41e5-a3f8-6d4352e397a1",
"type": "main",
"index": 0
},
{
"node": "d5c5cc4f-ef15-40af-be33-31ce2dbdc45e",
"type": "main",
"index": 0
},
{
"node": "5f02ad60-9b0a-49fc-afd7-558ac5aeee2d",
"type": "main",
"index": 0
},
{
"node": "cc5373ab-931a-4b95-a1d4-6d21fa18273a",
"type": "main",
"index": 0
},
{
"node": "e5baa2ef-0455-42b0-a597-dedd551ae1aa",
"type": "main",
"index": 0
}
]
]
},
"a0778852-e86b-41e5-a3f8-6d4352e397a1": {
"main": [
[
{
"node": "2cb96040-0e47-41b5-9c32-8362d397333c",
"type": "main",
"index": 4
}
]
]
},
"3b886f03-884f-4c9a-bb74-46be78c941fe": {
"main": [
[
{
"node": "936b9c46-0ea4-498a-9dbb-b4f6b62cf70f",
"type": "main",
"index": 0
}
]
]
},
"bdbf7bab-c3a6-4f65-bbb9-a6cd83763dc5": {
"main": [
[
{
"node": "2cb96040-0e47-41b5-9c32-8362d397333c",
"type": "main",
"index": 2
}
]
]
},
"5f02ad60-9b0a-49fc-afd7-558ac5aeee2d": {
"main": [
[
{
"node": "2cb96040-0e47-41b5-9c32-8362d397333c",
"type": "main",
"index": 7
}
]
]
},
"836d7edd-62c5-4819-aa30-c48c4b1f005d": {
"main": [
[
{
"node": "2cb96040-0e47-41b5-9c32-8362d397333c",
"type": "main",
"index": 3
}
]
]
},
"a1f53681-504a-445a-9aa1-35c40f174e0c": {
"main": [
[
{
"node": "3b886f03-884f-4c9a-bb74-46be78c941fe",
"type": "main",
"index": 0
}
]
]
},
"e5baa2ef-0455-42b0-a597-dedd551ae1aa": {
"main": [
[
{
"node": "2cb96040-0e47-41b5-9c32-8362d397333c",
"type": "main",
"index": 9
}
]
]
},
"d5c5cc4f-ef15-40af-be33-31ce2dbdc45e": {
"main": [
[
{
"node": "2cb96040-0e47-41b5-9c32-8362d397333c",
"type": "main",
"index": 6
}
]
]
},
"1d71285d-a4bf-456a-a356-b9fa8b74c9d3": {
"ai_languageModel": [
[
{
"node": "d7307bc3-f7c2-4db1-8674-5c6025ce7e2a",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"c4ad1805-cb48-45a3-b850-4960f59299f0": {
"main": [
[
{
"node": "2cb96040-0e47-41b5-9c32-8362d397333c",
"type": "main",
"index": 0
}
]
]
},
"2cb96040-0e47-41b5-9c32-8362d397333c": {
"main": [
[
{
"node": "a1f53681-504a-445a-9aa1-35c40f174e0c",
"type": "main",
"index": 0
}
]
]
},
"cc5373ab-931a-4b95-a1d4-6d21fa18273a": {
"main": [
[
{
"node": "2cb96040-0e47-41b5-9c32-8362d397333c",
"type": "main",
"index": 8
}
]
]
},
"5fc71ef5-a376-41a0-9213-15cc4527b049": {
"main": [
[
{
"node": "2cb96040-0e47-41b5-9c32-8362d397333c",
"type": "main",
"index": 1
}
]
]
},
"2c1b4212-3675-416d-a0f4-f1bce7b1581b": {
"main": [
[
{
"node": "7fae635b-2c8d-44e5-ac2a-b8a458653905",
"type": "main",
"index": 0
}
]
]
},
"d7307bc3-f7c2-4db1-8674-5c6025ce7e2a": {
"main": [
[
{
"node": "300cab6c-63ee-4271-a63e-b3afb135bdcf",
"type": "main",
"index": 0
}
]
]
},
"936b9c46-0ea4-498a-9dbb-b4f6b62cf70f": {
"main": [
[
{
"node": "2c1b4212-3675-416d-a0f4-f1bce7b1581b",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 금융, 인공지능
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
AAVE 포트폴리오 전문 AI 어시스턴트
Telegram + 이메일 + GPT-4o + Moralis
Set
Code
Gmail
+
Set
Code
Gmail
23 노드Don Jayamaha Jr
금융
Bitget AI 트레이딩 에이전트
Telegram을 통해 GPT-4o-mini AI 에이전트를 사용한 Bitget 현물 거래 자동화
Set
Code
Crypto
+
Set
Code
Crypto
156 노드Don Jayamaha Jr
GPT-4o, WordPress, LinkedIn을 사용한 RSS 콘텐츠 자동 블로그 게시
GPT-4o, WordPress 및 LinkedIn을 사용한 RSS 콘텐츠 블로그 게시물 자동 발행
If
Set
Code
+
If
Set
Code
40 노드Immanuel
인공지능
비트코인 기술 지표 Webhook 도구
币安技术指标 Webhook 工具
Code
Merge
Webhook
+
Code
Merge
Webhook
69 노드Don Jayamaha Jr
금융
비트코인 현물 시장 정량 AI 인텔리전스 볼륨
币安现货市场量化AI스마트体 | GPT-4o + Telegram (主界面)
Set
Code
Telegram
+
Set
Code
Telegram
21 노드Don Jayamaha Jr
금융
GPT-4o 기술과 뉴스 감정 분석 기반 자동 주식 분석 리포트
사용GPT-4o技术및新闻情感분석의자동화股票분석보고서
Set
Code
Html
+
Set
Code
Html
45 노드Elay Guez
금융
워크플로우 정보
난이도
고급
노드 수28
카테고리2
노드 유형10
저자
Don Jayamaha Jr
@don-the-gem-dealerWith 12 years of experience as a Blockchain Strategist and Web3 Architect, I specialize in bridging the gap between traditional industries and decentralized technologies. My expertise spans tokenized assets, crypto payment integrations, and blockchain-driven market solutions.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유