详解GEO结构化数据审计:Schema.org标记覆盖率、字段完整性、格式正确性、AI可解析性检查。
Schema标记覆盖率审计检查网站中有多少页面使用了结构化数据标记,以及使用了哪些Schema类型。覆盖率是GEO审计的基础指标——没有Schema标记的页面,AI搜索引擎需要更多计算资源来理解内容,引用概率自然更低。
审计方法:使用自定义爬虫或Screaming Frog全站爬取,统计每页的Schema类型和字段。目标覆盖率:核心页面100%有Schema标记,长尾页面>80%有基础Schema标记。
| 页面类型 | 必需Schema类型 | 覆盖率目标 | 常见缺失 |
|---|---|---|---|
| 文章页 | Article/NewsArticle | 100% | author/dateModified缺失 |
| 产品页 | Product+Offer | 100% | additionalProperty/review缺失 |
| FAQ页 | FAQPage | 100% | 格式不正确 |
| 分类页 | ItemList+BreadcrumbList | 100% | ItemList缺失 |
| 作者页 | Person | >80% | 作者页面无Schema |
| 组织页 | Organization | 100% | sameAs链接缺失 |
Schema标记不仅要有,还要完整。缺失关键字段的Schema标记效果大打折扣。字段完整性检查验证每个Schema类型的必填字段和推荐字段是否都已标记。
例如Article Schema的必填字段包括headline、datePublished、author、publisher,推荐字段包括dateModified、image、articleSection。缺失任何必填字段都会导致Schema验证失败,AI可能忽略该标记。
Schema标记的格式正确性是审计的重点。常见的格式错误包括:JSON-LD语法错误、嵌套结构不正确、字段值类型不匹配、URL格式不规范等。这些错误会导致Schema验证工具报错,AI搜索引擎可能忽略整个标记。
验证方法:使用Google Rich Results Test和Schema.org Markup Validator逐页验证。对于大型站点,可以编写批量验证脚本自动检查全站Schema。
# 批量Schema验证脚本
import json, requests, sys
from urllib.parse import urljoin
# Google Rich Results Test API
API_URL = "https://search.google.com/test/rich-results"
def validate_schema(page_url, html_content):
"""验证页面Schema标记"""
# 提取JSON-LD
import re
pattern = r'<script[^>]*type="application/ld\+json"[^>]*>(.*?)</script>'
matches = re.findall(pattern, html_content, re.DOTALL)
issues = []
for i, match in enumerate(matches):
try:
data = json.loads(match)
# 检查必填字段
if isinstance(data, dict):
schema_type = data.get('@type', 'Unknown')
check_required_fields(schema_type, data, issues)
except json.JSONDecodeError as e:
issues.append(f"JSON-LD #{i+1}: JSON语法错误 - {str(e)}")
return issues
def check_required_fields(schema_type, data, issues):
"""检查必填字段"""
required = {
'Article': ['headline', 'datePublished', 'author', 'publisher'],
'Product': ['name'],
'FAQPage': ['mainEntity'],
'Organization': ['name', 'url']
}
fields = required.get(schema_type, [])
for field in fields:
if field not in data:
issues.append(f"{schema_type}: 缺少必填字段 '{field}'")
# 批量验证
with open('urls.txt', 'r') as f:
urls = [line.strip() for line in f if line.strip()]
for url in urls:
response = requests.get(url)
issues = validate_schema(url, response.text)
if issues:
print(f"\n{url}:")
for issue in issues:
print(f" - {issue}")
else:
print(f"{url}: OK")Schema标记不仅需要格式正确,还需要确保AI搜索引擎能够实际解析和使用。AI可解析性检查验证Schema标记是否被主流AI搜索引擎正确理解和提取。
检查方法:在Google Search Console中查看结构化数据报告,确认Schema标记被Google正确识别。同时在Perplexity等AI搜索引擎中查询相关关键词,观察AI是否引用了Schema中的结构化信息。