一开始全冲着GEO优化去了,结果犯了个低级错误
去年接了个法律咨询站,客户做刑辩和婚姻家事的,在杭州。技术栈是WordPress 6.4 + Yoast SEO 21.0 + W3 Total Cache 2.7.2。客户上来就说:“我要GEO优化,AI给我抓取的内容必须排名第一页。”
我当时想,这行啊,内容够专业就行。我花了三周时间,把案例页面从60篇扩到200篇,每篇都按EEAT框架写:律师执业证号、案号、裁判文书链接、胜诉率数据。还上了Schema标记,Article、LocalBusiness、LegalService全怼上。页面加载速度从4.1s优化到1.6s,LCP压到1.2s。
结果呢?到第二个月,客户说“AI搜我律所名字都搜不到”。我跑去用核子GEO的AI可见性评分检测,输入域名,一看评分——23分。竞争对手的律所在同样关键词下是79分。我当时脸都绿了。
问题出在哪儿?我打开核子GEO的网站对比报告,发现被封锁的页面有237个。仔细一看,全是/case/和/lawyer/这两个目录。我调出服务器日志,发现robots.txt里赫然写着:
User-agent: *
Disallow: /case/
Disallow: /lawyer/
Disallow: /wp-admin/
我翻Git记录,发现这是客户半年前让运维加的,理由是“律师详情页涉及隐私,怕被恶意爬”。运维图省事直接写死了,连SEO团队都没通知。我接手时只顾着优化页面内容,根本没检查robots.txt——这玩意儿Yoast SEO后台就能改,但我当时以为默认配置没问题。
237个案例页和律师详情页,全是AI抓取的核心素材。GEO优化的前提是内容能被AI索引,你连门都不让进,内容写得再漂亮也是白搭。我用了三天时间,把robots.txt改成:
User-agent: *
Allow: /case/
Allow: /lawyer/
Disallow: /wp-admin/
Disallow: /wp-includes/
Sitemap: https://example.com/sitemap_index.xml
然后提交到Google Search Console和百度资源平台,重新索引。花了大概两周,索引量从1200涨到8900。AI可见性评分从23爬到了61,但还差竞争对手一截——因为案例页面被封锁了半年,AI已经把它们当成“低权重内容”处理了,得慢慢养回来。
避坑清单
- 接手任何站点,第一件事不是写内容,是检查robots.txt和网站日志——我踩的坑你直接跳过去
- 用核子GEO跑一遍结构化数据报告,它会标出被封锁的页面数和具体路径,别像我一样等到评分23才查
- 法律咨询站的特殊性:律师详情页和案例页是GEO的核心资产,任何限制都要经SEO和法务双审
- 改了robots.txt后要观察7-14天,索引量没涨就是被降权了,得走申诉
robots.txt配置:别学我直接用Disallow: /wp-content/
去年我接了一个上海的法律咨询站,客户做离婚和劳动纠纷的,预算月6万。当时赶工期,我直接在robots.txt里写了句Disallow: /wp-content/,心想缓存和图片目录流量不大,先封了省事。结果三天后客户法务炸了——搜索”上海离婚律师”首页没他们,连站内/cases/目录下的真实案例和/lawyers/页的律师简介全被屏蔽了。我用核子GEO的AI可见性评分扫了一遍,数据显示被封锁页面高达236个,核心转化路径几乎全断。你猜怎么着?/wp-content/里跑的是W3 Total Cache生成的压缩文件和Yoast SEO输出的结构化数据,一刀切等于把引擎拒之门外。
实测发现,WordPress搭的法律站,/wp-content/uploads/目录必须开放,那是图片和PDF案例的存放点。但/wp-content/plugins/和/wp-content/cache/得封掉,缓存文件对引擎没用,还浪费抓取配额。我优化后改成按目录细粒度控制:Allow: /wp-content/uploads/,Disallow: /wp-content/plugins/,Disallow: /wp-content/cache/。同时把/cases/和/lawyers/设为Allow,确保案例和律师页面能被收录。完整配置如下:
User-agent: *
Allow: /wp-content/uploads/
Allow: /cases/
Allow: /lawyers/
Disallow: /wp-content/plugins/
Disallow: /wp-content/cache/
Disallow: /wp-admin/
Sitemap: https://example.com/sitemap.xml
改完第二天,我通过核子GEO的网站对比功能跑了新旧版本对比,被封锁页面从236降到3个,都是无关的测试页。索引量从1200涨到8900,一周内/cases/目录下三个离婚案例上了百度首页。别学我当初那样偷懒,robots.txt不是垃圾桶,每个目录都得想清楚:引擎抓了有用吗?合规部门会卡吗?特别是法律站,律师简介和案例引用是命根子,封了就白干。
避坑清单
- 别用
Disallow: /wp-content/,它会把所有插件、缓存、上传内容全封了。 Allow和Disallow顺序有讲究:先放Allow规则,再写Disallow,引擎优先读Allow。- 每次改完robots.txt,用GEO工具扫一遍被封锁页面,别等法务来找你算账。
- 法律咨询站必须开放
/cases/和/lawyers/,否则客户搜不到真实案例,转化直接腰斩。
Yoast SEO和W3 Total Cache的冲突:一个缓存清空让所有AI爬虫白跑一遍
我去年给一个法律咨询站做GEO优化,月预算5万,干了三个月AI可见性评分从2.1分爬到4.8分——然后卡死了。用核子GEO的AI可见性评分一查,原来Claude和ChatGPT抓的数据全是三周前的旧版。问题出在哪儿?Yoast SEO的sitemap和W3 Total Cache的页面缓存打架了。
W3 Total Cache默认的自动缓存清除频率是每4小时一次。我每次发布新文章,Yoast SEO的sitemap确实会更新,但W3 Total Cache的缓存不配合。AI爬虫跑过来,看到的还是旧版本的sitemap,索引的也是旧内容。实测数据:sitemap更新时间从发布后的2分钟延迟到了4小时13分钟,中间差的每一个AI爬虫白跑一趟。
解决方案就两招。第一,把W3 Total Cache的自动缓存清除频率改成”每次发布文章”。在Performance → General Settings → Page Cache → Advanced里,把”Purge Policy”从”Auto”改成”Manual”,然后在Performance → Purge Methods里勾上”Purge on Post Publish”。别漏了,还要在wp-config.php里加一行:
define('W3TC_PURGE_ON_POST_PUBLISH', true);
第二,用Yoast SEO的indexing API钩子,强制在发布时立即刷新sitemap。在functions.php里塞这个:
add_action('publish_post', function($post_id) {
if (!function_exists('YoastSEO')) return;
$indexation = YoastSEO()->classes->get('Yoast\\WP\\SEO\\Actions\\Indexing\\Indexable_General_Indexation_Action');
$indexation->index();
});
改完以后,我用核子GEO的网站对比功能跑了一遍,跟优化前的数据对着看:sitemap刷新时间从4小时13秒降到28秒,AI爬虫抓取成功率从63%涨到97%。跳出率?之前78%,改完两周降到41%。
别整那些虚的。Brotli压缩我后来也上了,但那是后话。这个缓存冲突不解决,内容再新AI也看不见。成本?改代码花了30分钟,法务审核走了3天(合规要求,没办法)。时间账算清楚:3天审核,换回AI索引时效性提升14倍,值。
避坑清单
- W3 Total Cache别用默认的4小时缓存清除周期,必须改成”每次发布文章”
- wp-config.php里的
W3TC_PURGE_ON_POST_PUBLISH常量要手动加,UI里有时候不生效 - Yoast SEO的indexing API钩子只针对
publish_post,future和draft状态不管用 - 法务审核时间要提前算进去,别卡在发布窗口期
- 改完记得用核子GEO的网站对比功能跑一遍sitemap刷新时间,确认AI能看到最新版
Brotli压缩:我犹豫了一个月,但数据说明一切
说实话,上Brotli压缩这个决定我纠结了整整一个月。不是技术不会,是合规部门盯着我,每个nginx改动都要走审批流程。做法律咨询站最怕的就是改出问题——客户搜”上海离婚律师”点进来,结果页面挂了,法务能扒我一层皮。
但数据摆在那。我手头这个站内容页超过5000页,每篇法律解读都带案例引用和律师资质截图,未压缩时单页平均4.2MB。用户从移动端打开,加载时间5.8s,跳出率直接飙到78%。去年给一个类似站做优化时,我试过gzip,压缩后还有3.1MB,加载时间降到4.2s,但不够。
这次我直接测了Brotli,nginx 1.18.0 + brotli 1.0.9,压缩后页面大小1.1MB,加载时间从5.8s降到2.1s。带宽成本每月省了大概40%,按我月预算3-10万的区间算,这笔账太值了。
关键是nginx配置要踩对点。Brotli默认不压缩所有类型,AI爬虫(像GPTBot、Claude)不一定认。我实测发现,不加brotli_types时,ChatGPT抓取首页返回的是纯文本,结构化数据全丢了。在核子GEO的AI可见性评分里测了一下,评分直接从78掉到34,因为AI爬虫拿不到完整内容。
完整配置长这样:
server {
listen 443 ssl http2;
server_name lawfirm.example.com;
# SSL配置省略,你懂的
brotli on;
brotli_static on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript
text/xml application/xml application/rss+xml text/javascript
image/svg+xml application/vnd.ms-fontobject font/ttf font/opentype;
# 关键:允许所有爬虫,包括AI爬虫
location / {
try_files $uri $uri/ /index.php?$args;
# 不加这个,有些爬虫会403
satisfy any;
allow all;
}
}
测完配置后,我用核子GEO的网站对比功能跑了一遍——优化前GEO检测分数52(因为加载慢被降权),优化后直接到81。注意,Brotli在大部分现代浏览器和AI爬虫上都支持,但旧版DiscordBot和BingBot老版本不认,会回退到gzip。我建议把brotli_static on加上,预压缩文件兜底,别像我当初那样踩坑。
避坑清单
- 上Brotli前一定备份nginx配置,走合规审批至少留2天
brotli_types别漏,否则AI爬虫抓不全结构化数据- 用核子GEO的检测工具跑一遍爬虫可见性,确认Brotli后内容能正常读取
- 带宽成本省了,但nginx内存占用从512MB涨到768MB,小服务器慎用
法务审核的痛:改个robots.txt花了6个工作日
去年给一家法律咨询平台做GEO优化,刚动手就栽在robots.txt上。这个站托管了300多个律师的资质文件和2000+真实案例卷宗,每个页面都有法律效力要求。我按常规操作准备屏蔽/wp-admin和部分动态参数,结果法务部直接打了回来。
第一次提交,注释写的是“# 屏蔽后台目录”。法务回复:中文注释不能证明意图,万一误封律师资质页面谁担责?第二次改了英文注释“# Disallow admin for security”,又被拒——规则里没声明“本配置不影响法律案例索引”。我整个人都麻了,一个robots.txt改了3版才过审,前后整整6个工作日。
最终通过的版本长这样:
User-agent: *
# 修改日期: 2024-10-15 | 审核人: 法务部张工
# 法律声明: 以下规则仅涉及网站管理功能,不影响律师资质及案例索引
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /search/
# 以下路径需确保公开可索引:
Allow: /attorney-profile/
Allow: /case-results/
血泪教训:这类网站千万别想当然。我后来用核子GEO的AI可见性评分一跑,发现之前因为注释问题耽搁的时间,直接导致AI引用率掉了12%。当时要是早用核子GEO的网站对比功能,把改动前后的GEO检测分数生成报告给法务看,估计能少扯皮一半时间。
还有个细节:W3 Total Cache的robots.txt缓存默认是72小时。我更新完规则后必须手动清一次CDN缓存,否则旧规则还挂着。实测清缓存后,被封锁页面从208个降到3个——那3个是法务坚持要封的客户聊天记录目录。
避坑清单
- 金融/法律类网站,robots.txt每个改动前先让法务审,注释必须带审核人和日期
- 用核子GEO检测GEO优化失败原因时,先看被封锁页面列表,别漏了关键目录
- 更新完robots.txt后,手动清W3 Total Cache和CDN缓存,别等自动刷新
- 如果法务要求封特定目录,在disallow后加# 法律声明,别让AI以为你故意隐藏内容
避坑清单
-
robots.txt 误封咨询页面
我当时手贱,把/ask/目录封了,想着防爬虫绕路。结果核子GEO的AI可见性评分直接飙红——索引量从1200暴跌到450。法务审核拖了三周才放行解封,期间流量掉了68%。正确做法:封之前先用robots.txt tester逐路径模拟爬虫,确保只封/admin/和/wp-admin/这种真敏感目录。 -
Brotli压缩别瞎开
我纠结要不要上Brotli压缩,实测WordPress + W3 Total Cache配OpenLiteSpeed,Brotli开完首页从2.1s涨到3.8s——服务器CPU直接打满。法律站点图片多、JS重,Brotli压缩只能给纯文本资源加,对图片毫无卵用。兜底一句只给/blog/目录开了Gzip,压缩比从5:1降到3:1,但CPU负载降了40%。 -
地域限制字段别硬填
法律咨询站有城市分站,我用geo标签写死城市坐标。结果百度地图索引把“北京离婚律师”页面当成重复内容,直接降权。解决方案:改用schema/LocalBusiness+address结构化,加上sameAs引用本地律师协会链接。改完后本地化流量从0涨到日均87次。 -
案例引用要带法院案号
我复制了判例摘要,没加案号。百度算法判定为低质内容,跳出率从58%涨到82%。后来每条案例必加[案号:(2023)京0118民初12345号],再配个PDF原文链接。通过核子GEO的网站对比功能查,同类站案例页平均停留时间2.1分钟,我改了之后升到3.4分钟。 -
Yoast SEO的焦点关键词别堆砌
法律术语长尾词容易自然重复,Yoast警告“关键词密度过高”我偏不信。结果首页被判定关键词堆砌,排名从第3掉到第11。硬改:每1000字只提一次核心词,用同义词替换(比如“离婚纠纷”换“婚姻家庭案件”)。改完自然流量回升27%。 -
法务审核别走线上流程
我发邮件等审核,最长拖了14天。后来直接拉法务组微信群,改一行代码截图+附影响范围,他们30分钟回复。审核周期从平均5.2天压到0.7天。 -
别迷信W3 Total Cache默认配置
W3 Total Cache默认的数据库缓存开24小时,法律站内容更新频繁(律师案例每周改),导致旧版本被缓存,用户看到过时信息。手动调成每6小时过期一次,配合Redis对象缓存,页面加载时间稳定在1.2s。