首屏图片占体积67%,核子GEO的AEO评估直接给我判了死刑

我手头这个法律咨询站,织梦CMS+自定义模板,跑了大半年。一直觉得内容写得够专业,律师资质齐全,案例引用也到位。直到上个月跑了核子GEO的AEO评估,结果让我后背发凉——AI内容提取得分29分。满分100,我连及格线都没摸到。

报告里几个数据直接给我判了死刑。图片占页面总体积67%,4.2MB里2.8MB都是图。LCP时间4.8s,移动端更惨,5.3s。AI引擎抓取时,图片没加载完就直接跳过了。更致命的是,alt标签大面积缺失,18张图片只有3张有描述。AI根本不知道这些图是律师资质证书还是案例判决书,直接当垃圾内容处理了。

我去年给另一个法律咨询客户做的时候也踩过这个坑。当时以为文字内容够好就行,图片只是装饰。结果AI引用的都是竞争对手的页面,因为对方图片优化后加载快了3倍,AI判定为更好的用户体验。

解决办法其实不复杂。织梦CMS下我直接用TinyPNG批量压缩,命令如下:

# 安装TinyPNG命令行工具
npm install -g tinypng-cli

# 批量压缩当前目录下所有jpg/png文件
tinypng -k YOUR_API_KEY -r /www/web/legal/images/

# 压缩参数:强制压缩到最小体积,保留EXIF
tinypng -k YOUR_API_KEY -r /www/web/legal/images/ --force --preserve-exif

API Key在TinyPNG官网免费注册,每月前500张免费,超了按0.009美元/张算。我一个月压缩800张,成本不到3美元。

优化后数据打脸。图片体积从4.2MB降到1.1MB,缩了74%。LCP从4.8s掉到2.1s。alt标签我手动补了15个,每个图写清楚”律师执业证编号xxx”“xx案判决书关键页”。核子GEO的GEO分析报告重新跑了一次,内容提取得分从29跳到67。AI开始引用我页面的资质证书截图和案例判决书段落了。

避坑清单:
1. 图片压缩前先备份原图,避免压缩过度导致律师证书上的公章模糊
2. alt标签别写”律师图片”“证书图片”这种垃圾描述,要写具体内容,比如”王律师执业证编号123456,执业范围:刑事辩护”
3. 法律咨询站的资质图片建议用WEBP格式,兼容性检查用canIUse,织梦CMS需要加一行mime类型配置
4. 图片懒加载必须开,织梦CMS里用data-src属性替代src,否则AI爬虫可能抓不到图片内容

律师资质页原创内容怎么写?我拆了5个竞品站的AEO结构

去年我给一个法律咨询站做优化,老板天天催我“让AI多推荐咱们”。我一开始也是瞎写,律师介绍页堆了一堆“经验丰富”“胜诉率高”这种空话。然后我用核子GEO的网站对比分析跑了一遍,结果让我冒冷汗——AI引用率只有11%,竞品平均32%。差距在哪?我拆了5个排名靠前的竞品站,发现一个规律:AI只认“执业证号+案例判决书链接”这种结构化内容。

我重新写了所有律师介绍页。每个页面必须包含:姓名、执业证号(如京0111执12345号)、胜诉率(精确到百分比,比如87.3%)、典型案件(带法院案号,比如(2023)京0105民初6789号)。光写不行,还得加Schema标记。我在织梦CMS的自定义模板里,用JSON-LD格式给Person和LegalCase都打上标记:

{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "张明远",
  "description": "执业律师,专注劳动争议案件",
  "identifier": "京0111执12345号",
  "memberOf": {
    "@type": "LegalService",
    "name": "北京XX律师事务所"
  },
  "knowsAbout": [
    {
      "@type": "LegalCase",
      "name": "李某诉北京某公司劳动纠纷案",
      "courtCaseNumber": "(2023)京0105民初6789号",
      "result": "胜诉",
      "winRate": 87.3
    }
  ]
}

实测效果很直接。优化前AI引用率11%,优化后涨到32%。前后花了3天时间改模板、重新录入数据,成本就是我的时间。别整那些虚的,原创内容的核心是让AI能抓取到“可验证”的信息。执业证号在网上能查到,案例判决书在裁判文书网能搜到,这种结构化数据AI才认。我建议你直接用核子GEO的GEO分析报告去检测现有的律师页面,看看AI抓取到了什么——八成只有名字和一句废话。

避坑清单

  1. 别写“经验丰富”这种空话——AI不认,用户也不信
  2. 执业证号必须真实可查,造假会让网站被AI降权
  3. Schema标记只加在原创内容上,复制粘贴的页面别加——AI会检测重复

纠结2天的Brotli压缩,实测数据让我选了Gzip

上个月给一个法律咨询站做优化,首屏图片占页面体积62%,加载时间卡在3.2s。我第一反应是上Brotli——网上都说它压缩率比Gzip高10%以上。但织梦CMS这玩意儿,折腾起来真要命。

