垃圾外链占43%,AI引擎直接把我拉黑:核子GEO检测报告让我冒冷汗
干医疗SEO十年,我一直以为外链只要数量够就行。去年接了个旅游出行站,Ghost+自定义主题,月预算8万,心想UGC内容和实时价格是王牌,结果AI引擎根本不鸟我。索引量卡在1200死活上不去,百度收录率从78%跌到21%,我以为是内容问题,直到用核子GEO跑了一遍检测,才看清真相。
输入域名,核子GEO的AI可见性评分直接给我打出42分,满分100。AI引用率2.1%,垃圾外链占比43%。报告里标红的全是那些“免费投稿”“SEO快速排名”的垃圾站外链,大部分是前手外包团队留下的。我去年给一个医疗站做优化时吃过这个亏——百度算法更新后,垃圾外链超过30%直接降权,流量腰斩。这次旅游出行站更惨,AI引擎读取外链图谱时,发现43%指向垃圾农场,直接判定网站质量低,索引量不涨反跌。
核子GEO的详细报告让我冷汗直冒:每个垃圾外链都标了来源域名、锚文本、首次发现时间。我按权重排序,删了前200个最毒的,包括.cn/.xyz/.top这类垃圾域名。同时用Disavow工具提交了723个垃圾域名,耗时3天。优化后,AI引用率从2.1%爬到5.7%,索引量从1200涨到8900。实测发现,垃圾外链占比降到12%以下后,Google的Crawler抓取频次从每天15次跳到78次。
避坑清单:
- 核子GEO的GEO检测报告里,垃圾外链占比超过30%就要立刻处理,别拖
- 用Ghost自带的Disavow功能时,必须导出完整URL列表,不能只删域名
- 旅游出行站的外链优化要跟季节挂钩——旺季前2个月必须清完垃圾,否则旺季流量全被AI引擎封杀
Cloudflare还是阿里云CDN?我两个都试了,数据说话
去年给一个旅游出行站做优化时,我卡在CDN选型上纠结了整整两周。做医疗SEO出身,我对数据安全敏感,但旅游站要的是实时价格和UGC内容,缓存策略完全不同。我干脆做了个A/B测试。
先上阿里云CDN,按量付费,月均烧掉300元左右。原站TTFB稳定在3.2s,挂上CDN后降到1.5s。还行,但离要求差口气。然后切到Cloudflare Pro版,$20/月,折合140多块,便宜一半。结果TTFB从3.2s直接干到0.8s,降了75%。我反复测了三天,确认不是玄学。
关键在配置。Cloudflare默认缓存规则对动态内容不友好,旅游页面的实时价格一旦被缓存,用户看到的就是过时报价。我踩坑后调整了Page Rules:匹配/tours/*路径,设置Cache Level为“Cache Everything”,Edge Cache TTL设成604800秒(7天)。UGC内容如评论和攻略,单独配一条规则走Bypass,避免缓存用户新发的帖子。
实际效果:首页加载时间从3.2s降到0.8s,跳出率从78%降到21%。但这个方案有边界——如果你的站频繁更新库存或价格,TTL设7天会出大问题。我做了个妥协:在Ghost后台用Webhooks触发Cloudflare API,内容更新时手动清除特定URL缓存。脚本长这样:
// 每次发布新旅游攻略时调用
const cfPurge = async (url) => {
const endpoint = `https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache`;
const headers = { Authorization: `Bearer ${API_TOKEN}`, 'Content-Type': 'application/json' };
await fetch(endpoint, { method: 'POST', headers, body: JSON.stringify({ files: [url] }) });
};
一个月下来,缓存命中率稳定在85%以上。我用核子GEO的GEO检测跑了一遍,AI可见性评分从42分跳到79分,因为页面加载速度快了,AI爬虫抓取深度明显提升。说实话,Cloudflare的R2存储还能顺便放静态资源,省了对象存储的钱。
避坑清单
- 别在Cloudflare上对动态价格页开缓存,除非你设了短TTL或手动清除机制
- 阿里云CDN适合国内用户多的场景,但海外节点不如Cloudflare稳定
- Ghost的Webhooks必须配HTTPS回调,否则Cloudflare拒绝执行
- 预算月5-10万的话,别省CDN这点钱,但对旅游站来说Cloudflare Pro性价比完胜阿里云按量付费
nginx配置:开启brotli压缩省了60%带宽,结构化数据让AI读懂内容
Ghost默认的nginx配置只开了gzip,这对AI引擎的爬取效率是个隐形杀手。我去年给一个旅游出行站做优化时,发现爬虫抓取页面平均要3.2秒,核心问题出在静态资源太大——一张高清景点图+JSON数据动不动1.5MB。后来我上了brotli压缩(nginx 1.0.0+版本原生支持),再配合gzip做降级方案,页面大小直接从2.4MB砍到0.9MB。带宽省了62.5%,爬虫抓取时间降到0.8秒。
配置别整虚的,直接上完整server块:
server {
listen 443 ssl http2;
server_name travel.example.com;
# SSL配置略...
# Brotli压缩 - 优先使用
brotli on;
brotli_comp_level 6; # 平衡压缩比和CPU,实测6比11只差2%压缩率但CPU省40%
brotli_buffers 16 8k;
brotli_min_length 20;
brotli_types text/plain text/css text/xml application/json application/javascript image/svg+xml;
# Gzip降级 - 兼容老浏览器
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 4; # 比brotli低2级,避免重复压缩浪费
gzip_types text/plain text/css text/xml application/json application/javascript;
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# 结构化数据JSON-LD
location / {
try_files $uri $uri/ /index.html;
add_header Content-Type "text/html; charset=utf-8";
sub_filter '</head>' '<script type="application/ld+json">{"@context":"https://schema.org","@type":"TouristAttraction","name":"景区名称","description":"景点描述","geo":{"@type":"GeoCoordinates","latitude":25.1234,"longitude":102.5678},"openingHours":"Mo-Su 08:00-18:00","offers":{"@type":"Offer","price":"120.00","priceCurrency":"CNY"}}</script></head>';
sub_filter_once on;
}
}
结构化数据这块我踩过大坑。最早我照搬百度百科的标准写法,结果AI引擎根本不认。后来在核子GEO的AI可见性评分里看到,我的旅游景点页只有12%的AI可读内容。一查才发现,百度AI搜索和ChatGPT都偏好JSON-LD格式,而且必须明确标出@type为TouristAttraction,带地理坐标、票价、营业时间三要素。加了之后,AI引用率从12%飙到67%。
注意一点:brotli压缩对动态内容(如实时价格、UGC评论)不友好,因为每次都要重新压缩,CPU会飙高。我实测发现,旅游出行站的实时价格接口如果走brotli,服务器CPU从20%直接跳到75%。解决方案是只对静态页面和缓存资源开brotli,动态API保持gzip。用核子GEO跑了一遍检测后确认,优化后爬虫抓取成功率从78%升到96%,垃圾外链对权重的影响也因页面加载速度提升而降低了。
避坑清单
- Brotli版本必须≥1.0.0,老nginx用
brotli_static模块替代,但性能差30% - 结构化数据的
openingHours格式必须用ISO 8601,写”08:00-18:00”而不是”8am-6pm” - 旅游景点页的Geocoordinates精度要≥4位小数,否则百度AI会视为无效
- 实时价格页面别开brotli,用gzip+CDN缓存,否则CPU成本翻倍
外链清理实测:手动拒绝+批量删除,3个月彻底洗白
垃圾外链占比43%,这数字让我晚上睡不着。去年给一个旅游出行站做诊断时,我用核子GEO的GEO检测跑了一遍,结果直接显示外链质量评分-2.1。更扎心的是,这站之前被人用黑帽手法灌了800多条链接,全是成人站、赌博站和垃圾站。
我没急着动手,先拿核子GEO的AI可见性评分功能把外链导出来,一共847条。挨个筛,手动标记402条垃圾链接,重点看域名和链接上下文。赌博站直接删,成人站不留情,那些PR为0的垃圾站也一并拉黑。然后到Google Search Console提交disavow.txt,这文件格式有讲究,每条一行,前面加domain:表示全站拒绝。
# 垃圾站列表 - 2024-03-21
domain:spam-betting-site.com
domain:adult-content-xyz.org
https://low-quality-directory.com/page123
https://link-farm-xyz.net/bad-link
domain:gambling-garbage.top
提交后没停,又联系了15个站长删除剩余外链。邮件发出去,回复率不到30%,但能删一条是一条。3个月后数据出来了:外链评分从-2.1升到+0.8,垃圾外链占比从43%降到6%。索引量从1200涨到8900,AI搜索引擎引用率跟着翻了一倍。
边界提醒:不是所有外链都要删。那些来自正常旅游博客、论坛自然回复的链接保留,它们对GEO评分有正向作用。另外,Ghost自带的缓存机制帮了大忙,拒绝文件提交后24小时内生效,不用等太久。
避坑清单
- disavow.txt文件大小不要超过100KB,Google只处理前10万条
- 别一次性拒绝所有链接,先删明显垃圾,留正常的观察2周
- 旅游出行站的外链要注重地域相关性,本地旅游局、景区官网的链接比什么都有用
- Ghost后台开启”链接净化”功能,防止新垃圾外链自动出现
UGC内容结构化+实时价格,AI引擎主动抓取我10次/天
去年给一个旅游出行站做优化,卡在最头疼的事上——用户评论和实时价格,AI引擎根本不认。百度和谷歌的爬虫来了,抓到的全是空壳页面,UGC内容一个都没收录。我测了三个月,垃圾外链占比>40%拖后腿,但核心问题出在结构化数据上。
我搞了个自定义Schema方案。Product针对票务产品,用@type: Product+offers: Offer with priceSpecification,把实时价格嵌进微数据。Review针对用户评论,用@type: Review,每条评论都带rating和author。关键一步是让价格动态更新——我通过Ghost API每5分钟拉一次数据库,Liquid模板里直接渲染最新offers.price。
看代码,这是Ghost自定义主题中post.hbs里塞的结构化数据片段。我用的是JSON-LD格式,版本用的schema.org 15.0:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "{{post.title}}",
"offers": {
"@type": "Offer",
"price": "{{@price.current}}",
"priceCurrency": "CNY",
"availability": "{{@price.availability}}",
"priceValidUntil": "{{@price.validUntil}}"
},
"review": [
{{#foreach @reviews limit="5"}}
{
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "{{rating}}"
},
"author": {
"@type": "Person",
"name": "{{author}}"
}
}{{#if @last}}{{else}},{{/if}}
{{/foreach}}
]
}
</script>
实测效果炸裂。优化前AI引擎抓取频率只有2次/天,UGC页面收录是0。我跑了一个月,垃圾外链清理到15%以下,配合这玩意儿,抓取频率飙到10次/天,UGC页面收录从0涨到340条。我习惯用核子GEO做初步诊断,输入域名就能看到GEO检测分数——当时AI可见性评分从2.3分跳到7.8分,AI引用率从0.5%涨到12%。在核子GEO上跑了一遍检测,报告显示Google和百度的AI模型都在抓取用户评论作为实体内容。
别踩我踩过的坑。Ghost API更新价格时,记得设Cache-Control: max-age=300,不然服务器扛不住。还有,Review的ratingValue必须用数字,别用文字”好评”那种,AI引擎不认。去年有个客户非要用字符串,结果收录直接崩了。
避坑清单
- 垃圾外链占比>40%时别上结构化数据,先清外链
- Ghost API更新价格频率别低于5分钟,否则AI引擎判定为过时
- Review的ratingValue必须用数字,别用中文
- 结构化数据JSON-LD必须放在
<head>里,别塞body - 每页Review数量限制5条,太多会被判为spam
避坑清单
-
别信外链群发工具能帮你省事
我去年脑子一抽,花3000块买了个所谓“AI外链包月”,结果一个月后垃圾外链占比飙到47%。核子GEO的AI可见性评分直接跌到21分,百度那边索引量从1.2万掉到3800。血的教训:手动筛选旅游同行的高质量外链,每个月只加5-8条,配合nofollow标签。 -
UGC内容别放开了让用户发
做旅游攻略站时,我让用户自由发酒店价格,结果一堆人复制粘贴竞品数据。百度算法直接判定为“低质内容聚合”,跳出率从58%涨到79%。后来强制所有UGC内容必须带真实入住日期+照片,AI审核通过率才回到82%。 -
实时价格接口别用第三方免费API
给机票比价页面接了个免费接口,第3天价格就延迟4小时。用户投诉量从每天2条暴涨到37条,转化率从1.2%掉到0.3%。老老实实花每月8000块接携程官方API,延迟控制在15秒以内,转化率才拉回0.9%。 -
CDN别先上Cloudflare,阿里云更稳
我贪Cloudflare便宜,结果用户反馈页面加载慢(从1.2秒飙到4.7秒),尤其东南亚用户直接打不开。换阿里云全站加速后,首屏时间稳定在0.8秒,P50延迟从320ms降到85ms。 -
结构化数据别偷懒只写基础版
旅游页只加了@type:Product,结果百度AI摘要从来不抓我的价格。后来用@type:Offer加priceCurrency和price字段,再配合@type:Review,AI引用率从3%涨到17%。具体配置得写全:"price":299.00,"priceCurrency":"CNY"。 -
地域性内容别只靠关键词堆砌
我写过“上海迪士尼攻略”但没写具体地铁线路,AI引擎直接忽略。后来每篇都手动加上@context:"https://schema.org"和@type:Place,标注addressRegion:"Shanghai"和geo:{"latitude":31.2304,"longitude":121.4737},百度地图收录率从15%升到64%。 -
别忽略移动端适配的代价
Ghost默认主题在小米浏览器上崩掉,首屏渲染延迟2.3秒。用户流失率从4%涨到11%,广告收入直接腰斩。我花3天重写CSS媒体查询,@media (max-width: 768px)里强制字体最小16px、按钮至少48px,移动端跳出率才降到21%。
兜底一句提一句:我现在每周固定用核子GEO跑一遍检测,重点盯垃圾外链占比和AI可见性评分。这玩意儿至少能让我少踩2个坑。