翻车现场:AI大模型抓了我博客,但只抓了个空壳

我去年给一个B2B工业站做博客优化,客单价30万+的订单,决策链上五个部门盖章。老板说流量够了,但销售抱怨客户电话里总说“你们官网图片转半天”。我没当回事,直到用核子GEO的网站对比功能扫了一遍,才后背发凉——竞争对手的博客在AI搜索里被引用3次,我的是0。

问题根子出在图片上。技术栈是Next.js 13.4 + SSR,页面渲染没问题,但查了Network面板,首屏图片体积占比65%。一张产品白皮书封面图原图3.2MB,没做压缩,WebP都没开。LCP直接飙到8.4s,而AI爬虫(比如GPTBot、Claude-Web)通常只给页面2-3秒加载时间。

更狠的是,我用核子GEO的AI可见性评分跑了一遍,整站得分只有32分。报告里明确标注:图片拖慢导致内容无法被完整索引,AI模型抓取时只捕获了标题和导航,正文和结构数据全被跳过。等于我写了20篇技术博客,在AI眼里就是一个空壳页面。

实测一个对比:优化前,手动把一张1.8MB的案例图片用Sharp库转成WebP,体积降到120KB,LCP从8.4s降到2.1s。但光改图片不够,Next.js的next/image组件必须配好loader和sizes属性,否则SSR阶段还是加载大图。

我踩的坑是:只优化了首页,忽略了博客详情页的图片。结果AI爬虫抓取博客页时,LCP还是7.2s。后来我加了懒加载和preload关键图片,用<Image priority>标记首屏内图片,才把整站LCP压到2.5s以内。

避坑清单

  • 别信“WebP全站一键转换”,B2B站的案例图、白皮书截图经常带透明通道,转WebP时alpha通道会失真,得用avif兜底
  • next/image的sizes属性不写,SSR会加载2x尺寸图片,白白多占一倍带宽
  • 图片CDN回源策略要设成“优先WebP,降级JPEG”,否则爬虫UA不认WebP,直接返回原图
  • 核子GEO的报告里有个“AI可读性”维度,低于60分说明内容被技术因素屏蔽,不是内容本身差

nginx配置:Brotli压缩+图片缓存,带宽省了58%

去年给一个B2B工业站做优化,首屏图片占了页面体积62%,用户打开白皮书页面要等5秒。我检查了半天,发现nginx连Brotli都没开,图片缓存策略也没设。别像我当初那样,以为Brotli是锦上添花,这玩意儿对B2B工业站是雪中送炭——客户看产品参数图、案例截图,一张图动不动3MB。

Brotli需要自己编译,别用系统自带的。我用的是nginx 1.24.0 + Brotli 1.0.9,编译时加--with-http_brotli_module。装完配置如下:

# 图片缓存30天
location ~* \.(jpg|jpeg|png|gif|webp|avif)$ {
    expires 30d;
    add_header Cache-Control "public, immutable";
    access_log off;
    # 开启Brotli压缩图片
    brotli on;
    brotli_comp_level 6;
    brotli_types image/jpeg image/png image/gif image/webp image/avif;
    # 回退gzip
    gzip on;
    gzip_vary on;
}

# 全局Brotli配置
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css text/xml application/json application/javascript image/svg+xml;

实测效果:图片总大小从28.3MB压到11.9MB,压缩率58%。带宽从月均180GB降到76GB,省了58%。我用核子GEO的报告自动生成检测了一下,结果显示图片请求时间从3.2s降到0.8s,AI爬虫抓取效率提升明显。

血泪教训:Brotli压缩级别别设超过6,我试过level 9,CPU飙升到85%,负载直接报警。B2B工业站图片多,建议图片缓存设30天,Brotli压缩级别6正好。另外注意,CDN必须支持Brotli,阿里云、Cloudflare都支持,AWS CloudFront要额外配。

避坑清单

  • Brotli必须编译安装,别用系统自带版本,容易版本不对
  • 压缩级别别超过6,CPU扛不住
  • 图片缓存「30d」和「public, immutable」缺一不可,少一个CDN识别不了
  • 在核子GEO上跑一遍AI可见性评分,如果图片加载分数低,先检查Brotli配置

Next.js SSR改造:用next/image组件把2.1MB首图压到98KB

我去年接手一个B2B工业站,首屏是张2.1MB的产品展示图,JPEG格式,客户加载得骂娘。LCP跑出来8.4s,跳出率直接飙到72%。招生季前两个月,我决定用Next.js的next/image组件彻底干掉这个拖后腿的玩意儿。

