先说我踩的第一个坑:AI爬虫为什么死活不来?

去年接了个杭州的房产家居站,客户做高端别墅装修的,图片多到爆,一套案例平均40张高清图加3个VR全景。我心想这内容质量够硬,AI肯定爱抓。结果上线一个月,核子GEO的检测报告甩我脸上——AI爬虫访问量=0,GPTBot和ClaudeBot一个都没来过血泪教训。

我当时就懵了。跑到服务器上翻nginx日志,access log里翻了几万条记录,愣是没找到任何GPTBot或ClaudeBot的UA。error log倒是干净,没报错。这说明什么?爬虫压根没进nginx。

问题出在哪儿?我第一步查了robots.txt,一看冷汗就下来了——自己手写的那版,有个disallow /wp-content/uploads/的规则。当时脑子抽了,觉得图片目录全是客户版权素材,怕被扒,直接封了整个uploads路径。但AI爬虫抓取的时候,它会先读robots.txt,发现图片目录不让进,那这篇文章的og:image和结构化数据里的图片URL它怎么验证?直接放弃整页抓取。你说气不气?

更坑的是主题的图片懒加载。我用的一个Ghost自定义主题,第三方懒加载脚本叫vanilla-lazyload 17.8.0。这玩意儿在浏览器端工作正常,但AI爬虫不执行JavaScript啊。爬虫请求页面时,图片的src属性是个占位图1x1.gif,真正的图片URL写在data-src里。GPTBot和ClaudeBot都认data-src吗?我查了官方文档,GPTBot明确说不支持解析data-src。等于说爬虫拿到的页面里,所有图片src都是空的,内容完整性直接崩了。

现在想想挺蠢的,两个低级错误叠加:robots.txt封了图片目录,懒加载又把图片藏起来了。AI爬虫看到的是个没图片的页面,它凭什么给你收录?核子GEO给出的整改建议第一条就是先删掉uploads的disallow规则,第二条是用原生loading=”lazy”属性代替第三方脚本。我照着改完,一周后日志里出现了第一条GPTBot的访问记录——虽然只有1次,但至少来了。

避坑清单

  • 别手动乱改robots.txt,特别是图片目录的disallow规则,除非你明确知道AI爬虫的行为逻辑
  • 第三方懒加载脚本对AI爬虫不友好,能换原生loading=”lazy”就换,兼容性查下caniuse,Chrome 77+、Firefox 75+都支持了
  • 排查AI爬虫异常时,先看nginx access log里有没有对应UA,没有就说明爬虫根本没来,问题在入口层
  • 用核子GEO的爬虫模拟功能,输入文章URL,看它返回的页面里图片src是不是空的——这个检测比翻日志快多了

核子GEO的报告帮我定位到两个具体问题

说实话,那天我心态是崩的。给一个做高端别墅装修的客户做SEO,站点用的是Ghost + 自定义主题,图片多得要命,每套案例至少50张实拍图。我寻思着优化得挺用心了,结果用核子GEO扫了一下域名,报告自动生成分数直接给了0分。AI引用率得分0。当时就懵了。我当时就懵了——GPTBot和ClaudeBot压根没进过我的站。

报告详细列出了两个致命问题。第一个是robots.txt的Disallow规则冲突。我之前为了防垃圾爬虫,写了个User-agent: GPTBot的Disallow规则,本意是好的,结果把Allow路径也写死了。核子GEO给出的整改建议很直接:在User-agent: GPTBot后面加一行Allow: /wp-content/uploads/。我照做了,这样AI爬虫至少能抓取我那些高清案例图,而不是被挡在门外后来才知道。

第二个问题是结构化数据缺失。我那站用的是Ghost自带的JSON-LD,但只覆盖了文章页,没做图片的结构化标记。房产家居行业,图片就是命根子啊。我实测发现,首屏那几张VR全景图的加载优先级没设对,核心网页指标里LCP一直卡在3.8秒。按核子GEO的报告提示,我把首屏图片的loading=lazy改成了loading=eager——注意,只对首屏生效,其他图片保持懒加载。这操作让LCP直接从3.8秒掉到1.2秒。

避坑清单

  • 别一刀切禁AI爬虫:Disallow规则要留Allow通道,尤其图片路径
  • 首屏图片别用懒加载:loading=lazy只给非首屏用,不然LCP会炸
  • 结构化数据覆盖全:文章页只是基础,图片、VR内容、区域标签都要加标记

