8
n8n 한국어amn8n.com

GPT-4 전문가 기반의 전면 SEO 검토, Analytics, Search Console, PageSpeed 사용

고급

이것은Market Research, AI Summarization분야의자동화 워크플로우로, 38개의 노드를 포함합니다.주로 Set, Code, Merge, HttpRequest, GoogleSheets 등의 노드를 사용하며. GPT-4 전문가 기반의 전면적인 SEO 검토, Analytics, Search Console 및 PageSpeed 사용

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • Google Sheets API 인증 정보
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "meta": {
    "instanceId": "8599d7845a778242eb2b590f9276e0b22e25a242e7728a8fa6887cb7c35c668a",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "934d8441-bf80-4dec-9423-8adc877d55d7",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -4680,
        -580
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "months",
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "122563ce-0d90-4adc-bcc0-8e806c19e114",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -2860,
        -1120
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "gpt-4.1-nano"
        },
        "options": {
          "temperature": 0.3
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "QrtszTAQelTLppHh",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "2f9345a9-c5f1-4564-8ef3-836d75281fe1",
      "name": "행 추가",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -2620,
        -1120
      ],
      "parameters": {
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1OiqXcLWhxBewkm88MN2etNutPA2IgiyRwMmyNeLAyz4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OiqXcLWhxBewkm88MN2etNutPA2IgiyRwMmyNeLAyz4/edit?usp=drivesdk",
          "cachedResultName": "Rapport GA"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lmJOtRvKMOD3WkGJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "57e0c737-c007-4a9e-9258-df083a3bfd50",
      "name": "OpenAI Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -2860,
        -320
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "gpt-4.1-nano"
        },
        "options": {
          "temperature": 0.3
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "QrtszTAQelTLppHh",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "50dd07fa-a710-4d03-8a81-95098a6454e5",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -2860,
        -720
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "gpt-4.1-nano"
        },
        "options": {
          "temperature": 0.3
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "QrtszTAQelTLppHh",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "fdb3b364-b3a0-4a45-8f71-c27fd8a91c8b",
      "name": "OpenAI Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -2860,
        180
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "gpt-4.1-nano"
        },
        "options": {
          "temperature": 0.3
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "QrtszTAQelTLppHh",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8deb28d8-858d-42df-8802-3c339c83494f",
      "name": "OpenAI Chat Model4",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1780,
        -420
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-nano",
          "cachedResultName": "gpt-4.1-nano"
        },
        "options": {
          "temperature": 0.3
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "QrtszTAQelTLppHh",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "4ef711bd-bcaa-4b61-8dfd-f4cc36f8a0a1",
      "name": "행 가져오기4",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -1600,
        -420
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lmJOtRvKMOD3WkGJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "a0760c4c-5455-42e5-88c2-fcaa0f3141b0",
      "name": "병합",
      "type": "n8n-nodes-base.merge",
      "position": [
        -2200,
        -660
      ],
      "parameters": {
        "numberInputs": 4
      },
      "typeVersion": 3.2
    },
    {
      "id": "8376066b-cb77-4b60-93d1-c883eaafbb39",
      "name": "Search Console",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -3300,
        -440
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/webmasters/v3/sites/{{ encodeURIComponent($('Set Target Website').item.json.domain) }}/searchAnalytics/query",
        "method": "POST",
        "options": {},
        "jsonBody": "{\n  \"startDate\": \"{{ $now.minus({months: 1}).toFormat('yyyy-MM-dd') }}\",\n  \"endDate\": \"{{ $now.toFormat('yyyy-MM-dd') }}\",\n  \"dimensions\": [\"query\"],\n  \"rowLimit\": 10\n}\n",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "nodeCredentialType": "googleOAuth2Api"
      },
      "credentials": {
        "googleOAuth2Api": {
          "id": "EanrW0MuDv56q9BH",
          "name": "search console"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d3676416-da4b-41ea-8b9b-b18ea5adbef8",
      "name": "대상 웹사이트 설정",
      "type": "n8n-nodes-base.set",
      "position": [
        -4380,
        -580
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "e3962683-6d91-4db2-af47-8ade2b8fb444",
              "name": "domain",
              "type": "string",
              "value": "https://www.your-website.com"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "ef6218b1-dff2-41fc-9aad-6d7e7a3c809a",
      "name": "GA 데이터 서식 지정",
      "type": "n8n-nodes-base.code",
      "position": [
        -3080,
        -1240
      ],
      "parameters": {
        "jsCode": "// n8n code to aggregate all Google Analytics data into a single block for the LangChain agent\n\n// Get all input data from the Google Analytics node\nconst inputData = $input.all();\n\n// Function to format numbers with thousand separators\nfunction formatNumber(num) {\n  return parseInt(num).toLocaleString('en-US');\n}\n\n// Function to extract the domain from a URL\nfunction extractDomain(url) {\n  if (!url) return 'unknown';\n  try {\n    const cleanUrl = url.replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n    const domain = cleanUrl.split('/')[0];\n    return domain;\n  } catch (error) {\n    return 'unknown';\n  }\n}\n\n// Aggregate all data\nconst allData = inputData.map(item => item.json);\n\n// Calculate totals and global metrics\nconst aggregatedMetrics = {\n  totalSessions: allData.reduce((sum, item) => sum + parseInt(item.sessions || 0), 0),\n  totalUsers: allData.reduce((sum, item) => sum + parseInt(item.totalUsers || 0), 0),\n  totalPageViews: allData.reduce((sum, item) => sum + parseInt(item.screenPageViews || 0), 0),\n  countries: [...new Set(allData.map(item => item.country).filter(Boolean))],\n  urls: [...new Set(allData.map(item => item.pageLocation).filter(Boolean))],\n  dataCount: allData.length\n};\n\n// Calculate derived metrics\naggregatedMetrics.avgPageViewsPerSession = (aggregatedMetrics.totalPageViews / aggregatedMetrics.totalSessions).toFixed(2);\naggregatedMetrics.avgSessionsPerUser = (aggregatedMetrics.totalSessions / aggregatedMetrics.totalUsers).toFixed(2);\naggregatedMetrics.returnUserRate = ((aggregatedMetrics.totalSessions - aggregatedMetrics.totalUsers) / aggregatedMetrics.totalSessions * 100).toFixed(1);\n\n// Create the comprehensive text summary\nconst comprehensiveReport = `\n=== GOOGLE ANALYTICS REPORT - LAST 30 DAYS ===\n\n📊 GLOBAL METRICS:\n• Total sessions: ${formatNumber(aggregatedMetrics.totalSessions)}\n• Unique users: ${formatNumber(aggregatedMetrics.totalUsers)}\n• Total page views: ${formatNumber(aggregatedMetrics.totalPageViews)}\n• Page views per session: ${aggregatedMetrics.avgPageViewsPerSession}\n• Sessions per user: ${aggregatedMetrics.avgSessionsPerUser}\n• Returning user rate: ${aggregatedMetrics.returnUserRate}%\n\n🌍 GEOGRAPHICAL BREAKDOWN:\n• Number of countries: ${aggregatedMetrics.countries.length}\n• Main countries: ${aggregatedMetrics.countries.join(', ')}\n\n🔗 WEBSITES ANALYZED:\n• Number of URLs: ${aggregatedMetrics.urls.length}\n• Main URLs: ${aggregatedMetrics.urls.join(', ')}\n`.trim();\n\n// Simplified return with a single \"content\" field\nreturn [{\n  json: {\n    content: comprehensiveReport\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "ed1a7666-4808-44cf-a415-7ccc76f22d2a",
      "name": "Analytics 전문가 에이전트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -2828,
        -1340
      ],
      "parameters": {
        "text": "=Aujourd'hui nous sommes le {{ $now }}\n\nTu es un expert Google Analytics spécialisé dans l'analyse de sites web tech/IA. \n\nMISSION : Analyser les données GA4 pour nana-intelligence.fr et identifier les opportunités d'optimisation.\n\nDONNÉES D'ENTRÉE : {{ $json.content }}\n\nANALYSE REQUISE :\n📊 Métriques de performance globale\n- Sessions, utilisateurs, taux de rebond\n- Durée moyenne des sessions\n- Pages vues par session\n- Sources de trafic principales\n\n🎯 Analyse comportementale\n- Pages les plus performantes\n- Parcours utilisateur type\n- Points de friction identifiés\n- Taux de conversion par source\n\n📈 Tendances et évolution\n- Comparaison avec période précédente\n- Saisonnalité du trafic\n- Impact des publications de contenu\n- Croissance du trafic organique\n\nFOCUS SPÉCIAL NICHE IA :\n- Performance du contenu IA/tech\n- Engagement sur les articles techniques\n- Conversion des visiteurs intéressés par l'IA\n\nFORMAT DE SORTIE :\nRetourne un objet JSON structuré avec :\n{\n  'performance_globale': {...},\n  'comportement_utilisateurs': {...},\n  'tendances': {...},\n  'recommandations_analytics': [...]\n\n",
        "options": {
          "systemMessage": "={\n  \"systemMessage\": \"Tu es un analyste web senior avec 10 ans d'expérience dans l'analyse de sites tech/IA. Ton ton est professionnel mais accessible. Tu détectes les patterns cachés dans les données et proposes des actions concrètes. Tu maîtrises parfaitement les spécificités du secteur de l'intelligence artificielle et du marketing digital.IMPORTANT: Termine TOUJOURS ta réponse par un JSON structuré avec les KPIs demandés, puis un paragraphe de synthèse executive claire pour le chef d'entreprise.\n\"\n}\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "95e9373d-cbfd-42ae-aba4-fc3e351f0a0f",
      "name": "Search Console 데이터 서식 지정",
      "type": "n8n-nodes-base.code",
      "position": [
        -3080,
        -440
      ],
      "parameters": {
        "jsCode": "// Formatting for Search Console with handling of empty data\nconst data = $input.first().json;\n\n// Check if we have actual data\nconst hasData = data.rows && data.rows.length > 0;\n\nif (!hasData) {\n  // Case for a new/recent site - Constructive response\n  const reportText = `\n=== GOOGLE SEARCH CONSOLE REPORT - TARGET WEBSITE ===\n📊 ANALYSIS DATE: ${new Date().toLocaleDateString('en-US')}\n\n🆕 STATUS: SITE IN SEO START-UP PHASE\n• No Search Console data available (this is normal for a new site).\n• API functional: ✅ Authentication successful.\n\n🚀 POSITIVE DIAGNOSIS:\n• Technical setup: Correct.\n• Google API access: Validated.\n• Indexing: In progress.\n\n🎯 RECOMMENDATIONS TO SPEED UP INDEXING:\n• Submit the XML sitemap to Google Search Console.\n• Create high-quality content regularly.\n• Obtain natural backlinks.\n• Optimize meta descriptions and titles.\n• Use Google Search Console to request manual indexing.\n\n⏳ EXPECTED TIMELINE:\n• First GSC data: 2-4 weeks after indexing.\n• Significant data: 2-3 months with regular content.\n• Mature SEO performance: 6-12 months.\n`;\n\n  return [{\n    json: {\n      content: reportText,\n      searchConsoleData: {\n        status: \"new_site\",\n        hasData: false,\n      }\n    }\n  }];\n}\n\n// If we have data\nconst searchData = data.rows.map(row => ({\n  query: row.keys[0] || 'Not specified',\n  clicks: row.clicks || 0,\n  impressions: row.impressions || 0,\n  ctr: ((row.ctr || 0) * 100).toFixed(2),\n  position: (row.position || 0).toFixed(1)\n}));\n\nconst totalClicks = searchData.reduce((sum, item) => sum + item.clicks, 0);\nconst totalImpressions = searchData.reduce((sum, item) => sum + item.impressions, 0);\n\nconst reportText = `\n=== GOOGLE SEARCH CONSOLE REPORT - DATA AVAILABLE ===\n📊 METRICS: ${totalClicks} clicks, ${totalImpressions} impressions.\n🔝 TOP QUERIES: ${searchData.slice(0, 5).map(item => item.query).join(', ')}\n`;\n\nreturn [{\n  json: {\n    content: reportText,\n    searchConsoleData: {\n      status: \"data_available\",\n      hasData: true,\n      totalClicks,\n      totalImpressions,\n      topQueries: searchData.slice(0, 5)\n    }\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "d7d2dda7-896b-462c-b959-e782dac35e52",
      "name": "SEO 전문가 에이전트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -2828,
        -540
      ],
      "parameters": {
        "text": "=Tu es un consultant SEO senior spécialisé dans le lancement de sites tech/IA.\n\nMISSION : Analyser la situation Search Console et proposer une stratégie d'accélération SEO.\n\nDONNÉES REÇUES : {{ $json.content }}\nSTATUT TECHNIQUE : {{ $json.searchConsoleData }}\n\nCONTEXTE SPÉCIFIQUE :\n- Site spécialisé en intelligence artificielle  \n- Phase de démarrage SEO (normal d'avoir peu/pas de données)\n- Besoin de stratégie d'accélération de la visibilité\n\nANALYSE REQUISE :\n\n🚀 Diagnostic Phase de Démarrage\n- Évaluation de la situation actuelle\n- Identification des leviers prioritaires\n- Timeline réaliste d'acquisition de trafic\n\n🎯 Stratégie Contenu IA/Tech  \n- Mots-clés prioritaires secteur IA\n- Sujets de contenu à forte valeur ajoutée\n- Optimisation technique pour Google\n\n📈 Plan d'Accélération SEO\n- Actions week 1-4 (indexation rapide)\n- Actions mois 2-3 (construction autorité)  \n- Actions mois 3-6 (scaling traffic organique)\n\n💰 ROI et Objectifs Chiffrés\n- Objectifs de trafic réalistes par trimestre\n- KPIs à tracker prioritairement\n- Budget/ressources recommandées\n\nFORMAT RÉPONSE :\n- Synthèse situationnelle (2-3 phrases)\n- Top 3 actions immédiates (cette semaine)\n- Stratégie contenu IA 30-60-90 jours\n- Objectifs chiffrés à 6 mois\n\nSois encourageant, précis et axé ROI. Utilise des émojis pour structurer.\n",
        "options": {
          "systemMessage": "You must respond only in English. Be precise, actionable, and results-oriented. Use quantified data whenever possible.\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "40f48efd-4c90-4e05-82c8-8eee42838955",
      "name": "PageSpeed 데이터 가져오기",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -3300,
        -840
      ],
      "parameters": {
        "url": "=https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url={{ $json.domain }}&category=performance&category=accessibility&category=best-practices&category=seo",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth"
      },
      "credentials": {
        "httpQueryAuth": {
          "id": "RF8SXqKZv6zCD2Q4",
          "name": "pagespeed_insight"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "186246bb-53c6-4f42-94db-657253bcff70",
      "name": "PageSpeed 데이터 서식 지정",
      "type": "n8n-nodes-base.code",
      "position": [
        -3080,
        -840
      ],
      "parameters": {
        "jsCode": "// Advanced formatting of Page Speed Insights data\nconst data = $input.first().json;\n\n// Verify that the data is valid\nif (!data.lighthouseResult) {\n  return [{\n    json: {\n      error: \"Invalid Page Speed Insights data\",\n      content: \"Error while fetching performance metrics\"\n    }\n  }];\n}\n\nconst lighthouse = data.lighthouseResult;\n\n// Generate the text report for the AI agent\nconst reportText = `\n=== PAGE SPEED INSIGHTS REPORT - TARGET WEBSITE ===\n📊 ANALYSIS DATE: ${new Date().toLocaleDateString('en-US')} - Strategy: ${lighthouse.configSettings.emulatedFormFactor}\n\n🎯 LIGHTHOUSE SCORES:\n• Performance: ${Math.round(lighthouse.categories.performance.score * 100)}/100\n• Accessibility: ${Math.round(lighthouse.categories.accessibility.score * 100)}/100\n• Best Practices: ${Math.round(lighthouse.categories['best-practices'].score * 100)}/100\n• SEO: ${Math.round(lighthouse.categories.seo.score * 100)}/100\n\n⚡ CORE WEB VITALS:\n• First Contentful Paint: ${lighthouse.audits['first-contentful-paint'].displayValue}\n• Largest Contentful Paint: ${lighthouse.audits['largest-contentful-paint'].displayValue}\n• Cumulative Layout Shift: ${lighthouse.audits['cumulative-layout-shift'].displayValue}\n• Speed Index: ${lighthouse.audits['speed-index'].displayValue}\n`;\n\nreturn [{\n  json: {\n    content: reportText\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "589300cb-913e-4dfe-b987-cb9077c3049a",
      "name": "성능 전문가 에이전트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -2820,
        -940
      ],
      "parameters": {
        "text": "=Aujourd'hui nous sommes le {{ $now }}\n\nTu es un expert en performance web et Core Web Vitals, spécialisé dans l'optimisation de sites tech/IA.\n\nMISSION : Analyser les métriques PageSpeed Insights de nana-intelligence.fr et proposer des optimisations concrètes.\n\nDONNÉES REÇUES : {{ $json.content }}\nMÉTRIQUES STRUCTURÉES : {{ $json.pagespeed_data }}\n\nANALYSE REQUISE :\n\n⚡ Core Web Vitals\n- Évaluation LCP, FID, CLS vs seuils Google\n- Impact sur l'expérience utilisateur\n- Priorisation des corrections\n\n📱 Performance Mobile vs Desktop\n- Identification des goulots d'étranglement\n- Optimisations spécifiques par device\n\n🔧 Optimisations Techniques Prioritaires\n- Resources bloquantes critiques\n- Optimisation images et médias\n- Minification CSS/JS\n- Stratégies de cache\n\n🎯 Impact SEO & Business\n- Corrélation performance/classements Google\n- ROI estimé des optimisations\n- Objectifs chiffrés à 30 jours\n\nCONTEXTE : Site IA/tech avec contenu riche nécessitant performance optimale.\n\nFORMAT RÉPONSE :\n- Synthèse performance actuelle (2-3 phrases)\n- Top 3 optimisations prioritaires avec impact estimé\n- Plan d'action technique avec timeline\n- Objectifs de performance à atteindre\n\nUtilise des émojis pour structurer ta réponse et sois concret dans tes recommandations.",
        "options": {
          "systemMessage": "You must respond only in English. Be precise, actionable, and results-oriented. Use quantified data whenever possible.\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "bb516f2c-aa34-48dc-9201-19fcace4e1f6",
      "name": "웹사이트 홈페이지 크롤링",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -3520,
        -40
      ],
      "parameters": {
        "url": "={{ $json.domain }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (compatible; n8n-seo-audit/1.0)"
            },
            {
              "name": "Accept",
              "value": "text/html,application/xhtml+xml"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "3d69a9e4-a206-491f-80d0-6b28da693fab",
      "name": "온페이지 SEO 데이터 추출",
      "type": "n8n-nodes-base.code",
      "position": [
        -3300,
        -40
      ],
      "parameters": {
        "jsCode": "// Complete extraction of SEO data from HTML\nconst html = $input.first().json.body || $input.first().json.data || '';\n\nif (!html) {\n  return [{\n    json: {\n      error: \"No HTML content retrieved\",\n      content: \"Error while scraping the site\"\n    }\n  }];\n}\n\nfunction cleanText(text) {\n  return text ? text.replace(/<[^>]*>/g, '').trim() : '';\n}\n\nconst seoExtraction = {\n  title: cleanText(html.match(/<title[^>]*>(.*?)<\\/title>/i)?.[1]) || 'Not found',\n  metaDescription: html.match(/<meta[^>]*name=[\"']description[\"'][^>]*content=[\"']([^\"']*)[\"'][^>]*>/i)?.[1] || 'Not found',\n  h1Tags: (html.match(/<h1[^>]*>(.*?)<\\/h1>/gi) || []).map(h1 => cleanText(h1)),\n  totalImages: (html.match(/<img[^>]*>/gi) || []).length,\n  imagesWithAlt: (html.match(/<img[^>]*alt=[\"'][^\"']*[\"'][^>]*>/gi) || []).length,\n};\n\nseoExtraction.imagesWithoutAlt = seoExtraction.totalImages - seoExtraction.imagesWithAlt;\n\nreturn [{\n  json: seoExtraction\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "c8b99b81-c718-4477-b59d-7bbbb0779ac5",
      "name": "온페이지 SEO 점수화",
      "type": "n8n-nodes-base.code",
      "position": [
        -3080,
        -40
      ],
      "parameters": {
        "jsCode": "// Complete analysis and scoring of extracted SEO data\nconst seoData = $input.first().json;\n\nif (!seoData || !seoData.title) {\n  return [{\n    json: {\n      error: \"Missing SEO data\",\n      content: \"Unable to proceed with the audit\"\n    }\n  }];\n}\n\n// SEO scoring system (out of 100 points)\nconst scoring = {\n  technical: 0,\n  onPage: 0,\n};\n\n// TECHNICAL SCORE\nif (seoData.title && seoData.title !== 'Not found') scoring.technical += 10;\nif (seoData.metaDescription && seoData.metaDescription !== 'Not found') scoring.technical += 10;\n\n// ON-PAGE SCORE\nif (seoData.h1Tags.length === 1) scoring.onPage += 10;\nif (seoData.imagesWithoutAlt === 0 && seoData.totalImages > 0) scoring.onPage += 10;\n\nconst totalScore = scoring.technical + scoring.onPage;\nlet scoreStatus = '';\nif (totalScore >= 80) scoreStatus = 'EXCELLENT';\nelse if (totalScore >= 60) scoreStatus = 'GOOD';\nelse if (totalScore >= 40) scoreStatus = 'AVERAGE';\nelse scoreStatus = 'POOR';\n\nconst criticalIssues = [];\nif (!seoData.title || seoData.title === 'Not found') criticalIssues.push('❌ CRITICAL: Missing title');\nif (!seoData.metaDescription || seoData.metaDescription === 'Not found') criticalIssues.push('❌ CRITICAL: Missing meta description');\nif (seoData.h1Tags.length === 0) criticalIssues.push('❌ CRITICAL: No H1 tag detected');\nelse if (seoData.h1Tags.length > 1) criticalIssues.push('⚠️ IMPORTANT: Multiple H1 tags detected');\n\nconst recommendations = [];\nif (seoData.imagesWithoutAlt > 0) recommendations.push(`🖼️ Add alt text to ${seoData.imagesWithoutAlt} images`);\n\n// Complete audit report\nconst auditReport = `\n=== COMPLETE TECHNICAL SEO AUDIT - TARGET WEBSITE ===\n📊 ANALYSIS DATE: ${new Date().toLocaleDateString('en-US')}\n\n★ GLOBAL SEO SCORE: ${totalScore}/100 (${scoreStatus})\n\n📋 ON-PAGE ANALYSIS:\n• Title: ${seoData.title !== 'Not found' ? '✅ ' + seoData.title.substring(0, 80) : '❌ Missing'}\n• Meta description: ${seoData.metaDescription !== 'Not found' ? '✅ ' + seoData.metaDescription.substring(0, 100) : '❌ Missing'}\n• H1: ${seoData.h1Tags.length} found(s) ${seoData.h1Tags.length === 1 ? '✅' : '⚠️'}\n• Images with alt text: ${seoData.imagesWithAlt}/${seoData.totalImages} ${seoData.imagesWithoutAlt === 0 ? '✅' : '❌'}\n\n${criticalIssues.length > 0 ? '🚨 CRITICAL ISSUES:\\n' + criticalIssues.join('\\n') : ''}\n${recommendations.length > 0 ? '💡 PRIORITY RECOMMENDATIONS:\\n' + recommendations.map(rec => '• ' + rec).join('\\n') : ''}\n`;\n\nreturn [{\n  json: {\n    content: auditReport,\n    auditData: {\n      totalScore,\n      scoreStatus,\n      scoring,\n      criticalIssues,\n      recommendations,\n    }\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "4901342b-1f93-4083-9cc1-1ae4d28d011d",
      "name": "기술 감사 에이전트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -2820,
        -40
      ],
      "parameters": {
        "text": "=You are a senior technical SEO expert, specializing in auditing and optimizing AI/tech websites.\n\nMISSION: Analyze the complete technical audit and create a prioritized action plan.\n\nAUDIT DATA: {{ $json.content }}\nDETAILED METRICS: {{ $json.auditData }}\n\n### In-Depth Analysis Required:\n\n🔍 **Expert Diagnosis**\n- Evaluate the overall score and position against competitors.\n- Identify quick wins versus long-term optimizations.\n- Prioritize based on SEO impact vs. required effort.\n\n⚡ **Immediate Action Plan (7 days)**\n- Critical fixes to implement first.\n- Quick on-page optimizations.\n- Essential technical improvements.\n\n📈 **Technical Roadmap (30-90 days)**\n- Phase 1 (0-30d): Solid SEO foundations.\n- Phase 2 (30-60d): Advanced optimizations.\n- Phase 3 (60-90d): Performance and monitoring.\n\n💰 **ROI and Estimated Impact**\n- Potential traffic gain per improvement.\n- Required resources vs. benefits.\n- Realistic timeline to see results.\n\n### TOOL USAGE INSTRUCTIONS (VERY IMPORTANT)\nOnce your analysis is complete, before formulating your final response, you MUST use the `Append or update row in sheet in Google Sheets` tool to save a summary.\nTo do this, you must provide data in a perfect JSON format matching the spreadsheet columns:\n\n{\n  \"Date\": \"{{ $now.toISODate() }}\", // Use current date in YYYY-MM-DD format\n  \"Source\": \"Technical SEO Audit\",\n  \"Rapport\": \"Insert a concise summary of your audit here (2-3 paragraphs max).\",\n  \"Recommandations\": \"List the top 3 most critical recommendations here as a bulleted list.\"\n}\n\nAfter successfully calling this tool, you can then formulate your full response for the end-user.\n\n### RESPONSE FORMAT:\nStructure your final response with emojis, clear sections, and highly concrete recommendations. Conclude with a dashboard of 5 main KPIs to track.\n",
        "options": {
          "systemMessage": "You must respond only in English. Be precise, actionable, and results-oriented. Use quantified data whenever possible.\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "8b01b20c-c10c-43a9-8fe7-34d3d703933c",
      "name": "모든 보고서 통합",
      "type": "n8n-nodes-base.code",
      "position": [
        -1980,
        -640
      ],
      "parameters": {
        "jsCode": "// Simple aggregator - post-merge\nconst allInputs = $input.all();\n\n// Extract contents\nconst reports = allInputs.map((input, index) => ({\n  index: index + 1,\n  content: input.json.output || input.json.content || JSON.stringify(input.json),\n}));\n\n// Create the consolidated text\nconst consolidatedText = `\n=== CONSOLIDATED DATA FOR MASTER ANALYST ===\n📊 Reports received: ${reports.length}/4\n\n📄 REPORT 1 (ANALYTICS):\n${reports[0]?.content.substring(0, 1000)}...\n\n📄 REPORT 2 (PAGESPEED):\n${reports[1]?.content.substring(0, 1000)}...\n\n📄 REPORT 3 (SEARCH CONSOLE):\n${reports[2]?.content.substring(0, 1000)}...\n\n📄 REPORT 4 (TECHNICAL AUDIT):\n${reports[3]?.content.substring(0, 1000)}...\n\n🎯 MASTER ANALYST INSTRUCTIONS:\nAnalyze these 4 reports and create a comprehensive SEO summary with a prioritized action plan.\n`;\n\nreturn [{\n  json: {\n    textSummary: consolidatedText\n  }\n}];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "4d826fd3-118b-4316-bb10-0ac18bf8d694",
      "name": "마스터 분석가 에이전트",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1760,
        -640
      ],
      "parameters": {
        "text": "=You are the MASTER SEO ANALYST, an expert in strategic synthesis and actionable recommendations.\n\nCONSOLIDATED DATA RECEIVED: {{ $json.textSummary }}\nMETADATA: {{ $json.reportMetadata }}\n\nMISSION: Create a 360° SEO analysis and a prioritized action plan for nana-intelligence.fr.\n\nSPECIFIC CONTEXT:\n- Site specializing in artificial intelligence\n- Growth and SEO optimization phase\n- Need for concrete and prioritized recommendations\n\nCOMPLETE ANALYSIS REQUIRED:\n\n🎯 EXECUTIVE SUMMARY\n- Estimated overall SEO score (/100)\n- 3 main strengths identified\n- 3 critical weaknesses to correct\n- Estimated competitive positioning\n\n📊 CROSS-FUNCTIONAL ANALYSIS\n- Consistency between Analytics, Performance, SEO, and Technical aspects\n- Identification of important correlations\n- Friction points in the user experience\n- Cross-channel improvement opportunities\n\n🚀 PRIORITIZED ACTION PLAN (90 DAYS)\n- WEEK 1-2: Critical actions (immediate impact)\n- MONTH 1: Fundamental optimizations\n- MONTHS 2-3: Development and growth\n\n💰 ROI AND MEASURABLE GOALS\n- 30/60/90-day traffic goals\n- Priority KPIs to track\n- Estimated resources/budget required\n- Expected business impact\n\n🔍 MONITORING AND ALERTS\n- Metrics to monitor monthly\n- Alert thresholds to configure\n- Corrective actions in case of degradation\n\nRESPONSE FORMAT:\nStructure your response with emojis, clear sections, and highly actionable recommendations. Conclude with a tracking dashboard featuring 5 main KPIs.\n\nIMPORTANT: Be precise, actionable, and tailor your recommendations to the AI/tech sector.\n",
        "options": {
          "systemMessage": "Tu réponds uniquement en français. Sois précis, actionnable et orienté résultats. Utilise des données chiffrées quand possible."
        },
        "promptType": "define"
      },
      "typeVersion": 2
    },
    {
      "id": "734dd3f2-b839-45b8-816e-55537d49fa46",
      "name": "GA 기록 가져오기",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -2740,
        -1120
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lmJOtRvKMOD3WkGJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "c2fc9adc-ea41-4487-b3a9-8aa8c9958363",
      "name": "Search Console 기록 가져오기",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -2740,
        -320
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lmJOtRvKMOD3WkGJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "f3d33302-cd1d-40f0-9582-f0af420ad4dd",
      "name": "PageSpeed 기록 가져오기",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -2740,
        -720
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lmJOtRvKMOD3WkGJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "fd76ab3f-ed79-46b9-9ff6-d5ba1d00d71b",
      "name": "기술 감사 기록 가져오기",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -2740,
        180
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lmJOtRvKMOD3WkGJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "aca46735-6331-49e9-b4e7-5a8aff96b23d",
      "name": "최종 보고서를 시트에 저장",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1180,
        -640
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lmJOtRvKMOD3WkGJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "0571f8a4-b8da-4025-98f5-82586847d996",
      "name": "보고서 가져오기",
      "type": "n8n-nodes-base.googleAnalytics",
      "position": [
        -3340,
        -1240
      ],
      "parameters": {
        "metricsGA4": {
          "metricValues": [
            {}
          ]
        },
        "propertyId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "dimensionsGA4": {
          "dimensionValues": [
            {}
          ]
        },
        "additionalFields": {}
      },
      "credentials": {
        "googleAnalyticsOAuth2": {
          "id": "IdJyLR8hvyqvt2XQ",
          "name": "Google Analytics account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "3e1cf038-fe51-4938-a963-b44e476c8b9b",
      "name": "Google Sheets의 시트에서 행 가져오기",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -2620,
        -720
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lmJOtRvKMOD3WkGJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "7e0f155e-47d4-42bc-b5d9-ccd8af2fc320",
      "name": "Google Sheets1의 시트에서 행 가져오기",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -2620,
        -320
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lmJOtRvKMOD3WkGJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "f075de2e-af7a-49c7-8fca-4b61d2147b44",
      "name": "Google Sheets2의 시트에서 행 가져오기",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -2620,
        180
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "lmJOtRvKMOD3WkGJ",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "dec783ed-8df6-440a-87b2-a114db375be0",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -4840,
        -1220
      ],
      "parameters": {
        "color": 5,
        "width": 1180,
        "height": 920,
        "content": "# 🚀 Automated SEO Audit: Setup & Overview\n\nThis workflow performs a fully automated monthly SEO audit using a team of specialized AI agents. It gathers data from Google Analytics, Search Console, PageSpeed, and a live website crawl to generate a comprehensive report.\n\n### ⚠️ CRITICAL SETUP REQUIRED\n\nBefore you can run this workflow, you MUST configure the following:\n\n1.  **Set Target Domain**: In the `Set Target Website` node, replace the default URL with your own website's URL.\n2.  **Configure Trigger**: Click the `Schedule Trigger` to set the day and time for your monthly report.\n3.  **Connect Credentials**:\n    *   **OpenAI**: Add your API key to all `OpenAI Chat Model` nodes.\n    *   **Google**: Connect your Google account to all `Google Sheets`, `Google Analytics` (Get a report), and `Search Console` (HTTP Request) nodes.\n    *   **PageSpeed**: Create a \"Generic Credential\" for your Google API key and select it in the `Fetch PageSpeed Data` node.\n4.  **Update Google Sheet ID**: In **ALL** `Google Sheets` nodes, replace the default \"Document ID\" with the ID of your own Google Sheet.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f6e8b2f2-a7eb-478f-b435-f7d3d718c420",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3640,
        -1740
      ],
      "parameters": {
        "color": 4,
        "width": 700,
        "height": 1940,
        "content": "# 1. Data Collection Phase\n\nThis is the starting point of the audit. The workflow runs four branches in parallel to gather raw data from key sources.\n\n- **Google Analytics**: Fetches overall traffic and user behavior data.\n- **Google Search Console**: Retrieves organic search performance metrics.\n- **PageSpeed Insights**: Gathers technical performance and Core Web Vitals scores.\n- **Live Website Crawl**: Scrapes the homepage for on-page SEO elements (titles, headings, etc.).\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1ee5c1d8-deb5-453c-96fa-1861e70f6960",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2920,
        -1740
      ],
      "parameters": {
        "width": 580,
        "height": 2100,
        "content": "# 2. Specialist AI Analysis\n\nThis is the core intelligence of the workflow. Each data stream is processed by a dedicated AI agent with a specific area of expertise.\n\n- **Analytics Specialist**: Interprets GA4 data to find trends.\n- **Performance Specialist**: Analyzes PageSpeed scores and recommends technical fixes.\n- **SEO Specialist**: Evaluates Search Console data for organic growth opportunities.\n- **Technical Audit Agent**: Scores the on-page SEO elements from the live crawl.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c2525899-4b56-4c73-8ae6-6814cce13820",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2320,
        -1000
      ],
      "parameters": {
        "color": 3,
        "width": 1020,
        "height": 780,
        "content": "# 3. Aggregation & Master Synthesis\n\nIn this phase, all four specialist reports are collected and merged.\n\nA final **Master Analyst Agent** then receives this consolidated data package. Its mission is to synthesize all the information into a single, high-level strategic summary with a prioritized, actionable roadmap for the business.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "b1a0957f-fe63-499d-8764-57638a26309d",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1280,
        -880
      ],
      "parameters": {
        "width": 440,
        "height": 500,
        "content": "# 4. Final Output & Storage\n\nThis is the final step. All individual reports, as well as the final comprehensive report from the Master Analyst, are automatically saved to your designated Google Sheet.\n\nThis creates a historical archive of your monthly SEO performance, allowing you to track progress over time.\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "a0760c4c-5455-42e5-88c2-fcaa0f3141b0": {
      "main": [
        [
          {
            "node": "8b01b20c-c10c-43a9-8fe7-34d3d703933c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2f9345a9-c5f1-4564-8ef3-836d75281fe1": {
      "ai_tool": [
        [
          {
            "node": "ed1a7666-4808-44cf-a415-7ccc76f22d2a",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "4ef711bd-bcaa-4b61-8dfd-f4cc36f8a0a1": {
      "ai_tool": [
        [
          {
            "node": "4d826fd3-118b-4316-bb10-0ac18bf8d694",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "0571f8a4-b8da-4025-98f5-82586847d996": {
      "main": [
        [
          {
            "node": "ef6218b1-dff2-41fc-9aad-6d7e7a3c809a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ef6218b1-dff2-41fc-9aad-6d7e7a3c809a": {
      "main": [
        [
          {
            "node": "ed1a7666-4808-44cf-a415-7ccc76f22d2a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "734dd3f2-b839-45b8-816e-55537d49fa46": {
      "ai_tool": [
        [
          {
            "node": "ed1a7666-4808-44cf-a415-7ccc76f22d2a",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "8376066b-cb77-4b60-93d1-c883eaafbb39": {
      "main": [
        [
          {
            "node": "95e9373d-cbfd-42ae-aba4-fc3e351f0a0f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "934d8441-bf80-4dec-9423-8adc877d55d7": {
      "main": [
        [
          {
            "node": "d3676416-da4b-41ea-8b9b-b18ea5adbef8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "122563ce-0d90-4adc-bcc0-8e806c19e114": {
      "ai_languageModel": [
        [
          {
            "node": "ed1a7666-4808-44cf-a415-7ccc76f22d2a",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "c8b99b81-c718-4477-b59d-7bbbb0779ac5": {
      "main": [
        [
          {
            "node": "4901342b-1f93-4083-9cc1-1ae4d28d011d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "57e0c737-c007-4a9e-9258-df083a3bfd50": {
      "ai_languageModel": [
        [
          {
            "node": "d7d2dda7-896b-462c-b959-e782dac35e52",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "50dd07fa-a710-4d03-8a81-95098a6454e5": {
      "ai_languageModel": [
        [
          {
            "node": "589300cb-913e-4dfe-b987-cb9077c3049a",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "fdb3b364-b3a0-4a45-8f71-c27fd8a91c8b": {
      "ai_languageModel": [
        [
          {
            "node": "4901342b-1f93-4083-9cc1-1ae4d28d011d",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "8deb28d8-858d-42df-8802-3c339c83494f": {
      "ai_languageModel": [
        [
          {
            "node": "4d826fd3-118b-4316-bb10-0ac18bf8d694",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "d3676416-da4b-41ea-8b9b-b18ea5adbef8": {
      "main": [
        [
          {
            "node": "0571f8a4-b8da-4025-98f5-82586847d996",
            "type": "main",
            "index": 0
          },
          {
            "node": "40f48efd-4c90-4e05-82c8-8eee42838955",
            "type": "main",
            "index": 0
          },
          {
            "node": "8376066b-cb77-4b60-93d1-c883eaafbb39",
            "type": "main",
            "index": 0
          },
          {
            "node": "bb516f2c-aa34-48dc-9201-19fcace4e1f6",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "40f48efd-4c90-4e05-82c8-8eee42838955": {
      "main": [
        [
          {
            "node": "186246bb-53c6-4f42-94db-657253bcff70",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4d826fd3-118b-4316-bb10-0ac18bf8d694": {
      "main": [
        [
          {
            "node": "aca46735-6331-49e9-b4e7-5a8aff96b23d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d7d2dda7-896b-462c-b959-e782dac35e52": {
      "main": [
        [
          {
            "node": "a0760c4c-5455-42e5-88c2-fcaa0f3141b0",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "8b01b20c-c10c-43a9-8fe7-34d3d703933c": {
      "main": [
        [
          {
            "node": "4d826fd3-118b-4316-bb10-0ac18bf8d694",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "186246bb-53c6-4f42-94db-657253bcff70": {
      "main": [
        [
          {
            "node": "589300cb-913e-4dfe-b987-cb9077c3049a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f3d33302-cd1d-40f0-9582-f0af420ad4dd": {
      "ai_tool": [
        [
          {
            "node": "589300cb-913e-4dfe-b987-cb9077c3049a",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "4901342b-1f93-4083-9cc1-1ae4d28d011d": {
      "main": [
        [
          {
            "node": "a0760c4c-5455-42e5-88c2-fcaa0f3141b0",
            "type": "main",
            "index": 3
          }
        ]
      ]
    },
    "bb516f2c-aa34-48dc-9201-19fcace4e1f6": {
      "main": [
        [
          {
            "node": "3d69a9e4-a206-491f-80d0-6b28da693fab",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3d69a9e4-a206-491f-80d0-6b28da693fab": {
      "main": [
        [
          {
            "node": "c8b99b81-c718-4477-b59d-7bbbb0779ac5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ed1a7666-4808-44cf-a415-7ccc76f22d2a": {
      "main": [
        [
          {
            "node": "a0760c4c-5455-42e5-88c2-fcaa0f3141b0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "95e9373d-cbfd-42ae-aba4-fc3e351f0a0f": {
      "main": [
        [
          {
            "node": "d7d2dda7-896b-462c-b959-e782dac35e52",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c2fc9adc-ea41-4487-b3a9-8aa8c9958363": {
      "ai_tool": [
        [
          {
            "node": "d7d2dda7-896b-462c-b959-e782dac35e52",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "fd76ab3f-ed79-46b9-9ff6-d5ba1d00d71b": {
      "ai_tool": [
        [
          {
            "node": "4901342b-1f93-4083-9cc1-1ae4d28d011d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "589300cb-913e-4dfe-b987-cb9077c3049a": {
      "main": [
        [
          {
            "node": "a0760c4c-5455-42e5-88c2-fcaa0f3141b0",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "3e1cf038-fe51-4938-a963-b44e476c8b9b": {
      "ai_tool": [
        [
          {
            "node": "589300cb-913e-4dfe-b987-cb9077c3049a",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "7e0f155e-47d4-42bc-b5d9-ccd8af2fc320": {
      "ai_tool": [
        [
          {
            "node": "d7d2dda7-896b-462c-b959-e782dac35e52",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "f075de2e-af7a-49c7-8fca-4b61d2147b44": {
      "ai_tool": [
        [
          {
            "node": "4901342b-1f93-4083-9cc1-1ae4d28d011d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

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

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

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

고급 - 시장 조사, AI 요약

유료인가요?

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

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

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

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34