高级SEO、核心网页指标和聊天机器人自动化套件
高级
这是一个Market Research, AI Chatbot领域的自动化工作流,包含 22 个节点。主要使用 If, Set, Cron, Slack, Start 等节点。 使用GPT-4顾问、PageSpeed Insights和Slack提醒审核和监控SEO性能
前置要求
- •Slack Bot Token 或 Webhook URL
- •OpenAI API Key
- •HTTP Webhook 端点(n8n 会自动生成)
- •可能需要目标 API 的认证凭证
- •Google Sheets API 凭证
使用的节点 (22)
工作流预览
可视化展示节点连接关系,支持缩放和平移
无法加载工作流预览
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"id": "advanced_seo_core_web_vitals_chatbot_automation_suite",
"name": "高级 SEO、核心网页指标和聊天机器人自动化套件",
"nodes": [
{
"id": "node1",
"name": "开始",
"type": "n8n-nodes-base.start",
"parameters": {},
"typeVersion": 1
},
{
"id": "node2",
"name": "计划性 SEO 和核心网页指标审计",
"type": "n8n-nodes-base.cron",
"parameters": {
"mode": "everyHour",
"unit": "hours",
"value": "4",
"options": {}
},
"description": "Triggers comprehensive SEO and Core Web Vitals check every 4 hours",
"typeVersion": 1
},
{
"id": "node3",
"name": "聊天机器人 Webhook 监听器",
"type": "n8n-nodes-base.webhook",
"parameters": {
"path": "chatbot-query",
"options": {},
"webhookId": "seo_chatbot_listener",
"httpMethod": "POST"
},
"description": "Receives user queries from external chatbot platforms",
"typeVersion": 1
},
{
"id": "node4",
"name": "监控网站列表",
"type": "n8n-nodes-base.set",
"parameters": {
"values": [
{
"url": "https://www.yourmainwebsite.com",
"name": "Main Site"
},
{
"url": "https://blog.yourwebsite.com",
"name": "Blog Site"
}
]
},
"description": "List of websites to monitor for SEO and performance",
"typeVersion": 1
},
{
"id": "node5",
"name": "HTTP 爬虫",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "={{ $json.url }}",
"options": {
"redirects": true,
"fullResponse": true,
"responseFormat": "array"
},
"authentication": "none"
},
"description": "Fetches raw HTML content for parsing",
"typeVersion": 1
},
{
"id": "node6",
"name": "Cheerio HTML 解析器(页面 SEO)",
"type": "n8n-nodes-base.cheerio",
"parameters": {
"extract": [
{
"type": "attribute",
"property": "title",
"selector": "title"
},
{
"type": "attribute",
"property": "meta_description",
"selector": "meta[name=\"description\"]",
"attribute": "content"
},
{
"type": "text",
"property": "h1_tags",
"selector": "h1",
"returnAll": true
},
{
"type": "text",
"property": "h2_tags",
"selector": "h2",
"returnAll": true
},
{
"type": "attribute",
"property": "all_links",
"selector": "a",
"attribute": "href",
"returnAll": true
},
{
"type": "attribute",
"property": "img_alt_tags",
"selector": "img",
"attribute": "alt",
"returnAll": true
},
{
"type": "attribute",
"property": "canonical_tag",
"selector": "link[rel=\"canonical\"]",
"attribute": "href"
},
{
"type": "attribute",
"property": "robots_meta",
"selector": "meta[name=\"robots\"]",
"attribute": "content"
},
{
"type": "text",
"property": "schema_json_ld",
"selector": "script[type=\"application/ld+json\"]",
"returnAll": true
}
],
"dataSelector": "body"
},
"description": "Extracts critical on-page SEO elements from HTML",
"typeVersion": 1
},
{
"id": "node7",
"name": "页面 SEO 验证器",
"type": "n8n-nodes-base.function",
"parameters": {
"options": {},
"functionType": "js",
"functionScript": "const data = items[0].json;\n\nconst onPageIssues = {\n missing_title: !data.title || data.title.trim() === '',\n title_too_short: data.title && data.title.length < 10,\n title_too_long: data.title && data.title.length > 60,\n missing_meta_description: !data.meta_description || data.meta_description.trim() === '',\n meta_description_too_short: data.meta_description && data.meta_description.length < 50,\n meta_description_too_long: data.meta_description && data.meta_description.length > 160,\n multiple_h1: data.h1_tags && data.h1_tags.length > 1,\n missing_h1: !data.h1_tags || data.h1_tags.length === 0,\n missing_alt_text_count: data.img_alt_tags ? data.img_alt_tags.filter(alt => !alt || alt.trim() === '').length : 0,\n missing_canonical: !data.canonical_tag || data.canonical_tag.trim() === '',\n noindex_present: data.robots_meta && data.robots_meta.includes('noindex'),\n schema_present: data.schema_json_ld && data.schema_json_ld.length > 0\n};\n\nreturn [{ json: { ...data, onPageIssues: onPageIssues } }];"
},
"description": "Checks for common on-page SEO issues",
"typeVersion": 1
},
{
"id": "node8",
"name": "获取 Robots.txt",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "={{ new URL('/robots.txt', $json.url).href }}",
"options": {
"responseFormat": "string"
},
"authentication": "none"
},
"description": "Fetches the robots.txt file for analysis",
"typeVersion": 1
},
{
"id": "node9",
"name": "检查 Sitemap.xml 存在",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "={{ new URL('/sitemap.xml', $json.url).href }}",
"options": {},
"authentication": "none"
},
"description": "Checks if sitemap.xml exists (will fail if 404)",
"typeVersion": 1
},
{
"id": "node10",
"name": "技术 SEO 验证器",
"type": "n8n-nodes-base.function",
"parameters": {
"options": {},
"functionType": "js",
"functionScript": "const url = new URL(items[0].json.url);\nconst isHttps = url.protocol === 'https:';\n\nlet robotsTxtContent = null;\ntry {\n robotsTxtContent = items[1].json.data;\n} catch (error) {\n // robots.txt might not exist or be reachable\n robotsTxtContent = 'Not Found or Error';\n}\n\nlet sitemapPresent = false;\ntry {\n if (items[2].json.statusCode === 200) {\n sitemapPresent = true;\n }\n} catch (error) {\n // sitemap.xml might not exist or be reachable\n sitemapPresent = false;\n}\n\nconst technicalIssues = {\n is_https: isHttps,\n robots_txt_content: robotsTxtContent,\n sitemap_xml_present: sitemapPresent,\n broken_links_check_needed: true // Placeholder for a dedicated broken link checker\n};\n\nreturn [{ json: { ...items[0].json, technicalIssues: technicalIssues } }];"
},
"description": "Validates HTTPS, robots.txt presence/content, and sitemap.xml",
"typeVersion": 1
},
{
"id": "node11",
"name": "AI SEO 审计和建议",
"type": "n8n-nodes-base.openAi",
"parameters": {
"model": "gpt-4o",
"prompt": "Analyze the following web page's SEO elements and technical findings. Provide a summary of issues and actionable recommendations. Focus on missing critical elements, length issues, duplicate content potential (if canonical is missing), and impact of technical issues.\n\nURL: '{{ $json.url }}'\nOn-Page Issues: {{ JSON.stringify($json.onPageIssues) }}\nTechnical Issues: {{ JSON.stringify($json.technicalIssues) }}\n\nContent Sample: '{{ $node[\"HTTP Crawler\"].json[\"data\"].substring(0, 1000) }}'\n\nAlso, provide suggestions for better alt text for images that are missing it, if possible from the content context.",
"options": {
"maxTokens": 1500,
"temperature": 0.7
}
},
"description": "Uses AI to deeply analyze combined SEO data and provide smart recommendations",
"typeVersion": 1
},
{
"id": "node12",
"name": "Google PageSpeed Insights API",
"type": "n8n-nodes-base.googlePageSpeedInsights",
"parameters": {
"url": "={{ $json.url }}",
"options": {
"category": [
"performance",
"seo",
"best-practices",
"accessibility"
]
},
"resource": "pagespeed",
"strategy": "desktop",
"operation": "run",
"authentication": "googleApi"
},
"description": "Fetches Core Web Vitals (LCP, INP, CLS) and other performance/SEO metrics",
"typeVersion": 1
},
{
"id": "node13",
"name": "保存全面 SEO 报告到 Google Sheet",
"type": "n8n-nodes-base.googleSheets",
"parameters": {
"data": "={{ JSON.stringify({ URL: $json.url, Date: new Date().toISOString().split('T')[0], TitleOK: !$json.onPageIssues.missing_title && !$json.onPageIssues.title_too_short && !$json.onPageIssues.title_too_long, DescOK: !$json.onPageIssues.missing_meta_description && !$json.onPageIssues.meta_description_too_short && !$json.onPageIssues.meta_description_too_long, HasH1: !$json.onPageIssues.missing_h1, MultipleH1: $json.onPageIssues.multiple_h1, MissingAltTextCount: $json.onPageIssues.missing_alt_text_count, CanonicalPresent: !$json.onPageIssues.missing_canonical, NoindexPresent: $json.onPageIssues.noindex_present, SchemaPresent: $json.onPageIssues.schema_present, IsHTTPS: $json.technicalIssues.is_https, SitemapPresent: $json.technicalIssues.sitemap_xml_present, LCP: $node[\"Google PageSpeed Insights API\"].json[\"lighthouseResult\"].audits[\"largest-contentful-paint\"].numericValue, INP: $node[\"Google PageSpeed Insights API\"].json[\"lighthouseResult\"].audits[\"interaction-to-next-paint\"].numericValue, AIRecommendations: $node[\"AI SEO Audit & Recommendations\"].json[\"choices\"][0].message.content }) }}",
"operation": "append",
"sheetName": "Comprehensive SEO Reports",
"spreadsheetId": "YOUR_GOOGLE_SHEET_ID",
"authentication": "googleOAuth2Api",
"valueInputOption": "USER_ENTERED"
},
"description": "Logs detailed on-page, technical, and Core Web Vitals data to a Google Sheet",
"typeVersion": 1
},
{
"id": "node14",
"name": "整体 SEO 健康检查(警报触发器)",
"type": "n8n-nodes-base.if",
"parameters": {
"combineAll": "false",
"conditions": {
"string": [
{
"value1": "={{ $json.onPageIssues.missing_title || $json.onPageIssues.title_too_short || $json.onPageIssues.title_too_long || $json.onPageIssues.missing_meta_description || $json.onPageIssues.meta_description_too_short || $json.onPageIssues.meta_description_too_long || $json.onPageIssues.multiple_h1 || $json.onPageIssues.missing_h1 || $json.onPageIssues.missing_alt_text_count > 0 || $json.onPageIssues.missing_canonical || $json.onPageIssues.noindex_present || !$json.technicalIssues.is_https || !$json.technicalIssues.sitemap_xml_present }}",
"value2": "true",
"operation": "boolean"
},
{
"value1": "={{ $node[\"Google PageSpeed Insights API\"].json[\"lighthouseResult\"].audits[\"largest-contentful-paint\"].numericValue }}",
"value2": "2500",
"operation": "greater"
},
{
"value1": "={{ $node[\"Google PageSpeed Insights API\"].json[\"lighthouseResult\"].audits[\"interaction-to-next-paint\"].numericValue }}",
"value2": "200",
"operation": "greater"
}
]
}
},
"description": "Triggers alert if any critical SEO or CWV issue is found",
"typeVersion": 1
},
{
"id": "node15",
"name": "发送全面 SEO 审计警报(Slack)",
"type": "n8n-nodes-base.slack",
"parameters": {
"text": "🚨 *Comprehensive SEO Audit Alert for {{ $json.url }}* 🚨\n\n*On-Page SEO Issues:*\n- Missing Title: {{ $json.onPageIssues.missing_title ? 'Yes' : 'No' }}\n- Title Length OK: {{ !($json.onPageIssues.title_too_short || $json.onPageIssues.title_too_long) ? 'Yes' : 'No' }}\n- Missing Meta Description: {{ $json.onPageIssues.missing_meta_description ? 'Yes' : 'No' }}\n- Meta Description Length OK: {{ !($json.onPageIssues.meta_description_too_short || $json.onPageIssues.meta_description_too_long) ? 'Yes' : 'No' }}\n- Multiple H1s: {{ $json.onPageIssues.multiple_h1 ? 'Yes' : 'No' }}\n- Missing H1: {{ $json.onPageIssues.missing_h1 ? 'Yes' : 'No' }}\n- Missing Alt Text Count: {{ $json.onPageIssues.missing_alt_text_count }}\n- Missing Canonical: {{ $json.onPageIssues.missing_canonical ? 'Yes' : 'No' }}\n- Noindex Present: {{ $json.onPageIssues.noindex_present ? 'Yes' : 'No' }}\n- Schema Present: {{ $json.onPageIssues.schema_present ? 'Yes' : 'No' }}\n\n*Technical SEO Issues:*\n- Is HTTPS: {{ $json.technicalIssues.is_https ? 'Yes' : 'No' }}\n- Sitemap.xml Present: {{ $json.technicalIssues.sitemap_xml_present ? 'Yes' : 'No' }}\n- Robots.txt Content:\n```\n{{ $json.technicalIssues.robots_txt_content.substring(0, 200) }}...\n```\n\n*Core Web Vitals:*\n- *LCP:* {{ $node[\"Google PageSpeed Insights API\"].json[\"lighthouseResult\"].audits[\"largest-contentful-paint\"].numericValue }} ms (Good: < 2.5s)\n- *INP:* {{ $node[\"Google PageSpeed Insights API\"].json[\"lighthouseResult\"].audits[\"interaction-to-next-paint\"].numericValue }} ms (Good: < 200ms)\n\n*AI Recommendations:*\n```\n{{ $node[\"AI SEO Audit & Recommendations\"].json[\"choices\"][0].message.content.substring(0, 1000) }}...\n```\n\n_Full report saved to Google Sheet._",
"options": {},
"webhookUrl": "YOUR_SLACK_WEBHOOK_URL"
},
"description": "Sends detailed audit findings and AI recommendations to Slack",
"typeVersion": 1
},
{
"id": "node16",
"name": "AI 聊天机器人 NLP 和响应",
"type": "n8n-nodes-base.openAi",
"parameters": {
"model": "gpt-4o",
"prompt": "The user asked: '{{ $json.body.query }}'. Analyze their query about SEO or website performance (LCP/INP) and provide a relevant, concise, and actionable response. Focus on identifying specific entities like 'website URL', 'keyword', 'SEO topic', or 'technical issue'. Based on the query, provide explanations, best practices, or troubleshooting steps.\n\nExample intents:\n- 'Check SEO for [URL]'\n- 'Explain LCP/INP'\n- 'How to fix missing titles?'\n- 'What's wrong with my robots.txt?'\n\nIf the query requires data retrieval, state that you are fetching the data and then provide a summary. If the query is general, provide a general SEO/performance tip. Be helpful and professional.",
"options": {
"maxTokens": 300,
"temperature": 0.7
}
},
"description": "Processes chatbot query, understands intent, and generates intelligent response",
"typeVersion": 1
},
{
"id": "node17",
"name": "提取聊天机器人实体和意图",
"type": "n8n-nodes-base.function",
"parameters": {
"options": {},
"functionType": "js",
"functionScript": "const userQuery = items[0].json.body.query.toLowerCase();\nconst entities = {};\n\n// URL extraction\nconst urlMatch = userQuery.match(/https?://[^\\s]+/);\nif (urlMatch) entities.url = urlMatch[0];\n\n// Keyword extraction\nconst keywordMatch = userQuery.match(/keyword\\s['\"]?([\\w\\s]+)['\"]?/);\nif (keywordMatch) entities.keyword = keywordMatch[1].trim();\n\n// Specific SEO terms\nif (userQuery.includes('title')) entities.seo_topic = 'title';\nif (userQuery.includes('description')) entities.seo_topic = 'meta_description';\nif (userQuery.includes('h1')) entities.seo_topic = 'h1';\nif (userQuery.includes('alt text')) entities.seo_topic = 'alt_text';\nif (userQuery.includes('canonical')) entities.seo_topic = 'canonical';\nif (userQuery.includes('noindex')) entities.seo_topic = 'noindex';\nif (userQuery.includes('schema')) entities.seo_topic = 'schema';\n\n// Technical SEO terms\nif (userQuery.includes('robots.txt')) entities.technical_topic = 'robots.txt';\nif (userQuery.includes('sitemap')) entities.technical_topic = 'sitemap.xml';\nif (userQuery.includes('https') || userQuery.includes('ssl')) entities.technical_topic = 'https';\n\n// Performance terms\nif (userQuery.includes('lcp')) entities.performance_metric = 'lcp';\nif (userQuery.includes('inp')) entities.performance_metric = 'inp';\nif (userQuery.includes('core web vitals')) entities.performance_metric = 'core_web_vitals';\n\n// If a URL is explicitly mentioned and the query asks for audit, trigger full audit\nif (entities.url && (userQuery.includes('audit') || userQuery.includes('check seo')))\n entities.trigger_full_audit = true;\n\nreturn [{ json: { ...items[0].json, entities: entities } }];"
},
"description": "Extracts key information and intent from chatbot queries",
"typeVersion": 1
},
{
"id": "node18",
"name": "Google Search Console API - 查询数据(聊天机器人)",
"type": "n8n-nodes-base.googleSearchConsole",
"parameters": {
"options": {
"filter": "query=='{{ $json.entities.keyword || \"\" }}'",
"endDate": "={{ new Date().toISOString().split('T')[0] }}",
"rowLimit": 10,
"startDate": "={{ $json.entities.startDate || \"2024-01-01\" }}",
"dimensions": [
"query"
]
},
"siteUrl": "={{ $json.entities.url || 'https://www.yourmainwebsite.com' }}",
"resource": "searchConsole",
"operation": "get",
"authentication": "googleApi"
},
"description": "Fetches keyword performance data for chatbot queries",
"typeVersion": 1
},
{
"id": "node19",
"name": "响应聊天机器人 Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"parameters": {
"mode": "json",
"options": {},
"jsonBody": "={{ JSON.stringify({ response: $node[\"AI Chatbot NLP & Response\"].json[\"choices\"][0].message.content }) }}",
"webhookRespond": true
},
"description": "Sends the AI-generated response back to the chatbot platform",
"typeVersion": 1
},
{
"id": "node20",
"name": "为聊天机器人审计重新爬取",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "={{ $json.url }}",
"options": {
"redirects": true,
"fullResponse": true,
"responseFormat": "array"
},
"authentication": "none"
},
"description": "Performs an on-demand crawl if requested by chatbot",
"typeVersion": 1
},
{
"id": "node21",
"name": "执行 SEO 审计工作流(聊天机器人触发器)",
"type": "n8n-nodes-base.executeWorkflow",
"parameters": {
"node": "AI SEO Audit & Recommendations",
"workflowId": "advanced_seo_core_web_vitals_chatbot_automation_suite"
},
"description": "Triggers the main SEO audit workflow from chatbot request",
"typeVersion": 1
},
{
"id": "node22",
"name": "如果聊天机器人请求全面审计",
"type": "n8n-nodes-base.if",
"parameters": {
"combineAll": "true",
"conditions": {
"string": [
{
"value1": "={{ $json.entities.trigger_full_audit }}",
"value2": "true",
"operation": "boolean"
}
]
}
},
"description": "Checks if the chatbot query explicitly asks for a full SEO audit",
"typeVersion": 1
}
],
"active": false,
"version": 1,
"settings": {
"executionTimeout": 3600000
},
"connections": {
"node1": {
"main": [
[
{
"node": "Scheduled SEO & Core Web Vitals Audit",
"type": "main",
"index": 0
},
{
"node": "Chatbot Webhook Listener",
"type": "main",
"index": 0
}
]
]
},
"node2": {
"main": [
[
{
"node": "Monitored Websites List",
"type": "main",
"index": 0
}
]
]
},
"node3": {
"main": [
[
{
"node": "Extract Chatbot Entities & Intent",
"type": "main",
"index": 0
}
]
]
},
"node4": {
"main": [
[
{
"node": "HTTP Crawler",
"type": "main",
"index": 0
},
{
"node": "Google PageSpeed Insights API",
"type": "main",
"index": 0
}
]
]
},
"node5": {
"main": [
[
{
"node": "Cheerio HTML Parser (On-Page SEO)",
"type": "main",
"index": 0
}
]
]
},
"node6": {
"main": [
[
{
"node": "On-Page SEO Validator",
"type": "main",
"index": 0
}
]
]
},
"node7": {
"main": [
[
{
"node": "Technical SEO Validator",
"type": "main",
"index": 0
}
]
]
},
"node8": {
"main": [
[
{
"node": "Technical SEO Validator",
"type": "main",
"index": 1
}
]
]
},
"node9": {
"main": [
[
{
"node": "Technical SEO Validator",
"type": "main",
"index": 2
}
]
]
},
"node10": {
"main": [
[
{
"node": "AI SEO Audit & Recommendations",
"type": "main",
"index": 0
}
]
]
},
"node11": {
"main": [
[
{
"node": "Save Comprehensive SEO Report to Google Sheet",
"type": "main",
"index": 0
},
{
"node": "Overall SEO Health Check (Alert Trigger)",
"type": "main",
"index": 0
}
]
]
},
"node12": {
"main": [
[
{
"node": "Save Comprehensive SEO Report to Google Sheet",
"type": "main",
"index": 1
},
{
"node": "Overall SEO Health Check (Alert Trigger)",
"type": "main",
"index": 1
}
]
]
},
"node13": {
"main": [
[
{
"node": "Send Comprehensive SEO Audit Alert (Slack)",
"type": "main",
"index": 0
}
]
]
},
"node14": {
"main": [
[
{
"node": "Send Comprehensive SEO Audit Alert (Slack)",
"type": "main",
"index": 0
}
]
]
},
"node16": {
"main": [
[
{
"node": "Respond to Chatbot Webhook",
"type": "main",
"index": 0
}
]
]
},
"node17": {
"main": [
[
{
"node": "If Chatbot Requests Full Audit",
"type": "main",
"index": 0
},
{
"node": "AI Chatbot NLP & Response",
"type": "main",
"index": 0
},
{
"node": "Google Search Console API - Query Data (Chatbot)",
"type": "main",
"index": 0
}
]
]
},
"node18": {
"main": [
[
{
"node": "AI Chatbot NLP & Response",
"type": "main",
"index": 1
}
]
]
},
"node20": {
"main": [
[
{
"node": "Cheerio HTML Parser (On-Page SEO)",
"type": "main",
"index": 0
}
]
]
},
"node22": {
"main": [
[
{
"node": "Execute SEO Audit Workflow (Chatbot Trigger)",
"type": "main",
"index": 0
}
],
[
{
"node": "AI Chatbot NLP & Response",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 市场调研, AI 聊天机器人
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
Instagram影响者交付物和合同合规性自动化
使用Claude AI和Slack提醒自动化Instagram影响者合同合规性
If
Set
Code
+8
26 节点Oneclick AI Squad
社交媒体
使用 Telegram 和 Google Sheets 通过 OCR.space 从收据照片跟踪支出
使用 Telegram 和 Google Sheets 通过 OCR.space 从收据照片跟踪支出
If
Function
Http Request
+2
14 节点Candra Reza
发票处理
基于Bright Data、OpenAI和Redis的高级多源AI研究
使用Bright Data、OpenAI和Redis进行高级多源AI研究
If
Set
Code
+15
43 节点Daniel Shashko
市场调研
实时参会者参与度和反馈分析器
使用情绪分析、Google Sheets、Slack和邮件分析活动反馈
If
Set
Slack
+6
14 节点Oneclick AI Squad
市场调研
通过多平台爬取和邮件报告实现酒店价格自动比对
通过多平台爬取和邮件报告自动化酒店价格比较
If
Set
Code
+6
19 节点Oneclick AI Squad
市场调研
AI语音呼叫机器人 - OpenAI GPT-4o + ElevenLabs + Twilio集成
使用GPT-4o、ElevenLabs和Twilio创建多语言语音呼叫机器人
If
Open Ai
Webhook
+4
10 节点Shiva
客服机器人