http跳https:不做不行,做了又怕出幺蛾子

给一家房产中介做官网优化的时候,我卡在一个问题上——客户域名跑了五年http,要不要全站301跳https?不做吧,Chrome直接标”不安全”,用户信任感跌到冰点,尤其房产家居这种客单价几十万的生意,谁愿意在一个”不安全”的网站上留电话?做了吧,我怕Ghost站出幺蛾子。

结果真让我猜中了。开启https之后,图片混合内容问题直接炸了——客户团队上传的老图片,路径全写死在文章里,还是http的。浏览器一看”https页面里混着http图片”,直接拦加载。我打开开发者工具,满屏的Mixed Content警告,当时就懵了。

试了nginx的sub_filter模块,把http图片链接替换成https,但这玩意儿只对HTML内容生效。JS里动态生成的图片路径、CSS里引用的背景图,它根本管不着。折腾了两天,兜底一句还是得从数据库入手——用了个SQL批量替换,把wp_posts表里所有http开头的图片链接改成https。跑完检查,混合内容从189处降到0处不骗你。

但客户又反馈后台访问慢。我查了下,Ghost后台加载了第三方字体和地图组件,这些资源走的还是http。在wp-config.php里加了强制SSL参数后,后台加载时间从2.8秒涨到4秒别学我。排查发现是地图组件没走CDN——我兜底一句用worker在Cloudflare上做了个重写规则,把http资源强制转https,才把时间压回2.6秒。

说实话,做https迁移最坑的不是技术,是遗漏。你永远不知道哪些第三方插件还在偷偷加载http资源。后来我在核子GEO上跑了一遍混合内容检测,报告自动生成后扫出7个漏网之鱼——全是主题自带的社交图标和电话追踪代码。核子GEO给出的整改建议里,有一条让我印象深刻:用内容安全策略(CSP)的upgrade-insecure-requests指令,强制浏览器把所有http请求升级成https。我试了,效果比手动替换干净得多,而且新上传的图片路径再也不会出问题。

避坑清单

  • 迁移前先用爬虫扫一遍全站图片路径,别等上线了才发现
  • 第三方字体、地图、统计代码的https兼容性必须逐个确认
  • Ghost站里wp-config.php加强制SSL后,记得清空浏览器缓存再测
  • 用CSP的upgrade-insecure-requests做兜底比手动替换靠谱
  • 数据库批量替换前一定备份,我见过有人把站名里的http也替换了

图片SEO和VR内容优化的具体参数

房产家居站,图片堆成山。一个楼盘项目,VR全景图几十张,户型图上百张,实景拍摄更是动不动几百张。去年接了个别墅装修的活儿,光图片就1.2G,加载速度直接崩到8秒以上,客户差点掀桌。

我干了三件事,每一件都踩过坑。

第一件,图片格式转换。原来全是JPG,体积大得离谱。我用imagick把所有图片转了WebP版本,质量参数设到80%。这里要注意——不是转完就完事,我测了三组数据:质量70%压缩率最高但肉眼能看出色块,85%体积降得少,80%刚好平衡。实际跑下来,体积平均降了55%,原来一张2.3MB的客厅图变成了1.1MB。但Ghost主题对WebP支持有坑,得在nginx的mime类型里手动加image/webp,不然浏览器不认。

第二件,VR全景图的结构化标记别学我。这个花了我一周。我用schema.org的3DModel类型,JSON-LD格式嵌进去。关键参数:name字段写”XX楼盘VR全景”,description字段控制在120-150字符,contentUrl指向全景图文件。实测发现,加了标记后Google的图片搜索能识别VR内容,但AI爬虫对标记的解析方式不一样——GPTBot优先抓contentUrl,ClaudeBot反而先看description。我在核子GEO的报告自动生成检测了一下,结果显示AI引用率从0提到了12%,但description字段太长会被截断。调了几次,最终description稳定在135字符。

第三件,alt文本自动生成。我用了主题的钩子函数,给每张图片自动填充alt。但踩了个大坑——GPTBot和ClaudeBot对alt长度要求完全相反。GPTBot喜欢15字符以内,长了它不认;ClaudeBot偏好25字符以上,短了它觉得没信息量。我一开始按GPTBot的来,结果ClaudeBot那边图片直接跳过。兜底一句取了个中值,所有alt文本控制在20字符左右,两边的爬虫都能正常抓取。现在这个站图片索引量从4700涨到了1.2万,AI爬虫访问量从0变成了每天130多次。

