GPTリアルタイム航空券優遇分析器:自動取得、評価、WordPress へ公開

上級

これはContent Creation, Multimodal AI分野の自動化ワークフローで、19個のノードを含みます。主にSet, Html, Slack, Wordpress, FormTriggerなどのノードを使用。 GPT、Google 航班、WordPress を使用した航班特売分析ツール(天気データ付き)

前提条件
  • Slack Bot Token または Webhook URL
  • ターゲットAPIの認証情報が必要な場合あり
  • HTTP Webhookエンドポイント(n8nが自動生成)
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定を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": "ユーザー入力フォーム",
      "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": "フォームデータ抽出",
      "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": "航空券価格スクレイピング",
      "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": "フライトデータ抽出",
      "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入力準備",
      "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フライトアナライザー",
      "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": "構造化出力パーサー",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        728,
        640
      ],
      "parameters": {},
      "typeVersion": 1.2
    },
    {
      "id": "5d5a0e60-769c-47e9-b3a0-0da9e5cd9374",
      "name": "分析結果フォーマット",
      "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": "Send to 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": "Publish to 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": "ユーザーへの応答",
      "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": "気象データ取得",
      "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": "気象データ解析",
      "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入力を気象データで拡張",
      "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": "付箋",
      "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": "付箋1",
      "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": "付箋2",
      "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": "付箋3",
      "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
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - コンテンツ作成, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

関連ワークフロー

Airtop、GPT-4 Mini、Gmailを使ってウェブサイトのUXとSEO品質を分析
Airtop、GPT-4 Mini、Gmailを使ってサイトのUXとSEO品質を分析
Set
Code
Html
+
Set
Code
Html
33 ノードLukaszB
コンテンツ作成
WordPressブログの自動化プロフェッショナル版(先端研究)v2.1マーケットプラグイン
GPT-4o、Perplexity AI、そして多言語対応を使ったSEO最適化ブログ作成の自動化
If
Set
Xml
+
If
Set
Xml
125 ノードDaniel Ng
コンテンツ作成
PerplexityとGPTを使用して、キーワードとメディアを含むWordPressのSEO最適化ブログを作成
WordPress向けSEO最適化されたブログの作成(Perplexity、GPTベース、キーワードとメディア付き)
Set
Code
Limit
+
Set
Code
Limit
124 ノードPaul
コンテンツ作成
WordPress向けの特定のツールを使用してSEO最適化されたブログを作成
特定のツールを使用してWordPressのSEO最適化されたブログを作成
Set
Code
Limit
+
Set
Code
Limit
124 ノードPaul
コンテンツ作成
LLMエージェントと画像生成を用いたWordPressエンドツーエンドブログ生成
LLMエージェントと画像生成技術を使ったWordPressエンドツーエンドブログ生成
If
Set
Edit Image
+
If
Set
Edit Image
48 ノードMohamed Abdelwahab
コンテンツ作成
AI駆動の同僚レビュー作業システム with 自動採点基準生成
GPT-4-nano、Slack、メール通知を使用したペアレビュー割り当ての自動化
Set
Code
Slack
+
Set
Code
Slack
22 ノードCheng Siong Chin
文書抽出
ワークフロー情報
難易度
上級
ノード数19
カテゴリー2
ノードタイプ11
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
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.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34