8
n8n 한국어amn8n.com

Airtop, GPT-4 Mini 및 Gmail을 사용한 웹사이트 UX 및 SEO 품질 분석

고급

이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 33개의 노드를 포함합니다.주로 Set, Code, Html, Gmail, Airtop 등의 노드를 사용하며. Airtop, GPT-4 Mini 및 Gmail을 사용하여 웹사이트 UX 및 SEO 품질 분석

사전 요구사항
  • Google 계정 및 Gmail API 인증 정보
  • 대상 API의 인증 정보가 필요할 수 있음
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "c66762406062d6f96baac676fbcb1ad043cf6c0875d0fc4a63da087ec2d9f92e",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "c9473e1d-a9cc-42af-bdbd-064cc5eae7b4",
      "name": "클릭",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        1296,
        656
      ],
      "parameters": {
        "resource": "interaction",
        "windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', \"The `windowId` returned by the `Open window` tool\", 'string') }}",
        "sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', \"The `sessionId` returned by the `Create session` tool\", 'string') }}",
        "descriptionType": "manual",
        "toolDescription": "Click on any element in the window",
        "additionalFields": {
          "waitForNavigation": "load"
        },
        "elementDescription": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Element_Description', `Describe in detail the element to click on, e.g. The menu item \"about us\" at the top of the page`, 'string') }}"
      },
      "credentials": {
        "airtopApi": {
          "id": "AYPzc0Zutq7v14Wn",
          "name": "Airtop account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "be47ccfb-408f-4b7d-90eb-dcf70166a0f0",
      "name": "쿼리",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        1408,
        656
      ],
      "parameters": {
        "prompt": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt', `Ask anything and request to extract information from the current page, e.g. \"Is there any sign-up form? yes or no\"`, 'string') }}",
        "resource": "extraction",
        "windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', \"The `windowId` returned by the `Open window` tool\", 'string') }}",
        "operation": "query",
        "sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', \"The `sessionId` returned by the `Create session` tool\", 'string') }}",
        "descriptionType": "manual",
        "toolDescription": "Query the page, ask and extract information",
        "additionalFields": {}
      },
      "credentials": {
        "airtopApi": {
          "id": "AYPzc0Zutq7v14Wn",
          "name": "Airtop account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a1616475-cd08-4052-8f98-523f3d609662",
      "name": "URL 로드",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        1536,
        656
      ],
      "parameters": {
        "url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
        "resource": "window",
        "windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', \"The `windowId` returned by the `Open window` tool\", 'string') }}",
        "operation": "load",
        "sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', \"The `sessionId` returned by the `Create session` tool\", 'string') }}",
        "descriptionType": "manual",
        "toolDescription": "Load a URL into the browser window",
        "additionalFields": {}
      },
      "credentials": {
        "airtopApi": {
          "id": "AYPzc0Zutq7v14Wn",
          "name": "Airtop account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "f8089962-fafa-4df6-a539-afe94a7969a7",
      "name": "세션 종료",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        1648,
        656
      ],
      "parameters": {
        "operation": "terminate",
        "sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', \"The `sessionId` returned by the `Create session` tool\", 'string') }}"
      },
      "credentials": {
        "airtopApi": {
          "id": "AYPzc0Zutq7v14Wn",
          "name": "Airtop account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "271cdee4-9cc8-4018-83a4-58b79f36e85c",
      "name": "입력",
      "type": "n8n-nodes-base.airtopTool",
      "position": [
        1776,
        656
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Text', ``, 'string') }}",
        "resource": "interaction",
        "windowId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Window_ID', \"The `windowId` returned by the `Open window` tool\", 'string') }}",
        "operation": "type",
        "sessionId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Session_ID', \"The `sessionId` returned by the `Create session` tool\", 'string') }}",
        "pressEnterKey": true,
        "descriptionType": "manual",
        "toolDescription": "Type text into the page's element described",
        "additionalFields": {},
        "elementDescription": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Element_Description', `Describe in detail the element to type into, e.g. The search box at the top of the page`, 'string') }}"
      },
      "credentials": {
        "airtopApi": {
          "id": "AYPzc0Zutq7v14Wn",
          "name": "Airtop account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "1cd5c7f2-414d-4703-8a9e-28630fd98df2",
      "name": "폼 제출 시",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -336,
        320
      ],
      "webhookId": "a1491cef-8e99-4f4e-a638-e1dc7500f05e",
      "parameters": {
        "options": {},
        "formTitle": "UX Website Analyst",
        "formFields": {
          "values": [
            {
              "fieldType": "textarea",
              "fieldLabel": "Website URL",
              "placeholder": "example.com",
              "requiredField": true
            }
          ]
        },
        "formDescription": "Provide a detailed website URL address.\nExamples:\nexample.com\nhttps://example.com"
      },
      "typeVersion": 2.2
    },
    {
      "id": "1214bae1-23a1-4a5e-9ee8-966c79d4d26d",
      "name": "출력",
      "type": "n8n-nodes-base.set",
      "position": [
        2480,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e1d6ab7c-2f45-44fd-9457-bb3046fad4c5",
              "name": "output",
              "type": "string",
              "value": "={{ $('Webscraper').item.json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f6fb52f6-f966-448e-9436-22f63fb5b4d5",
      "name": "OpenAI 채팅 모델",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1136,
        656
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "69YTGxdIPy79gAdh",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "7e0490c7-42f8-4361-aeb4-b29de5e680d2",
      "name": "웹스크래퍼",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1424,
        320
      ],
      "parameters": {
        "text": "=You must thoroughly analyze the given website and conduct a user experience (UX) research review.\n\nYour tasks:\nService & Content Analysis – identify what services or products are offered, how they are described, and whether the content is clear and informative.\nUX Evaluation – assess:\nNavigation (is it easy to find information?)\nDesign clarity (visual hierarchy, readability, consistency)\nAccessibility (mobile-friendliness, contrast, alt texts, loading speed)\nTrust signals (testimonials, security, guarantees, support info)\nBad part or part who need be fixed,\nEasy to undersatnd inforamtion\nOverall Impression – summarize how user-friendly and trustworthy the website feels, be objective and critical.\n\nvisit multiple sub website,a nd find how this look , never focuse on one siet you must go for multiple subwebsite like blog, kontakt, service or another sub website\n\nYour goal: extract all available details AND evaluate the website’s user experience quality. Provide a structured, detailed report.\nWebsite url: {{ $('set input data').item.json.website_URL }}\n\nesion id for airtop: {{ $json.sessionId }}\nwindow id for airtop: {{ $json.windowId }}",
        "options": {
          "maxIterations": 20,
          "systemMessage": "=# Agent goal\n\nYou are a smart, advanced web agent connected to tools that allow you to manage a remote web browser. Your goal is to fulfill the human's request by conducting a thorough exploration of the target website.Always check multiple subsites if the user asks about pricing, services, or other details that are not available on the main page.In such cases, navigate into the relevant subsites until you gather the necessary information.You should explore the entire website, not just a single page.\n\nAlways aim to collect as much relevant information as possible about the website and the requested task.\n\nIf you can provide a complete answer, always use the End session tool to close the session.\n## Start the browser\nYou should always start by using the `Start browser` tool to get the `sessionId` and `windowId` required by other tools.\n\n## Use the `Query` tool\nYou don't have access to the browser screen but you can call the `Query` tool to get knowladge and hints of the current browser window. This tool accepts queries in natural language and can output information in plain text, markdown or JSON.\n\n## Use the `Click` tool\nUse the `Click` tool to click on an element on the web page. Describe the element in details in the \"Element Description\" field, Be specific and refer to elements that are on the page. \n\n## Use the `Type` tool\nUse the `Type` tool to type in text boxes. Describe the text box in \"Element Description\" field and the text to type in the \"Text\" field. The 'Type' tool is clicking Enter after typing the text so don't send [ENTER] commandes.\n\n### Examples for how to use the `Query` tool\n- Ask something about the current page:\n  \"Is the user logged in? Answer with Yes or No\"\n- Retrieve information:\n  \"Extract all the posts in the page, include the title and copy, output in JSON format\"\n- Get hints on the UI:\n  \"Is there a link to the contact form? If yes, describe the element in detail\"\n\n\n## Important\n- Start by calling `Start browser` to begin using the browser and provide the initial URL\n- The human ONLY sees your last message\n- Make sure to include all the important information requested by the human in your LAST message\n- Call `End session` with the `sessionId` once you have finished using the browser, always end  with `End session` tool, even if we have eror\n\n",
          "passthroughBinaryImages": true,
          "returnIntermediateSteps": false
        },
        "promptType": "define"
      },
      "retryOnFail": true,
      "typeVersion": 1.8,
      "waitBetweenTries": 5000
    },
    {
      "id": "896a757c-8fdd-4542-b1cb-7c06464352f5",
      "name": "입력 데이터 설정",
      "type": "n8n-nodes-base.set",
      "position": [
        352,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "b040c079-7144-494b-a9fb-02bc98c1f94b",
              "name": "website_URL",
              "type": "string",
              "value": "={{ $json.normalizedUrl }}"
            },
            {
              "id": "c5f394cc-4a8b-4eab-823a-0a6bde38c040",
              "name": "Airtop Profile Name (for sites that require authentication)",
              "type": "string",
              "value": "=[PLACE YOUR AIRTOP PROFILE NAME]"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ca277160-b7bc-4acc-ba05-b6702075f90f",
      "name": "스티커 노트",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        -16
      ],
      "parameters": {
        "color": 7,
        "width": 672,
        "height": 528,
        "content": "# Trigger  \nThis section starts the workflow.  \n- Uses **Form Trigger** to capture user input (Website URL).  \n- The submitted URL becomes the base for analysis and scraping.  \n- Input is normalized through a **Set** and **Code** node (ensuring `https://` prefix).  \nConfiguration:  \n- Ensure the form field is labeled \"Website URL\" and set as required.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "cadf72c7-c661-4ab1-ac11-fb4fff63d541",
      "name": "스티커 노트2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1056,
        -16
      ],
      "parameters": {
        "color": 5,
        "width": 912,
        "height": 944,
        "content": "# Web Scraper  \nCore logic for automated browsing and data collection.  \n- **Webscraper Agent**: AI-driven controller that navigates pages and gathers information.  \n- **Click / Type / Query / Load URL**: Simulate user interactions with the target website.  \n- **End Session**: Properly closes the browser session after data extraction.  \nConfiguration:  \n- Requires OpenAI API key for AI decision-making.  \n- The agent prompt defines UX analysis rules (navigation, design, accessibility, trust signals).  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "08572300-5ed0-4b85-b70c-e3b2b957c566",
      "name": "스티커 노트3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2352,
        -16
      ],
      "parameters": {
        "color": 4,
        "width": 368,
        "height": 544,
        "content": "# Set Output  \nFormats the data retrieved by the Webscraper.  \n- Combines AI-generated results with initial input.  \n- Prepares structured data for the following metadata and reporting steps.  \nConfiguration:  \n- Make sure the variable `output` receives content from `Webscraper`.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "7833011c-d75d-4352-b64a-2becd5d9363b",
      "name": "세션",
      "type": "n8n-nodes-base.airtop",
      "position": [
        528,
        320
      ],
      "parameters": {
        "profileName": "={{ $json['Airtop Profile Name (for sites that require authentication)'] }}",
        "timeoutMinutes": 5,
        "additionalFields": {}
      },
      "credentials": {
        "airtopApi": {
          "id": "AYPzc0Zutq7v14Wn",
          "name": "Airtop account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7c0ceeb6-1964-4bd8-b623-3421e4cd85dc",
      "name": "창",
      "type": "n8n-nodes-base.airtop",
      "position": [
        720,
        320
      ],
      "parameters": {
        "url": "={{ $('set input data').item.json.website_URL }}",
        "resource": "window",
        "getLiveView": true,
        "additionalFields": {}
      },
      "credentials": {
        "airtopApi": {
          "id": "AYPzc0Zutq7v14Wn",
          "name": "Airtop account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c60d0233-d652-4b2b-b4e6-59a87042a3bd",
      "name": "ID 반환",
      "type": "n8n-nodes-base.set",
      "position": [
        896,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "0a0680af-39bd-4bc7-b9cd-84c1766c79a1",
              "name": "sessionId",
              "type": "string",
              "value": "={{ $('Session').item.json.sessionId }}"
            },
            {
              "id": "13940ee8-c1d4-4718-a7b4-176c44c097b7",
              "name": "windowId",
              "type": "string",
              "value": "={{ $('Window').item.json.data.windowId }}"
            },
            {
              "id": "a0f2005c-2cd2-4a8d-891b-a4759b72a124",
              "name": "output",
              "type": "string",
              "value": "Session and window created successfully"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "57d4700e-3ba5-4988-93b9-600729b2f5d6",
      "name": "스티커 노트6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        -16
      ],
      "parameters": {
        "width": 720,
        "height": 528,
        "content": "# Create Airtop Session  \nThis section establishes a remote browser session with Airtop.  \n- **Set Input Data**: Stores website URL and Airtop profile name.  \n- **Session**: Starts the browser session (requires Airtop credentials).  \n- **Window**: Opens the target website.  \n- **Return IDs**: Returns `sessionId` and `windowId` for later steps.  \n\n**Configuration required:**  \n- Replace `[PLACE YOUR AIRTOP PROFILE NAME]` with the name of your Airtop profile.  \n- Provide your **Airtop API credentials** under node credentials.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "11f9d6f1-0e30-4120-af1a-72846635c4d0",
      "name": "세션 종료",
      "type": "n8n-nodes-base.airtop",
      "position": [
        2128,
        320
      ],
      "parameters": {
        "operation": "terminate",
        "sessionId": "={{ $('Return IDs').item.json.sessionId }}"
      },
      "credentials": {
        "airtopApi": {
          "id": "AYPzc0Zutq7v14Wn",
          "name": "Airtop account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9ed13ec5-5087-46b6-8add-c3d31786afd3",
      "name": "스티커 노트7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2000,
        -16
      ],
      "parameters": {
        "width": 320,
        "height": 544,
        "content": "# Terminate Airtop Session  \nEnsures that the Airtop browser instance is closed once scraping is complete.  \n- **Terminate a session**: Frees resources and prevents unnecessary active sessions.  \nConfiguration:  \n- Pass the correct `sessionId` from the **Return IDs** node.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "3eccb9d0-1c7e-4de6-a96f-7e25a2d975d8",
      "name": "스티커 노트5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4096,
        -16
      ],
      "parameters": {
        "color": 4,
        "width": 320,
        "height": 720,
        "content": "# Send Answer  \nSends the final report to the user via Gmail.  \n- Email includes metadata review and UX analysis.  \n\n**Configuration required:**  \n- Replace `[PLACE YOUR EMAIL ADDRESS]` with the destination email.  \n- Connect your **Gmail OAuth2 credentials**.  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "59e40398-1f04-4d63-a6af-9163583899d8",
      "name": "메시지 전송",
      "type": "n8n-nodes-base.gmail",
      "position": [
        4224,
        320
      ],
      "webhookId": "eebd023c-4fd4-43ee-b3c2-d2116dc3bf68",
      "parameters": {
        "sendTo": "=[PLACE YOUR EMAIL ADDRESS]",
        "message": "={{ $json.final_raport }}",
        "options": {},
        "subject": "=New raport about  {{ $('set input data').item.json.website_URL }}",
        "emailType": "text"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "uBDkmeb9FXP4t6M5",
          "name": "Gmail lumi"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "21dfb3d6-b6b9-4be1-a77e-7f7d76deb192",
      "name": "HTTP 요청",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2864,
        320
      ],
      "parameters": {
        "url": "={{ $('set input data').item.json.website_URL }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "8184a1ca-b397-487b-942d-a02d23bac9c4",
      "name": "HTML",
      "type": "n8n-nodes-base.html",
      "position": [
        3072,
        320
      ],
      "parameters": {
        "options": {},
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "title",
              "cssSelector": "head > title"
            },
            {
              "key": "description",
              "attribute": "content",
              "cssSelector": "meta[name=\"description\"]",
              "returnValue": "attribute"
            },
            {
              "key": "og_image",
              "attribute": "content",
              "cssSelector": "meta[property=\"og:image\"]",
              "returnValue": "attribute"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "090a7e27-9413-4cb4-966a-0e648cf48b31",
      "name": "메타데이터 분석",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        3280,
        320
      ],
      "parameters": {
        "text": "=Check the provided metadata and give your opinion. Explain what is good, what is bad, and what can be optimized:\nTitle:{{ $json.title }}\nDescription:{{ $json.description }}",
        "batching": {},
        "messages": {
          "messageValues": [
            {
              "message": "=You are an expert SEO and digital marketing analyst specializing in metadata evaluation.\nYour role is to review the provided website metadata and deliver a professional, structured, and objective analysis.\n\nFor each element (e.g., Title, Description, Open Graph tags, Twitter tags, H1, etc.), follow these steps:\n\nVerification – Check if the metadata is present, correctly formatted, and not empty.\n\nQuality Assessment – Evaluate clarity, length, keyword usage, and relevance.\n\nStrengths – Identify what is good and effective.\n\nWeaknesses – Point out issues such as missing data, duplication, overstuffing, or poor readability.\n\nOptimization Suggestions – Provide clear, actionable recommendations for improvement (SEO-friendly, user-oriented, concise, and engaging).\n\nYour output must always be in structured, professional English, following this JSON format:\n\n{\n  \"title\": {\n    \"status\": \"ok / bad / missing\",\n    \"strengths\": \"...\",\n    \"weaknesses\": \"...\",\n    \"recommendations\": \"...\"\n  },\n  \"description\": {\n    \"status\": \"ok / bad / missing\",\n    \"strengths\": \"...\",\n    \"weaknesses\": \"...\",\n    \"recommendations\": \"...\"\n  },\n  \"overall\": {\n    \"summary\": \"Professional overview of metadata quality\",\n    \"priority_actions\": \"Most important improvements to apply\"\n  }\n}\n\n\nBe precise, objective, and avoid unnecessary text."
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.7
    },
    {
      "id": "c58ef5a7-0e62-426b-b4bb-4d1cfc527cac",
      "name": "구조화된 출력 파서",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        3376,
        528
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"title\": {\n    \"status\": \"ok / bad / missing\",\n    \"strengths\": \"...\",\n    \"weaknesses\": \"...\",\n    \"recommendations\": \"...\"\n  },\n  \"description\": {\n    \"status\": \"ok / bad / missing\",\n    \"strengths\": \"...\",\n    \"weaknesses\": \"...\",\n    \"recommendations\": \"...\"\n  },\n  \"overall\": {\n    \"summary\": \"Professional overview of metadata quality\",\n    \"priority_actions\": \"Most important improvements to apply\"\n  }\n}\n"
      },
      "typeVersion": 1.3
    },
    {
      "id": "fc2adf9a-8a66-4265-9a3c-1a093f86c074",
      "name": "OpenAI 채팅 모델2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3312,
        736
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "69YTGxdIPy79gAdh",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "29d3f76e-fd8a-450e-820e-b3e8bf0d4648",
      "name": "OpenAI 채팅 모델3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        3168,
        528
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "69YTGxdIPy79gAdh",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "6e719f77-2dec-445f-b543-c3371de57daa",
      "name": "필드 편집",
      "type": "n8n-nodes-base.set",
      "position": [
        3824,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e9477d29-0159-4930-afe0-09bbb38e5e12",
              "name": "final_raport",
              "type": "string",
              "value": "=UX Website Analyst: {{ $('set input data').item.json.website_URL }}\n\nMetadata:\nTitle: {{ $('HTML').item.json.title }}\nStatus: {{ $json.output.title.status }},\nStrengths: {{ $json.output.title.strengths }},\nWeaknesses: {{ $json.output.title.weaknesses }},\nRecommendation: {{ $json.output.title.recommendations }}.\n\nDescription: {{ $('HTML').item.json.description }}\nStatus: {{ $json.output.description.status }},\nWeaknesses: {{ $json.output.description.weaknesses }},\nRecommendation: {{ $json.output.description.recommendations }}.\n\nOverall: {{ $json.output.overall.summary }}\n\nWebsite Analysis:\n{{ $('Webscraper').item.json.output }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "99553f16-e0ba-4232-b02b-1f4c4be7b814",
      "name": "JavaScript 코드",
      "type": "n8n-nodes-base.code",
      "position": [
        112,
        320
      ],
      "parameters": {
        "jsCode": "function normalizeUrl(url) {\n  if (!/^https?:\\/\\//i.test(url)) {\n    return \"https://\" + url;\n  }\n  return url;\n}\n\nconst inputUrl = $json[\"set_raw_data\"];\nconst outputUrl = normalizeUrl(inputUrl);\n\nreturn [\n  {\n    json: {\n      normalizedUrl: outputUrl\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "bb05a911-f99c-4827-ada1-55b6b43fc2bb",
      "name": "RAW 데이터 설정",
      "type": "n8n-nodes-base.set",
      "position": [
        -128,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "55313268-5865-4a95-9e9e-907c9aced194",
              "name": "set_raw_data",
              "type": "string",
              "value": "={{ $json['Website URL'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "f6c156a3-6948-4e70-a808-31dc72a62fa7",
      "name": "스티커 노트1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2752,
        -16
      ],
      "parameters": {
        "color": 6,
        "width": 928,
        "height": 944,
        "content": "# Metadata & Analysis  \nAnalyzes technical SEO elements of the website.  \n- **HTTP Request**: Fetches raw HTML.  \n- **HTML**: Extracts `title`, `description`, and Open Graph tags.  \n- **Metadata Analyze**: Uses AI to review metadata quality.  \n- **Structured Output Parser**: Formats AI output as structured JSON.  \nConfiguration:  \n- Provide OpenAI API key.  \n- Verify CSS selectors for metadata extraction (`title`, `meta description`, `og:image`).  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "a8633e8e-e10e-43b9-b7be-5dc98f93958c",
      "name": "스티커 노트4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3712,
        -16
      ],
      "parameters": {
        "color": 4,
        "width": 352,
        "height": 528,
        "content": "# Make Final Report\nCombines metadata analysis and webscraper output into a final report.  \n- Collects structured results from AI analysis.  \n- Formats a human-readable summary for the user.  \nConfiguration:  \n- Ensure variables reference correct outputs (`HTML`, `Metadata Analyze`, `Webscraper`).  \n"
      },
      "typeVersion": 1
    },
    {
      "id": "a3b4064e-896e-4637-9c51-dcca5c72f83a",
      "name": "스티커 노트9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4464,
        -16
      ],
      "parameters": {
        "color": 3,
        "width": 960,
        "height": 1600,
        "content": "# Setup & Usage Instructions  \n\nThis workflow analyzes a website’s UX and SEO.  \nBefore using, configure the following:\n\n---\n## ▶️ [Video tutorial](https://youtu.be/OmaADzfHrBM)\n\n---\n## 1. Credentials to Configure  \n- **Airtop API credentials** → required for browser automation.  \n- **OpenAI API credentials** → required for UX and metadata analysis.  \n- **Gmail OAuth2 credentials** → required for sending reports by email.  \n\nAdd them in each node under *Credentials*.\n\n---\n\n## 2. Placeholders to Replace  \nSearch for the following placeholders in nodes and update them:  \n\n1. **Airtop profile name**  \n   - Node: `set input data`  \n   - Replace: `[PLACE YOUR AIRTOP PROFILE NAME]` → with your Airtop profile.  \n\n2. **Recipient email address**  \n   - Node: `Send a message`  \n   - Replace: `[PLACE YOUR EMAIL ADDRESS]` → with the destination email.  \n\n---\n\n## 3. How to Use  \n1. Open the workflow and activate it.  \n2. Submit a website URL in the form trigger (`Website URL`).  \n   - Example: `example.com` or `https://example.com`.  \n3. Workflow will:  \n   - Start Airtop browser session.  \n   - Navigate and analyze the site.  \n   - Check metadata.  \n   - Generate a professional report.  \n   - Send the report to the configured email.  \n\n---\n\n## 4. Notes  \n- The form field **Website URL** is required.  \n- The workflow normalizes URLs automatically (adds `https://` if missing).  \n- Always terminate Airtop sessions after use to avoid unnecessary running instances.  \n\n---\n\n✅ After replacing placeholders and configuring credentials, the workflow is ready for production use.  \n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "8184a1ca-b397-487b-942d-a02d23bac9c4": {
      "main": [
        [
          {
            "node": "090a7e27-9413-4cb4-966a-0e648cf48b31",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "271cdee4-9cc8-4018-83a4-58b79f36e85c": {
      "ai_tool": [
        [
          {
            "node": "7e0490c7-42f8-4361-aeb4-b29de5e680d2",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "c9473e1d-a9cc-42af-bdbd-064cc5eae7b4": {
      "ai_tool": [
        [
          {
            "node": "7e0490c7-42f8-4361-aeb4-b29de5e680d2",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "be47ccfb-408f-4b7d-90eb-dcf70166a0f0": {
      "ai_tool": [
        [
          {
            "node": "7e0490c7-42f8-4361-aeb4-b29de5e680d2",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "1214bae1-23a1-4a5e-9ee8-966c79d4d26d": {
      "main": [
        [
          {
            "node": "21dfb3d6-b6b9-4be1-a77e-7f7d76deb192",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7c0ceeb6-1964-4bd8-b623-3421e4cd85dc": {
      "main": [
        [
          {
            "node": "c60d0233-d652-4b2b-b4e6-59a87042a3bd",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7833011c-d75d-4352-b64a-2becd5d9363b": {
      "main": [
        [
          {
            "node": "7c0ceeb6-1964-4bd8-b623-3421e4cd85dc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a1616475-cd08-4052-8f98-523f3d609662": {
      "ai_tool": [
        [
          {
            "node": "7e0490c7-42f8-4361-aeb4-b29de5e680d2",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "c60d0233-d652-4b2b-b4e6-59a87042a3bd": {
      "main": [
        [
          {
            "node": "7e0490c7-42f8-4361-aeb4-b29de5e680d2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7e0490c7-42f8-4361-aeb4-b29de5e680d2": {
      "main": [
        [
          {
            "node": "11f9d6f1-0e30-4120-af1a-72846635c4d0",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "6e719f77-2dec-445f-b543-c3371de57daa": {
      "main": [
        [
          {
            "node": "59e40398-1f04-4d63-a6af-9163583899d8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "11f9d6f1-0e30-4120-af1a-72846635c4d0": {
      "main": [
        [
          {
            "node": "1214bae1-23a1-4a5e-9ee8-966c79d4d26d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "21dfb3d6-b6b9-4be1-a77e-7f7d76deb192": {
      "main": [
        [
          {
            "node": "8184a1ca-b397-487b-942d-a02d23bac9c4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bb05a911-f99c-4827-ada1-55b6b43fc2bb": {
      "main": [
        [
          {
            "node": "99553f16-e0ba-4232-b02b-1f4c4be7b814",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "896a757c-8fdd-4542-b1cb-7c06464352f5": {
      "main": [
        [
          {
            "node": "7833011c-d75d-4352-b64a-2becd5d9363b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "090a7e27-9413-4cb4-966a-0e648cf48b31": {
      "main": [
        [
          {
            "node": "6e719f77-2dec-445f-b543-c3371de57daa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f6fb52f6-f966-448e-9436-22f63fb5b4d5": {
      "ai_languageModel": [
        [
          {
            "node": "7e0490c7-42f8-4361-aeb4-b29de5e680d2",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "99553f16-e0ba-4232-b02b-1f4c4be7b814": {
      "main": [
        [
          {
            "node": "896a757c-8fdd-4542-b1cb-7c06464352f5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1cd5c7f2-414d-4703-8a9e-28630fd98df2": {
      "main": [
        [
          {
            "node": "bb05a911-f99c-4827-ada1-55b6b43fc2bb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "fc2adf9a-8a66-4265-9a3c-1a093f86c074": {
      "ai_languageModel": [
        [
          {
            "node": "c58ef5a7-0e62-426b-b4bb-4d1cfc527cac",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "29d3f76e-fd8a-450e-820e-b3e8bf0d4648": {
      "ai_languageModel": [
        [
          {
            "node": "090a7e27-9413-4cb4-966a-0e648cf48b31",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "c58ef5a7-0e62-426b-b4bb-4d1cfc527cac": {
      "ai_outputParser": [
        [
          {
            "node": "090a7e27-9413-4cb4-966a-0e648cf48b31",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

고급 - 콘텐츠 제작, 멀티모달 AI

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수33
카테고리2
노드 유형13
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

저자
LukaszB

LukaszB

@lukaszb

AI Automation Expert | Web & Mobile App Integrator With 2+ years of experience, I build smart automations, web & mobile app workflows, and scalable platforms using tools like n8n, Make, and more. I help businesses reduce operational costs, save time, and scale faster with AI-powered solutions. For business enquiries, send me an email at kontakt@lumizone.pl

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34