8
n8n 한국어amn8n.com

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)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수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