マルチサイト製品価格監視:Claude-Sonnet、Google シート、Telegram アラート
上級
これはMarket Research, AI Summarization分野の自動化ワークフローで、19個のノードを含みます。主にCode, Wait, Merge, SplitOut, Telegramなどのノードを使用。 電子商取引価格監視システム:Firecrawl・Claude-Sonnet AI・Telegramを使用
前提条件
- •Telegram Bot Token
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
使用ノード (19)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"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": "🤖 AIによる製品データ抽出(Claude-Sonnet 4.5使用)",
"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など)は別途料金が発生する場合があります。
関連ワークフロー
潜在顧客開掘とメールワーキングフロー
Google Maps、SendGrid、AIを使用してB2Bリード獲得とメールマーケティングを自動化
If
Set
Code
+
If
Set
Code
141 ノードEzema Kingsley Chibuzo
リード獲得
01 AIメディアバイヤーでFacebook広告のパフォーマンスを分析し、インサイトをGoogle Sheetsへ送信
Gemini AIを使用してFacebook広告を分析し、インサイトをGoogle Sheetsに送信
If
Set
Code
+
If
Set
Code
34 ノードJJ Tham
市場調査
コミュニティ問題モニタ(OpenRouter AI、Reddit、フォーラムクロール)
OpenRouter AI、Reddit、フォーラムクロールでコミュニティの問題を監視
Set
Code
Html
+
Set
Code
Html
29 ノードJulian Kaiser
市場調査
Mistral AI、LinkedIn、Google Sheets を使って求人検索と履歴書のカスタマイズを自動化
Mistral AI、LinkedIn、Google Sheets を使って 自動採用情報の検索とCVカスタマイズを行う
Set
Code
Html
+
Set
Code
Html
46 ノードJordan Hoyle
個人の生産性
毎日の WhatsApp グループ スマート分析:GPT-4.1 による分析と音声メッセージの transcrição
毎日の WhatsApp グループ インタラクティブ分析:GPT-4.1 分析と音声メッセージ文字起こし
If
Set
Code
+
If
Set
Code
52 ノードDaniel Lianes
その他
LinkedInジョブ検索
LinkedIn求人検索:履歴書自動照合(GPT/Gemini)+カバーレタージェネレーター+Telegram通知
If
Set
Code
+
If
Set
Code
33 ノードHojjat Jashnniloofar
個人の生産性
ワークフロー情報
難易度
上級
ノード数19
カテゴリー2
ノードタイプ13
作成者
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.
外部リンク
n8n.ioで表示 →
このワークフローを共有