Stack Overflow에서 Notion으로의 FAQ 자동 생성
이것은Document Extraction, Multimodal AI분야의자동화 워크플로우로, 19개의 노드를 포함합니다.주로 If, Set, Merge, Slack, Notion 등의 노드를 사용하며. GPT-4o-mini를 사용한 Stack Overflow에서 Notion으로의 FAQ 자동 생성, Slack 알림 포함
- •Slack Bot Token 또는 Webhook URL
- •Notion API Key
- •Google Sheets API 인증 정보
- •OpenAI API Key
{
"id": "lBKKbdwQ12KKriEM",
"meta": {
"instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
"templateCredsSetupCompleted": true
},
"name": "Automate FAQ Generation from Stack Overflow to Notion with Slack Alerts and Google Sheet",
"tags": [],
"nodes": [
{
"id": "b5595d8e-b9ae-4b39-aa44-eb4729834068",
"name": "스티커 메모 - 워크플로우 개요",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1216,
-1024
],
"parameters": {
"width": 541,
"height": 577,
"content": "## 🧩 Automate FAQ Generation from Stack Overflow\n\n### How it works\nThis workflow watches Stack Overflow for new technical questions using RSS, classifies each question topic with OpenAI GPT-4o-mini, and turns it into a structured FAQ entry. \nEach entry is then saved to Notion, logged in Google Sheets, and shared in Slack. \nIf any step fails, an alert is sent automatically to your Slack channel.\n\n### Setup steps\n1. Connect your **RSS Feed** node and set the Stack Overflow tag query. \n2. Add **OpenAI credentials** (model: gpt-4o-mini). \n3. Connect your **Notion** workspace and choose your FAQ database. \n4. Link your **Google Sheets** account and specify the document + sheet. \n5. Connect **Slack**, select your workspace, and set a target channel ID. \n6. Run once manually to test and confirm that all nodes are working.\n"
},
"typeVersion": 1
},
{
"id": "09a30fdb-1191-4dd0-a320-da7885a0ef02",
"name": "스티커 메모 - RSS 설정",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1173.5,
-345
],
"parameters": {
"color": 2,
"width": 427,
"height": 449,
"content": "## 📡 Stack Overflow Feed & Filter \n\nThis section monitors Stack Overflow RSS for new questions and filters out duplicates or irrelevant ones before AI processing. \nUpdate the RSS tag query and adjust filter rules to match your tech stack.\n"
},
"typeVersion": 1
},
{
"id": "ec540539-a6bc-44ed-8d2b-f729111c6bcf",
"name": "스티커 메모 - AI 설정",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
-560
],
"parameters": {
"color": 2,
"width": 219,
"height": 651,
"content": "## 🧱 Data Preparation & Integration \n\n \nThis section formats the AI output into a clean structure for Notion, Google Sheets, and Slack. \nMerges AI and Notion data so other nodes can access full FAQ details.\n"
},
"typeVersion": 1
},
{
"id": "96b6069f-edda-407b-b972-a9540cdb705c",
"name": "스티커 메모 - 서식 설정",
"type": "n8n-nodes-base.stickyNote",
"position": [
-709.5,
-323
],
"parameters": {
"color": 2,
"width": 651,
"height": 427,
"content": "## 🧠 AI Understanding & FAQ Generation \n\nUses GPT-4o-mini to first classify each question (Frontend, Backend, DevOps, etc.), then generate a structured FAQ entry including title, summary, insights, and tags. \nKeep prompts concise for best performance.\n"
},
"typeVersion": 1
},
{
"id": "47599144-192f-4490-aa46-8e20a205026b",
"name": "스티커 메모 - Notion 설정",
"type": "n8n-nodes-base.stickyNote",
"position": [
272,
-448
],
"parameters": {
"color": 2,
"width": 379,
"height": 597,
"content": "## 🗂️ Knowledge Base Logging \n\n \nSaves each AI-generated FAQ to Notion for internal reference and logs it in Google Sheets for analytics or backup. \nEnsure your Notion DB and Sheet fields match the formatted data.\n"
},
"typeVersion": 1
},
{
"id": "6e4fa5ce-aeb7-4359-ad21-727e92f7e76f",
"name": "스티커 메모 - Slack 설정",
"type": "n8n-nodes-base.stickyNote",
"position": [
672,
-144
],
"parameters": {
"color": 2,
"width": 347,
"height": 357,
"content": "## 💬 Team Notifications \n\n\nSends a Slack update when a new FAQ is added. \nIncludes summary, category, and links to both Notion and the original Stack Overflow question.\n"
},
"typeVersion": 1
},
{
"id": "b47b56b1-4ae3-4e88-9e97-76ce454cda09",
"name": "OpenAI - 주제 분류기",
"type": "@n8n/n8n-nodes-langchain.openAi",
"notes": "Classifies question topic (Frontend, Backend, DevOps, etc.) before FAQ generation.",
"position": [
-672,
-56
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": ""
},
"options": {
"maxTokens": 200,
"temperature": 0
},
"messages": {
"values": [
{
"content": "You are a technical classifier. Categorize this Stack Overflow question into one of the following: Frontend, Backend, DevOps, API, Database, AI/ML, or Other.\n\nReturn a JSON response in this exact format:\n{\n \"topic_category\": \"<category>\"\n}\n\nQuestion Title: {{ $json.title }}\nQuestion Summary: {{ $json.summary }}"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "fcc0YsAnyxvK2gD4",
"name": "OpenAi account 3"
}
},
"typeVersion": 1.4
},
{
"id": "81c6d665-83ce-454b-b570-e5ee63769e70",
"name": "오류 트리거",
"type": "n8n-nodes-base.errorTrigger",
"position": [
-1104,
512
],
"parameters": {},
"typeVersion": 1
},
{
"id": "875a2618-4bec-4979-a9c3-fcab55406729",
"name": "Slack - 오류 알림",
"type": "n8n-nodes-base.slack",
"notes": "Sends an error alert message if Topic Classifier, FAQ Generator, or Notion fails.",
"position": [
-832,
512
],
"webhookId": "32778282-35eb-4e4c-97cf-0217a8fb754a",
"parameters": {
"text": "=❌ *FAQ Automation Error Detected!*\n\n*Node:* {{ $json.node.name }}\n*Error:* {{ $json.error.message }}\n*Time:* {{ $json.timestamp }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": ""
},
"otherOptions": {
"includeLinkToWorkflow": false
}
},
"credentials": {
"slackApi": {
"id": "rNqvWj9TfChPVRYY",
"name": "Slack account vivek"
}
},
"typeVersion": 2.1
},
{
"id": "3667ae53-1e2d-4660-a37a-dbf9bf527b1b",
"name": "OpenAI - FAQ 생성기",
"type": "@n8n/n8n-nodes-langchain.openAi",
"notes": "Uses GPT-4o-mini to analyze Stack Overflow content and generate structured FAQ entries with product-specific guidance",
"position": [
-320,
-56
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "id",
"value": ""
},
"options": {
"maxTokens": 1000,
"temperature": 0.7
},
"messages": {
"values": [
{
"content": "=You are an expert technical writer creating internal FAQs for a SaaS product team.\n\nConvert the following Stack Overflow question into a comprehensive internal FAQ entry:\n\n**Question Title:** {{ $json.title }}\n**Question URL:** {{ $json.link }}\n**Content:** {{ $json.summary }} \n**Topic Category:** {{ $json.message.content.topic_category }}\n\nGenerate a JSON response with the following structure:\n{\n \"faq_title\": \"Clear, concise question title\",\n \"summary\": \"2-3 sentence summary of the problem and context\",\n \"answer_insights\": \"Key technical insights and solutions from the discussion\",\n \"product_guidance\": \"How this relates to our product, best practices, and internal documentation links (use placeholders like [ProductName] or [Internal Docs Link])\",\n \"tags\": [\"relevant\", \"tags\", \"for\", \"categorization\"]\n}\n\nFocus on actionable insights and make it relevant for internal engineering and support teams."
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "fcc0YsAnyxvK2gD4",
"name": "OpenAi account 3"
}
},
"typeVersion": 1.4
},
{
"id": "b7c22c01-a01c-4328-95c3-1c89af58c82a",
"name": "질문 필터링",
"type": "n8n-nodes-base.if",
"position": [
-896,
-56
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "902e691f-7ea4-48f4-ad5d-7196787ee099",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.title }}",
"rightValue": "JavaScript"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "77daf4ad-9696-4981-8097-2d73c53ee7a4",
"name": "RSS 피드 - Stack Overflow 모니터",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"notes": "Monitors Stack Overflow RSS feed for new questions tagged with specified keywords (python, javascript, devops). Triggers every 30 minutes.",
"position": [
-1120,
-56
],
"parameters": {
"feedUrl": "https://stackoverflow.com/feeds/tag?tagnames=javascript&sort=active",
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"typeVersion": 1
},
{
"id": "147082e7-ac15-4983-81b1-8883e51bd080",
"name": "AI 응답 서식 지정",
"type": "n8n-nodes-base.set",
"position": [
48,
-240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "84e7581a-9256-4075-bc2e-b4583cea72fc",
"name": "FAQ Title",
"type": "string",
"value": "={{ $json.message.content.faq_title }}"
},
{
"id": "52b3c12b-a7ce-40c1-87d2-b2370cd02a73",
"name": "Summary",
"type": "string",
"value": "={{ $json.message.content.summary }}"
},
{
"id": "4e61cf52-d96c-4253-b0b6-71a72c8bff45",
"name": "Answer Insights",
"type": "string",
"value": "={{ $json.message.content.answer_insights }}"
},
{
"id": "2e78b58f-80f3-4bd1-8cd8-27a945da1e1e",
"name": "Product Guidance",
"type": "string",
"value": "={{ $json.message.content.product_guidance }}"
},
{
"id": "2e21c42a-6d8b-4f1c-977d-526edcdd2225",
"name": "Tags",
"type": "array",
"value": "={{ $json.message.content.tags }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "636bc723-1f21-48c8-a27f-575685d4da6a",
"name": "Notion - FAQ 항목 생성",
"type": "n8n-nodes-base.notion",
"notes": "Creates a new page in Notion Knowledge Base database with all FAQ fields populated",
"position": [
384,
-32
],
"parameters": {
"title": "={{ $json[\"FAQ Title\"] }}",
"pageId": {
"__rl": true,
"mode": "url",
"value": ""
},
"blockUi": {
"blockValues": [
{
"textContent": "={{ $json.Summary }}"
},
{
"textContent": "={{ $json[\"Answer Insights\"] }}"
}
]
},
"options": {}
},
"credentials": {
"notionApi": {
"id": "E9jA8DFWT2IxdpMU",
"name": "Notion account Vivek"
}
},
"typeVersion": 2
},
{
"id": "488cdd31-38b6-4a91-85ab-2d897d3e44e6",
"name": "데이터 병합",
"type": "n8n-nodes-base.merge",
"notes": "Combines OpenAI output with Notion response for Slack notification",
"position": [
48,
-64
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "mergeByPosition"
},
"typeVersion": 2.1
},
{
"id": "4b83b70c-c7ba-4a07-8143-e87930135d25",
"name": "Slack - 팀에 알림",
"type": "n8n-nodes-base.slack",
"notes": "Sends formatted notification to #product-faqs channel with FAQ summary, category, and links",
"position": [
704,
40
],
"webhookId": "39b29d92-37b0-4d79-a96a-a0b0800c546c",
"parameters": {
"text": "=🆕 *New FAQ Entry Added to Knowledge Base*\n\n*Question:* {{ $json.message.content.faq_title }}\n\n*Summary:* {{ $json.message.content.summary }}\n\n🧩 *Category:* {{ $('OpenAI - Topic Classifier').item.json.message.content.topic_category }}\n\n*Tags:* {{ $json.message.content.tags }}\n\n📄 *Read Full Entry:* {{ $('Notion - Create FAQ Entry').item.json.url }} \n\n🔗 *Original Source:* {{ $('RSS Feed - Stack Overflow Monitor').item.json.link }}",
"select": "channel",
"channelId": {
"__rl": true,
"mode": "id",
"value": ""
},
"otherOptions": {
"includeLinkToWorkflow": false
}
},
"credentials": {
"slackApi": {
"id": "rNqvWj9TfChPVRYY",
"name": "Slack account vivek"
}
},
"typeVersion": 2.1
},
{
"id": "ad8eb9b3-6e61-419e-8d48-4f96d7ac3d14",
"name": "FAQ 로깅을 Google Sheets로",
"type": "n8n-nodes-base.googleSheets",
"position": [
384,
-240
],
"parameters": {
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "="
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "kpPEOLCGn963qpoh",
"name": "automations@techdome.ai"
}
},
"typeVersion": 4.7
},
{
"id": "f5f82442-f2f5-49d7-abb5-8dede57c51b9",
"name": "스티커 메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1136,
304
],
"parameters": {
"color": 2,
"width": 496,
"height": 352,
"content": "## 🚨 Error Monitoring \n\n\nCatches errors from key nodes (AI, Notion, Sheets) and sends a Slack alert with details for quick debugging. \nHelps ensure the automation runs reliably.\n"
},
"typeVersion": 1
},
{
"id": "039a7397-7761-4eb2-bd9b-cfd56b46957b",
"name": "스티커 메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
-848
],
"parameters": {
"width": 352,
"height": 368,
"content": "## 🔐 Credentials & Security \n\n\nUse OAuth2 for Slack and Google Sheets, API keys for OpenAI and Notion. \nAvoid using personal credentials in public templates. \nUse environment variables for all IDs or tokens.\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "12161045-8a06-4a55-bcf8-e553b8577b33",
"connections": {
"488cdd31-38b6-4a91-85ab-2d897d3e44e6": {
"main": [
[
{
"node": "4b83b70c-c7ba-4a07-8143-e87930135d25",
"type": "main",
"index": 0
}
]
]
},
"81c6d665-83ce-454b-b570-e5ee63769e70": {
"main": [
[
{
"node": "875a2618-4bec-4979-a9c3-fcab55406729",
"type": "main",
"index": 0
}
]
]
},
"b7c22c01-a01c-4328-95c3-1c89af58c82a": {
"main": [
[
{
"node": "b47b56b1-4ae3-4e88-9e97-76ce454cda09",
"type": "main",
"index": 0
}
]
]
},
"147082e7-ac15-4983-81b1-8883e51bd080": {
"main": [
[
{
"node": "636bc723-1f21-48c8-a27f-575685d4da6a",
"type": "main",
"index": 0
},
{
"node": "ad8eb9b3-6e61-419e-8d48-4f96d7ac3d14",
"type": "main",
"index": 0
}
]
]
},
"3667ae53-1e2d-4660-a37a-dbf9bf527b1b": {
"main": [
[
{
"node": "488cdd31-38b6-4a91-85ab-2d897d3e44e6",
"type": "main",
"index": 0
},
{
"node": "147082e7-ac15-4983-81b1-8883e51bd080",
"type": "main",
"index": 0
}
]
]
},
"636bc723-1f21-48c8-a27f-575685d4da6a": {
"main": [
[
{
"node": "488cdd31-38b6-4a91-85ab-2d897d3e44e6",
"type": "main",
"index": 1
}
]
]
},
"b47b56b1-4ae3-4e88-9e97-76ce454cda09": {
"main": [
[
{
"node": "3667ae53-1e2d-4660-a37a-dbf9bf527b1b",
"type": "main",
"index": 0
}
]
]
},
"77daf4ad-9696-4981-8097-2d73c53ee7a4": {
"main": [
[
{
"node": "b7c22c01-a01c-4328-95c3-1c89af58c82a",
"type": "main",
"index": 0
}
]
]
}
}
}이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 문서 추출, 멀티모달 AI
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Rahul Joshi
@rahul08Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.
이 워크플로우 공유