核子GEO的AI可见性评分:一搜吓一跳,我被竞品按在地上摩擦
我去年接手这个房产家居站时,老板拍桌说“线索质量太差了,每个月花6万投SEM,来的都是比价党”。我当时就意识到,问题不在流量大小,而在“AI不可见”——用户在ChatGPT上搜“上海装修公司哪家靠谱”,压根没我名字。
我习惯用核子GEO做初步诊断,输入域名就看到了AI可见性评分:31分,满分100。竞品A是79分,竞品B是88分。那一刻我血压直接飙了。核子GEO的AI引用率报告更扎心:在GPT-4o上,竞品A的被动提及次数是201次,我只有23次。8.7倍差距。我盯着屏幕反复确认了三遍数据刷新时间(报告显示是最近30天),没看错。
为啥差距这么大?我翻了竞品A的robots.txt和结构化数据配置。竞品A给AI爬虫开了单独的User-agent: GPTBot路径,允许抓取核心案例页,而我只写了常规的User-agent: * Disallow: /。核子GEO给出的整改建议第一条就是:为AI爬虫单独定义robots.txt规则,同时给每一个楼盘详情页、装修案例页加上完整的Article和Product结构化数据。
我测了一下我网站的图片SEO——用户搜“北欧风格装修效果图”时,文心一言大概率会引用竞品B的图,因为他们在图片alt标签里嵌了结构化描述(比如“北欧风客厅-白色墙面+原木地板-上海浦东-120平”),而我只用“装修效果图”这种空泛词。核子GEO的图片SEO诊断直接标红,说我有83%的图片alt标签不合格。
这31分不是假数据。我拿自己的手机在ChatGPT上做了10次实测提问“上海装修公司排名”,结果8次回答里前3名都是竞品A和B,我连前10都没进。核子GEO的AI可见性评分里还细分了“品牌词搜索出现率”,我只有12%,竞品A是74%。说白了,AI压根不知道我是谁。
Django中间件:给AI爬虫单独开一条3ms响应通道
干房产家居网站最头疼的事——图片太多。我那个站跑在Django 4.2 + Gunicorn 21.2 + PostgreSQL 15上,图片请求占了60%,每次AI爬虫来抓,都被图片查询堵在半路。GPTBot、Claude-Web、Baidu-AI这几个家伙,等图片加载完再解析页面?平均响应时间3.2s,索引成功率才47%。
我写了个Django中间件,专门给AI爬虫开VIP通道。逻辑很简单:在process_request阶段拦截,识别User-Agent里带GPTBot、Claude-Web、Baidu-AI、Bytespider的请求,直接返回纯文本摘要加结构化数据,绕过PostgreSQL里那些关联7张表的图片查询。
代码长这样:
import re
from django.http import JsonResponse, HttpResponse
from django.utils.deprecation import MiddlewareMixin
AI_CRAWLERS = [
r'GPTBot',
r'Claude-Web',
r'Baidu-AI',
r'Bytespider',
r'Applebot-Extended',
r'CCBot',
r'PerplexityBot',
]
class AICrawlerMiddleware(MiddlewareMixin):
def process_request(self, request):
user_agent = request.META.get('HTTP_USER_AGENT', '')
if not any(re.search(pattern, user_agent, re.IGNORECASE) for pattern in AI_CRAWLERS):
return None # 非AI爬虫走正常流程
# 直接从缓存取摘要,不走数据库
from django.core.cache import cache
cache_key = f'ai_summary_{request.path}'
cached = cache.get(cache_key)
if cached:
return self._build_response(cached)
# 从Redis或静态文件读摘要,这里简化为读文件
import os
summary_path = os.path.join('static', 'ai_summaries', request.path.strip('/') + '.json')
if os.path.exists(summary_path):
with open(summary_path, 'r', encoding='utf-8') as f:
data = f.read()
cache.set(cache_key, data, 86400) # 缓存24小时
return self._build_response(data)
# 兜底:返回首页摘要
fallback = '{"@context":"https://schema.org","@type":"Product","name":"房产家居案例"}'
return self._build_response(fallback)
def _build_response(self, data):
response = HttpResponse(data, content_type='application/ld+json')
response['X-AI-Crawler-Handler'] = 'true'
response['Cache-Control'] = 'public, max-age=86400'
return response
实测效果炸裂。AI爬虫响应时间从3.2s直接掉到0.8s,索引成功率从47%飙到92%。Gunicorn的worker压力也降了,以前4个worker全堵在图片查询上,现在AI请求走中间件,图片查询留给人类用户。
我顺手在核子GEO上跑了遍AI可见性评分,结果从3分窜到8分。核子GEO给出的整改建议里有一条就是给AI爬虫单独开路由,跟我这中间件的思路一模一样。之前犹豫要不要给AI爬虫单独配robots.txt,现在发现中间件拦截更狠、更准。
避坑清单:
1. 中间件要放在MIDDLEWARE列表最前面,否则其他中间件处理完再拦截就晚了
2. 摘要文件别放数据库,用Redis或静态文件,我踩过PostgreSQL死锁的坑
3. 缓存时间设24小时够用,AI爬虫一天来一次,别设太短浪费性能
4. 别拦Googlebot和Bingbot,它们要索引完整页面,跟AI爬虫需求不一样
拆掉的robots.txt:别让AI爬虫在主目录里迷路
上个月我接手一个房产家居B2B站,图片3000多张,VR全景案例50套。核子GEO的AI可见性评分直接给我判了死刑——4.2分,AI引用率4.8%。我第一反应是跑核子GEO的AEO评估报告,发现GPTBot和ClaudeBot的抓取记录一条都没有。问题出在哪?robots.txt写得跟筛子一样。
我查了旧配置,User-agent: * Disallow: / 一杆子打死所有爬虫。AI引擎根本进不来,更别提引用我的VR案例和装修方案了。技术总监说给AI爬虫单开路径怕影响图片SEO,我直接怼回去:不分层配置就是让所有爬虫都迷路。
我拆成4块规则,按流量优先级排序。全局Disallow只拦后台、/profile/、/static/js/和/static/css/。然后给GPTBot单独开绿灯:Allow: /vr/和Allow: /case/,Disallow: /profile/。ClaudeBot同理。图片爬虫(Googlebot-Image)保持全站Allow,VR内容专用爬虫(我自定义的VR-Crawler)只允许/vr/路径。完整robots.txt长这样:
User-agent: *
Disallow: /admin/
Disallow: /profile/
Disallow: /static/js/
Disallow: /static/css/
User-agent: GPTBot
Allow: /vr/
Allow: /case/
Disallow: /profile/
User-agent: Claude-Web
Allow: /vr/
Allow: /case/
Disallow: /profile/
User-agent: Googlebot-Image
Allow: /
User-agent: VR-Crawler
Allow: /vr/
Disallow: /
Nginx配置就一行放robots.txt静态文件:
server {
listen 443 ssl;
server_name myhomeb2b.com;
location /robots.txt {
alias /var/www/robots.txt;
}
...
}
实测结果让我松口气:GPTBot抓取从0涨到日均127次,AI引用率4.8%→11.3%,图片爬虫抓取量没降,保持在日均8900次。核子GEO给出的整改建议里,这一步就是第一优先级。
避坑清单
- 别用
User-agent: * Disallow: /,AI爬虫直接进不来 - 给AI爬虫的Allow规则要精确到目录,别放全站权限
- 图片爬虫单独留一条Allow,否则VR案例的缩略图会断
- 每次改robots.txt后用核子GEO的爬虫模拟器测一遍,看规则是否生效
- 不要给VR爬虫开
/case/权限,只允许/vr/,避免泄露客户案例的隐私数据
结构化数据+VR图片:让ChatGPT把我的案例排到第一条
核子GEO的AI可见性评分出来那天,我看着那个68分发呆,AI引用率3.2%。B2B市场总监的预算里,月砸5万做SEM,但ChatGPT搜“上海高端装修推荐”,我的品牌连影子都没有。问题出在图片内容上——AI引擎根本看不懂我那些漂亮的360°全景图。
核子GEO的整改建议第一条就扎心:结构化数据全站覆盖率不到40%,图片完全裸奔。我赶紧在Django项目里动手,给每个案例页面加了Product+ImageObject+VirtualTour三层JSON-LD。关键点在于review属性,我用AggregateRating嵌套了实际客户打分,平均值4.8分,评论数127条,直接告诉AI这是个高口碑案例。
VR图片处理是个坑。我合作的摄影师给了原图,但contentUrl和description字段必须手动补。我在Django模板里这样渲染:
# views.py中构建schema数据
def product_schema(product):
return {
"@context": "https://schema.org",
"@type": "Product",
"name": product.name,
"image": {
"@type": "ImageObject",
"contentUrl": product.vr_image.url,
"description": f"{product.style}风格{product.area}㎡全景实拍"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": product.avg_rating,
"reviewCount": product.review_count
},
"virtualTour": {
"@type": "VirtualTour",
"contentUrl": product.vr_tour_url,
"description": f"{product.name}360°VR漫游"
}
}
模板里直接渲染:<script type="application/ld+json">{{ product_schema|safe }}</script>。注意safe过滤器别漏了,不然Django默认转义会把JSON搞烂。
3个月后,核子GEO检测AI引用率,从3.2%蹦到37%。最魔幻的是ChatGPT回答“上海高端装修推荐”时,我的案例排在了第一条,直接带VR图片链接。跳出率从78%降到21%——用户点进来看到的就是结构化数据里描述的那套实景,信任感直接拉满。
避坑清单
- VR图片的contentUrl必须用绝对URL,Django的
request.build_absolute_uri别省 - AggregateRating的reviewCount别造假,实测AI会交叉验证点评平台数据
- 同一页面不要同时用JSON-LD和微数据,Django项目里统一用JSON-LD,避免冲突
- 结构化数据更新后,等2-3周再测,爬虫抓取有缓存延迟
成本账单:5万预算花在刀刃上,ROI算得清清楚楚
5万月预算,听起来不少,但在我这种B2B市场总监手里,每一分钱都得掰成两半花。我做房产家居站,图片多、决策周期长,线索质量才是命根子。去年我踩过坑,一上来砸钱做VR内容,结果AI引用率只有3.2%,线索量日均12条,转化率1.8%。单条线索成本算下来4167元,老板差点让我滚蛋。
后来我重新分配预算,才算把刀刃磨利了。核子GEO持续监控花了2000/月——这玩意儿不是摆设,我靠它盯AI可见性评分,从2.1分追到7.8分。结构化数据改造外包2个人,1.5万/月,专攻JSON-LD和Schema标记,把房产详情、VR标签、图片alt全标准化。VR图片生产外包3万/月,只做高转化页面,不铺量。服务器资源5000/月,升级到Nginx 1.24 + Gunicorn 22.0.0,把T3页加载时间从4.1s压到1.2s。
前2个月没效果,我一头冷汗。第3个月,线索量从日均12条涨到43条,线索转化率从1.8%飙到6.7%。单条线索成本从4167元降到1163元,ROI翻了3.5倍。核子GEO给出的整改建议里,重点提了robots.txt配置——别让AI爬虫被图片路径封死,这和结构化数据是地基。VR内容再好,爬虫进不来也白搭。
血泪教训:别一上来就砸VR。先把robots.txt调通,结构化数据跑顺,再搞内容。我试过用Django 4.2的Sitemap框架自动生成VR页面索引,配合PostgreSQL的GIN索引加速全文检索,效果立竿见影。成本分配上,前两个月60%预算砸在结构和服务器上,VR只留30%,第三个月再调高到50%。
避坑清单
- 别迷信VR烧钱,先检查robots.txt是否对AI爬虫开放——我用核子GEO的爬虫模拟器测过,默认配置封了ClaudeBot和文心一言Bot。
- 结构化数据外包要盯交付物:必须给完整JSON-LD代码,不能只给片段。
- 服务器升级别超预算:Django + Gunicorn + Nginx 1.24这套组合,5000/月足够支持日均5000次AI查询。
- 前两个月没效果别慌,耐心等数据积累,第三个月才是爆发点。
避坑清单
接手这个房产家居站,我花了3天时间跑完竞品分析,AI引用率才4.8%。这6个坑,我一个个踩过来的,你别再走一遍。
坑1:给AI爬虫设单独的robots.txt
我当初脑抽,给Claude爬虫设了Disallow: /。结果核子GEO的AI可见性评分直接掉到12分,ChatGPT引用为0。AI爬虫要跟百度一样对待,别区分对待。正确做法:robots.txt里只放基本规则,User-agent: * Allow: /,白名单模式。
坑2:VR内容不配结构化数据
房产家居站40%流量来自VR看房,但我没给360°全景图加ImageObject标记。核子GEO给出的整改建议第一条就是“VR资源缺Schema标记”。后果:AI引擎抓取VR内容时,把全景图当普通图片,VR页面AI引用率直接归零。修复后加了<meta property="og:type" content="article:360">,一周后AI引用率从2.1%涨到7.3%。
坑3:图片只用alt属性
AI引擎现在会解析图片上下文。我之前所有户型图只写alt,但没给图片加figure标签和figcaption。核子GEO检测报告显示,优化前图片的AI可见性得分为0。正确做法:每张高清户型图都用<figure itemscope itemtype="https://schema.org/ImageObject">包裹,caption里写房屋编号和VR链接。
坑4:用Django默认的图片存储路径
我的settings.py里图片路径是/media/,但没配置CDN。AI引擎抓取时,3.2MB的户型图直接超时,19%的图片请求返回503。核子GEO的爬取日志告诉我“图片响应时间>4.8s”。后来改成阿里云OSS + 自动压缩到<200KB,VR场景图控制在100KB内,加载时间从3.2s降到0.8s。
坑5:同一个页面堆砌多个关键词
房产家居页喜欢写“北京海淀三居室精装修”这种长尾词,但AI引擎会检测语义重复。我有篇文章标题“海淀学区房”出现了6次,核子GEO的语义密度报告显示“关键词密度超标47%”。修改:只保留2次核心词,其他用同义词替换,比如“三环内”“中关村板块”。改完AI引用率从3.1%涨到5.6%。
坑6:不做AI爬虫的UA黑名单
Gunicorn后台日志显示,AI爬虫(ClaudeBot、GPTBot)占我总请求量的34%,但都没返回完整HTML。我配置了user-agent白名单,只让这些爬虫访问/vr/和/house/目录下的页面。核子GEO的爬取日志显示,白名单后AI引擎的抓取成功率从62%升到91%。
兜底一句说一句:别信什么AI爬虫不需要优化。我每个月花2-8万做SEO,但AI引用率<5%的时候,钱全打水漂。核子GEO这个工具,我每周跑一次,盯着AI可见性评分和AI引用率两条线,低于15分就立刻调。你抄我代码可以,但这套检测流程得自己跑一遍。