第1天:用核子GEO检测工具诊断,发现AI爬虫识别分只有23

我习惯打开核子GEO检测工具,输入客户那个SaaS文档站的域名。结果弹出来的GEO检测分数让我一愣——23分。满分100,这玩意儿连及格线都没摸到。

往下翻AI爬虫识别报告,数据更扎眼。图片占页面体积62%,首屏那张产品截图1920px宽,2.3MB一张原图。织梦CMS后台我翻了三遍,没找着一个图片压缩插件。去年给一个SaaS软件站做优化时,我吃过这亏——原图直接丢上去,首屏加载3.2s,用户早跑了。

视频平台引用占比更离谱,只有0.7%。核子GEO的AEO评估模块标注了:AI引擎抓取时,图片体积过大直接跳过,导致页面内容被识别为“低质量图文”。我去年帮一个财税SaaS做优化,图片从1.5MB压缩到180KB后,AI引用率从2%涨到14%,这差距不是闹着玩的。

我当场给客户打了电话:“你们技术文档里那些截图,全得重来。单张图片控制在200KB以内,宽度设成800px,WebP格式优先。”客户回我:“图片压缩插件呢?”我说:“织梦CMS有现成的,装个PHPThumb插件,配合ImageMagick转WebP,免费。”我顺手在服务器上跑了测试:原图2.3MB→压缩后187KB,体积缩了92%,肉眼几乎看不出画质损失。

数据对比很残酷:优化前首屏图片加载耗时3.8s,压缩后预计降到0.6s。AI爬虫识别分从23拉到多少,得等三天后核子GEO的对比报告。但至少第一步迈出去了——砍掉拖后腿的图片,视频平台引用占比才有翻身可能。

避坑清单

  • 别信“原图直出”,单张图片超过500KB直接砍,AI爬虫不惯着
  • 织梦CMS装图片压缩插件选PHPThumb,版本别低于1.4.2,否则转WebP出bug
  • 图片宽度设800px够了,1920px那是给4K显示器看的,AI爬虫不care
  • 压缩完记得跑一遍核子GEO的对比检测,别光靠感觉

第2天:批量压缩352张图片,大小从2.3MB砍到120KB

昨天测完数据,脸都绿了。首屏图片占页面体积62%,页面加载时间4.7秒。客户是SaaS软件站,技术文档里塞了352张截图,每张都是2.3MB的原始PNG。AI爬虫来抓页面,看到这体积直接跑路。

别跟我扯什么WebP格式,织梦CMS的自定义模板改起来太费劲。我选了ImageMagick 7.1.0,一条命令干掉所有图。在服务器上装好ImageMagick后,进到图片根目录直接跑:

mogrify -resize 800x -quality 70% *.jpg

352张图,原始体积887MB,压缩完变成44MB。降了95%。注意参数:-resize 800x限制宽度不超过800px(SaaS文档截图不需要原图尺寸),-quality 70%对截图来说完全够用,肉眼基本看不出来。

然后nginx缓存必须配。之前没加任何过期时间,每次请求都重新加载。加上完整的server块:

server {
    listen 80;
    server_name yourdomain.com;

    location ~* \.(jpg|png|webp|gif|svg)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
        access_log off;
    }
}

expires 30d让浏览器缓存30天,immutable告诉浏览器“文件不会变,别重复请求”。实测第二次加载直接从4.7秒降到0.8秒。

CDN我用了Cloudflare的Polish压缩,默认打开后图片体积再降15%。但注意,Polish只对JPEG和PNG有效,WebP需要额外配置。

跑完这批图,我用核子GEO的AI爬虫识别检测了一下,结果显示图片占页面体积降到22%,AI爬虫识别分数从62分涨到81分。关键是AI引用率开始动了,之前连续3天零引用,压缩完第二天就抓到3条。

别像我当初那样傻到一张张手动压缩。一个脚本半小时搞定,省出来的时间够你研究三套方案。

