Analizador de ofertas de vuelos en tiempo real con GPT-4o: extracción, evaluación y publicación automáticas en WordPress
Este es unContent Creation, Multimodal AIflujo de automatización del dominio deautomatización que contiene 19 nodos.Utiliza principalmente nodos como Set, Html, Slack, Wordpress, FormTrigger. Analizador de ofertas de vuelos con datos meteorológicos, utilizando GPT, Google Flights y WordPress
- •Bot Token de Slack o URL de Webhook
- •Pueden requerirse credenciales de autenticación para la API de destino
- •Punto final de HTTP Webhook (n8n generará automáticamente)
- •Clave de API de OpenAI
Nodos utilizados (19)
Categoría
{
"id": "VQW0RtIUeCMJ7yjt",
"meta": {
"instanceId": "b91e510ebae4127f953fd2f5f8d40d58ca1e71c746d4500c12ae86aad04c1502",
"templateCredsSetupCompleted": true
},
"name": "GPT-Realtime Flight Deal Analyzer: Auto-Scrape, Evaluate & Publish to WordPress",
"tags": [],
"nodes": [
{
"id": "f1712506-beee-4416-9654-19be82d7840f",
"name": "Formulario de Entrada del Usuario",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1200,
416
],
"webhookId": "9dd4fdea-0ac3-46d7-8652-986eb07af62a",
"parameters": {
"path": "japan-flight-analyzer",
"options": {},
"formTitle": "Japan Flight Price Analyzer",
"formFields": {
"values": [
{
"fieldLabel": "Departure City",
"requiredField": true
},
{
"fieldLabel": "Preferred Month (e.g., January, February)",
"requiredField": true
},
{
"fieldType": "number",
"fieldLabel": "Maximum Budget (USD)",
"requiredField": true
},
{
"fieldType": "dropdown",
"fieldLabel": "Flexible Dates?",
"fieldOptions": {
"values": [
{
"option": "Yes"
},
{
"option": "No"
}
]
},
"requiredField": true
}
]
},
"responseMode": "responseNode",
"formDescription": "Enter your travel preferences to find the cheapest flights to Japan"
},
"typeVersion": 2.1
},
{
"id": "22959199-f3dd-48b8-8045-c0e0f1417098",
"name": "Extraer Datos del Formulario",
"type": "n8n-nodes-base.set",
"position": [
-976,
416
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "8f3a4c1d-2e5b-4f9c-8d6a-1b2c3d4e5f6a",
"name": "departureCity",
"type": "string",
"value": "={{ $json.departureCity }}"
},
{
"id": "9g4b5d2e-3f6c-5g0d-9e7b-2c3d4e5f6g7h",
"name": "preferredMonth",
"type": "string",
"value": "={{ $json.preferredMonth }}"
},
{
"id": "0h5c6e3f-4g7d-6h1e-0f8c-3d4e5f6g7h8i",
"name": "maxBudget",
"type": "number",
"value": "={{ $json.maxBudget }}"
},
{
"id": "1i6d7f4g-5h8e-7i2f-1g9d-4e5f6g7h8i9j",
"name": "flexibleDates",
"type": "string",
"value": "={{ $json.flexibleDates }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d3ff8f1d-79b4-4885-b4de-0c6d9a9e7774",
"name": "Rastrear Precios de Vuelos",
"type": "n8n-nodes-base.httpRequest",
"position": [
-752,
416
],
"parameters": {
"url": "https://www.google.com/travel/flights",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "=flights to Tokyo Japan from {{ $json.departureCity }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "ffd6909a-9826-404e-93a6-30a8d387a450",
"name": "Extraer Datos del Vuelo",
"type": "n8n-nodes-base.html",
"position": [
-528,
416
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "e86841f8-1a3c-4885-be51-0ce817b14af8",
"name": "Preparar Entrada para IA",
"type": "n8n-nodes-base.set",
"position": [
-304,
416
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2j7e8g5h-6i9f-8j3g-2h0e-5f6g7h8i9j0k",
"name": "flightData",
"type": "string",
"value": "={{ $json.body }}"
},
{
"id": "3k8f9h6i-7j0g-9k4h-3i1f-6g7h8i9j0k1l",
"name": "userPreferences",
"type": "string",
"value": "=Departure: {{ $('Extract Form Data').item.json.departureCity }}, Month: {{ $('Extract Form Data').item.json.preferredMonth }}, Budget: ${{ $('Extract Form Data').item.json.maxBudget }}, Flexible: {{ $('Extract Form Data').item.json.flexibleDates }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "9b74c540-e201-4358-bed1-c649b00aa26b",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
592,
688
],
"parameters": {
"model": "gpt-realtime",
"options": {}
},
"credentials": {
"openAiApi": {
"id": "mv2ECvRtbAK63G2g",
"name": "OpenAi account"
}
},
"typeVersion": 1
},
{
"id": "c6707ac3-8c1e-4b2d-bd22-efe043a8dc64",
"name": "Analizador de Vuelo con IA",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
592,
416
],
"parameters": {
"text": "=You are a travel data analyst specializing in flight pricing and weather-based travel planning.\n\nAnalyze the following flight data, user preferences, and real-time weather forecasts to identify:\n1. The cheapest available flight options to Japan (Tokyo, Osaka, Sapporo)\n2. Optimal travel periods based on price trends AND weather conditions\n3. Whether the user's budget is realistic\n4. Weather-based recommendations for activities and packing\n5. Best booking strategies considering seasonal weather patterns\n\nCombined Data:\n{{ $json.combinedData }}\n\nProvide a comprehensive analysis with:\n- Cheapest flights found (price, dates, airline)\n- Recommended travel periods with weather insights\n- Budget analysis\n- Weather-appropriate travel tips\n- Seasonal activity recommendations\n- Alternative airports or routes if beneficial",
"options": {
"systemMessage": "You are an expert travel analyst. Provide clear, actionable insights about flight prices and travel recommendations."
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.7
},
{
"id": "73e0589c-fe21-4fcd-aa71-f8d66e9a684e",
"name": "Analizador de Salida Estructurada",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
728,
640
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "5d5a0e60-769c-47e9-b3a0-0da9e5cd9374",
"name": "Formatear Resultados del Análisis",
"type": "n8n-nodes-base.set",
"position": [
944,
416
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "4l9g0i7j-8k1h-0l5i-4j2g-7h8i9j0k1l2m",
"name": "aiAnalysis",
"type": "string",
"value": "={{ $json.output }}"
},
{
"id": "5m0h1j8k-9l2i-1m6j-5k3h-8i9j0k1l2m3n",
"name": "userEmail",
"type": "string",
"value": "={{ $('User Input Form').item.json.submittedAt }}"
},
{
"id": "6n1i2k9l-0m3j-2n7k-6l4i-9j0k1l2m3n4o",
"name": "weatherData",
"type": "object",
"value": "={{ $('Parse Weather Data').item.json }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "85fdefe0-5e22-46ac-9850-abc01e1e5ac7",
"name": "Enviar a Slack",
"type": "n8n-nodes-base.slack",
"position": [
1168,
224
],
"webhookId": "b28fd4b2-1063-482f-87cb-aeabb8e075ad",
"parameters": {
"text": "=🛫 *Japan Flight Analysis Complete!*\n\n*Search Criteria:*\nFrom: {{ $('Extract Form Data').item.json.departureCity }}\nMonth: {{ $('Extract Form Data').item.json.preferredMonth }}\nBudget: ${{ $('Extract Form Data').item.json.maxBudget }}\n\n*Current Weather in Japan:*\n🌡️ Tokyo: {{ $('Parse Weather Data').item.json.tokyoWeather.temperature_2m }}°C\n🌡️ Osaka: {{ $('Parse Weather Data').item.json.osakaWeather.temperature_2m }}°C\n🌡️ Sapporo: {{ $('Parse Weather Data').item.json.sapporoWeather.temperature_2m }}°C\n\n*AI Analysis:*\n{{ $json.aiAnalysis }}\n\n---\nAnalysis generated at: {{ $now.toLocaleString() }}",
"otherOptions": {}
},
"typeVersion": 2.2
},
{
"id": "eae457f3-c26c-4cdd-8c28-ae30906c90d8",
"name": "Publicar en WordPress",
"type": "n8n-nodes-base.wordpress",
"position": [
1168,
416
],
"parameters": {
"title": "=Best Time to Visit Japan - {{ $('Extract Form Data').item.json.preferredMonth }} Analysis",
"additionalFields": {
"categories": [
"Travel",
"Japan",
"Flight Deals"
]
}
},
"typeVersion": 1
},
{
"id": "3a055535-f7a6-4c40-a332-1aac3cf1d7e3",
"name": "Responder al Usuario",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
1168,
608
],
"parameters": {
"options": {},
"respondWith": "text",
"responseBody": "=✅ Your Japan flight analysis with weather forecast is complete!\n\n*Current Weather Conditions:*\nTokyo: {{ $('Parse Weather Data').item.json.tokyoWeather.temperature_2m }}°C\nOsaka: {{ $('Parse Weather Data').item.json.osakaWeather.temperature_2m }}°C\nSapporo: {{ $('Parse Weather Data').item.json.sapporoWeather.temperature_2m }}°C\n\n*Flight & Travel Analysis:*\n{{ $json.aiAnalysis }}\n\nWe've also:\n- Posted the detailed analysis with weather insights to our blog\n- Sent a summary to our Slack channel\n\nThank you for using our service!"
},
"typeVersion": 1.1
},
{
"id": "4eec3335-0910-4bc5-a628-c348e393e71f",
"name": "Obtener Datos Meteorológicos",
"type": "n8n-nodes-base.httpRequest",
"position": [
-80,
488
],
"parameters": {
"url": "https://api.open-meteo.com/v1/forecast",
"options": {},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "latitude",
"value": "35.6762,34.6937,43.0642"
},
{
"name": "longitude",
"value": "139.6503,135.5023,141.3469"
},
{
"name": "current",
"value": "temperature_2m,weather_code,wind_speed_10m"
},
{
"name": "daily",
"value": "temperature_2m_max,temperature_2m_min,precipitation_sum,weather_code"
},
{
"name": "forecast_days",
"value": "7"
},
{
"name": "timezone",
"value": "Asia/Tokyo"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "4ac42cfa-b298-4592-a6a5-925276d83052",
"name": "Analizar Datos Meteorológicos",
"type": "n8n-nodes-base.set",
"position": [
144,
488
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"name": "tokyoWeather",
"type": "object",
"value": "={{ $json.current[0] }}"
},
{
"name": "osakaWeather",
"type": "object",
"value": "={{ $json.current[1] }}"
},
{
"name": "sapporoWeather",
"type": "object",
"value": "={{ $json.current[2] }}"
},
{
"name": "weatherForecast",
"type": "object",
"value": "={{ $json.daily }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "eb0e253e-9212-49c1-b9cb-cd98b09180f4",
"name": "Enriquecer Entrada de IA con Clima",
"type": "n8n-nodes-base.set",
"position": [
368,
488
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"name": "combinedData",
"type": "string",
"value": "=Flight Data:\n{{ $('Prepare AI Input').item.json.flightData }}\n\nUser Preferences:\n{{ $('Prepare AI Input').item.json.userPreferences }}\n\nReal-Time Weather in Japan:\nTokyo: {{ $json.tokyoWeather.temperature_2m }}°C, Wind: {{ $json.tokyoWeather.wind_speed_10m }} km/h\nOsaka: {{ $json.osakaWeather.temperature_2m }}°C, Wind: {{ $json.osakaWeather.wind_speed_10m }} km/h\nSapporo: {{ $json.sapporoWeather.temperature_2m }}°C, Wind: {{ $json.sapporoWeather.wind_speed_10m }} km/h\n\n7-Day Forecast Summary:\n{{ JSON.stringify($json.weatherForecast) }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5a6ef54e-768b-4dfc-bc07-62cc968da7e1",
"name": "Nota Adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1232,
-16
],
"parameters": {
"width": 1040,
"height": 352,
"content": "## Introduction\nAutomates flight deal discovery and intelligent analysis for travel bloggers and deal hunters. Scrapes live pricing, enriches with weather data, applies AI evaluation, and auto-publishes to WordPress—eliminating manual research and accelerating content delivery.\n\n## How It Works\nUser submits route via form, scrapes real-time flight prices and weather data, AI analyzes deal quality considering weather conditions, formats results, publishes to WordPress, sends Slack notification—fully automated from input to publication.\n\n## Workflow Template\nForm Input → Extract Data → Scrape Flight Prices → Extract Pricing → Fetch Weather → Parse Weather → Prepare AI Input → AI Analysis → Parse Output → Format Results → Publish WordPress → Slack Alert → User Response\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "ec131a77-255a-4352-a1e0-5e8f1135c9a3",
"name": "Nota Adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
-32
],
"parameters": {
"color": 5,
"width": 720,
"height": 432,
"content": "## Prerequisites\nn8n instance, Google Flights access, weather API key, OpenAI/compatible AI service, WordPress site with API access, Slack workspace\n\n## Use Cases\nTravel blog automation, flight deal newsletters, price comparison services, seasonal travel planning, destination weather analysis, automated social media content\n\n## Customization\nModify AI analysis criteria, adjust weather impact weighting, customize WordPress post templates, add email distribution, integrate additional data sources, expand to hotel/rental deals\n\n## Benefits\nEliminates manual price checking, combines multiple data sources automatically, delivers AI-enhanced insights, accelerates publishing workflow, scales across unlimited routes, provides weather-aware recommendations"
},
"typeVersion": 1
},
{
"id": "37b94a42-06bd-476a-9216-c34314ebfbd3",
"name": "Nota Adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1216,
576
],
"parameters": {
"color": 3,
"width": 752,
"height": 144,
"content": "## Setup Instructions\n1. **Form Setup:** Configure user input fields for flight routes and preferences\n2. **APIs:** Connect Google Flights scraping endpoint, weather API credentials, OpenAI/Chat Model API key\n3. **Publishing:** Set WordPress credentials, target blog category, Slack webhook URL\n4. **AI Configuration:** Define analysis prompts, output structure, parser rules\n"
},
"typeVersion": 1
},
{
"id": "e09e7cfe-b73f-4a8e-9d2c-04f482bb9951",
"name": "Nota Adhesiva3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-176,
-16
],
"parameters": {
"color": 4,
"width": 320,
"height": 272,
"content": "## Workflow Steps\n1. **Data Collection:** Form captures route, scrapes Google Flights pricing, fetches destination weather via API\n2. **AI Processing:** Enriches flight data with weather context, analyzes deal quality using OpenAI/Chat Model with structured output parsing\n3. **Publishing:** Formats analysis results, creates WordPress post, sends Slack notification, delivers response to user\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "a37e634d-2ee9-40b9-8547-9bfc40faa6d7",
"connections": {
"f1712506-beee-4416-9654-19be82d7840f": {
"main": [
[
{
"node": "22959199-f3dd-48b8-8045-c0e0f1417098",
"type": "main",
"index": 0
}
]
]
},
"e86841f8-1a3c-4885-be51-0ce817b14af8": {
"main": [
[
{
"node": "c6707ac3-8c1e-4b2d-bd22-efe043a8dc64",
"type": "main",
"index": 0
},
{
"node": "4eec3335-0910-4bc5-a628-c348e393e71f",
"type": "main",
"index": 0
}
]
]
},
"22959199-f3dd-48b8-8045-c0e0f1417098": {
"main": [
[
{
"node": "d3ff8f1d-79b4-4885-b4de-0c6d9a9e7774",
"type": "main",
"index": 0
}
]
]
},
"9b74c540-e201-4358-bed1-c649b00aa26b": {
"ai_languageModel": [
[
{
"node": "c6707ac3-8c1e-4b2d-bd22-efe043a8dc64",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"c6707ac3-8c1e-4b2d-bd22-efe043a8dc64": {
"main": [
[
{
"node": "5d5a0e60-769c-47e9-b3a0-0da9e5cd9374",
"type": "main",
"index": 0
}
]
]
},
"4eec3335-0910-4bc5-a628-c348e393e71f": {
"main": [
[
{
"node": "4ac42cfa-b298-4592-a6a5-925276d83052",
"type": "main",
"index": 0
}
]
]
},
"4ac42cfa-b298-4592-a6a5-925276d83052": {
"main": [
[
{
"node": "eb0e253e-9212-49c1-b9cb-cd98b09180f4",
"type": "main",
"index": 0
}
]
]
},
"ffd6909a-9826-404e-93a6-30a8d387a450": {
"main": [
[
{
"node": "e86841f8-1a3c-4885-be51-0ce817b14af8",
"type": "main",
"index": 0
}
]
]
},
"d3ff8f1d-79b4-4885-b4de-0c6d9a9e7774": {
"main": [
[
{
"node": "ffd6909a-9826-404e-93a6-30a8d387a450",
"type": "main",
"index": 0
}
]
]
},
"5d5a0e60-769c-47e9-b3a0-0da9e5cd9374": {
"main": [
[
{
"node": "85fdefe0-5e22-46ac-9850-abc01e1e5ac7",
"type": "main",
"index": 0
},
{
"node": "eae457f3-c26c-4cdd-8c28-ae30906c90d8",
"type": "main",
"index": 0
},
{
"node": "3a055535-f7a6-4c40-a332-1aac3cf1d7e3",
"type": "main",
"index": 0
}
]
]
},
"73e0589c-fe21-4fcd-aa71-f8d66e9a684e": {
"ai_outputParser": [
[
{
"node": "c6707ac3-8c1e-4b2d-bd22-efe043a8dc64",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"eb0e253e-9212-49c1-b9cb-cd98b09180f4": {
"main": [
[
{
"node": "c6707ac3-8c1e-4b2d-bd22-efe043a8dc64",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Creación de contenido, IA Multimodal
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Cheng Siong Chin
@cschinDr. Cheng Siong CHIN serves as a 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.
Compartir este flujo de trabajo