GPT-Flugangebot-Analysator in Echtzeit: automatisch scrapen, bewerten und auf WordPress veröffentlichen

Experte

Dies ist ein Content Creation, Multimodal AI-Bereich Automatisierungsworkflow mit 19 Nodes. Hauptsächlich werden Set, Html, Slack, Wordpress, FormTrigger und andere Nodes verwendet. Fluggutschein-Analysator mit GPT, Google Flügen und WordPress, inklusive Wetterdaten

Voraussetzungen
  • Slack Bot Token oder Webhook URL
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • HTTP Webhook-Endpunkt (wird von n8n automatisch generiert)
  • OpenAI API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "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": "Eingabeformular Benutzer",
      "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": "Formulardaten extrahieren",
      "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": "Flugpreise erfassen",
      "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": "Flugdaten extrahieren",
      "type": "n8n-nodes-base.html",
      "position": [
        -528,
        416
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e86841f8-1a3c-4885-be51-0ce817b14af8",
      "name": "AI-Eingabe vorbereiten",
      "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": "AI-Fluganalysator",
      "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": "Strukturierter Ausgabe-Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        728,
        640
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "5d5a0e60-769c-47e9-b3a0-0da9e5cd9374",
      "name": "Analyseergebnisse formatieren",
      "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": "An Slack senden",
      "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": "Auf WordPress veröffentlichen",
      "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": "Benutzer antworten",
      "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": "Wetterdaten abrufen",
      "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": "Wetterdaten parsen",
      "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": "AI-Eingabe mit Wetter anreichern",
      "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": "Haftnotiz",
      "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": "Haftnotiz1",
      "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": "Haftnotiz2",
      "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": "Haftnotiz3",
      "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
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Content-Erstellung, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes19
Kategorie2
Node-Typen11
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Autor
Cheng Siong Chin

Cheng Siong Chin

@cschin

Dr. 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.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34