2026-10-06 · 原文发布日
每周审查网站的AI搜索就绪度并自动生成修复工单
n8n模板:每周一早七点把网站URL发给Apify的SEO、GEO、AEO审查actor,按访客视角渲染页面并打出传统SEO、生成式引擎就绪度、可回答性分数和失败项。与上周存在Google Sheets的成绩对比,分数下滑超阈值、低于下限或有严重问题的页面会被标记,OpenAI据此按失败项生成结构化工程工单,写进Tickets表并推到Telegram,工单表结构可直接换接到Linear或Jira。
原文要点
原模板每周一7点触发,把网站URL和页数上限发给Apify的SEO/GEO/AEO审查actor,按访客视角渲染页面并返回传统SEO、生成式引擎就绪度、可回答性分数和逐项失败检查。结果与Google Sheets中的上周基线对比,按dropPoints回归阈值、minScore下限和严重问题三类规则标记页面,数量受maxTickets封顶;OpenAI仅依据失败检查生成结构化工单,追加到Tickets表并推Telegram。读取历史节点开启alwaysOutputData以兼容首次空表。
这次做成什么
搭一条每周自动审查网站AI搜索就绪度、并给变差页面生成工程工单的n8n流程。练习方案:先用一个可公开访问的演示站URL、maxPages=3、minScore=60手动跑一轮建立基线,再改分数模拟回归验证工单分支。
准备什么
- 一个可运行Schedule Trigger的n8n实例(Cloud或自托管)
- Apify账号及API凭据;首次仅审少量页面并核对当前可用额度
- OpenAI API key,用于工单撰写节点
- 一个含Scoreboard和Tickets两个空白tab的Google Sheet及凭据
- 用@BotFather创建的Telegram bot token和目标chat ID
- 一个允许公开访问、可被抓取的测试网站URL
具体怎么做
配置审查输入与定时
在Schedule Trigger设为每周一07:00;在配置区填入网站URL与maxPages(练习设3)、minScore(60)、dropPoints(5,敏感;10则安静)、maxTickets(首次建议3)。Apify节点填入凭据,URL和页数映射为actor输入。
接审查actor并规整输出
Apify节点运行SEO/GEO/AEO Audit Actor,对每个页面返回总体分和SEO、GEO、AEO子分及失败检查清单。后续节点把每条结果规整成字段:url、score、seoScore、geoScore、aeoScore、failedChecks(数组)、auditDate。
读基线并三分支标记
Google Sheets节点读Scoreboard tab上周行(确认该节点勾选alwaysOutputData,否则首次空表会让流程停止)。比较节点按URL配对,满足任一条件即标记:总分下跌超过dropPoints、总分低于minScore、存在critical级失败项。未标记页面只回写Scoreboard留历史。
限流并生成工单
Limit类节点把标记页面截断到maxTickets。OpenAI节点只接收该页的failedChecks,要求逐条失败检查生成修复步骤,输出JSON工单。随后追加到Tickets tab,并把同一工单文本发到Telegram chat ID。
可直接复制的材料
流程参数配置(本站示例)
本站按原模板参数说明编写的示例值,websiteUrl换成你的测试站,chat ID用真实bot对话获取。
{
"websiteUrl": "https://demo-site.example.com",
"maxPages": 3,
"minScore": 60,
"dropPoints": 5,
"maxTickets": 3,
"scoreboardTab": "Scoreboard",
"ticketsTab": "Tickets",
"telegramChatId": "123456789"
}OpenAI工单生成提示词(本站编写)
本站独立编写的替代提示词,变量占位符按n8n表达式替换为上一节点字段。
你是网站工程工单撰写助手。输入是一个页面的审查失败检查清单(JSON数组,每项含检查名、说明和建议)。
要求:
1. 只为清单中确实失败的检查写修复步骤,不得凭空添加问题;
2. 不承诺排名或流量结果;
3. 严格只输出合法JSON,字段:pageUrl(字符串)、priority(high|medium|low,critical失败为high)、summary(一句话问题概述)、steps(字符串数组,每步对应一条失败检查,含做什么和验收标准)、sourceChecks(对应的失败检查名数组)。
失败检查清单:{{ $json.failedChecks }}
页面URL:{{ $json.url }}Scoreboard测试行(合成数据)
本站合成的上周基线数据,粘贴到Scoreboard tab后即可手动运行验证回归对比分支。
url,score,seoScore,geoScore,aeoScore,failedChecks,auditDate
https://demo-site.example.com/pricing,72,80,65,70,"[]",2026-10-05
https://demo-site.example.com/features,58,70,45,52,"[缺少FAQ结构化数据, 正文无可直接引用的答案段]",2026-10-05输入与输出示例
本站虚构演示,工单JSON为按提示词预期格式的示意,非实际调用结果。
输入
本周审查结果:features页总分50(上周58,跌8分),failedChecks含「缺少FAQ结构化数据」「正文无可直接引用的答案段」;参数dropPoints=5、minScore=60、maxTickets=3。对应输出
该页跌8分>5且50<60,被标记并生成工单:{"pageUrl":"https://demo-site.example.com/features","priority":"high","summary":"页面缺少结构化数据与可引用答案段,AI搜索可回答性不足","steps":["为常见问题区添加FAQPage结构化数据,验收:富结果测试通过","在正文首屏补一段60字内可直接引用的结论段,验收:复查actor该项通过"],"sourceChecks":["缺少FAQ结构化数据","正文无可直接引用的答案段"]},追加Tickets表并推Telegram。做完检查这些
- 首次手动运行时Scoreboard为空也能跑通,流程不在读表节点中断
- 跌分超阈值或低于minScore的页面出现在Tickets tab和Telegram,其余页面只回写Scoreboard
- 工单steps逐条能对应failedChecks里的检查名,没有出现清单外的问题
- 单轮工单数量不超过maxTickets,Scoreboard历史行包含新旧两轮日期
容易卡住的地方
- 首次运行没有基线,所有页面只按下限和critical规则判定,此时maxTickets决定开发看到多少工单
- Apify当前额度和Actor费用以控制台为准,先减小maxPages观察实际用量
- OpenAI写的是模型措辞,交开发前需人工核对步骤是否与真实失败检查一致
- 工单表字段改成Linear/Jira时只需替换保存节点,但字段映射要逐列核对
本站借助AI整理来源事实,独立编写中文操作指南与示例。示例不代表实际运行结果;来源效果尚未由本站独立复现。付费模板与模型、服务费用分别计算。
- 原文标题
- Audit site AI search readiness and open fix tickets with Apify, OpenAI, Sheets and Telegram
- 原作者
- youssef farhan
- 原始发布日期
- 2026-10-05T21:33:21.455Z
- 来源
- https://n8n.io/workflows/20497