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
使用ノード (33)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下の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
}
]
]
},
"f8089962-fafa-4df6-a539-afe94a7969a7": {
"ai_tool": [
[
{
"node": "7e0490c7-42f8-4361-aeb4-b29de5e680d2",
"type": "ai_tool",
"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
}
]
]
},
"11f9d6f1-0e30-4120-af1a-72846635c4d0": {
"main": [
[
{
"node": "1214bae1-23a1-4a5e-9ee8-966c79d4d26d",
"type": "main",
"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など)は別途料金が発生する場合があります。
関連ワークフロー
WordPress、OpenAI、Perplexityを活用した自動化SEOブログ公開
WordPress、OpenAI、Perplexityを活用した自動化SEOブログ公開
Set
Limit
Split Out
+
Set
Limit
Split Out
43 ノードLukaszB
コンテンツ作成
OpenAI-Gemini を使って Dev.to 記事の作成 - AI による画像付きコンテンツ生成
OpenAI / Gemini を使用して Dev.to 記事を作成 - AI が画像付きコンテンツを生成
Set
Limit
Split Out
+
Set
Limit
Split Out
30 ノードLukaszB
コンテンツ作成
Veo 3、Gemini、Creatomateを使ってプロフェッショナルな動画広告を生成+公開
Veo 3、Gemini、Creatomateを使ってプロフェッショナルな動画広告を生成して公開
Jwt
Set
Code
+
Jwt
Set
Code
66 ノードLukaszB
コンテンツ作成
VEO3 VSL ジェネレーター:Meta 向けに公開するための自動化動画ワークフロー
Google VEO3、Creatomate字幕、Facebook投稿機能を使用してAIビデオセールスレター生成
Jwt
Set
Wait
+
Jwt
Set
Wait
30 ノードLukaszB
コンテンツ作成
Apollo データスクレイピングとタッチアウトフロー 1 ✅
Apollo、AI による解析と計画されたメール.follow-up によるリード生成の自動化
If
Code
Wait
+
If
Code
Wait
39 ノードDeniz
コンテンツ作成
WordPressブログの自動化プロフェッショナル版(先端研究)v2.1マーケットプラグイン
GPT-4o、Perplexity AI、そして多言語対応を使ったSEO最適化ブログ作成の自動化
If
Set
Xml
+
If
Set
Xml
125 ノードDaniel Ng
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数33
カテゴリー2
ノードタイプ13
作成者
LukaszB
@lukaszbAI 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で表示 →
このワークフローを共有