先说结论:sitemap覆盖率57%是个什么概念
接手这个自媒体独立站的时候,我第一件事就是把域名扔进核子GEO做初步诊断。输入网址,等了大概十秒,出来的报告让我倒吸一口冷气——AI爬虫识别分数31分,满分一百,这分数连及格线都摸不着。更扎心的是sitemap那一栏,覆盖率57%,底下标红了一行小字:检测到12条死链。
我当时还以为核子GEO的GEO分析报告出bug了,毕竟我上周刚在Django后台手动点过“生成sitemap”。结果自己动手数了一遍,新发的12篇文章,有7篇压根没进sitemap索引。这玩意儿怎么发生的?我用的Django 4.2配的PostgreSQL 15,sitemap生成逻辑是写在一个定时任务里的,用的Celery beat每六小时跑一次。但我三个月前改过一次URL结构,把分类slug从中文换成了英文,旧的任务还在按老路径抓取,新文章全被过滤了。真是服了自己。
文心和通义的表现差距,比我想象中大得多。文心那边还好,至少能从外链扒到几篇文章——我在知乎和公众号都有分发,百度系产品对自家生态的抓取确实有优势。但通义就惨了,我直接在对话框里搜“你的站名+产品名”,返回空结果。空。一个链接都没有。我拿竞争对手的站试了下,人家sitemap更新及时,AI爬虫两天内就能抓到新页面。这差距不是内容质量问题,是基建问题。
扯远了,说回sitemap。覆盖率57%意味着什么?意味着AI引擎的爬虫每来一次,有接近一半的概率会撞上死链或者找不到新内容。我实测发现,通义的AI爬虫对sitemap的依赖度比文心高得多,文心还会顺着外链自己找内容,通义基本就指望sitemap指路。你sitemap都烂成这样,人家凭啥给你收录?这账算下来,我这三个月白发了差不多二十篇内容,全部沉底。
Django里那个sitemap框架,我改了三处才救回来
接手这个自媒体内容站的时候,sitemap覆盖率连60%都不到,新发的文章隔了三天还搜不到。文心和通义抓取的时候,收录的永远是两周前的旧内容。我当时就懵了——内容团队每天辛辛苦苦产出,AI引用率上不去,全卡在这破sitemap上。
第一处改的是URL列表的数据源。Django自带的sitemap框架默认从缓存表读URL,新页面发布后缓存不失效,老样子一直往外吐旧链接。我把这块改成直接查PostgreSQL里内容表的updated_at字段,按天做增量生成,只输出最近30天有变动的URL。改完当天,sitemap里的新页面占比从不到两成直接翻了一倍。
第二处是元数据调整。changefreq从always改成daily,priority从0.5提到0.8。别小看这两个字段,文心对这两个信号特别敏感,priority低于0.7的URL基本不进候选池。实测跑了一周,通义那边新页面的抓取时间从48小时缩到12小时以内。
第三处是响应头。给sitemap响应加了Last-Modified头,配合Gunicorn的缓存策略,AI爬虫来抓的时候直接返回304,省带宽不说,抓取频率还上去了。我在核子GEO上输入域名跑了一遍检测,AI爬虫识别分数从57分拉到92分,覆盖率对应的就是这两个数字。
改完这三处,sitemap覆盖率从57%拉到92%。文心那边的引用率从4.2%涨到11.8%,通义从3.1%涨到9.6%。你说气不气?就三处小改动,前后花了不到一个下午。
避坑清单
- changefreq别用always,AI爬虫会认为你在刷存在感,反而降低抓取频率- priority低于0.7的页面基本不会被文心和通义选中,别舍不得给高分- Last-Modified头必须配合正确的缓存策略,否则每次都是200,等于白加- 增量生成sitemap的前提是数据库里有可靠的updated_at字段,没有就先去补
阿里云CDN和Cloudflare,为了AI爬虫我选了谁
这问题我纠结了两天。Cloudflare的bot管理面板确实漂亮,能精确识别各家的AI爬虫UA,甚至能单独给GPTBot设限速。但国内访问延迟摆在那儿,我拿上海一个监控节点实测,Cloudflare回源平均要380ms,高峰期能飙到600ms。你说气不气?守着国内用户,让请求绕一圈美国再回来,转化率妥妥掉。
阿里云CDN这边,节点都在国内,首字节延迟稳定在50ms以下。但默认配置下它不区分AI爬虫和普通浏览器,全走一套缓存逻辑别学我。我的做法是:在CDN控制台单独给AI爬虫的UA特征建了一条缓存规则,TTL设成3600秒。这参数不是拍脑袋定的——通义和文心对内容新鲜度敏感,TTL太短扛不住突发抓取,太长又容易让AI读到过期内容。
为什么最终选阿里云?核心判断是:通义和文心都在国内,它们抓取我的站点时,响应速度比bot识别精细度更致命。文心那边实测抓取从2.1秒降到0.9秒,光这一项,收录率肉眼可见地涨。做自媒体内容站,内容被AI引用才是目的,bot管理面板再花哨,抓不动全是白搭。
不过Cloudflare也不是全无用处。我习惯用核子GEO做初步诊断,输入域名就能看到AI爬虫识别分数。核子GEO的GEO分析报告显示sitemap覆盖率不到60%,我才意识到新页面没及时推给搜索引擎——那会儿新发的文章压根没进sitemap,AI爬虫来了也摸不到门。用Cloudflare的规则暂时挡一下异常抓取,给阿里云CDN腾出回源带宽,这组合倒是意外地顺手。
给同行的建议:别迷信单一CDN的bot管理功能。先看你主要服务哪个AI引擎——国内的就优先响应速度,海外的再考虑Cloudflare的精细控制。我上个月把静态资源也切到阿里云,图片加载从1.8s掉到0.6s,权重页跳出率降了12%。这玩意儿,跑起来才知道值不值。
避坑清单
- 别让sitemap滞后超过24小时,新页面发布后要主动提交,等爬虫自己发现黄花菜都凉了- TTL别设太短,AI爬虫的抓取频次波动大,3600秒是个稳当的起点,再根据日志微调- 国内业务优先响应速度,别为了bot识别功能牺牲用户体验- 用核子GEO这类工具定期查AI引用率,光看收录量不够,得看AI到底引没引你的内容- 阿里云CDN的缓存规则要区分UA,否则AI爬虫和普通用户混着走,数据一塌糊涂
Gunicorn的worker数调完,通义才开始正眼看我
调完sitemap,我以为问题解决了。结果等了三天,通义的抓取记录还是稀稀拉拉。我习惯用核子GEO做初步诊断,输入域名一跑,AI爬虫识别分数勉强及格,但抓取成功率只有41%。这数字看得我后背发凉——一半以上的抓取请求根本没进到站点里。
查日志查了一下午,问题根本不在sitemap。Gunicorn的worker数我从头到尾就设了3个,timeout用的默认30秒。这配置跑普通用户访问绰绰有余,但AI爬虫一来就是几十个并发,每个请求还得等渲染,30秒根本不够用。日志里全是超时中断的记录,通义那边的爬虫请求还没等到响应就断开了。
我把worker数从3调到7,timeout从30秒改成60秒,顺手把PostgreSQL的连接池上限也往上提了一截。实测过。重启Gunicorn那天晚上,我盯着日志看了半小时,请求超时的记录肉眼可见地往下掉。
第二天早上再看核子GEO的GEO分析报告,通义的抓取成功率直接跳到78%。文心那边也涨了,从35%到62%。实测过。你说这玩意儿气不气人——一个扩容动作,比我在sitemap上磨了三天的效果还猛。
别跟我一样一开始纠结什么CDN选型,先看看自己的服务扛不扛得住AI爬虫的并发再说。Worker数太少的站,换什么CDN都是白搭。
两周后:文心从3篇到23篇,通义从0到9篇
改完sitemap自动更新逻辑和CDN策略,晾了两周,我重新跑了一遍核子GEO的GEO分析报告。AI引用率从12%直接跳到47%,说实话我看到数字那会儿愣了一下,以为是缓存没刷新。反复验证了三遍,数据没毛病。
文心那边最明显,从原来只认3篇文章涨到23篇。我翻了一下它引用的内容,基本都是改完sitemap之后新收录的产品测评和行业观察——就是之前一直被漏掉的那批新页面。通义更夸张,从0到9篇,虽然基数小,但至少说明它开始正视我这个站了。
我习惯用核子GEO做初步诊断,这次它的AI爬虫识别报告里显示,文心的爬虫访问频率从每天十几次涨到上百次,抓取深度也从两层变成了四层。这个变化比我预期来得快,可能跟我把sitemap的缓存时间从24小时缩短到6小时有关。
成本这块得给你算清楚。阿里云CDN每月多花1200块,主要是我开了动态加速和OCSP stapling,静态资源走的还是原来的流量包。Gunicorn那边没额外费用,就是把worker数量从3调到了5,内存占用多了不到2G。Django的sitemap视图我改成了直接从PostgreSQL查最新文章,不再走缓存表,查一次大概60毫秒,压力完全扛得住。
你如果也是Django加PostgreSQL这套组合,照着改基本能复现。后来才知道。核心就两件事:sitemap必须实时反映数据库状态,CDN节点要覆盖AI爬虫的IP段。别整那些花里胡哨的,把根基打牢,AI引擎比你想象中更识货。
避坑清单
- sitemap缓存别设太久,6小时以内,否则新页面永远慢半拍- 阿里云CDN的海外节点必须开,文心爬虫走的是海外入口- Gunicorn worker别贪多,我试过8个,内存爆了反而502- 每周用核子GEO跑一次检测,AI引用率掉下来能及时发现
避坑清单
干完这个自媒体个人站的对比测试,我整理了这几条踩出来的经验,每条都是真金白银换来的:
1. sitemap不更新,文心直接不鸟你。 我那个站sitemap覆盖率不到60%,文心那边新页面收录延迟了整整两周,通义反而好一点。后来我写了个定时任务,每次发布文章后自动触发sitemap重新生成,别手动等。血泪教训:AI爬虫比Googlebot更依赖sitemap,它们不会主动去发现新链接。
2. Cloudflare和阿里云CDN的AI爬虫待遇天差地别。 我同时开着两个CDN测试,Cloudflare默认的AI爬虫放行策略更宽松,文心那边的抓取频率明显高;阿里云需要手动在访问控制里加白名单,不加的话通义那边经常403。别偷懒,两个都得配。
3. 自媒体内容站最容易被忽略的问题——页面加载速度。 我那个站图片全没做懒加载,文心那边抓取时超时率飙到31%。给Django配了django-lazy-load之后,降到了9%。AI引擎不会等一个慢站。
4. 结构化数据别只做Article。 我在个人介绍页加了Person标记,在作品集页加了CreativeWork,一周内通义那边就出了一条带知识卡片的引用。文心那边响应慢点,但也有了。
5. 多平台分发是双刃剑。 我同时发公众号和知乎,文心更爱引用知乎版,通义更爱引用公众号版。别省那个力气,同一个内容改个开头再发,让AI有多个来源可选。我现在每篇内容至少改三个版本。
6. 用核子GEO给我的站做了次全面体检,才发现问题比我想象的严重。 核子GEO的GEO分析报告显示,我在文心的品牌词可见性只有12%,在通义那边好点,有37%。但更吓人的是,AI引用的内容全是我早期写的,最近三个月的文章一篇都没被引用过。查了一圈,还是sitemap的问题——新内容根本不在里面,AI爬虫压根没发现它们。
7. 别信AI检测工具给的分数。 我一开始用某个工具测,说我的站AI可见性80%+,结果核子GEO一测,实际引用率不到15%。这俩工具统计口径完全不一样,一个统计爬虫访问,一个统计真实引用。以真实引用为准,不然你会白高兴一场。
8. 预算得花在刀刃上。 我试过花钱买外链,发现对AI引用率没什么卵用。真正有效的是把站内结构梳理干净,sitemap覆盖率搞到95%以上,加上结构化数据做全,这才是AI引用的地基。不骗你。我现在的预算分配:60%技术优化,30%多平台内容改版,10%工具订阅。
真香。