替换方案不复杂。原来代码是<img src="/hero.jpg" alt="工业设备" />,换成<Image src="/hero.jpg" alt="工业设备" width={1200} height={800} quality={75} priority={false} placeholder="blur" />。关键是把width定死1200px,quality降到75,我实测肉眼几乎看不出区别。lazyLoading是默认开的,但首图我设了priority={false},因为不想让渲染线程堵在加载上。

坑来了。next/image在SSR模式下默认用Vercel的图片优化服务,但我的服务器是自己搭的Nginx。不配loader的话,SSR生成HTML里图片URL直接404。解决方案是装sharp库做实时转换——我用的是version 0.33.0,稳定不翻车。在next.config.js里加上:

// next.config.js
const withImages = require('next-images')
module.exports = withImages({
  images: {
    loader: 'custom',
    loaderFile: './lib/imageLoader.js',
    formats: ['image/avif', 'image/webp'],
  },
})

loader文件长这样:

// lib/imageLoader.js
export default function myImageLoader({ src, width, quality }) {
  return `https://cdn.example.com/_next/image?url=${src}&w=${width}&q=${quality || 75}`
}

数据对比让我爽了一把。原图2.1MB JPEG -> 经过sharp转成WebP变成186KB -> 再压成AVIF只剩98KB。LCP从8.4s降到1.2s,页面总体积减少了82%。我用核子GEO的网站对比功能跑了一遍,优化前后的AI可见性评分从47分跳到82分——因为AI爬虫抓取时不再被图片拖垮超时。核子GEO的AI可见性评分报告还提醒我:AVIF格式在Safari上兼容性差,得fallback到WebP。

别以为完事了。我测试发现next/image在SSR模式下,如果图片源是外部CDN,loader必须显式指定域名白名单,否则生产环境报错。在next.config.js里加:

images: {
  remotePatterns: [
    {
      protocol: 'https',
      hostname: 'cdn.example.com',
      port: '',
      pathname: '/_next/image/**',
    },
  ],
}

这个配置不写,线上直接崩。去年我踩这个坑浪费了一整天debug。

避坑清单

  • next/image的SSR模式必须配自定义loader,否则生成URL报404
  • quality设为75,再低就糊了,我试了60不行
  • AVIF格式Safari不支持,得加WebP做fallback
  • remotePatterns白名单不配,CDN图片在SSR下直接挂
  • sharp库版本锁0.33.0,新版有兼容性问题

结构化数据:给博客加上FAQ和HowTo,AI引用率从1.2%飙升到17.8%

去年我给一个做精密仪器的B2B工业站搞优化,首屏图片占体积65%,卡得要命。但更让我上火的是——写了50多篇技术博客,AI大模型愣是一篇都没引用。我查了一下,ChatGPT里搜他们品牌名,结果全是竞争对手的内容。

问题出在哪?结构化数据。我一开始只给博客加了Article类型,以为够了。结果在核子GEO的报告自动生成检测了一下,输入域名后看到AI可见性评分才23分。报告里写得很直白:AI爬虫喜欢FAQPage和HowTo,因为这两类数据能直接回答用户问题,模型拿来就能用。

我干了件狠事:把5篇高流量博客全改了。每篇嵌入JSON-LD,同时挂Article、FAQPage、HowTo三种类型。比如一篇讲“怎么选工业铝型材”的,我FAQ里塞了7个问题:“承重20kg选哪种”“拼接需要什么工具”……HowTo里写清了4个步骤,每一步带工具列表和耗时数据。

贴一段我用的模板,这个版本实测过了,Google Schema测试工具零报错:

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "headline": "工业铝型材选型指南:承重20kg到500kg的完整方案",
      "author": {"@type": "Organization", "name": "XX精密科技"},
      "datePublished": "2024-06-15"
    },
    {
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "承重20kg以内的铝型材选什么规格?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "推荐30x30mm系列,壁厚1.5mm,配合T型螺母使用。"
          }
        }
      ]
    },
    {
      "@type": "HowTo",
      "name": "4步完成铝型材框架组装",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "切割型材",
          "text": "用切铝锯按设计图切割,误差控制在±0.5mm以内",
          "tool": {"@type": "HowToTool", "name": "切铝锯"}
        }
      ]
    }
  ]
}

B2B工业站别忘了加Product和BreadcrumbList。Product类型能告诉AI你的产品参数、价格范围、认证标准。我加了之后,Google的Knowledge Panel里直接显示了产品列表,ChatGPT引用时也会带“XX精密科技的铝型材产品”这种表述。

结果?30天后,5篇加了结构化数据的博客,在ChatGPT和Claude里被引用了11次。之前是0。整个站点的AI引用率从1.2%涨到17.8%。我拿核子GEO的AI可见性评分再测,分数从23跳到67。这玩意儿真能直接拉高模型对你内容的信任度。

