给网页做可引用性评分:判断内容够不够让 AI 引用(GEO 工具,附代码)
目录
一、为什么看重"可引用性"
GEO 里有个很实际的问题:AI 回答用户问题时,引用你的内容是有条件的。它偏好那些能直接回答问题、有具体事实、结构清晰的内容。一段"我们质量很好"的空话,AI 用不上;一句"执行 ASTM A182 标准,316L 材质,最小起订量 100 件",它拿过去就能用。
所以写完内容之后,与其凭感觉,不如给页面打个分,看它在 AI 眼里"可引用"的程度。这篇写个脚本,把这件事自动化。
二、评分看哪几项
我挑了八个信号,都是 AI 引用内容时更愿意看到的:
- 有没有标题
- 有没有 meta 描述
- 正文纯文本够不够长
- 有没有结构化数据(JSON-LD)
- 有没有 FAQ 问答
- 具体数字出现的次数
- 有没有作者信息
- 有没有发布时间
每一项打一分或两分,满分十分。这不是谷歌官方的指标,是我按经验整理的一套启发式评分,用来给自己找问题。
三、代码实现
python
# -*- coding: utf-8 -*-
import re
import requests
from bs4 import BeautifulSoup
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/120.0 Safari/537.36"
}
def score_page(url, timeout=10):
resp = requests.get(url, headers=HEADERS, timeout=timeout)
resp.raise_for_status()
soup = BeautifulSoup(resp.text, "html.parser")
title = soup.title.get_text(strip=True) if soup.title else ""
desc = soup.find("meta", attrs={"name": "description"})
for tag in soup(["script", "style", "nav", "header", "footer", "noscript"]):
tag.decompose()
text = soup.get_text(separator=" ", strip=True)
jsonld = soup.find("script", type="application/ld+json")
has_faq = bool(jsonld) and "FAQPage" in (jsonld.string or "")
numbers = len(re.findall(
r"\d+(?:\.\d+)?\s*(?:mm|cm|kg|件|天|%|个|years|days|pieces|pcs|USD|美元|元)",
text))
author = soup.find("meta", attrs={"name": "author"})
published = soup.find("meta", attrs={"property": "article:published_time"})
score = 0
checks = []
def add(cond, name, pts=1):
nonlocal score
if cond:
score += pts
checks.append("+%d %s" % (pts, name))
else:
checks.append(" 0 %s(缺失)" % name)
add(bool(title), "标题")
add(bool(desc), "meta 描述")
add(len(text) >= 300, "正文至少 300 字")
add(bool(jsonld), "结构化数据")
add(has_faq, "FAQ 问答", 2)
add(numbers >= 3, "具体数字至少 3 处", 2)
add(bool(author), "作者信息")
add(bool(published), "发布时间")
print(url)
print(" 总评分:%d / 10" % score)
for c in checks:
print(" " + c)
return score
if __name__ == "__main__":
score_page("https://example.com/")
四、结果怎么看
跑一遍,先看总分,再看每一项的加减分。缺哪项补哪项。
最容易补的是标题、描述、发布时间、作者,这些基本不费劲。正文长度和具体数字,靠写的时候往"有事实"的方向写。结构化数据和 FAQ 稍微要动点技术,但收益也高,FAQ 我直接给了 2 分。FAQPage 的规范见 Schema.org,结构化数据怎么标见谷歌文档。
五、几个要注意的点
- 这个分数是启发式的,不是谷歌或 OpenAI 的官方打分,作用是帮你自己找短板,别拿去跟别人比排名。
- 数字的匹配规则比较粗,单位就列了几个常用的,你的行业单位不一样,可以自己加。
- 抓的是 HTML 源码,JS 动态渲染的内容 requests 拿不到,那种页面得用浏览器渲染后再评。
六、写在最后
可引用性这件事,说穿了就是让 AI 抓取时,一眼能看懂你说了什么、有没有能直接用的东西。这个脚本把"看懂"这件事拆成了八个能自检的项,改起来有方向。分数上去了,AI 引用你的概率自然往上涨。
本文的脚本和思路都在实际项目里跑过,内容对你有用的话,欢迎点赞、收藏,有问题评论区或私信交流,我看到会回。