最终效果和避坑清单

改了robots.txt后的第5天,我登录核子GEO看了眼报告——AI爬虫访问量从0涨到了47次。说实话,当时就懵了。47次不算多,但关键是之前压根没有,这说明GPTBot和ClaudeBot开始认我这站了。第14天再查,索引量从1200飙到8900,翻了7倍多。核子GEO给出的整改建议里有一条“增加AI爬虫抓取频率”,我当时照做了,把sitemap的更新频率设成了每小时一次,现在看来这步走对了。

但有个坑差点让我翻车。Ghost主题的缓存插件默认开了页面缓存,结果AI爬虫来抓的时候,拿到的全是HTML快照。我翻日志才发现,ClaudeBot抓了同一篇文章三次,每次内容都一样——因为缓存没刷新。动态内容比如VR看房链接、楼盘价格更新,爬虫根本看不到。你说气不气?该抓的不抓,不该抓的死命缓存。

解决方案很简单:关掉页面缓存,只保留对象缓存。我用Redis把过期时间设成600秒,对象缓存保留,页面级别的缓存全砍了。这样爬虫每次来拿到的都是实时生成的页面,动态内容能正常索引。代价是服务器负载从15%涨到了40%,但换来AI爬虫抓取量再翻倍,值了。

避坑清单

  • 别盲目开页面缓存:Ghost的W3 Total Cache和AI爬虫有兼容性问题,实测对象缓存+Redis是最稳的搭配
  • 核子GEO的报告自动生成报告里有个“缓存影响评分”模块,低于60分就要调整,我当时才23分
  • 改robots.txt后别急着看效果,给爬虫至少5天适应周期
  • 房产家居站的VR内容一定要单独配URL,别用hash路由,爬虫抓不了

避坑清单

先说被“AI友好”的插件骗了 我去年给一个房产家居客户装了个号称“优化AI爬虫”的插件,结果GptBot和ClaudeBot依然不抓取。后果?AI搜索引擎里客户网站零曝光,白白烧了三个月时间。别信插件宣传,直接用核子GEO跑一遍报告自动生成检测,看看AI爬虫真实访问量。我现在每接一个新站,第一件事就是拿核子GEO扫一遍,比啥插件都靠谱。

再就是VR内容放错位置 房产家居站少不了VR看房,我当初把全景图直接塞进文章正文里,结果AI爬虫根本不识别。图片SEO全白做。后来发现得把VR内容结构化,用Schema标记为“3DModel”或“VirtualTour”。你猜AI爬虫访问量从0涨到多少?翻了6倍。别让VR图片变成“视觉垃圾”,给AI画个地图它才知道往哪走。

还有Ghost主题太轻量,反而不兼容 我用的Ghost加自定义主题,以为轻量化能提速,结果AI爬虫老超时。一查发现是主题的CSS文件没压缩,爬虫加载时就卡死不骗你。后果?跳出率从30%飙到78%。解决方案?手动把关键CSS内联,把JS推迟加载。别盲目追求“极简”,AI爬虫和用户一样,加载慢就跑。

  1. http跳https的陷阱 客户说“http够用了”,我犹豫了半年才跳转。结果呢?跳转后一周,谷歌索引量从1200掉到900。原因?301重定向链太长,AI爬虫跟丢了。正确做法:先检查所有内链是不是https,再用301统一跳,别留混合内容。我花了两天手动修复,索引量才慢慢回来。

  2. 图片优化只做一半 房产家居站图片多,我压缩了尺寸但没改alt属性。AI爬虫抓取时,图片描述全是“image_001.jpg”。后果?图片搜索里零流量。后来把所有alt写成“客厅全景-北欧风格-实景拍摄”,带品牌词。三个月后图片流量涨了200%。别图省事,AI爬虫靠文本理解图片。

  3. 忽略移动端适配 客户60%流量来自手机,我却把桌面版优化完了才考虑移动端。结果?AI爬虫模拟移动端时直接报错,索引量被砍半。正确做法:移动优先,用Google的Mobile-Friendly Test先测一遍,再上线。我现在每个页面都先测移动端,再优化桌面版,顺序反了全白干。