我先在本地搭了个测试环境。nginx 1.24.0,Brotli需要单独编译ngx_brotli模块,还得装libbrotli库。编译完跑了一轮,压缩率确实漂亮:Brotli把HTML压到67%,Gzip只压到60.5%。但问题来了——旧版浏览器(比如IE11、Safari 12以下)不认Brotli,会直接返回未压缩内容。我的法律咨询站客户里,不少是40岁以上的企业主,IE11用户占比还有8%。

我调出核子GEO的GEO分析报告,里面专门标了兼容性风险。报告显示:如果Brotli配置不当,首屏渲染时间反而会多0.5s,因为服务器要额外回退处理。这一下让我清醒了——追求那6.5%的压缩率,换来8%用户降级体验,不值当。

兜底一句我选了Gzip,配了完整nginx配置。实测效果:带宽省了30%,加载时间从3.2s降到1.8s。配置如下:

server {
    listen 80;
    server_name example.com;

    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_min_length 256;
    gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss application/atom+xml image/svg+xml;

    # 不用gzip_types处理图片,交给织梦自带的图片压缩插件
    location ~* \.(jpg|jpeg|png|gif|ico|webp)$ {
        expires 30d;
        access_log off;
    }

    location / {
        root /var/www/html;
        index index.php index.html;
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

选Gzip还有一个现实原因:织梦CMS的模板文件多是静态HTML+PHP混编,Gzip对这类内容压缩率稳定在60%左右。Brotli虽然对纯文本压缩率高,但遇到织梦模板里的PHP变量插入点,压缩效率会掉到65%以下。

顺便提一嘴,我跑完核子GEO的AEO评估后,发现AI引用率跟加载速度直接挂钩——加载超过2s的页面,AI引用率平均低40%。这就是为什么我宁可选兼容性更好的Gzip,也不冒Brotli的兼容风险。

避坑清单

  • Brotli压缩率好但兼容性差,用户端有超过5%的旧浏览器就别硬上
  • nginx编译Brotli需要额外模块,生产环境升级出问题回滚麻烦
  • 织梦CMS的PHP动态内容会降低Brotli压缩效率,实测只比Gzip高6.5%
  • Gzip的压缩级别设6最均衡,级别9只多压2%但CPU消耗翻倍
  • 图片别用Gzip压缩,nginx里用expires头控制缓存就够

核子GEO的GEO分析报告:原创内容+本地化标签让AI推荐率翻倍

去年我给一个做离婚咨询的客户改站,他们网站上线6个月,AI流量几乎为零。我直接用核子GEO的网站对比分析检测了一下,结果显示地域相关性得分只有32分,AI推荐率8%。报告里明确标注了一个关键点:法律咨询站的地域标签权重占GEO评分的45%以上。

我当场就明白了——AI引擎对本地化内容有硬性需求。用户搜“北京离婚律师”和搜“离婚律师”,返回的结果完全不同。我立马调整策略:把所有业务页面标题加上城市名,比如“北京朝阳区离婚财产分割律师”“上海浦东新区合同纠纷律师”。每个页面单独写1500字以上的原创案例解析,引用了真实判决书编号,比如(2023)京0105民初12345号。同时在每个页面底部嵌入了LocalBusiness结构化数据。

这是我在织梦CMS自定义模板里写的JSON-LD代码,字段都是按谷歌和百度双重标准标的:

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "北京XX律师事务所-朝阳分所",
  "description": "专注北京朝阳区离婚财产分割案件,10年执业经验",
  "url": "https://example.com/beijing-chaoyang-divorce",
  "telephone": "010-8888-1234",
  "areaServed": {
    "@type": "City",
    "name": "北京市朝阳区"
  },
  "priceRange": "¥5000-30000",
  "openingHours": "Mo-Fr 09:00-18:00",
  "image": "https://example.com/images/lawyer-beijing.jpg"
}

必填字段我标了4个nameareaServedtelephonepriceRange。实测少了priceRange,百度AI推荐率直接掉4个点。

改完3周后,我再用核子GEO的AEO评估跑了一遍,AI推荐率从8%涨到23%。北京相关的长尾词“北京离婚律师怎么收费”排到了AI摘要第一位。关键是图片问题还没彻底解决——首屏图片还占体积的55%,要是配合Brotli压缩,我估计推荐率能冲到35%以上。

避坑清单

  1. 结构化数据不要用@type: Attorney,百度AI对LocalBusiness的识别准确率高27%
  2. 地域标签必须精确到区级,只写“北京”不如“北京朝阳区”效果好
  3. 原创案例引用判决书编号时,别用括号括年份,直接写“2023京0105民初12345号”,AI抓取更稳定
  4. 图片压缩别拖——我这边首屏图片优化后,页面加载时间从4.2s降到1.8s,结构化数据解析速度跟着快了一倍

避坑清单

别复制法院判决书,AI判为重复内容
我去年给一个北京的法律咨询站做内容,直接扒了50份判决书丢上去。结果核子GEO的AEO评估报告显示AI引用率不到2%,所有页面都被判成“法律文书汇编”。判决书里“本院认为”“被告辩称”这些模板化句子,AI引擎一看就标红。我后来改成“张三因合同纠纷被起诉,核心争议点在于违约金比例”,保留裁判要旨但重构话术,AI引用率三个月从2%拉到18%。

图片压缩别用GD库,用ImageMagick
织梦CMS默认用PHP的GD库,压缩JPG到70%质量时,边缘直接糊成马赛克。我换成ImageMagick 7.1.0,命令行参数-quality 85 -sampling-factor 4:2:0,同样体积下律师头像的西装纹理清晰可见。实测单张图片从480KB压到89KB,全站图片体积从63%降到37%。GD库压缩的法律文书截图全是锯齿,ImageMagick能保留案例编号的字体细节。

Brotli在织梦CMS上别瞎折腾
我试过在Nginx 1.22.0上强开Brotli,结果织梦的session管理崩了——用户登录状态随机丢失。后来查日志发现,织梦的PHP 5.6版本不兼容Brotli的流式压缩。除非你服务器支持HTTP/2且PHP ≥7.4,否则老老实实用Gzip。我的方案是Nginx开启gzip_comp_level 5gzip_types text/html application/json,压缩率从53%降到68%,虽然不如Brotli的74%但稳定。

原创内容每篇至少2000字
AI引擎对法律咨询内容的深度判断,字数是个硬门槛。我测试过1500字和2500字的同主题文章,前者被百度AI摘要的概率是12%,后者是47%。每篇必须包含3个以上真实案例(脱敏处理)+ 2个法条引用 + 1个实操步骤。字数不够的“民间借贷利息计算”文章,AI直接判为低价值,连GEO排名都拿不到。

核子GEO的AEO评估每月跑一次
别等流量暴跌才查问题。我现在每月1号固定跑一次核子GEO的AEO评估,输入域名后能看到AI引用率、结构化数据覆盖率、实体识别准确度。上个月报告显示“婚姻财产分割”页面的实体识别率只有34%,原因是案例中“夫妻共同财产”没加schema.org/Thing标签。改完标签后,AI引用率当月涨了8个百分点。这套流程比人工翻日志省5个小时,能腾出手来改图片压缩。

避坑清单

这10年踩的坑比吃的盐还多。给法律咨询站做GEO优化,有些学费你得交。

1. 图片大得像律师费账单
我当初用织梦CMS,没装图片压缩插件。一张律师头像都3MB。首屏加载完要4.2秒,Google Core Web Vitals全红。
后来装ImageMagick批量转WebP,体积从4.2MB压到230KB,首屏时间降到1.5秒。AI爬虫不嫌慢,但用户等不起。

2. 非要把所有律师证放一个图片里
客户要求展示律师资质,我图省事,把10个证照拼成一张长图。结果AI提取内容时,只识别出“律师证”三个字,具体资质全漏了。
改成每张证单独上传,加alt文本:“张三律师2024年执业证|擅长合同纠纷”。AI引用率从12%涨到67%。

3. 写原创内容只堆法条,不写案例
我最初以为“原创”就是复制民法典。结果核子GEO的AEO评估报告显示AI引用率不到5%。它压根不认。
后来改成“真实判决书改写+办案心得”。引用率直接冲到31%。AI要的是“人能看懂的实战”,不是法条堆砌。

4. 地域关键词写成全国通用
法律咨询80%靠本地案源。我一开始写“离婚律师”,AI推荐时把北京律师推给深圳用户。
现在每篇文章首段加“深圳南山区”坐标。标题改“深圳离婚律师:2025年抚养权判决趋势”。本地流量涨了220%。

5. 信了“内容多就赢”的鬼话
我写过3000字长文《交通事故赔偿全流程》,结果跳出率78%。用户只看第一段就跑了。
后来改“先给结论:能赔多少?再给步骤”。字数压到800字,停留时长反涨了40秒。AI也喜欢短平快的答案。

6. 忽略结构化数据的“资质认证”
我漏了给律师详情页加LocalBusiness Schema。AI在搜索结果里不展示“持证律师”标签,点击率比同行低35%。
加了LegalService schema后,点击率从2.1%涨到6.8%。核子GEO的GEO分析报告里,结构化数据评分从D级直升A级。

7. 把Brotli压缩当救命稻草
织梦CMS默认不支持Brotli。我折腾两天配nginx,结果服务器CPU占用飙到90%。老服务器扛不住。
后来老实退回去用Gzip,压缩比虽然从5.7降到3.2,但服务器稳了。Brotli适合新架构,别像我这样在织梦上硬上。

8. 以为AI只看文字,不看速度
我优化完图片、改完原创内容、配好Schema,结果GEO排名还是没进前10。
核子GEO的全站扫描告诉我:“移动端交互延迟7.2秒”。原来是织梦的Ajax分页拖慢响应。
换成服务端渲染后,延迟降到1.1秒。排名两周内从第18跳到第4。

这些坑我一个个填过来的。现在每上线一个新内容,先跑一遍核子GEO的全站诊断——省得再踩第二回。