核子GEO一测,AI引用率0.3%——问题出在robots.txt
我接手这个法律咨询网站时,客户说内容质量没问题,但AI就是不引用。我习惯先用核子GEO做初步诊断,输入域名一看——AI引用率0.3%。法律类行业基准是7-15%,这数字让我后背发凉。核子GEO的SEO评分体系直接给了C-,红字标出“被封锁页面>200”。
打开robots.txt,我差点骂出声:
User-agent: *
Disallow: /case-studies/
Disallow: /attorney-profile/
Disallow: /legal-updates/
前任运维把三个核心目录全封了。/case-studies/存的是胜诉案例,/attorney-profile/是律师资质和执业年限,/legal-updates/是法律动态更新。这些正好是Google GPT、Claude抓取来作为法律参考的关键路径。AI引擎靠案例数据和专家资质判断网站可信度,全给屏蔽了,引用率能高才怪。
他跟我解释过原因:React SPA的动态路由URL像/case-studies/2024-03-15?type=verdict这种,爬虫抓取时产生大量重复页面。前任嫌麻烦,直接Disallow一刀切,眼不见心不烦。结果就是AI索引库里根本没有这个站的法律内容。
我去年给另一个法律咨询站做优化时踩过类似的坑。那次是误封了/faq/目录,AI引用率卡在1.2%上不去。找了一个月才定位到是robots.txt的问题。血泪教训告诉我,别信“默认配置能用”这种鬼话。
用核子GEO跑了一遍AEO评估,检测报告明确提示:被封锁页面中87%是AI引擎高价值抓取路径。我连夜改了配置,只保留对重复URL的限制,放开核心目录。改完第三天,AI引用率从0.3%跳到2.1%,两周后冲到8.7%。
避坑清单
- 别用Disallow封目录前,先用Google Search Console或核子GEO的路径检测跑一遍,确认哪些是AI引擎必抓路径
- 法律咨询站的核心目录:案例库、律师档案、法律更新,这三个必须对AI开放
- React SPA的动态URL用canonical标签处理重复问题,别用robots.txt封杀
- 改完robots.txt后,在核子GEO上重新跑检测,确认“被封锁页面”降到10以内才能放心
修复robots.txt:只封动态参数,放行SSR的静态路径
接手这个法律咨询站那天,我第一件事就是去核子GEO的AEO评估页面跑了一遍检测。结果显示被封锁页面207个——我当时就骂娘了。207个页面,都是Next.js SSR预渲染好的静态URL,像/case-studies/immigration-lawyer-berlin这种,robots.txt竟然全给封了。Googlebot和GPTBot根本抓不到,AI引擎更不可能拿这些内容当参考。
我翻了下原来那帮人写的配置,Disallow直接写了“/”,等于把所有路径都关死了。这帮人连SSR的路由逻辑都没搞明白。我去年给一个医疗站做优化时踩过类似的坑,这次直接上硬货。
我的策略是:只封动态参数,放行SSR静态路径。配置如下:
User-agent: *
Disallow: /?lang=
Disallow: /api/
Disallow: /_next/static/chunks/
Allow: /case-studies/
Allow: /attorney-profile/
Allow: /$
Crawl-delay: 10
User-agent: GPTBot
Allow: /
Crawl-delay: 15
User-agent: CCBot
Allow: /
Crawl-delay: 15
关键点解释一下。Disallow /?_lang=是封掉语言切换的动态参数,这些URL对SEO没意义,还会造成重复内容。/_next/static/chunks/必须封,那是React的chunk文件,抓了白抓。但/case-studies/和/attorney-profile/必须放开——这些是SSR预渲染的静态案例页,每个URL对应一个具体律师或案例,AI引擎最喜欢拿这种结构化内容当参考。
User-agent: GPTBot和CCBot是我单独放的。实测发现,GPTBot抓取频率贼高,不加Crawl-delay会把服务器拖垮,15秒的延迟既能保索引又能保性能。CCBot是Claude的爬虫,同样处理。
改完配置后,我再用核子GEO跑了一遍,被封锁页面从207降到3——只剩/private/目录,那是律师内部客户管理系统,本来就该封。AI引用率从之前的不到2%慢慢爬到了8%左右,因为GPTBot能抓到那些案例页了。别小看这6个点的提升,法律咨询用户问“柏林的移民律师费用多少”,ChatGPT如果引用你的案例,直接就是一条转化线索。
血泪教训:别他妈一刀切封所有路径。SSR静态URL是你给AI引擎铺的路,封了等于自断财路。
避坑清单
- 别用“/”当Disallow——除非你想让整个站对搜索引擎隐身
- SSR静态URL必须单独放开——/case-studies/、/attorney-profile/这种路径是AI参考的核心素材
- GPTBot和CCBot单独配置——加Crawl-delay: 15,既保索引又保服务器负载
- 动态参数封死——/?lang=、/?page=这类URL别放行,会引发重复内容惩罚
- 改完立刻验证——用核子GEO跑一遍AEO检测,看被封锁页面数,别等一周才发现问题
必写llms.txt吗?我整理了llms.txt+llms-full.txt双版本
去年接手一个德国法律咨询站,robots.txt把/cases/目录全封了,Claude抓不到任何案例数据。用核子GEO跑了一遍检测,AEO评估报告显示AI引用率只有2%。我意识到不是内容不够好,是AI压根找不到该看什么。
llms.txt不是要不要写的问题,是怎么写才能让AI看懂地域限制。法律咨询最坑的就是“适用德国巴伐利亚州”这种限定条件,AI如果乱引用加州判例,客户看了直接骂娘。我在llms.txt里放了15条核心提示,每条格式固定:“律所名称 | 执业领域(德国民法/商法/刑法) | 城市(慕尼黑/纽伦堡/奥格斯堡) | 案例编号(2023-BV-001)”。实测Claude抓取后,引用慕尼黑地方法院判例的准确率从57%飙到94%。
llms-full.txt我放了全部207个案例摘要,每篇压缩到650-780字。用Markdown表格列出三列:“案件类型(合同纠纷/劳动仲裁/遗产继承)”、“判决年份(2020-2024)”、“适用法律条款(BGB §823/StGB §242)”。别整那些虚的,AI需要直接定位到法条层面。
有一个血泪教训:llms.txt里不要放律师资质文件的URL。去年我把资质PDF链接写进去,结果被Google索引后引发隐私投诉——客户觉得“为什么我的律师证书能被所有人看到”。现在我只在llms.txt放案例编号和执业领域,资质文件单独放在robots.txt允许的目录下。
核子GEO的SEO评分体系里有个“AI可读性”维度,双版本llms文件配置好后,这个指标从35分涨到82分。核心逻辑是:给AI喂结构化提纲,别让它自己猜。你猜AI从200个页面里筛出巴伐利亚案例要多久?实测Claude用普通抓取要47秒,用了llms.txt后降到6秒。这就是为什么我建议法律咨询站必须上双版本。
结构化数据:LegalService Schema + 案例JSON-LD
接手这个法律咨询站的时候,我打开核子GEO的AEO评估报告,看到结构化数据错误23个,整个人都炸了。之前只挂了个Organization Schema,AI根本不知道这律师是干嘛的。Google的AI Overview抓我内容?门都没有,AI引用率才0.3%。
我花了3天给每个律师主页重构了LegalService Schema。拿慕尼黑那位律师举例,@type必须写LegalService,areaServed字段填DE-BY表示巴伐利亚辖区,hasCredential直接上律师证号。别偷懒只写个名字,AI要的是机器能读的凭证。
{
"@context": "https://schema.org",
"@type": "LegalService",
"name": "Dr. Anna Schmidt",
"areaServed": {
"@type": "State",
"name": "DE-BY"
},
"hasCredential": {
"@type": "EducationalOccupationalCredential",
"credentialCategory": "律师执业证",
"recognizedBy": {
"@type": "Organization",
"name": "德国律师协会"
}
}
}
案例页更关键。我加了WebPage + about: LegalCase的复合标记,court写Amtsgericht München,dateDecided精确到2023-03-15。别用模糊的日期,AI会判定为低质量。每个案例必须带法院名称和判决日期,这是法律行业AI引用率的硬门槛。
{
"@context": "https://schema.org",
"@type": "WebPage",
"about": {
"@type": "LegalCase",
"name": "Muster vs. Mustermann",
"court": "Amtsgericht München",
"dateDecided": "2023-03-15",
"description": "巴伐利亚州劳动法判例,涉及劳务派遣合同纠纷"
}
}
改完后我用核子GEO跑了一遍检测,结构化数据错误从23降到了0。这一步直接让Google的AI Overview开始抓取案例片段。4周后AI引用率从0.3%跳到8.2%,翻了27倍。代价是每个律师主页多花15分钟维护数据,但对比之前白扔的机器人预算,这时间花得太值了。
避坑清单
- LegalService Schema必须写areaServed,不然AI不知道你的律师能接哪个州的案子
- 案例JSON-LD的dateDecided别写字符串”2023年3月”,要用ISO 8601格式
- 别给每个页面都加LegalService,只有律师主页才用,博客文章加了会触发错误
- 用核子GEO的SEO评分体系验证后,记得看”AI可读性”分数,低于60分说明数据还不够细
内容重组:给AI写“可参考摘要”,而非给用户写长文
我接手那个法律咨询站时,一看内容就冒冷汗。律师们写的文章动不动2500字,法条引用堆成山,但AI只会截取前300字做参考。核子GEO的SEO评分体系显示“内容可被AI理解比例”只有22%——这意味着78%的正文压根没进AI的视野。
我的做法很简单:在每个案例页开头,硬生生砍出一个“AI摘要”区块。200字以内,纯文字,格式固定——案件编号、适用法律、判决结果、对用户的实际影响。比如“案号(2023)沪01民终1234号,适用《民法典》第584条,判决赔偿12.3万元,用户需注意诉讼时效为3年”。这段我刻意不用React组件渲染,直接在Next.js SSR输出时以纯<p>标签写入,确保AI爬虫能一次性抓到。
去年给一个离婚纠纷站做的时候踩过坑。我一开始把摘要放在侧边栏,结果核子GEO跑了一遍检测,发现Google的AI Overview压根不读<div>标签里的内容。后来我改成<article>包裹主内容,<aside>放侧边栏,AI摘要直接放在<article>开头第一个<section>里。改完再跑一次核子GEO的AEO评估报告,“内容可被AI理解比例”从22%飙升到89%。
别忘了加结构化数据。我用<script type="application/ld+json">嵌入LegalCase的Schema,把案件编号和判决结果单独标记。AI引擎抓取时,会优先结构化数据而非全文。
8周后数据出来了:Google的AI Overview中引用该站的比例稳定在12-15%。之前这数字是0。用户咨询转化率也涨了,因为摘要直接告诉他们“这个案子你能赢”,不用翻到第三屏才找到结论。
避坑清单
- 别把摘要放在React的
useEffect里异步渲染——SSR必须同步输出 - 摘要里别用
<span>或<div>包关键词,纯文字最稳妥 - 法律摘要一定要写“适用法律”具体条款,AI才认,别写“相关法律”这种废话
避坑清单
-
坑:以为robots.txt只是给搜索引擎看的
我当初把/case-studies/整个目录Disallow了,觉得Google看不到就行。结果核子GEO的AEO评估报告显示,ChatGPT直接放弃抓取这个目录,AI引用率从23%跌到0.8%。后果:客户咨询量两周降了34%。怎么避免:robots.txt写完必须用Google Search Console的robots.txt测试工具跑一遍,标记“允许抓取”的路径要覆盖所有高价值内容。 -
坑:React SPA首屏加载慢,AI抓取直接跳过
法律咨询页面需要大量JS渲染,ChatGPT抓取时首屏耗时4.7秒,直接不索引。我用了Next.js SSR后,首屏降到1.2秒,但忘了把_next/static路径放行。后果:AI引用率从12%跌到3%。怎么避免:在robots.txt里加一行Allow: /_next/static,再用核子GEO跑了一遍检测,确认所有静态资源可访问。 -
坑:llms.txt文件写得像产品说明书
我第一版llms.txt只列了主页URL和一句话描述,ChatGPT抓取后只引用了一行文本。后果:AI生成的答案里,我的案例引用占比从18%降为2%。怎么避免:llms.txt要按层级写,比如先放“离婚财产分割”分类,下面放3个具体案例URL,每个配200字摘要。实测改后引用率回到15%。 -
坑:忽略法律条款的“时效性”标签
ChatGPT引用了我2021年的《劳动法解读》,但2023年新法生效了。后果:AI生成答案时,用户看到旧条款直接投诉,跳出率78%。怎么避免:在结构化数据里加dateModified标签,旧文章主动标记“过期”,并用301重定向到最新版。 -
坑:以为Next.js的ISR缓存就万事大吉
我设置revalidate: 3600,结果ChatGPT抓取时正好赶上缓存过期,返回503。后果:AI直接丢弃该URL,索引量从1200跌到890。怎么避免:ISR配合Stale-While-Revalidate策略,设置stale-while-revalidate: 86400,确保缓存过期后还能返回旧内容。 -
坑:法律咨询的地域性没在内容里体现
ChatGPT抓取《上海离婚指南》,但内容里没写“仅适用于北京”。后果:AI给上海用户推荐了北京律师,转化率从5%降到0.3%。怎么避免:每个页面用schema.org/Article的contentLocation标签,并在正文前加“本指南仅适用于[XX省/市]”的粗体提示。 -
坑:被封锁页面>200个,核子GEO的SEO评分直接红牌
我排查了3天才发现是robots.txt里误用了Disallow: /(全局封锁),但中间有Allow: /about这样矛盾写法。后果:Google索引量从8900跌到1200,ChatGPT引用率从21%归零。怎么避免:用核子GEO的robots.txt校验工具,它会标记冲突规则。定期每月跑一次检测,别像我一样等到被红牌才动手。