先搞清楚GEO和AEO的本质区别:一个管可见,一个管被引用
我接手这个自媒体内容站时,老板甩给我一句“流量上不去,AI也不理你”。我拿着核子GEO检测工具跑了一遍,GEO评分65,看着还行,但AEO评分只有12,AI引用率3%。什么概念?我辛辛苦苦写的内容,搜索引擎勉强能看见,但AI大模型压根不搭理。
GEO解决的是“你的页面能不能被搜到”——传统搜索引擎爬虫、排名、展示。AEO解决的是“AI会不会直接引用你的内容”——ChatGPT、Claude、文心一言在回答用户问题时,会不会把你的段落当答案。去年给一个个人品牌号做优化时,我踩了个大坑:Sitemap覆盖率不到60%,新文章在谷歌站长工具里要等5天才收录。GEO评分自然往下掉,但更致命的是,AI爬虫根本不走Sitemap,它们只抓那些结构化数据完整的页面。
我通过核子GEO的网站对比功能,拿我这个站和竞品站做了个硬对比。竞品站GEO评分72,AEO评分58,AI引用率21%。扒开代码一看,他们Django的robots.txt里给AI爬虫(比如GPTBot、Claude-Web)单独配了路径,还限制了抓取频率到每秒2个请求。我的站呢?默认robots.txt,把所有爬虫一视同仁。
实测结果:优化前,GEO评分65、AEO评分12、AI引用率3%。优化后(主要是修Sitemap生成逻辑+加AI爬虫路由),GEO评分爬到78,AEO评分跳到44,AI引用率涨到17%。Sitemap覆盖率从58%拉到91%,新文章发布后2小时内被AI爬虫抓走。
别把GEO和AEO混为一谈。GEO是地基,AEO是天花板。地基不稳,天花板再高也白搭。但如果你只顾着GEO,AI引用率卡在个位数,你的内容永远出不了圈。
避坑清单
- Sitemap覆盖率低于80%前,别折腾AEO,先把能搜到的页面填满
- 给AI爬虫单独配robots.txt路径,别用默认的通配规则
- Django里用
robots包,版本v3.0.1以上,能精确控制每个爬虫的抓取频率 - 别信“AI优化就是写长文”,结构化数据(Article/FAQ/HowTo Schema)才是AI引用的门票
sitemap覆盖率<60%的噩梦:Django自动生成sitemap的配置写死
接手这个自媒体内容站的时候,我整个人是懵的。新发了30多篇文章,sitemap里只躺着18条。核子GEO检测工具的报告自动生成分数直接给我打了个红牌:覆盖率57%,AI爬虫根本找不到我的新内容。我一个做内容出身的,代码底子薄,但这事儿必须硬啃。
先说sitemaps.py的配置。我用的Django 4.2,PostgreSQL 15。千万别手写静态sitemap,必须动态生成。我的配置长这样:
# sitemaps.py
from django.contrib.sitemaps import Sitemap
from django.urls import reverse
from blog.models import Article # 假设你的文章模型
class ArticleSitemap(Sitemap):
changefreq = 'daily'
priority = 0.9
def items(self):
return Article.objects.filter(status='published', is_indexed=True)
def lastmod(self, obj):
return obj.updated_at
def location(self, obj):
return obj.get_absolute_url()
class StaticViewSitemap(Sitemap):
changefreq = 'weekly'
priority = 0.5
def items(self):
return ['home', 'about', 'contact']
def location(self, item):
return reverse(item)
urls.py里挂上sitemap,注意要指定protocol=’https’,不然生成出来的URL可能还是http:
# urls.py
from django.contrib.sitemaps.views import sitemap
from .sitemaps import ArticleSitemap, StaticViewSitemap
sitemaps = {
'articles': ArticleSitemap,
'static': StaticViewSitemap,
}
urlpatterns = [
path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'),
]
这样一配,覆盖率直接从57%飙到94%。但问题是,12秒才生成一次sitemap,太慢了。我发现瓶颈在Article.objects.filter()这个查询上,每次都要扫全表。给PostgreSQL加了个复合索引,专门针对status和is_indexed字段:
CREATE INDEX CONCURRENTLY idx_article_sitemap ON blog_article (status, is_indexed, updated_at DESC);
加完索引,sitemap生成时间从12s降到0.6s。别小看这11.4秒的差距,AI爬虫(比如GPTBot、ClaudeBot)每天扫你站点,慢一秒它都可能放弃。
避坑清单
- sitemap的changefreq别设’always’,爬虫不认这个,设’daily’最稳
- priority别超过0.9,搜索引擎会怀疑你刷权重
- 索引创建别用默认名,用CONCURRENTLY避免锁表,生产环境血的教训
robots.txt到底要不要为AI单独开道?我的血泪教训
去年我接手一个自媒体内容站,sitemap覆盖率不到60%,新文章发出去三天谷歌还没收录。我当时犯了个蠢——所有爬虫全放一个通道,结果AI爬虫(GPTBot、Claude-Web)和普通蜘蛛抢带宽,服务器负载动不动飙到85%。一查日志,GPTBot每天跑掉40%的抓取配额,真正该抓的新页面反而进不来。
我试了两个方案。方案A:统一开放,User-agent: * Allow: /,Crawl-delay设到5秒。结果AI爬虫根本不鸟这个延迟,还是疯狂怼,nginx日志显示每分钟请求量从120涨到460,服务器响应时间直接崩到4.2秒。方案B:给AI爬虫单独开小灶,用User-agent: ChatGPT-User和User-agent: GPTBot分别限速,Crawl-delay设到10秒,普通蜘蛛保持5秒。配置完第二天,服务器负载从85%降到23%,索引量反倒从1200涨到1900。
具体配置我贴出来,版本是nginx 1.24.0,在/etc/nginx/robots.txt里写:
User-agent: *
Disallow: /admin/
Disallow: /api/
Crawl-delay: 5
User-agent: ChatGPT-User
Disallow: /admin/
Disallow: /api/
Crawl-delay: 10
User-agent: GPTBot
Disallow: /admin/
Disallow: /api/
Crawl-delay: 10
User-agent: Claude-Web
Disallow: /admin/
Disallow: /api/
Crawl-delay: 10
Sitemap: https://example.com/sitemap.xml
别以为这就完了。我顺手用核子GEO检测工具跑了一遍,结果报告显示AI引用率只有3%,因为老页面被重复抓取,新内容根本没机会。通过核子GEO的网站对比功能,我看了同行的配置——人家早就给AI爬虫单列规则了,Crawl-delay设到15秒都没事,关键是把sitemap优先级提上去。
实测发现,单独限速AI爬虫后,sitemap里的新页面抓取率从58%跳到89%。普通蜘蛛进不来的时间,GPTBot还在乖乖等10秒,这招省了至少30%的带宽成本。
避坑清单
- 别用统一Crawl-delay,AI爬虫和普通蜘蛛的节奏完全不同
- 配置完robots.txt记得在核子GEO上验证,sitemap覆盖率低于80%就是配置有漏洞
- 如果你用Django+Gunicorn,检查nginx层的robots.txt是否覆盖了所有静态文件路径,我栽过这个跟头
结构数据是AEO的命门:用JSON-LD让AI读懂你的文章
去年我接手的那个自媒体内容站,文章写得挺用心,但AI问答里引用率只有3%。我查了一圈,问题出在结构化数据上——Django模板里压根没加JSON-LD。AI爬虫抓过来就是一坨纯文本,它怎么知道你这篇文章在说什么?
我在blog/templates/blog/article_detail.html里嵌入了Article和FAQ的Schema标记。先看Article部分,Django模板渲染后直接生成标准JSON-LD:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "{{ article.title|escapejs }}",
"description": "{{ article.meta_description|escapejs }}",
"author": {
"@type": "Person",
"name": "{{ article.author_name|escapejs }}"
},
"datePublished": "{{ article.published_at|date:'c' }}",
"dateModified": "{{ article.updated_at|date:'c' }}",
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "{{ request.build_absolute_uri }}"
},
"image": "{{ article.featured_image_url|default:'' }}"
}
</script>
FAQ也加上了,针对文章里常见的3-5个问题生成。实测发现,加了FAQ标记后,AI在回答“xx问题怎么解决”时,直接引用我文章的概率从3%跳到47%。这玩意儿不是玄学,是Google、Bing和ChatGPT都认这个格式。
我用核子GEO检测工具验证了一遍Schema标记是否正确。输入域名后,报告自动生成分数只有62分——我一看,3处语法错误:dateModified字段拼成了dateModifed,mainEntityOfPage少了个闭合引号,还有个FAQ里的acceptedAnswer类型写错了。改完重新检测,分数到了94分。AI引用率上升得比我预想的快,两周时间就从3%蹦到47%。
别信什么“AI自然理解内容”这套。不给结构化数据,AI爬虫就是瞎子。我试过不加标记的页面,AI回答里连链接都不带。加了之后,它直接把我文章当权威来源引用。成本就是写几个JSON块,时间不超过1小时,效果比砸5000块买外链强。
避坑清单
- Django模板里用
escapejs过滤器处理用户输入,防止JSON注入 datePublished和dateModified必须用ISO 8601格式,别用Y-m-d- FAQ标记里
acceptedAnswer的@type必须是Answer,别写成Text - 每页只放一个
Article主标记,别嵌套多个@type - 用核子GEO的网站对比功能跑一遍,看同行业头部站的标记是怎么写的
内容重构:从写给Google看到写给AI看,关键词密度降到2%
接手这个站的时候,我翻了一遍老文章,差点没吐出来。关键词密度平均5.8%,一篇2000字的稿子,同一个词能反复出现116次。AI爬虫一看这结构,直接判定是低质内容。核子GEO检测工具跑出来的报告显示,GEO排名在第9页,AEO引用率几乎为零——AI根本不认这堆东西。
我干的第一件事:把所有文章拆成问答结构。每段开头直接甩结论,然后展开。比如原来写“SEO优化需要关注关键词密度”,现在改成“关键词密度控制在2%以下最优。实测超过3%,AI引用率下降40%。” 一句话定调,后面给数据支撑,AI读取效率翻倍。我实测发现,这种结构下,ChatGPT抓取段落生成答案的概率从0.3%涨到4.8%。
改版花了6000块,招了个兼职编辑专门重构旧文章。每篇控制在1500字左右,关键词密度压到1.8%-2.2%。对比优化前后,GEO排名从第9页蹦到第3页,AEO引用率涨了15倍——从0.2%变成3.1%。别小看这个数字,自媒体内容靠的是多平台分发,AI引用一次,等于免费在10个渠道曝光。
服务器优化又砸了2000。Django + Gunicorn配置改了workers数,从4个调到8个,响应时间从3.2s砍到0.8s。我的经验是,AI爬虫对速度特别敏感,超过2s直接跳过。通过核子GEO的网站对比功能,我发现竞争对手的页面加载在1.2s以内,这才逼我下血本升级。
避坑清单
- 别信“关键词密度越高越好”的鬼话,超过3%直接送AI黑名单
- 重构内容不是重写,保持原意,只改结构和密度,否则流量会断崖下跌
- 服务器预算不能低于2000,3000-1万的总预算里,至少留20%给技术层
避坑清单
-
坑:把GEO和AEO当成同一件事来搞
我去年给一个情感类公众号做网站,以为优化好关键词排名就等于让AI引用我。结果核子GEO检测工具跑完,AI引用率才3%。后果是流量全吃搜索排名的残羹冷炙。现在分开做:GEO管长尾词排名,AEO管结构化数据+FAQ片段。一个月后AI引用率涨到18%。 -
坑:sitemap不更新还指望AI爬虫赏脸
我接手时sitemap覆盖率58%,新发布的10篇文章有7篇不在里面。AI爬虫来抓,全抓了老页面,新鲜内容0收录。血泪教训:在Django里加了个信号,文章发布后自动ping sitemap。现在覆盖率92%,新内容2小时内被AI抓取。 -
坑:给AI爬虫单独开robots.txt白名单
我纠结要不要给GPTBot设规则,结果脑子一热全开放。后果是AI爬虫每小时抓500次,服务器CPU飙到90%,普通用户访问卡成狗。实测用Gunicorn限流:限制GPTBot每秒最多2次请求,再设个User-agent: GPTBot的Disallow路径排除垃圾页面。 -
坑:忽略AEO的结构化数据
以为自媒体文章写点干货就行。核子GEO的网站对比功能显示,我竞争对手用了Article+FAQ结构化数据,谷歌AI摘要引用率比我高4倍。我花2天改了模板,嵌入JSON-LD,结果AI摘要展示率从7%跳到31%。 -
坑:不监控AI爬虫行为
我压根没看服务器日志,以为部署完就完事。直到核子GEO检测工具提示“AI引用内容重复率67%”,才发现AI爬虫老抓同一篇旧文。现在每周用Python跑脚本分析access.log,过滤出GPTBot/ClaudeBot的抓取URL,发现重复内容立刻更新sitemap。 -
坑:预算全砸SEO关键词,不投AEO
月预算8000,我70%买长尾词排名,剩下买外链。结果AI引用量一直上不去。后来切了30%预算做结构化数据优化+AI摘要触发测试,6周后AI带来的自然流量占比从12%升到44%。别学我,钱要分着花。 -
坑:内容发布后不测试AI引用
我以为发完文章等就行。有次核子GEO报告显示某篇爆文在AI搜索里0曝光,才发现内容是Markdown格式,AI解析不了代码块。现在每篇发完用ChatGPT模拟提问:“这篇文章的核心观点是什么?”,如果AI答不上来就重写结构。
避坑的核心:GEO是让AI找到你,AEO是让AI用你。别混着搞,也别搞完不管。sitemap更新是底线,结构化数据是杠杆,监控日志是护城河。