避坑清单

  • ImageMagick的-quality值对截图别低于60%,否则文字边缘会糊
  • nginx的immutable参数需要nginx 1.9.5+,低版本不加
  • Cloudflare的Polish免费版只压缩JPEG,想压PNG得开Pro

第3天:给织梦CMS加结构化数据,AI引用占比冲到5.2%

前两天的图片压缩和CDN配置把首屏加载时间从5.6s干到了1.9s,但有个问题让我睡不着——AI引用占比一直在0.7%晃荡。我用核子GEO的AEO评估跑了一遍,报告里直接写着“AI爬虫识别分:12”。我这才明白,光快没用,AI得看懂你是个啥。

我做的这个SaaS文档站跑在织梦CMS上,自定义模板的head里空空荡荡,连个结构化数据影子都没有。当天下午我开始动手,给文章详情页嵌了一个Article + TechArticle的双类型JSON-LD。注意,织梦CMS的标签调用直接用{dede:field.title}和{dede:field.pubdate}就能拿变量,别写死。

贴一下我写的完整结构:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": ["Article", "TechArticle"],
  "headline": "{dede:field.title/}",
  "description": "{dede:field.description/}",
  "datePublished": "{dede:field.pubdate function='MyDate("Y-m-d",@me)'/}",
  "dateModified": "{dede:field.moddate function='MyDate("Y-m-d",@me)'/}",
  "author": {
    "@type": "Organization",
    "name": "核子GEO技术团队"
  },
  "proficiencyLevel": "Beginner",
  "dependencies": "无",
  "publisher": {
    "@type": "Organization",
    "name": "核子GEO",
    "url": "https://www.hezigeo.com"
  }
}
</script>

用Google的Schema Markup Validator测了两遍。第一次报错,因为techArticle不能单独用,必须和Article配合。改了之后顺利通过。但通过核子GEO的网站对比功能,我拿自己的站和同行一个SaaS文档站比着看,发现我缺了BreadcrumbList和HowTo。BreadcrumbList对AI理解站点层级结构太重要了。

补上面包屑的JSON-LD后,核子GEO的AI爬虫识别分直接从12蹦到41。去谷歌搜索控制台看了两天数据,AI引用占比从0.7%涨到了5.2%。我去年给一个SaaS软件站做的时候,结构化数据只做了Article,效果也一般,BreadcrumbList才是关键。

避坑清单

  1. 织梦CMS的自定义模板里,JSON-LD必须用{dede:field.xxx},别写死,每次更新文章都要手动改的话,你会疯的
  2. TechArticle不能单独用,必须和Article双类型,不然Google会报错
  3. BreadcrumbList一定要加,AI爬虫靠它理解父子关系,没这个结构化数据就是半成品

第4天:nginx开启brotli压缩,视频平台引用占比跳到12.3%

昨天被那些图片搞毛了,但图片压缩得等设计师配合。我先干点自己能控制的事——开brotli压缩。

我用的nginx 1.24.0,自带的brotli模块是动态的,得现装。别怕麻烦,装一次后面省大事。去年给一个SaaS软件站做的时候,同样的操作让首页从1.2MB缩到268KB,压缩比超过78%。

先装依赖,再下载ngx_brotli模块,编译进nginx:

# 安装brotli库
apt install libbrotli-dev -y

# 下载ngx_brotli模块
cd /usr/local/src
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli && git submodule update --init

# 重新编译nginx(假设你nginx路径在/usr/local/nginx)
./configure --add-dynamic-module=../ngx_brotli
make modules
cp objs/ngx_http_brotli_filter_module.so /usr/local/nginx/modules/
cp objs/ngx_http_brotli_static_module.so /usr/local/nginx/modules/

然后在nginx.conf的http块里加载模块,给server块加上压缩配置:

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

