用AI生成自动检查脚本:批量揪出canonical与分页规则的5类错误
网站内容一多,canonical标签和分页规则就容易出错:重复内容被索引、分页页互相竞争、参数页浪费抓取预算。人工查几百个页面不现实,用AI写个自动检查脚本,半小时跑完全站,输出可修复的错误清单。本文给出完整落地步骤,工具链用Python + Requests + BeautifulSoup + ChatGPT/Claude,适合开发者与日常网站运营者。
先明确要检查的5类规则
脚本不是漫无目的地爬,而是带着规则去验证。下面5类错误在实战中最常见,也最影响SEO效果。写脚本前先把规则定义清楚,再让AI生成对应代码。
- canonical缺失或为空:页面有多个URL版本,但没有指定规范链接。
- canonical指向非200页面:指向404、301或5xx地址,等于告诉搜索引擎“规范页不存在”。
- canonical跨域或指向参数页:误指向测试域名、带utm参数的URL,导致权重分散。
- 分页页canonical自指错误:第2页canonical指向第1页,或所有分页都指向首页。
- 分页链接缺少rel=next/prev或参数混乱:翻页URL用?page=2与/page/2混用,造成重复抓取。
用AI生成脚本的4步操作
直接让AI“写个SEO检查脚本”会得到泛泛的代码。正确做法是把规则拆成结构化提示词,分模块生成,再拼装成可运行脚本。
第1步:准备输入与输出格式
先确定脚本读什么、写什么。输入是一个URL列表文件(每行一个地址),输出是CSV,包含URL、错误类型、canonical值、状态码、分页标记。把这段说明交给AI,它生成的代码结构会稳定很多。
第2步:分模块生成代码
按功能拆成三个函数分别生成,避免一次生成几百行难以调试。提示词示例:
用Python写一个函数 fetch_page(url),使用requests获取页面,超时10秒,返回(status_code, html)。要求处理SSL错误和重定向,记录最终URL。
同样的方式生成extract_canonical(html)和check_pagination(html, url)。每个函数让AI附带3个测试用例,跑通再合并。
第3步:加入并发与限速
几百个页面串行抓取太慢。让AI把主循环改成concurrent.futures.ThreadPoolExecutor,并发数设为5,并在每次请求间加0.2秒延迟,避免触发目标站防火墙。生成后人工检查是否有无限重试逻辑。
第4步:输出可修复清单
脚本最后按错误类型分组统计,并给出修复优先级:canonical指向404的排第一,分页canonical错误排第二,参数重复排第三。CSV里附上页面标题,方便运营人员直接定位。
脚本核心逻辑与代码片段
下面这段是canonical检查的核心逻辑,由AI生成后经过小幅调整。它同时判断标签是否存在、是否为空、是否跨域。
from urllib.parse import urlparse
def check_canonical(soup, page_url):
tag = soup.find("link", rel="canonical")
if not tag or not tag.get("href"):
return "canonical_missing"
href = tag["href"].strip()
if urlparse(href).netloc and urlparse(href).netloc != urlparse(page_url).netloc:
return "canonical_cross_domain"
if "?" in href and any(p in href for p in ["utm_", "ref=", "session"]):
return "canonical_param_url"
return "ok"
分页检查则重点看两处:当前页是否带rel="next",以及canonical是否等于当前页URL。如果第2页的canonical指向第1页,直接标记为分页规范错误。
提示:抓取前先确认目标站robots.txt允许访问,并发数不要超过10,否则容易被CDN拦截,反而拿不到真实状态码。
批量跑完后的结果处理
假设抓取500个页面,典型输出如下表。运营人员按错误类型分配修复任务,开发改模板,运营改CMS配置,通常一轮能清掉80%的问题。
| 错误类型 | 出现次数 | 修复动作 |
|---|---|---|
| canonical缺失 | 37 | 在模板head中补 |

访客评论(0)