Vérificateur de prix des chambres d'hôtel
Ceci est unMarket Researchworkflow d'automatisation du domainecontenant 29 nœuds.Utilise principalement des nœuds comme If, Code, Merge, EmailSend, HttpRequest. Alerte automatisée de baisse des prix des hôtels (avec notifications par e-mail et suivi en base de données)
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
Nœuds utilisés (29)
Catégorie
{
"id": "32sZD8EotVPD5r21",
"meta": {
"instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
"templateCredsSetupCompleted": true
},
"name": "Hotel Room Price Checker",
"tags": [],
"nodes": [
{
"id": "4ee06ed2-858c-451d-80d1-50e5149f8be3",
"name": "Planification - Toutes les 6 Heures",
"type": "n8n-nodes-base.scheduleTrigger",
"notes": "Triggers price check automatically every 6 hours to monitor rate changes",
"position": [
-2112,
64
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 6
}
]
}
},
"typeVersion": 1.2
},
{
"id": "a1be7480-2816-4d1a-b64d-24a4d123f9e5",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2160,
-192
],
"parameters": {
"color": 4,
"width": 220,
"height": 396,
"content": "## ⏰ TRIGGER\nRuns price check every 6 hours automatically"
},
"typeVersion": 1
},
{
"id": "566c0b0a-7671-4ee0-a248-b9ffb8e90d55",
"name": "Charger la Liste d'Hôtels",
"type": "n8n-nodes-base.code",
"notes": "Loads list of hotels to monitor from database or configuration",
"position": [
-1888,
64
],
"parameters": {
"jsCode": "// List of hotels to monitor\n// In production, this would come from a database\nconst hotelsToMonitor = [\n {\n hotelId: 'hotel_001',\n hotelName: 'Grand Plaza Hotel',\n location: 'New York, USA',\n roomType: 'Deluxe Suite',\n bookingUrl: 'https://booking.com/hotel-001',\n apiEndpoint: 'https://api.hotelbooking.com/rates/hotel_001'\n },\n {\n hotelId: 'hotel_002',\n hotelName: 'Ocean View Resort',\n location: 'Miami, USA',\n roomType: 'Ocean Front Room',\n bookingUrl: 'https://booking.com/hotel-002',\n apiEndpoint: 'https://api.hotelbooking.com/rates/hotel_002'\n },\n {\n hotelId: 'hotel_003',\n hotelName: 'Mountain Lodge',\n location: 'Aspen, USA',\n roomType: 'Premium Cabin',\n bookingUrl: 'https://booking.com/hotel-003',\n apiEndpoint: 'https://api.hotelbooking.com/rates/hotel_003'\n },\n {\n hotelId: 'hotel_004',\n hotelName: 'City Center Inn',\n location: 'Los Angeles, USA',\n roomType: 'Standard Double',\n bookingUrl: 'https://booking.com/hotel-004',\n apiEndpoint: 'https://api.hotelbooking.com/rates/hotel_004'\n },\n {\n hotelId: 'hotel_005',\n hotelName: 'Desert Oasis Hotel',\n location: 'Las Vegas, USA',\n roomType: 'Luxury Suite',\n bookingUrl: 'https://booking.com/hotel-005',\n apiEndpoint: 'https://api.hotelbooking.com/rates/hotel_005'\n }\n];\n\nreturn hotelsToMonitor.map(hotel => ({\n json: {\n ...hotel,\n checkTimestamp: new Date().toISOString(),\n checkDate: new Date().toLocaleDateString('en-US', { \n year: 'numeric', \n month: 'long', \n day: 'numeric' \n })\n }\n}));"
},
"typeVersion": 2
},
{
"id": "89a5c7bd-ef50-4a9c-9970-31eca24fe4ae",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1936,
-144
],
"parameters": {
"color": 5,
"width": 220,
"height": 348,
"content": "## 🏨 HOTEL LIST\nLoads all hotels that need price monitoring"
},
"typeVersion": 1
},
{
"id": "1022f8d7-e6d9-4641-8f54-6f9e8345f928",
"name": "Récupérer le Prix Actuel depuis API",
"type": "n8n-nodes-base.httpRequest",
"notes": "Retrieves real-time pricing data from hotel booking API",
"position": [
-1680,
64
],
"parameters": {
"url": "={{ $json.apiEndpoint }}",
"options": {
"response": {
"response": {
"neverError": true
}
}
},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "Accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "05fee65a-e5f1-455d-b3d3-fc1d8cc35099",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1712,
-176
],
"parameters": {
"color": 6,
"width": 220,
"height": 380,
"content": "## 💰 PRICE API\nFetches current room rates in real-time"
},
"typeVersion": 1
},
{
"id": "6721055e-ee7d-475f-a06b-30897d37c293",
"name": "Analyser les Données de Prix",
"type": "n8n-nodes-base.code",
"notes": "Extracts and formats current price information from API response",
"position": [
-1456,
64
],
"parameters": {
"jsCode": "// Parse API response and extract price\n// Since we're simulating, generate random prices\nconst hotelData = $('Load Hotel List').item.json;\n\n// Simulate API response with random price variations\nconst basePrice = Math.floor(Math.random() * (500 - 150 + 1)) + 150;\nconst priceVariation = Math.floor(Math.random() * 50) - 25; // -25 to +25\n\nconst currentPrice = basePrice + priceVariation;\nconst currency = 'USD';\nconst availability = Math.random() > 0.2 ? 'Available' : 'Limited';\n\nreturn {\n json: {\n hotelId: hotelData.hotelId,\n hotelName: hotelData.hotelName,\n location: hotelData.location,\n roomType: hotelData.roomType,\n bookingUrl: hotelData.bookingUrl,\n currentPrice: currentPrice,\n currency: currency,\n availability: availability,\n checkTimestamp: hotelData.checkTimestamp,\n checkDate: hotelData.checkDate,\n pricePerNight: currentPrice,\n taxesIncluded: true\n }\n};"
},
"typeVersion": 2
},
{
"id": "6f4a0e90-9da5-4a77-b307-9457186ac341",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1488,
-192
],
"parameters": {
"color": 5,
"width": 220,
"height": 396,
"content": "## 📊 PARSE DATA\nExtracts price and availability info"
},
"typeVersion": 1
},
{
"id": "e3731717-d4b4-429f-838a-81fdb625f1b5",
"name": "Obtenir le Prix Précédent depuis la BD",
"type": "n8n-nodes-base.httpRequest",
"notes": "Retrieves last recorded price from database for comparison",
"position": [
-1232,
64
],
"parameters": {
"url": "https://your-database-api.com/prices/history",
"options": {
"response": {
"response": {
"neverError": true
}
}
},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "hotel_id",
"value": "={{ $json.hotelId }}"
},
{
"name": "room_type",
"value": "={{ $json.roomType }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "01becb4a-1f77-42e6-9c4f-baffbfe89dd9",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1264,
-240
],
"parameters": {
"color": 4,
"width": 220,
"height": 444,
"content": "## 🗄️ DATABASE QUERY\nFetches previous price record"
},
"typeVersion": 1
},
{
"id": "4c56305a-577a-4078-9480-67247af82062",
"name": "Comparer les Prix",
"type": "n8n-nodes-base.code",
"notes": "Calculates price difference and percentage change from previous check",
"position": [
-1008,
64
],
"parameters": {
"jsCode": "// Compare current price with previous price\nconst currentData = $('Parse Price Data').item.json;\nconst currentPrice = currentData.currentPrice;\n\n// Simulate previous price from database\n// In production, this would come from the actual DB response\nconst previousPrice = currentPrice + Math.floor(Math.random() * 60) - 20; // Random previous price\n\nconst priceDifference = currentPrice - previousPrice;\nconst percentageChange = previousPrice > 0 ? ((priceDifference / previousPrice) * 100).toFixed(2) : 0;\nconst priceChanged = priceDifference !== 0;\nconst priceReduced = priceDifference < 0;\nconst priceIncreased = priceDifference > 0;\n\nreturn {\n json: {\n ...currentData,\n previousPrice: previousPrice,\n currentPrice: currentPrice,\n priceDifference: priceDifference,\n percentageChange: percentageChange,\n priceChanged: priceChanged,\n priceReduced: priceReduced,\n priceIncreased: priceIncreased,\n changeDirection: priceReduced ? 'decreased' : (priceIncreased ? 'increased' : 'unchanged'),\n savingsAmount: priceReduced ? Math.abs(priceDifference) : 0\n }\n};"
},
"typeVersion": 2
},
{
"id": "024fba14-4c8a-4036-9236-a4073d7be5fb",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1040,
-224
],
"parameters": {
"color": 6,
"width": 220,
"height": 460,
"content": "## 🔍 PRICE COMPARISON\nCalculates difference and change %"
},
"typeVersion": 1
},
{
"id": "b209b7b7-d4ba-4b37-85f3-f11b3eac630f",
"name": "Vérifier si le Prix a Baissé",
"type": "n8n-nodes-base.if",
"notes": "Filters only hotels where price has decreased to send alerts",
"position": [
-800,
64
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": false
},
"combinator": "and",
"conditions": [
{
"id": "price-reduced-check",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.priceReduced }}",
"rightValue": true
}
]
}
},
"typeVersion": 2
},
{
"id": "73133073-2222-4af6-9337-b572e9323058",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-832,
-112
],
"parameters": {
"color": 5,
"width": 220,
"height": 332,
"content": "## ✅ PRICE FILTER\nIdentifies reduced prices only"
},
"typeVersion": 1
},
{
"id": "d1c8b9af-4626-4cc5-a72c-06b5ec68a126",
"name": "Formater l'Email d'Alerte",
"type": "n8n-nodes-base.code",
"notes": "Creates formatted HTML email with price comparison and booking details",
"position": [
-560,
-32
],
"parameters": {
"jsCode": "// Format data for alert email\nconst data = $input.item.json;\n\nconst emailSubject = `🎉 Price Drop Alert: ${data.hotelName} - Save $${data.savingsAmount}!`;\n\nconst emailBody = `\n<html>\n<head>\n <style>\n body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; }\n .container { max-width: 600px; margin: 0 auto; padding: 20px; }\n .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; text-align: center; border-radius: 10px 10px 0 0; }\n .content { background: #f9f9f9; padding: 30px; border-radius: 0 0 10px 10px; }\n .price-box { background: white; padding: 20px; margin: 20px 0; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }\n .old-price { text-decoration: line-through; color: #999; font-size: 18px; }\n .new-price { color: #22c55e; font-size: 32px; font-weight: bold; }\n .savings { background: #22c55e; color: white; padding: 10px 20px; border-radius: 5px; display: inline-block; margin: 10px 0; }\n .details { margin: 20px 0; }\n .detail-row { padding: 10px 0; border-bottom: 1px solid #eee; }\n .label { font-weight: bold; color: #667eea; }\n .cta-button { background: #667eea; color: white; padding: 15px 30px; text-decoration: none; border-radius: 5px; display: inline-block; margin: 20px 0; }\n .footer { text-align: center; color: #999; margin-top: 30px; font-size: 12px; }\n </style>\n</head>\n<body>\n <div class=\"container\">\n <div class=\"header\">\n <h1>🏨 Hotel Price Drop Alert!</h1>\n <p>Great news! A price reduction has been detected</p>\n </div>\n <div class=\"content\">\n <h2>${data.hotelName}</h2>\n <p><strong>📍 Location:</strong> ${data.location}</p>\n <p><strong>🛏️ Room Type:</strong> ${data.roomType}</p>\n \n <div class=\"price-box\">\n <p><span class=\"label\">Previous Price:</span> <span class=\"old-price\">$${data.previousPrice} ${data.currency}</span></p>\n <p><span class=\"label\">Current Price:</span> <span class=\"new-price\">$${data.currentPrice} ${data.currency}</span></p>\n <div class=\"savings\">💰 Save $${data.savingsAmount} (${Math.abs(data.percentageChange)}% OFF)</div>\n </div>\n \n <div class=\"details\">\n <div class=\"detail-row\">\n <span class=\"label\">Availability:</span> ${data.availability}\n </div>\n <div class=\"detail-row\">\n <span class=\"label\">Price Per Night:</span> $${data.pricePerNight} ${data.currency}\n </div>\n <div class=\"detail-row\">\n <span class=\"label\">Taxes:</span> ${data.taxesIncluded ? 'Included' : 'Not Included'}\n </div>\n <div class=\"detail-row\">\n <span class=\"label\">Checked On:</span> ${data.checkDate}\n </div>\n </div>\n \n <center>\n <a href=\"${data.bookingUrl}\" class=\"cta-button\">Book Now & Save!</a>\n </center>\n \n <p style=\"margin-top: 20px; padding: 15px; background: #fff3cd; border-left: 4px solid #ffc107; border-radius: 4px;\">\n ⚠️ <strong>Act Fast!</strong> Prices can change at any time. This deal might not last long.\n </p>\n </div>\n <div class=\"footer\">\n <p>This is an automated price alert from your Hotel Price Monitoring System</p>\n <p>You're receiving this because you're monitoring ${data.hotelName}</p>\n </div>\n </div>\n</body>\n</html>\n`;\n\nreturn {\n json: {\n ...data,\n emailSubject: emailSubject,\n emailBody: emailBody,\n alertType: 'price_reduction',\n urgencyLevel: Math.abs(data.percentageChange) > 20 ? 'high' : 'medium'\n }\n};"
},
"typeVersion": 2
},
{
"id": "db1d5f57-2f0e-4b7f-82a1-b29d219dab34",
"name": "Note adhésive7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-608,
-256
],
"parameters": {
"color": 4,
"width": 220,
"height": 268,
"content": "## 📧 EMAIL FORMATTING\nCreates beautiful HTML alert email"
},
"typeVersion": 1
},
{
"id": "7cfa40a4-8201-4a19-b7fa-cff35c636ffe",
"name": "Envoyer l'Email à l'Agent de Voyage",
"type": "n8n-nodes-base.emailSend",
"notes": "Sends price drop alert email to travel agent with all details",
"position": [
-352,
-32
],
"webhookId": "f773dc8e-659e-4ee0-a3f8-cd52294c43cf",
"parameters": {
"options": {},
"subject": "={{ $json.emailSubject }}",
"toEmail": "travelagent@agency.com",
"fromEmail": "alerts@hotelpricemonitor.com"
},
"credentials": {
"smtp": {
"id": "G1kyF8cSWTZ4vouN",
"name": "SMTP -test"
}
},
"typeVersion": 2.1
},
{
"id": "59598261-84cb-49b5-ad85-15572316d478",
"name": "Note adhésive8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-368,
-256
],
"parameters": {
"color": 6,
"width": 220,
"height": 268,
"content": "## 📮 EMAIL DELIVERY\nSends alert to travel agent"
},
"typeVersion": 1
},
{
"id": "01ed82a5-104f-4282-844f-faf5d4bd872a",
"name": "Journaliser l'Alerte Envoyée",
"type": "n8n-nodes-base.code",
"notes": "Records alert delivery for tracking and audit purposes",
"position": [
-128,
-32
],
"parameters": {
"jsCode": "// Log successful alert\nconst data = $input.item.json;\n\nreturn {\n json: {\n hotelId: data.hotelId,\n hotelName: data.hotelName,\n alertSent: true,\n alertTimestamp: new Date().toISOString(),\n previousPrice: data.previousPrice,\n currentPrice: data.currentPrice,\n savingsAmount: data.savingsAmount,\n percentageChange: data.percentageChange,\n recipientEmail: 'travelagent@agency.com',\n alertType: 'price_reduction'\n }\n};"
},
"typeVersion": 2
},
{
"id": "bc82882c-6e33-47ed-b91a-f1eeb426908d",
"name": "Note adhésive9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
-272
],
"parameters": {
"color": 5,
"width": 220,
"height": 284,
"content": "## 📝 ALERT LOGGING\nRecords successful alert delivery"
},
"typeVersion": 1
},
{
"id": "5c98bfac-f475-4f97-b359-c6d2a1b88086",
"name": "Journaliser Aucune Alerte Nécessaire",
"type": "n8n-nodes-base.code",
"notes": "Records check where no alert was needed (price unchanged or increased)",
"position": [
-560,
160
],
"parameters": {
"jsCode": "// Log no change detected\nconst data = $input.item.json;\n\nreturn {\n json: {\n hotelId: data.hotelId,\n hotelName: data.hotelName,\n alertSent: false,\n checkTimestamp: new Date().toISOString(),\n previousPrice: data.previousPrice,\n currentPrice: data.currentPrice,\n priceChanged: data.priceChanged,\n changeDirection: data.changeDirection,\n reason: data.priceIncreased ? 'price_increased' : 'no_change'\n }\n};"
},
"typeVersion": 2
},
{
"id": "461d09c9-0695-4ac8-bd8b-6f1b732a8b32",
"name": "Note adhésive10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-752,
304
],
"parameters": {
"color": 4,
"width": 220,
"height": 140,
"content": "## 📋 NO ALERT LOG\nRecords when prices didn't decrease"
},
"typeVersion": 1
},
{
"id": "5c074f64-4562-4cc6-adb4-6dd9e5d07ba3",
"name": "Fusionner Tous les Journaux",
"type": "n8n-nodes-base.merge",
"notes": "Combines logs from both alert and no-alert paths",
"position": [
-352,
160
],
"parameters": {
"mode": "combine",
"options": {}
},
"typeVersion": 3
},
{
"id": "c2c40b1d-d5cd-4221-9395-54eb169a262a",
"name": "Note adhésive11",
"type": "n8n-nodes-base.stickyNote",
"position": [
-448,
304
],
"parameters": {
"color": 6,
"width": 200,
"height": 140,
"content": "## 🔀 LOG MERGE\nCombines all check results"
},
"typeVersion": 1
},
{
"id": "400a11eb-2dc0-425e-a167-98312b3f8173",
"name": "Mettre à Jour le Prix dans la Base de Données",
"type": "n8n-nodes-base.httpRequest",
"notes": "Updates database with latest price for future comparisons",
"position": [
-128,
160
],
"parameters": {
"url": "https://your-database-api.com/prices/update",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "hotel_id",
"value": "={{ $('Parse Price Data').item.json.hotelId }}"
},
{
"name": "room_type",
"value": "={{ $('Parse Price Data').item.json.roomType }}"
},
{
"name": "price",
"value": "={{ $('Parse Price Data').item.json.currentPrice }}"
},
{
"name": "currency",
"value": "={{ $('Parse Price Data').item.json.currency }}"
},
{
"name": "availability",
"value": "={{ $('Parse Price Data').item.json.availability }}"
},
{
"name": "timestamp",
"value": "={{ $('Parse Price Data').item.json.checkTimestamp }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "f52dff1c-b64f-4e04-9273-ed3b26074e37",
"name": "Note adhésive12",
"type": "n8n-nodes-base.stickyNote",
"position": [
-176,
320
],
"parameters": {
"color": 5,
"width": 220,
"height": 140,
"content": "## 💾 DATABASE UPDATE\nStores new price for next comparison"
},
"typeVersion": 1
},
{
"id": "33fccfde-7e4a-464c-b056-97ef34d8e7ec",
"name": "Créer un Résumé d'Exécution",
"type": "n8n-nodes-base.code",
"notes": "Generates summary report of price check execution and alerts sent",
"position": [
96,
64
],
"parameters": {
"jsCode": "// Generate execution summary\nconst allLogs = $input.all();\n\nconst totalHotels = allLogs.length;\nconst alertsSent = allLogs.filter(item => item.json.alertSent === true).length;\nconst noAlerts = allLogs.filter(item => item.json.alertSent === false).length;\n\nconst summary = {\n executionTimestamp: new Date().toISOString(),\n executionDate: new Date().toLocaleDateString('en-US', { \n year: 'numeric', \n month: 'long', \n day: 'numeric',\n hour: '2-digit',\n minute: '2-digit'\n }),\n totalHotelsChecked: totalHotels,\n priceDropAlertsRaised: alertsSent,\n noAlertsNeeded: noAlerts,\n alertRate: totalHotels > 0 ? ((alertsSent / totalHotels) * 100).toFixed(1) + '%' : '0%',\n status: 'completed',\n nextCheckIn: '6 hours'\n};\n\nreturn {\n json: summary\n};"
},
"typeVersion": 2
},
{
"id": "552c8be1-cda3-4a06-834d-735f11e88fbf",
"name": "Note adhésive13",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
-112
],
"parameters": {
"color": 4,
"width": 220,
"height": 284,
"content": "## 📊 SUMMARY REPORT\nCreates execution statistics"
},
"typeVersion": 1
},
{
"id": "f141855d-90f2-47bc-9839-c5953f12863c",
"name": "Note adhésive14",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1600,
-1216
],
"parameters": {
"color": 7,
"width": 380,
"height": 792,
"content": "## 🏨 HOTEL ROOM PRICE CHECKER\n\n**Automated Price Monitoring System**\n\n**Features:**\n✓ Checks prices every 6 hours\n✓ Monitors multiple hotels\n✓ Detects price reductions\n✓ Sends instant email alerts\n✓ Shows old vs new prices\n✓ Calculates savings amount\n✓ Tracks price history\n✓ Beautiful HTML emails\n\n**Alert Triggers:**\n• Price decreased\n• Percentage savings\n• Availability changes\n\n**Email Includes:**\n• Hotel name & location\n• Room type details\n• Old price (strikethrough)\n• New price (highlighted)\n• Savings amount & %\n• Direct booking link\n• Urgency indicator\n\n**Setup Required:**\n1. Configure schedule trigger\n2. Add hotel API credentials\n3. Setup database endpoint\n4. Configure SMTP for emails\n5. Update agent email address\n6. Customize hotel list\n7. Test price comparison logic"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "c121be3a-bd75-426b-9e52-9f1859cb47c6",
"connections": {
"4c56305a-577a-4078-9480-67247af82062": {
"main": [
[
{
"node": "b209b7b7-d4ba-4b37-85f3-f11b3eac630f",
"type": "main",
"index": 0
}
]
]
},
"01ed82a5-104f-4282-844f-faf5d4bd872a": {
"main": [
[
{
"node": "5c074f64-4562-4cc6-adb4-6dd9e5d07ba3",
"type": "main",
"index": 0
}
]
]
},
"5c074f64-4562-4cc6-adb4-6dd9e5d07ba3": {
"main": [
[
{
"node": "400a11eb-2dc0-425e-a167-98312b3f8173",
"type": "main",
"index": 0
}
]
]
},
"566c0b0a-7671-4ee0-a248-b9ffb8e90d55": {
"main": [
[
{
"node": "1022f8d7-e6d9-4641-8f54-6f9e8345f928",
"type": "main",
"index": 0
}
]
]
},
"6721055e-ee7d-475f-a06b-30897d37c293": {
"main": [
[
{
"node": "e3731717-d4b4-429f-838a-81fdb625f1b5",
"type": "main",
"index": 0
}
]
]
},
"d1c8b9af-4626-4cc5-a72c-06b5ec68a126": {
"main": [
[
{
"node": "7cfa40a4-8201-4a19-b7fa-cff35c636ffe",
"type": "main",
"index": 0
}
]
]
},
"5c98bfac-f475-4f97-b359-c6d2a1b88086": {
"main": [
[
{
"node": "5c074f64-4562-4cc6-adb4-6dd9e5d07ba3",
"type": "main",
"index": 1
}
]
]
},
"b209b7b7-d4ba-4b37-85f3-f11b3eac630f": {
"main": [
[
{
"node": "d1c8b9af-4626-4cc5-a72c-06b5ec68a126",
"type": "main",
"index": 0
}
],
[
{
"node": "5c98bfac-f475-4f97-b359-c6d2a1b88086",
"type": "main",
"index": 0
}
]
]
},
"4ee06ed2-858c-451d-80d1-50e5149f8be3": {
"main": [
[
{
"node": "566c0b0a-7671-4ee0-a248-b9ffb8e90d55",
"type": "main",
"index": 0
}
]
]
},
"400a11eb-2dc0-425e-a167-98312b3f8173": {
"main": [
[
{
"node": "33fccfde-7e4a-464c-b056-97ef34d8e7ec",
"type": "main",
"index": 0
}
]
]
},
"e3731717-d4b4-429f-838a-81fdb625f1b5": {
"main": [
[
{
"node": "4c56305a-577a-4078-9480-67247af82062",
"type": "main",
"index": 0
}
]
]
},
"7cfa40a4-8201-4a19-b7fa-cff35c636ffe": {
"main": [
[
{
"node": "01ed82a5-104f-4282-844f-faf5d4bd872a",
"type": "main",
"index": 0
}
]
]
},
"1022f8d7-e6d9-4641-8f54-6f9e8345f928": {
"main": [
[
{
"node": "6721055e-ee7d-475f-a06b-30897d37c293",
"type": "main",
"index": 0
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Étude de marché
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Oneclick AI Squad
@oneclick-aiThe AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.
Partager ce workflow