8
n8n 中文网amn8n.com

从Stack Overflow自动生成FAQ到Notion

高级

这是一个Document Extraction, Multimodal AI领域的自动化工作流,包含 19 个节点。主要使用 If, Set, Merge, Slack, Notion 等节点。 使用GPT-4o-mini从Stack Overflow自动生成FAQ到Notion,附带Slack提醒

前置要求
  • Slack Bot Token 或 Webhook URL
  • Notion API Key
  • Google Sheets API 凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "lBKKbdwQ12KKriEM",
  "meta": {
    "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
    "templateCredsSetupCompleted": true
  },
  "name": "从 Stack Overflow 自动生成 FAQ 到 Notion,附带 Slack 提醒和 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": "## 🧩 从 Stack Overflow 自动生成 FAQ"
      },
      "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 订阅源与过滤器"
      },
      "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": "## 🧱 数据准备与集成"
      },
      "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 理解与 FAQ 生成"
      },
      "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": "## 🗂️ 知识库记录"
      },
      "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": "## 💬 团队通知"
      },
      "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 Feed - 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": "## 🚨 错误监控"
      },
      "typeVersion": 1
    },
    {
      "id": "039a7397-7761-4eb2-bd9b-cfd56b46957b",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -624,
        -848
      ],
      "parameters": {
        "width": 352,
        "height": 368,
        "content": "## 🔐 凭据与安全"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "12161045-8a06-4a55-bcf8-e553b8577b33",
  "connections": {
    "Merge Data": {
      "main": [
        [
          {
            "node": "Slack - Notify Team",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Error Trigger": {
      "main": [
        [
          {
            "node": "Slack - Error Alert",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter Questions": {
      "main": [
        [
          {
            "node": "OpenAI - Topic Classifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format  AI Response": {
      "main": [
        [
          {
            "node": "Notion - Create FAQ Entry",
            "type": "main",
            "index": 0
          },
          {
            "node": "FAQ Logging to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI - FAQ Generator": {
      "main": [
        [
          {
            "node": "Merge Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Format  AI Response",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Notion - Create FAQ Entry": {
      "main": [
        [
          {
            "node": "Merge Data",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "OpenAI - Topic Classifier": {
      "main": [
        [
          {
            "node": "OpenAI - FAQ Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "RSS Feed - Stack Overflow Monitor": {
      "main": [
        [
          {
            "node": "Filter Questions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 文档提取, 多模态 AI

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量19
分类2
节点类型10
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Rahul Joshi

Rahul Joshi

@rahul08

Rahul 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.

外部链接
在 n8n.io 查看

分享此工作流