다 사이트 제품 가격 모니터링: Claude-Sonnet, Google Sheets, Telegram 알림
이것은Market Research, AI Summarization분야의자동화 워크플로우로, 19개의 노드를 포함합니다.주로 Code, Wait, Merge, SplitOut, Telegram 등의 노드를 사용하며. Firecrawl, Claude-Sonnet AI와 Telegram 알림을 사용한 전자상거래 가격 모니터링 시스템
- •Telegram Bot Token
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
사용된 노드 (19)
{
"id": "YnD0kvM9AYMjYxmj",
"meta": {
"instanceId": "b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502",
"templateCredsSetupCompleted": true
},
"name": "Multi-Site Product Price Monitor: Claude-Sonnet , Google Sheets & Telegram Alert",
"tags": [
{
"id": "7zsdOA50QGm7RNqx",
"name": "Monitoring",
"createdAt": "2025-10-23T16:41:17.031Z",
"updatedAt": "2025-10-23T16:41:17.031Z"
},
{
"id": "BL8TsHYj5FkNYzfi",
"name": "E-commerce",
"createdAt": "2025-10-23T16:41:16.985Z",
"updatedAt": "2025-10-23T16:41:16.985Z"
},
{
"id": "dlf9zFSN3j6s2jgO",
"name": "Business Intelligence",
"createdAt": "2025-10-23T16:41:17.008Z",
"updatedAt": "2025-10-23T16:41:17.008Z"
},
{
"id": "lpozR2Ct8reF9bCk",
"name": "AI",
"createdAt": "2025-10-23T16:41:17.062Z",
"updatedAt": "2025-10-23T16:41:17.062Z"
}
],
"nodes": [
{
"id": "306294b3-27b8-4821-9b04-0e8d210af07e",
"name": "⏰ 6시간마다 모니터링",
"type": "n8n-nodes-base.scheduleTrigger",
"notes": "Triggers the workflow every 6 hours to check competitor data",
"position": [
-832,
352
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 6
}
]
}
},
"typeVersion": 1.2
},
{
"id": "8b934690-1e26-4810-820d-8ff785691adf",
"name": "URL 스크래핑 및 콘텐츠 추출",
"type": "@mendable/n8n-nodes-firecrawl.firecrawl",
"position": [
-1408,
96
],
"parameters": {
"url": "https://www.on.com/en-sg/shop/mens/shoes",
"operation": "scrape",
"scrapeOptions": {
"options": {
"formats": {
"format": [
{
"type": "json",
"prompt": "price of the shoe"
}
]
},
"headers": {}
}
},
"requestOptions": {}
},
"credentials": {
"firecrawlApi": {
"id": "t2Tp5wdqfarSfsZ4",
"name": "Firecrawl account"
}
},
"typeVersion": 1
},
{
"id": "90ed5eb7-6236-47e1-88c6-c5278efe24fa",
"name": "모델에 메시지 전송",
"type": "n8n-nodes-base.perplexity",
"position": [
-1568,
0
],
"parameters": {
"model": "sonar",
"options": {},
"messages": {
"message": [
{
"content": "Price of the shoe "
}
]
},
"requestOptions": {}
},
"credentials": {
"perplexityApi": {
"id": "hmDBlVXt4GJKfIfz",
"name": "Perplexity account new"
}
},
"typeVersion": 1
},
{
"id": "e1e006de-d363-4e5a-adbd-77ffc901f42d",
"name": "분할 처리",
"type": "n8n-nodes-base.splitOut",
"position": [
-1296,
0
],
"parameters": {
"options": {},
"fieldToSplitOut": "citations"
},
"typeVersion": 1
},
{
"id": "11fdf8bc-aa37-4f42-8bbe-8e16c47c8b47",
"name": "Apify 결과 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1216,
272
],
"parameters": {
"url": "https://api.apify.com/v2/acts/compass~google-maps-extractor/runs/last/dataset/items?token=YOUR API KEY",
"options": {},
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "vPMKFhRN7iuRAL86",
"name": "Apify"
}
},
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "b6a20e25-d82a-493b-b305-066e043f6ba1",
"name": "Apify 액터 시작",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1616,
272
],
"parameters": {
"url": "https://api.apify.com/v2/acts/compass~google-maps-extractor/runs?token=YOUR API KEY",
"method": "POST",
"options": {},
"jsonBody": "{\n \"language\": \"en\",\n \"locationQuery\": \"worldwide\",\n \"maxCrawledPlacesPerSearch\": 50,\n \"searchStringsArray\": [\n \"shoe stores\",\n \"shoe shops\"\n ],\n \"skipClosedPlaces\": false\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth"
},
"credentials": {
"httpBearerAuth": {
"id": "vPMKFhRN7iuRAL86",
"name": "Apify"
}
},
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "47a1e71a-6bbf-4cfe-82f1-b46744d247ee",
"name": "비정형 AI 텍스트를 구조화된 데이터 필드로 변환",
"type": "n8n-nodes-base.code",
"notes": "Parses and validates the AI extracted data",
"position": [
-576,
192
],
"parameters": {
"jsCode": "// Parse AI response and clean data\nconst items = [];\n\nfor (const item of $input.all()) {\n try {\n // Parse the AI response\n let parsed;\n const response = item.json.choices?.[0]?.message?.content || item.json.message || '';\n \n // Remove markdown code blocks if present\n const cleaned = response.replace(/```json\\n?|```\\n?/g, '').trim();\n \n try {\n parsed = JSON.parse(cleaned);\n } catch (e) {\n // Try to extract JSON from the response\n const jsonMatch = cleaned.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch) {\n parsed = JSON.parse(jsonMatch[0]);\n } else {\n throw new Error('Could not parse JSON from AI response');\n }\n }\n \n // Enrich with metadata\n items.push({\n json: {\n ...parsed,\n scrapedAt: new Date().toISOString(),\n priceChange: 0, // Will be calculated in comparison\n priceChangePercent: 0,\n isNewLow: false,\n alertLevel: 'none'\n }\n });\n } catch (error) {\n console.error('Failed to parse item:', error.message);\n // Add error item for debugging\n items.push({\n json: {\n error: error.message,\n rawResponse: item.json,\n competitorName: 'Parse Error',\n scrapedAt: new Date().toISOString()\n }\n });\n }\n}\n\nreturn items;"
},
"typeVersion": 2
},
{
"id": "3e8d7348-ccef-4cb5-aca4-d5ed6f210199",
"name": "🔀 현재 데이터와 이력 데이터 병합1",
"type": "n8n-nodes-base.merge",
"notes": "Combines current scrape with historical data for comparison",
"position": [
-384,
224
],
"parameters": {
"mode": "combine",
"options": {},
"fieldsToMatchString": "rawResponse.message.content"
},
"typeVersion": 3
},
{
"id": "7e24cbab-31e4-47ba-97f2-9a7a71335905",
"name": "🔍 가격 및 재고 변화 감지1",
"type": "n8n-nodes-base.code",
"notes": "Intelligent change detection with alert level classification",
"position": [
-208,
224
],
"parameters": {
"jsCode": "// Compare current prices with historical and detect changes\nconst results = [];\n\nfor (const item of $input.all()) {\n const current = item.json;\n \n // Skip error items\n if (current.error) {\n results.push({ json: current });\n continue;\n }\n \n // Find historical data for this competitor\n const historical = $('📊 Read Historical Data').all()\n .find(h => h.json.competitorName === current.competitorName);\n \n let alertLevel = 'none';\n let changes = [];\n \n if (historical && historical.json.currentPrice) {\n const oldPrice = parseFloat(historical.json.currentPrice);\n const newPrice = parseFloat(current.currentPrice);\n const priceChange = newPrice - oldPrice;\n const priceChangePercent = ((priceChange / oldPrice) * 100).toFixed(2);\n \n current.priceChange = priceChange;\n current.priceChangePercent = parseFloat(priceChangePercent);\n current.previousPrice = oldPrice;\n \n // Determine alert level based on price changes\n if (Math.abs(priceChangePercent) >= 20) {\n alertLevel = 'critical';\n changes.push(`Price ${priceChange > 0 ? 'increased' : 'decreased'} by ${Math.abs(priceChangePercent)}%`);\n } else if (Math.abs(priceChangePercent) >= 10) {\n alertLevel = 'warning';\n changes.push(`Price ${priceChange > 0 ? 'increased' : 'decreased'} by ${Math.abs(priceChangePercent)}%`);\n } else if (Math.abs(priceChangePercent) >= 5) {\n alertLevel = 'info';\n changes.push(`Minor price change: ${priceChangePercent}%`);\n }\n \n // Check if it's a new low price\n const historicalLow = parseFloat(historical.json.lowestPrice || oldPrice);\n if (newPrice < historicalLow) {\n current.isNewLow = true;\n alertLevel = alertLevel === 'none' ? 'info' : alertLevel;\n changes.push('🎯 NEW LOWEST PRICE!');\n }\n current.lowestPrice = Math.min(newPrice, historicalLow);\n \n // Stock level changes\n if (historical.json.stockLevel !== current.stockLevel) {\n if (current.stockLevel === 'Out of Stock') {\n alertLevel = 'critical';\n changes.push('📦 Product went OUT OF STOCK');\n } else if (current.stockLevel === 'Low Stock') {\n alertLevel = alertLevel === 'none' ? 'warning' : alertLevel;\n changes.push('⚠️ Stock level is LOW');\n } else if (historical.json.stockLevel === 'Out of Stock' && current.inStock) {\n alertLevel = alertLevel === 'none' ? 'info' : alertLevel;\n changes.push('✅ Back in stock!');\n }\n }\n \n // Rating changes\n const oldRating = parseFloat(historical.json.rating || 0);\n const newRating = parseFloat(current.rating || 0);\n const ratingChange = newRating - oldRating;\n \n if (Math.abs(ratingChange) >= 0.5) {\n alertLevel = alertLevel === 'none' ? 'info' : alertLevel;\n changes.push(`⭐ Rating ${ratingChange > 0 ? 'improved' : 'dropped'} by ${Math.abs(ratingChange).toFixed(1)} stars`);\n }\n \n // Review count changes\n const oldReviews = parseInt(historical.json.reviewCount || 0);\n const newReviews = parseInt(current.reviewCount || 0);\n const reviewDiff = newReviews - oldReviews;\n \n if (reviewDiff > 0) {\n changes.push(`💬 ${reviewDiff} new review${reviewDiff > 1 ? 's' : ''}`);\n }\n } else {\n // First time seeing this competitor\n alertLevel = 'info';\n changes.push('🆕 First time tracking this competitor');\n current.lowestPrice = current.currentPrice;\n }\n \n current.alertLevel = alertLevel;\n current.changesSummary = changes.join(' | ');\n current.hasChanges = alertLevel !== 'none';\n \n results.push({ json: current });\n}\n\nreturn results;"
},
"typeVersion": 2
},
{
"id": "4b8b4578-e6aa-461a-ae0a-7289bd0bf7e3",
"name": "💾 이력 데이터 업데이트1",
"type": "n8n-nodes-base.googleSheets",
"notes": "Saves current data to historical tracking sheet",
"position": [
-32,
320
],
"parameters": {
"columns": {
"value": {
"rating": "={{ $json.rating }}",
"inStock": "={{ $json.inStock }}",
"currency": "={{ $json.currency }}",
"scrapedAt": "={{ $json.scrapedAt }}",
"productUrl": "={{ $json.productUrl }}",
"stockLevel": "={{ $json.stockLevel }}",
"lowestPrice": "={{ $json.lowestPrice }}",
"productName": "={{ $json.productName }}",
"reviewCount": "={{ $json.reviewCount }}",
"currentPrice": "={{ $json.currentPrice }}",
"originalPrice": "={{ $json.originalPrice }}",
"competitorName": "={{ $json.competitorName }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "append",
"sheetName": {
"mode": "name",
"value": "Historical Data"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "= {{ $env.GOOGLE_SHEET_ID }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "aGWAWeimeVnptYQh",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.7
},
{
"id": "28d2de55-ef62-40cd-a22b-a13eee3c2dc8",
"name": "워크플로우 실행 시",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1760,
144
],
"parameters": {},
"typeVersion": 1
},
{
"id": "62cf73d2-a328-463b-9ea5-0d3fa8e3ba56",
"name": "🤖 Claude-Sonnet 4.5를 사용한 AI 제품 데이터 추출",
"type": "@n8n/n8n-nodes-langchain.anthropic",
"position": [
-864,
192
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-5-20250929",
"cachedResultName": "claude-sonnet-4-5-20250929"
},
"options": {},
"messages": {
"values": [
{
"content": "You are an accurate e-commerce data parser. From the provided HTML, extract shoe details and output a pure JSON object—no markdown or extra text.\n\nInclude the following fields:\n\n- productName: string \n- currentPrice: number (numeric value only, no currency symbols) \n- originalPrice: number (if discounted, otherwise same as currentPrice) \n- currency: string (USD, EUR, etc.) \n- inStock: boolean \n- stockLevel: string (\"In Stock\", \"Low Stock\", \"Out of Stock\", \"Limited\", etc.) \n- rating: number (0-5 scale) \n- reviewCount: number \n- lastUpdated: string (current ISO timestamp) \n- productUrl: string (from context) \n- competitorName: string (from context)\n\nOutput only the JSON object—no notes, comments, or formatting.\n"
}
]
}
},
"credentials": {
"anthropicApi": {
"id": "S8laStQPC1u3EYuZ",
"name": "Anthropic account"
}
},
"typeVersion": 1
},
{
"id": "e5998861-2d29-4fdb-a5c0-445cf79ac50e",
"name": "🔀 현재 데이터와 이력 데이터 병합",
"type": "n8n-nodes-base.merge",
"notes": "Combines current scrape with historical data for comparison",
"position": [
-1024,
176
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3
},
{
"id": "6815d6c1-43c5-49a8-8f41-eafa0ee83363",
"name": "📊 이력 데이터 읽기",
"type": "n8n-nodes-base.googleSheets",
"notes": "Loads previous scan data for comparison",
"position": [
-624,
352
],
"parameters": {
"options": {},
"sheetName": {
"mode": "name",
"value": "Historical Data"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $env.GOOGLE_SHEET_ID }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "aGWAWeimeVnptYQh",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.7
},
{
"id": "0c300e39-74da-4947-ab75-1360158f48a1",
"name": "📝 알림 상세 정보 기록",
"type": "n8n-nodes-base.googleSheets",
"notes": "Logs all alerts to separate tracking sheet",
"position": [
-48,
160
],
"parameters": {
"columns": {
"value": {
"rating": "={{ $json.rating }}",
"timestamp": "={{ $json.scrapedAt }}",
"alertLevel": "={{ $json.alertLevel }}",
"productUrl": "={{ $json.productUrl }}",
"stockLevel": "={{ $json.stockLevel }}",
"priceChange": "={{ $json.priceChange || 0 }}",
"productName": "={{ $json.productName }}",
"currentPrice": "={{ $json.currentPrice }}",
"previousPrice": "={{ $json.previousPrice || 'N/A' }}",
"changesSummary": "={{ $json.changesSummary }}",
"competitorName": "={{ $json.competitorName }}",
"priceChangePercent": "={{ $json.priceChangePercent || 0 }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "append",
"sheetName": {
"mode": "name",
"value": "Alert Log"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "={{ $env.GOOGLE_SHEET_ID }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "aGWAWeimeVnptYQh",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.7
},
{
"id": "1833ee8f-13ca-40f3-a3ce-e7c09bbff5fc",
"name": "텍스트 메시지 전송",
"type": "n8n-nodes-base.telegram",
"position": [
112,
240
],
"webhookId": "ae976d33-11d1-4d92-9289-fc86a1525828",
"parameters": {
"text": "The competitors’ pricing has been finalized.",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "mYO3O1232v1KxESH",
"name": "Telegram account 2"
}
},
"typeVersion": 1.2
},
{
"id": "1209134e-cb58-4525-bbcb-ffee2a890ddb",
"name": "스티키 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2336,
-336
],
"parameters": {
"width": 2576,
"height": 880,
"content": "## Introduction\nAutomate price monitoring for e-commerce competitors—ideal for retailers, analysts, and pricing teams. Scrapes competitor sites, \nextracts pricing/stock data via AI, detects changes, and sends instant alerts for dynamic pricing strategies.\n## How It Works\nScrapes competitor URLs via Firecrawl and Apify, extracts data with AI, detects price/stock changes, logs to Google Sheets, and sends Telegram alerts.\n## Workflow Template\nTrigger → Scrape URL → AI Extract → Parse → Merge Historical → Detect Changes → Update Sheets + Send Telegram Alert\n## Workflow Steps\n1. **Trigger & Scrape** → Manual/scheduled trigger → Firecrawl + Apify fetch competitor data\n2. **AI Processing** → Claude extracts product details → Parses and structures data\n3. **Change Detection** → Reads historical prices → Merges with current data → Identifies updates\n4. **Output** → Logs alerts to Sheets → Updates historical data → Sends Telegram notification\n## Setup Instructions\n**1. Firecrawl API**\nGet key from dashboard → Add to n8n\n**2. Apify API**\nGet key from console → Add to n8n → Configure actors\n**3. AI Model (Claude/OpenAI)**\nGet API key → Add to n8n\n**4. Google Sheets OAuth2**\nCreate OAuth2 in Google Cloud Console → Authorize in n8n → Enable API\n**5. Telegram Bot**\nCreate via BotFather → Get token & chat ID → Add to n8n\n**6. Spreadsheet Setup**\nCreate Sheet with required columns → Copy ID → Paste in workflow\n## Prerequisites\nSelf-hosted n8n, Firecrawl account, Apify account, Claude/OpenAI API key,\nGoogle account (Sheets OAuth2),Telegram bot\n## Customization\nAdd more URLs, adjust scraping intervals, change detection thresholds, switch to Slack/email alerts,\nintegrate databases\n## Benefits\nSaves 2+ hours daily, real-time tracking, automated alerts, historical analysis, multi-source scraping\n\n"
},
"typeVersion": 1
},
{
"id": "864886e9-21d0-402f-8f1f-46216a5e1373",
"name": "Apify 스크래핑 작업 완료 대기",
"type": "n8n-nodes-base.wait",
"position": [
-1424,
272
],
"webhookId": "426f22d5-31db-4344-ae7a-13dedfc46bf4",
"parameters": {
"amount": 25
},
"typeVersion": 1.1
},
{
"id": "5b798a21-b3e1-4fb4-816a-d32a63367933",
"name": "스티키 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-608,
-304
],
"parameters": {
"color": 5,
"width": 352,
"height": 256,
"content": "## Google Sheets Structure\n**Required Columns:**\n- **Product Name** (Column A)\n- **Current Price** (Column B)\n- **Previous Price** (Column C)\n- **Stock Status** (Column D)\n- **Last Updated** (Column E)\n- **URL** (Column F)\n- **Change Detected** (Column G)"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "7e9182a3-7a64-45a2-9632-3de5d2917fcd",
"connections": {
"e1e006de-d363-4e5a-adbd-77ffc901f42d": {
"main": [
[
{
"node": "e5998861-2d29-4fdb-a5c0-445cf79ac50e",
"type": "main",
"index": 0
}
]
]
},
"90ed5eb7-6236-47e1-88c6-c5278efe24fa": {
"main": [
[
{
"node": "e1e006de-d363-4e5a-adbd-77ffc901f42d",
"type": "main",
"index": 0
}
]
]
},
"11fdf8bc-aa37-4f42-8bbe-8e16c47c8b47": {
"main": [
[
{
"node": "e5998861-2d29-4fdb-a5c0-445cf79ac50e",
"type": "main",
"index": 2
}
]
]
},
"b6a20e25-d82a-493b-b305-066e043f6ba1": {
"main": [
[
{
"node": "864886e9-21d0-402f-8f1f-46216a5e1373",
"type": "main",
"index": 0
}
]
]
},
"0c300e39-74da-4947-ab75-1360158f48a1": {
"main": [
[
{
"node": "1833ee8f-13ca-40f3-a3ce-e7c09bbff5fc",
"type": "main",
"index": 0
}
]
]
},
"306294b3-27b8-4821-9b04-0e8d210af07e": {
"main": [
[
{
"node": "6815d6c1-43c5-49a8-8f41-eafa0ee83363",
"type": "main",
"index": 0
}
]
]
},
"6815d6c1-43c5-49a8-8f41-eafa0ee83363": {
"main": [
[
{
"node": "3e8d7348-ccef-4cb5-aca4-d5ed6f210199",
"type": "main",
"index": 1
}
]
]
},
"4b8b4578-e6aa-461a-ae0a-7289bd0bf7e3": {
"main": [
[
{
"node": "1833ee8f-13ca-40f3-a3ce-e7c09bbff5fc",
"type": "main",
"index": 0
}
]
]
},
"8b934690-1e26-4810-820d-8ff785691adf": {
"main": [
[
{
"node": "e5998861-2d29-4fdb-a5c0-445cf79ac50e",
"type": "main",
"index": 1
}
]
]
},
"e5998861-2d29-4fdb-a5c0-445cf79ac50e": {
"main": [
[
{
"node": "62cf73d2-a328-463b-9ea5-0d3fa8e3ba56",
"type": "main",
"index": 0
}
]
]
},
"7e24cbab-31e4-47ba-97f2-9a7a71335905": {
"main": [
[
{
"node": "4b8b4578-e6aa-461a-ae0a-7289bd0bf7e3",
"type": "main",
"index": 0
},
{
"node": "0c300e39-74da-4947-ab75-1360158f48a1",
"type": "main",
"index": 0
}
]
]
},
"3e8d7348-ccef-4cb5-aca4-d5ed6f210199": {
"main": [
[
{
"node": "7e24cbab-31e4-47ba-97f2-9a7a71335905",
"type": "main",
"index": 0
}
]
]
},
"28d2de55-ef62-40cd-a22b-a13eee3c2dc8": {
"main": [
[
{
"node": "90ed5eb7-6236-47e1-88c6-c5278efe24fa",
"type": "main",
"index": 0
},
{
"node": "8b934690-1e26-4810-820d-8ff785691adf",
"type": "main",
"index": 0
},
{
"node": "b6a20e25-d82a-493b-b305-066e043f6ba1",
"type": "main",
"index": 0
}
]
]
},
"62cf73d2-a328-463b-9ea5-0d3fa8e3ba56": {
"main": [
[
{
"node": "47a1e71a-6bbf-4cfe-82f1-b46744d247ee",
"type": "main",
"index": 0
}
]
]
},
"864886e9-21d0-402f-8f1f-46216a5e1373": {
"main": [
[
{
"node": "11fdf8bc-aa37-4f42-8bbe-8e16c47c8b47",
"type": "main",
"index": 0
}
]
]
},
"47a1e71a-6bbf-4cfe-82f1-b46744d247ee": {
"main": [
[
{
"node": "3e8d7348-ccef-4cb5-aca4-d5ed6f210199",
"type": "main",
"index": 0
}
]
]
}
}
}이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 시장 조사, AI 요약
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Cheng Siong Chin
@cschinProf. Cheng Siong CHIN serves as Chair Professor in Intelligent Systems Modelling and Simulation in Newcastle University, Singapore. His academic credentials include an M.Sc. in Advanced Control and Systems Engineering from The University of Manchester and a Ph.D. in Robotics from Nanyang Technological University.
이 워크플로우 공유