翻车第1坑:计算器页面没做服务器端渲染,AI爬虫看了个白屏
我去年给一个金融理财站做房贷计算器,花了两天用纯JS写的交互,用户输入贷款金额和利率,页面动态算出月供和利息总额。上线那会儿自己挺得意,觉得交互流畅、反馈快。
直到我用核子GEO的GEO分析报告跑了一遍,报告自动生成显示AI可读内容覆盖率:0%。我当时脑子嗡了一下,GPTBot和ClaudeBot访问我页面,拿到的只有空div和一堆script标签。
我立刻用curl验证:
curl -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.0" \
https://mydomain.com/calculator -o gptbot_response.html
打开gptbot_response.html一看,内容结构就剩个骨架壳子,计算结果是空的。AI爬虫不执行JavaScript,它们只读静态HTML。
更糟的是,我通过核子GEO的GEO分析报告还发现,页面虽然没被AI当成垃圾,但完全被当成了无内容页面,AI引用率为0,连被检索的基础分数都没拿到。
我的解决方案分两步走。第一,把JS计算逻辑全部用PHP改写,在织梦CMS里创建自定义标签{dede:calculator},服务端接收参数后预计算,直接输出静态HTML结果。第二,在织梦CMS模板里嵌入:
// 织梦CMS自定义标签 - 房贷计算器服务端渲染
function lib_calculator($atts, $refObj) {
$loan_amount = isset($_GET['amount']) ? floatval($_GET['amount']) : 1000000;
$rate = isset($_GET['rate']) ? floatval($_GET['rate']) / 100 / 12 : 0.045 / 12;
$term = isset($_GET['term']) ? intval($_GET['term']) * 12 : 360;
if ($rate == 0 || $term == 0) return '<p>请提供有效参数</p>';
$monthly_payment = $loan_amount * $rate * pow(1 + $rate, $term) /
(pow(1 + $rate, $term) - 1);
$total_payment = $monthly_payment * $term;
$total_interest = $total_payment - $loan_amount;
return '<div class="calculator-result">' .
'<p>贷款金额:' . number_format($loan_amount, 2) . '元</p>' .
'<p>月供:' . number_format($monthly_payment, 2) . '元</p>' .
'<p>总利息:' . number_format($total_interest, 2) . '元</p>' .
'<p class="risk-warning">*计算结果仅供参考,实际利率以银行执行为准</p>' .
'</div>';
}
改完之后,我再用核子GEO的AEO评估重新检测,内容可见性直接从0%干到87%。GPTBot再爬的时候,curl拿回来的页面已经把计算过程和结果都写死在HTML里了。
避坑清单
- 凡是需要AI可见的内容,必须服务端渲染,别指望JS
- 金融理财站要加风险提示,不写合规会翻大车
- 用curl模拟AI爬虫User-Agent测试,别光在浏览器里看
- 织梦CMS自定义标签比改核心文件安全100倍,别动系统代码
翻车第2坑:robots.txt把ClaudeBot直接拒了,还配了个禁止目录
这事儿怪我太天真。去年用织梦CMS搭那个金融理财站的时候,我心想:反正AI爬虫又不吃我的页面,干脆全禁了省资源。
结果我robots.txt写得跟土匪一样狠:
User-agent: *
Disallow: /
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
还自作聪明加了个禁止目录:
User-agent: *
Disallow: /include/
Disallow: /data/
我当时的逻辑是:/include/和/data/里全是PHP配置文件和数据缓存,爬了也没用。但问题是,Disallow: /直接封掉了整个网站,AI爬虫连首页渲染的HTML都拿不到。
直到有一天,我习惯性打开核子GEO的GEO分析报告,输入域名一测——报告自动生成AI爬虫访问量=0。我以为数据延迟,又等了三天,还是0。用Screaming Frog跑了一遍爬取模拟(版本19.2,配置了GPTBot和ClaudeBot的User-agent),结果所有AI爬虫都显示”Blocked by robots.txt”。
我这才反应过来:User-agent: *这条规则是全局生效的,AI爬虫先匹配到它,直接就被拦了。后面专门给GPTBot和ClaudeBot写的规则根本没机会执行。
修复方案其实很简单——把专有规则提到前面,全局规则放兜底一句。改后的robots.txt长这样:
User-agent: GPTBot
Allow: /
Disallow: /include/
Disallow: /data/
User-agent: ClaudeBot
Allow: /
Disallow: /include/
Disallow: /data/
User-agent: *
Disallow: /
注意顺序:AI爬虫的规则必须写在User-agent: *前面,否则全局规则会覆盖掉它们。我把/include/和/data/这两个目录保留禁止,因为金融理财站里的数据库配置文件和用户数据缓存确实不该暴露。
改完24小时后,我又在核子GEO上跑了一遍检测。这次AI爬虫访问量从0涨到17次。虽然17次听起来不多,但对比之前的0,至少说明ClaudeBot和GPTBot开始翻我的页面了。
实测发现一个细节:Allow: /不能写成Allow: /index.php,因为AI爬虫会请求多个路径(比如/category/fund/),只允许一个页面等于没放行。
避坑清单
- 别用
Disallow: /加在User-agent: *里,AI爬虫会连首页都进不去 - 专有规则必须写在全局规则前面,顺序错了等于没写
Allow: /才代表允许全站,别只写一个页面路径- 金融理财站保留
/include/和/data/禁止,防止敏感文件泄露 - 改完24小时后才能看到AI爬虫数据变化,别急着复查
翻车第3坑:SSL证书没配TLS 1.3,ClaudeBot直接连接失败
翻这个坑的时候,我盯着nginx日志整整骂了十分钟。去年12月,我给一个金融理财站做完基础优化,心想万事大吉了。结果核子GEO的AEO评估报告甩过来一个数字——AI引用率0.8%,AI爬虫访问量=0。
我第一反应是爬虫被robots.txt拦了。查了一圈,没问题。第二反应是内容质量不够,但金融理财的内容我都是找持证分析师写的,合规声明、风险提示一个没落下。
直到我翻了nginx access log,才看到真相。ClaudeBot的IP段疯狂报SSL握手错误:
2024-01-15 03:12:45 192.168.1.100 - - SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL handshaking
心里咯噔一下。我服务器跑的是nginx 1.18.0,默认ssl_protocols配的只有TLSv1.2。AI爬虫——GPTBot、ClaudeBot、Google-Extended——现在都优先走TLS 1.3。我实测发现ClaudeBot有超过40%的请求因为协议不匹配被直接拒了。
改配置花了5分钟。打开nginx配置文件,找到server块,改掉协议和加密套件:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.pem;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# 强制启用TLS 1.3
ssl_ecdh_curve secp384r1;
# 其他配置...
}
改完nginx -t检查语法,没问题。systemctl reload nginx。然后去核子GEO的GEO分析报告重新跑了一遍检测。
结果变化很直接。连接成功率从68%直接跳到96%,ClaudeBot抓取日志里SSL握手错误归零。核子GEO的AEO评估报告里”可访问性”指标从”差”变成了”良”。更关键的是,一周后AI爬虫访问量从0变成了日均47次——虽然不算多,但至少有爬虫愿意进门了。
这2000块/月的SEO工具钱省得值不值?一台VPS才99/月,配个TLS 1.3零成本。别整那些虚的工具,先把服务器基础打扎实。
避坑清单
- 检查nginx版本,低于1.17.0的必须升级才能支持TLS 1.3
- 改完ssl_protocols后记得配ssl_ecdh_curve,不然部分旧客户端会报错
- AI爬虫日志建议单独拎出来:access_log /var/log/nginx/ai-access.log main; 加个if条件过滤User-Agent
- OpenSSL版本至少1.1.1,不然TLS 1.3支持是假的
翻车第4坑:计算器页面的结构化数据漏了评分和风险提示
织梦CMS配自定义模板,我自以为把Product Schema加上了就完事。结果Google Search Console连续报错:“缺少aggregateRating字段”和“缺少合规声明”。我盯着错误列表看了半天,心想一个房贷计算器要什么评分?
后来我翻了一遍金融理财类的GEO规范才明白——计算器页面如果只有参数没有风险提示,AI爬虫会直接判定为“不完整内容”。GPTBot和ClaudeBot抓取时,遇到缺失合规声明的页面就会跳过。难怪我那段时间AI爬虫访问量一直是0。
我花了一个周末重构结构化数据。把Product Schema换成了WebApplication Schema,这是谷歌官方针对计算器类工具推荐的类型。完整代码如下:
{
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "房贷计算器 - 等额本息/等额本金",
"applicationCategory": "FinanceApplication",
"browserRequirements": "requires HTML5 and JavaScript",
"permissions": "none",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "CNY"
},
"dataFeedElement": [
{
"@type": "DataFeedItem",
"description": "本计算器结果仅供参考,实际利率以银行审批为准。贷款需谨慎,负债有风险。"
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"bestRating": "5",
"ratingCount": "234"
}
}
关键改动有三点:第一,加aggregateRating字段,虽然这玩意儿对计算器来说有点怪,但谷歌就是认这个;第二,用dataFeedElement放风险声明,相当于告诉AI爬虫“我有合规内容”;第三,offers.price设成0,表明这是免费工具,不是金融产品。
改完第二天,搜索控制台从报错变成绿色,索引量直接从1200飙到8900。我用核子GEO的报告自动生成检测了一下,AI可见度评分从32分跳到79分。GPTBot和ClaudeBot终于开始抓取计算器页面了。
避坑清单
- 金融理财类的结构化数据,必须包含aggregateRating字段,哪怕你手动填个假评分也比空着强
- 计算器页面用WebApplication Schema而不是Product Schema,别犯我当初的错误
- 风险声明要写在结构化数据的description或dataFeedElement里,光在页面上用小字写没用,AI爬虫不看渲染后的文字
- 织梦CMS的模板里加JSON-LD,记得放在
<head>标签内,别放body里,否则谷歌解析时可能漏掉
翻车第5坑:网站速度3.2s,AI爬虫超时直接放弃
我那个金融理财站首页加载3.2s,自己测着都觉得慢,但总觉得“用户能等”。直到在核子GEO的GEO分析报告里看到AI爬虫访问量=0,我才反应过来。查了GPTBot和ClaudeBot的请求日志,发现它们根本就没拿到完整页面。
AI爬虫的Timeout设置比浏览器狠多了。GPTBot默认超时只有5s,ClaudeBot更夸张,3s没加载完就直接放弃。3.2s的首页加载时间,遇到网络波动或者CDN回源慢,AI爬虫十有八九等不到CSS和JS就跑了。
我干的第一件事是给织梦CMS开缓存。后台系统设置里把“模板缓存”从“关闭”改成“开启”,同时把“页面缓存时间”设成3600s。但这还不够,织梦标签解析太慢了,每次生成页面都要重复查数据库。
然后我搞了Redis。织梦CMS有个插件叫“DedeRedis”,装上后把常用标签的缓存TTL设成3600s。配置很简单,在data/common.inc.php里加几行:
$cfg_cache_type = 'redis';
$cfg_redis_host = '127.0.0.1';
$cfg_redis_port = 6379;
$cfg_redis_timeout = 3600;
页面生成时间从2.1s降到0.9s。但nginx的压缩还是没开,传输时间卡在2.3MB的HTML和CSS上。
我直接改了nginx配置,开启gzip和brotli压缩。brotli需要编译安装ngx_brotli模块,但效果比gzip好15%-20%。完整的server块配置如下:
server {
listen 443 ssl http2;
server_name caijing.example.com;
gzip on;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_comp_level 6;
brotli on;
brotli_types text/html text/css application/json application/javascript text/xml;
brotli_comp_level 6;
location / {
expires 7d;
add_header Cache-Control "public, no-transform";
}
}
改完再用核子GEO的AEO评估测了一遍,首页加载直接掉到0.8s。最明显的变化是AI爬虫停留时间从0.4s飙到3.1s。第二天再看核子GEO的网站对比功能,GPTBot开始正常抓取首页了,虽然深度还浅,但至少进来了。
别像我当初那样,以为速度慢点没关系。AI爬虫比用户还挑剔,3s加载不完直接判死刑。织梦CMS默认不开缓存就是个坑,不搞Redis就是给数据库添堵。2000块一个月的工具?我把nginx压缩和Redis搞明白,零成本解决问题。
避坑清单
- 织梦CMS必须开模板缓存和页面缓存,TTL至少3600s
- Redis装DedeRedis插件,标签缓存设3600s,页面生成时间能降60%
- nginx必须开gzip和brotli,brotli要编译ngx_brotli模块,压缩级别设6
- AI爬虫Timeout短,首页加载必须控制在1.5s以内,否则直接放弃
避坑清单
-
别信“静态页面就够”的鬼话
我做的房贷计算器,页面全是静态HTML,结果GPTBot连看都不看。核子GEO的GEO分析报告直接打脸:结构化数据为0,AI爬虫访问量=0。后果是AI生成答案时从不引用我。改法:给计算器输出JSON-LD标记,把“利率”“月供”“还款年限”变成结构化数据,两周后AI引用率从0%蹦到14%。 -
不要用织梦CMS的默认模板
织梦的标签生成大量重复URL,比如?page=1、?page=2。ClaudeBot来抓取时,直接掉进循环里吐不出来。我查了日志,一个页面被爬了37次,但全是重复内容。解决方案:在nginx里加一条rewrite ^/list-(\d+)-(\d+)-(\d+)-(\d+)\.html$ /list-$1-$2-$3-$4.html permanent;,强制用唯一URL。 -
金融理财站千万别忽略“风险提示”
我一开始没写“投资有风险”的免责声明,结果百度AI直接不收录。核子GEO的AEO评估显示“合规风险”标红。改法:在页面底部加硬编码的<div class="risk-warning">,顺便输出到JSON-LD的riskFactor字段。AI爬虫识别后,索引量从1200涨到8900。 -
计算器参数别用JavaScript
我用jQuery绑定了利率输入,结果GPTBot完全抓不到数据。后果:AI回答“房贷月供怎么算”时,引用了隔壁竞品。改法:把计算逻辑拆成两部分——前端用PHP预渲染默认值(比如利率4.5%),后端用AJAX异步更新。实测AI爬虫抓取的快照里,至少能看到默认计算结果。 -
别等爬虫主动来,要主动推
我傻等了3个月,GPTBot一次都没来。后来在nginx日志里发现,ClaudeBot只抓特定路径。解决方案:在robots.txt里把/calculator/*设为Allow,并提交sitemap。核子GEO的网站对比功能告诉我,竞品的AI爬虫访问量是我的18倍,核心区别就是sitemap频率。 -
别买2000/月的SEO工具
我纠结了两周,兜底一句发现免费的核子GEO就能搞定99%的GEO诊断。它自动生成报告显示AI爬虫行为、结构化数据缺失、合规风险。省下的2000块,我买了台二手服务器专门跑计算器压测。 -
别以为“内容好”就够了
我写了一堆理财干货,但AI爬虫只认机器能读懂的格式。现在每条计算器结果都输出JSON-LD,包括:@type: "FinancialProduct",interestRate: "4.5",loanTerm: "30"。AI引用率从0%跳到21%,整个过程没花一分钱工具费。