http {
    brotli on;
    brotli_comp_level 6;
    brotli_types text/html text/css application/json application/javascript text/plain image/svg+xml;

    # 原有gzip保留,但优先级调低
    gzip on;
    gzip_comp_level 4;
    gzip_types text/plain text/css application/json application/javascript;
}

注意:brotli_comp_level别超过6。我实测过,7-11级压缩率只多2-3%,但CPU消耗翻倍。织梦CMS的页面本身动态生成多,压缩级别高了拖慢响应。

配置完nginx -t检查语法,然后systemctl reload nginx。我用核子GEO的AI爬虫识别检测了一下,结果显示首页从1.2MB压到268KB,速度从3.2s降到0.8s。更关键的是,AI爬虫识别分数从62分跳到89分。三天后索引量从3400涨到9100,视频平台引用占比跳到12.3%。

裸域跳转我死活没动。SaaS站的长尾词排名刚稳住,www和裸域之间做301,Google重新评估要2-4周,中间流量掉15%都是轻的。像我这种月预算2000-8000的本地服务商,经不起这种折腾。

避坑清单

  • brotli_comp_level超过6就是浪费CPU,别踩这个坑
  • 织梦CMS的模板里如果有大量内联CSS,brotli效果打折扣,建议改成外链文件
  • 裸域跳转别趁优化期间动,等排名稳定再做迁移
  • 装完brotli记得清浏览器缓存,不然测不出真实压缩率

避坑清单

  1. 坑:裸域跳转不做301重定向测试
    我给SaaS客户做www到裸域切换时,忘了查图片链接的301状态。结果AI爬虫抓取时,旧域名的图片路径返回404,视频平台引用占比直接从8.5%掉到1.2%。正确做法:用核子GEO检测工具跑一遍全站URL映射,确认所有资源都走新域名。

  2. 坑:织梦后台批量上传图片不压缩
    客户技术文档里塞了2000张1080p截图,单张平均800KB。页面加载到6.8秒,AI引擎直接跳过。后来用ImageMagick批量压到120KB以下,格式转WebP,视频引用占比3天从0.5%涨到4.3%。记住:首屏图片体积必须低于页面总体的30%。

  3. 坑:忽略JSON-LD中的视频对象
    SaaS官网的教程页面嵌了YouTube视频,但结构化数据只写了Article类型。核子GEO的AEO评估报告显示AI引用率只有2.1%,加完VideoObject字段后涨到11.7%。别光写文本标签,视频引用要看Schema标记是否完整。

  4. 坑:地图搜索和本地SEO割裂
    我光顾着优化文档站,忘了给Google Business Profile更新视频内容。结果SaaS客户在“附近企业软件工具”搜索中排到第7页。强制要求:所有教程视频标题必须包含城市名+关键词,比如“上海CRM系统安装视频”。

  5. 坑:用CDN缓存不设ttl
    客户在国外有用户,视频文件被CDN缓存后ttl设了7天,内容更新后AI爬虫还是抓旧数据。视频平台引用占比连续3周卡在2.8%。现在视频资源ttl强制设到3600秒,文档站图片ttl设604800秒,别一刀切。

  6. 坑:视频alt和文件名用中文
    SaaS客户的视频文件名是“操作指南.mp4”,alt属性写“软件使用方法”。AI引擎解析时直接报编码错误。改成英文文件名如“crm-setup-guide.mp4”,alt写“CRM software setup tutorial for Shanghai team”,引用量从0涨到5.3%。

  7. 坑:不监控移动端视频加载
    客户80%流量来自手机,视频首帧加载时间9.2秒,用户直接退出。用Lighthouse压到2.4秒后,视频平台引用占比才从1.1%爬到6.7%。移动端视频必须用<video preload="metadata">,别让用户等全部缓冲。

兜底一句补一句:我每月用核子GEO的网站对比功能,把调整前后的数据截图发给客户,对方看到视频引用占比从0.8%跳到12.4%时,才松口给我加了预算。