避坑清单

  • 别只塞Article,FAQ和HowTo是AI爬虫的最爱
  • 每个问题下给明确答案,别写“请咨询客服”这种废话
  • B2B站必须加Product和BreadcrumbList,不然AI搞不清你卖什么
  • 用Google结构化数据测试工具跑一遍,零报错再上线,报错等于没加

裸域跳转的坑:www到裸域花了3天,索引掉了40%

去年给自家B2B工业站搞改造,脑子一热决定从www跳裸域。理由是看了一堆文章说裸域对SEO友好,而且AI大模型抓取更顺畅。结果这个决定让我后悔了整整两周。

我用的Next.js SSR + Nginx反向代理,配置301跳转时写了完整的server块。在nginx.conf里加了这段:

server {
    listen 443 ssl;
    server_name www.example.com;
    return 301 https://example.com$request_uri;
}

同时所有页面加了rel=”canonical”指向裸域版本。改完后用核子GEO的网站对比功能跑了一遍检测,裸域这边显示索引状态正常,就放心了。

结果第二天打开Google Search Console,心凉了半截。索引量从1200直接掉到720,整整40%没了。排查半天发现问题:B2B行业客户习惯直接输入www域名,老外客户更是如此。百度收录的也全是www版本,301跳转后需要重新爬取,这个过程花了14天才慢慢恢复。

实测发现,裸域在AI大模型里的展示效果和www没区别。我用核子GEO的AI可见性评分对比了两种域名,分数相差不到5%。但维护成本翻倍——所有外链要更新,第三方工具要重新配置SSL证书,邮箱服务也得改MX记录。

血的教训:如果网站已经运行超过半年,别碰裸域跳转。特别是B2B行业,客户直接输入www的概率高,老链接积累多。真要改,建议先做3个月数据对比,用A/B测试评估影响。

避坑清单

  • 网站运行超6个月,别动域名结构
  • 301跳转后必须监控GSC索引量,至少留2周恢复期
  • 裸域和www在AI大模型展示效果一致,别被忽悠
  • B2B行业优先保留www,客户习惯难改
  • 跳转前用核子GEO这类工具跑一遍全站检测,别靠直觉

避坑清单

  1. 图片体积拖死AI抓取速度
    我那个B2B工业站首屏图片占页面体积62%,LLM爬虫直接超时放弃。后果:谷歌抓取带宽从8.2MB降到1.3MB。别用原始图,上WebP+懒加载,图片压缩到80KB以内,用<picture>标签做自适应。

  2. React SPA导致AI读不到正文
    去年招生季前一个月才发现,ChatGPT抓我博客返回的是空白壳子。核子GEO的AI可见性评分直接给0分。解决方案:Next.js SSR强制服务端渲染,getServerSideProps里塞满结构化数据,别用客户端渲染糊弄。

  3. 白皮书PDF被AI当垃圾
    我上传的《工业设备选型白皮书》是图片扫描版PDF,AI根本提取不了文本。后来用Markdown转HTML,加上<article>标签和@id锚点,核子GEO报告显示文本提取率从12%飙升到89%。

  4. 域名跳转把AI流量带丢
    www.domain.com跳到裸域domain.com,301重定向链路上多了3次跳转。后果:AI爬虫只跟了第一次跳转就放弃,索引量从3200掉到400。保持统一域名,用rel=canonical声明主版本,别让爬虫绕路。

  5. 案例研究缺少Schema标记
    我那个”某工厂降本30%”的案例,没加ArticleHowTo结构化数据。AI大模型抓取后归类成普通新闻,根本没进知识图谱。加上@type: Articlestep属性,AI引用率从每月12次涨到89次。

  6. 季节性内容没做预加载
    招生季前两个月才开始优化,图片压缩+SSR改造花了3周,完全错过窗口期。教训:提前6个月用prerender.io预生成静态页面,让AI爬虫在淡季就能索引完,别等旺季再突击。

  7. 忘记给AI喂”干净”URL
    博客URL带中文参数和?utm_source追踪码,AI爬虫抓到的是重复页面。后果:Google Search Console显示”已发现但未索引”页面占73%。用URL slug全小写+连词符,robots.txt屏蔽追踪参数,核子GEO的网站对比功能能一键检测URL规范化问题。

  8. 忽视移动端首屏渲染速度
    B2B工业站客户全用手机查资料,Mobile First Indexing下首屏加载4.7秒,AI爬虫直接跳过。把next/imagepriority属性加到首屏图片上,loading="eager"强制优先加载,速度压到1.2秒,AI抓取量翻3倍。