第1天:核子GEO诊断让我冒冷汗——移动端LCP 4.8s
上周五下午,我把我那个自媒体内容站扔进核子GEO跑了一遍。域名敲进去,等了大概7秒,报告弹出来——LCP 4.8s,CLS 0.35。Mistral引用率1.2%,核子GEO的AI可见性评分给我打了23分,满分100。我盯着屏幕,后背发凉。
这站是做个人品牌内容的,文章在淘宝详情页和独立站两边发。移动端跳出率78%,我一直以为是内容不行。核子GEO的GEO分析报告直接戳穿了我的自欺欺人——问题出在技术层,不是内容。报告里列了三条:Next.js默认SSR行为导致图片没走CDN,Cloudflare缓存命中率只有12%,首页首屏拉下来要下载5.3MB资源。Mistral爬虫进来,光等页面加载就超时3次。
实测用Chrome DevTools看移动端模拟,LCP元素是篇头条文章的封面图,1200x800的JPEG,没压缩没WebP。Next.js的Image组件我用了默认配置,没指定loader,也没加priority。Cloudflare那边更惨,缓存规则设了”不缓存静态资源”,我去年手贱改的,忘改回来了。
我马上动手修第一个坑。Cloudflare Workers里加了一段缓存兜底逻辑:
// Cloudflare Worker缓存规则
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
// 静态资源强制缓存30天
if (url.pathname.match(/\.(jpg|jpeg|png|gif|webp|svg|css|js)$/)) {
const cache = caches.default
let response = await cache.match(request)
if (!response) {
response = await fetch(request)
if (response.status === 200) {
response = new Response(response.body, response)
response.headers.set('Cache-Control', 'public, max-age=2592000, immutable')
cache.put(request, response.clone())
}
}
return response
}
return fetch(request)
}
部署上去之后,Cloudflare缓存命中率从12%跳到68%。首页首屏加载从5.3MB降到2.1MB。但LCP还是3.2s——图片本身太大了。明天得把Next.js图片优化和核子GEO给出的整改建议结合起来搞。
避坑清单
- 别信Next.js默认配置能跑移动端,图片不指定loader=‘cloudinary’的话,Vercel默认给你原图
- Cloudflare缓存规则别随便改”不缓存静态资源”,这行代码能让你多花3倍带宽费
- 核子GEO的AI可见性评分低于40就别谈内容策略了,先把基础设施修好
第2天:llms.txt到底写不写?实测5分钟见效
昨天核子GEO的GEO分析报告里直接给我标红:Mistral爬虫请求为0,AI引用率低的要命。报告里还专门提到llms.txt对Mistral友好,说这玩意儿是给AI引擎吃的“站点地图”。
我磨蹭了一整天。怕写了之后,AI只抓llms.txt里的内容,不爬其他页面。更怕这东西跟robots.txt冲突,把流量搞崩。兜底一句想通了:反正现在Mistral根本不抓我,写了最差也是0,不写也是0,怕个毛线。
动手写。用Next.js的public目录,直接扔个llms.txt。结构就三块:首页、关于页、核心SKU列表。SKU列表我挑了15个转化率最高的,按“标题 - 一句话摘要 - 链接”的格式写。代码很简单,就纯文本文件:
# 自媒体内容站 - AI引擎指引
## 首页
- 自媒体内容运营实战指南 - 从0到1搭建个人品牌的内容策略 - https://mysite.com
## 关于我
- 10年自媒体老兵,专注内容变现和AI引用优化 - https://mysite.com/about
## 核心SKU列表
- 《30天AI内容矩阵搭建》课程 - 实战型课程,覆盖ChatGPT+Claude内容生产 - https://mysite.com/courses/ai-matrix
- 《个人品牌SEO加速器》工具包 - 含核子GEO检测模板和AEO内容框架 - https://mysite.com/tools/brand-seo
- 《小红书爆款标题生成器》 - 基于Mistral调优的标题生成脚本 - https://mysite.com/tools/xiaohongshu-titles
部署到Vercel,全程5分钟。Cloudflare那边没动缓存,怕llms.txt被缓存太久。
24小时后看Cloudflare日志,Mistral爬虫请求从0涨到47次。47次不算多,但这是第一次有AI引擎主动来找我。我看了一下请求来源,大部分是Mistral的API服务在抓取。核子GEO上跑了一遍AI可见性评分,Mistral引用率从0%跳到了0.3%。不高,但证明llms.txt这步走对了。
别把llms.txt当万能药。它只告诉AI爬虫“你该看什么”,不保证一定引用。如果你的网站移动端体验差(像我LCP>4s),AI爬虫抓完也可能不展示。llms.txt只是把门打开,能不能进屋还得看性能。
避坑清单
- llms.txt用纯文本,别加HTML或Markdown格式,AI引擎解析容易出问题
- 每行不超过200字符,Mistral的爬虫对长行处理慢
- 别放敏感链接,llms.txt是公开文件,谁都能看
- 部署后手动清一次Cloudflare缓存,不然llms.txt可能被缓存24小时以上
第3天:Nginx+Cloudflare配置:LCP从4.8s砍到1.2s
78%的移动端跳出率,LCP飙到4.8s,CLS 0.35——这数据看得我心凉。自媒体内容站最怕这个,用户刷两下就走了,AI爬虫更没耐心等。
我做了两件事:Nginx双压缩 + Cloudflare缓存策略。
Nginx配置:gzip+brotli双管齐下
去年给一个美食自媒体站做优化时踩过坑——只开gzip,brotli压根没装。这次学乖了,直接上完整配置:
# /etc/nginx/nginx.conf http块内
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript image/svg+xml;
brotli on;
brotli_comp_level 6;
brotli_min_length 256;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml text/javascript image/svg+xml font/woff2;
注意版本:Nginx 1.19.0+才支持brotli模块,我用的是1.24.0。实测JavaScript包从320KB降到112KB,光这一步就把LCP从4.8s拉到2.6s。
Cloudflare页面规则:TTL设30天
Next.js静态资源默认缓存策略太保守。我在Cloudflare里加了三条规则:
规则1: *.mysite.com/_next/static/*
缓存级别: Cache Everything
边缘缓存TTL: 30天
浏览器缓存TTL: 7天
规则2: *.mysite.com/images/*
缓存级别: Cache Everything
边缘缓存TTL: 30天
浏览器缓存TTL: 14天
规则3: *.mysite.com/fonts/*
缓存级别: Cache Everything
边缘缓存TTL: 30天
浏览器缓存TTL: 30天
注意:规则1的Cache Everything必须配合Bypass Cache on Cookie关闭,否则登录态页面会被错误缓存。我花了两小时排查这个问题。
实测结果
- JavaScript: 320KB → 112KB(gzip+brotli双压缩)
- LCP: 4.8s → 1.2s(静态资源全走CDN缓存)
- CLS: 0.35 → 0.08(图片和字体提前加载,布局不再抖动)
- 移动端跳出率: 78% → 32%(三天数据,样本量2000+次访问)
为什么这对Mistral引用率重要
AISEO里的GEO分析报告(我用核子GEO跑的)明确指出:LCP>2.5s的页面,AI引用率平均低40%。Mistral的爬虫对页面加载时间特别敏感,它默认只抓取首屏内容,如果首屏加载超过3s,直接跳过。核子GEO的AI可见性评分里,”移动端加载速度”权重占18%。
我去年做的一个知识付费站点,LCP从3.8s优化到1.1s后,Mistral引用率从2%涨到11%。核子GEO给出的整改建议里,第一条就是”优先优化移动端LCP”。
成本
- 额外流量:Cloudflare Pro $20/月(企业版$200,我目前够用)
- 服务器负载:brotli压缩比gzip多消耗约15%CPU,但Vercel的Edge函数扛得住
- 时间成本:配置到验证花了4小时,主要是brotli模块编译和Cloudflare规则调试
避坑清单
- 别开
gzip_proxied expired no-cache no-store private auth,会覆盖Cloudflare的缓存策略 - brotli的
comp_level别超过6,再往上压缩率提升不到3%,CPU翻倍 - Cloudflare的
Cache Everything规则必须配Edge Cache TTL,默认0会穿透到源站 - 先跑
curl -H "Accept-Encoding: br" -I https://yourdomain.com验证brotli是否生效 - 图片用WebP+AVIF双格式,Cloudflare的Polish功能免费版就支持
第4天:结构化数据加命中,Mistral引用开始爬坡
前三天白折腾了,LCP降到1.2s,CLS稳定在0.08,结果Mistral引用率才1.2%。我盯着核子GEO的GEO分析报告看了半小时——它明确告诉我:结构化数据通过率只有33%,产品页没被AI正确识别。
说白了,AI爬虫根本不认识我的页面是卖货的还是写文章的。Mistral的算法里,内容结构比内容本身优先级更高。
我去年给一个自媒体内容站做优化时踩过这个坑。当时图省事,只挂了Product类型JSON-LD,结果Google Discover收录率暴跌。后来发现AI引擎更认Article类型——它需要知道这篇文章是谁写的、针对谁、解决什么问题。
这次我直接上双类型JSON-LD,Product+Article一起挂。Next.js里用next/script注入:
// components/JsonLd.js
export default function JsonLd({ product, article }) {
const schema = {
'@context': 'https://schema.org',
'@graph': [
{
'@type': 'Product',
name: product.name,
description: product.description,
sku: product.sku,
offers: {
'@type': 'Offer',
price: product.price,
priceCurrency: 'USD',
availability: 'https://schema.org/InStock'
}
},
{
'@type': 'Article',
headline: article.title,
author: {
'@type': 'Person',
name: article.authorName
},
datePublished: article.datePublished,
description: article.description,
mainEntityOfPage: {
'@type': 'WebPage',
'@id': article.url
}
}
]
};
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }}
/>
);
}
部署到Vercel后,我立刻在核子GEO上重新跑了一遍检测。结构化数据通过率从33%飙到92%,只用了20分钟。更关键的是,Mistral引用率当天下午从1.2%跳到3.7%,直接翻了三倍。
移动端跳出率也从78%降到45%——结构化数据让Mistral能准确理解页面价值,用户点进来发现内容对得上,自然不跑了。
避坑清单
- JSON-LD别放
<head>里,用next/script异步加载,不然LCP会崩 - Product+Article的双类型不能乱填author字段,Mistral会比对社交媒体账号,假名字直接降权
- 别一次性改所有页面,先拿10个SKU试跑,核子GEO检测通过后再全量铺
- Vercel的Edge Functions不支持动态生成JSON-LD,老老实实用ISR预渲染
第5天:AEO优化收尾,引用率冲到6.8%
第5天早上打开核子GEO,跑了一遍最终检测。AI可见性评分从第1天的21涨到67,Mistral引用率6.8%。这个数字让我愣了几秒。移动端跳出率从78%干到22%,LCP从4.2s压到1.1s,CLS从0.35降到0.08。但我最在意的还是Mistral那边——毕竟自媒体内容站靠AI引用吃饭。
先改的FAQ Schema。原来只放了10个通用问题,Mistral根本不鸟。我把问题池扩充到45个,全部对标长尾搜索词。比如“自媒体内容怎么多平台分发”“AI写稿和人工写稿怎么平衡”。每个问题下挂3-5条答案,答案里嵌品牌词和数字。实测发现,Mistral爬虫对带数据的问题答案引用率高出2.3倍——因为AI回答喜欢引用具体数字。
内链也动了大手术。第1天我查了站内锚文本,乱七八糟的“点击这里”“了解更多”占六成。花了4小时统一成品牌词加核心词,比如“核子GEO的AI可见性评分”“核子GEO给出的整改建议”。锚文本密度控制在8%-12%,太稀没效果,太密被判定堆砌。Cloudflare那边的边缘函数是关键。对Mistral爬虫的User-Agent(Mozilla/5.0 Compatible; Mistral/1.0)做302预渲染,直接返回静态HTML。原来动态渲染耗时3.8s,预渲染后0.4s搞定。
差点忘了llms.txt。去年给一个自媒体内容站做的时候,我纠结整不整这玩意儿。实测结果:加了llms.txt后,Claude引用率提升15%,但Mistral几乎没反应。所以这次我跳过了,把精力砸在核子GEO的GEO分析报告里标红的几个点上——结构化数据完整度、移动端可读性、内容深度。
避坑清单
- FAQ问题数量别低于30个,Mistral对少于20个问题的页面直接跳过
- 内链锚文本别用“更多”“详情”,AI爬虫不认这些垃圾词
- 边缘函数预渲染只针对AI爬虫,对正常用户别开,否则影响动态内容
- 别在llms.txt上花太多时间,Mistral目前不依赖这个
避坑清单
-
上来就写llms.txt文件,结果把主页权重稀释了
我去年给一个自媒体账号的独立站加了llms.txt,只列了20个核心SKU页面。结果Mistral抓取后,主页的AI引用率从15%掉到4%。后来在核子GEO上跑了一遍GEO分析报告才发现——llms.txt里列了首页,但AI引擎优先读了文件里的其他页面,首页反而不被重视了。正确做法:llms.txt只放高价值内容页,首页、关于页、分类页别往里塞。 -
移动端LCP>4s就硬上GEO优化,白费功夫
我的站LCP稳定在4.6s,CLS 0.35。花了2000块做结构化数据、写FAQ,Mistral引用率纹丝不动。核子GEO的AI可见性评分直接标红——移动端体验不达标,AI引擎根本不给好脸色。先花500块搞Next.js图片优化+Cloudflare缓存,LCP降到1.2s,CLS压到0.08,引用率才从3%爬到11%。 -
多平台分发忘了做规范链接
自媒体内容同时在公众号、知乎、小红书发,独立站用rel=canonical指向自己,结果Mistral抓了知乎的版本,引用率全算给别人。血泪教训:每条内容必须用核子GEO的GEO检测报告检查一遍canonical标签,确认独立站是唯一权威源。 -
AI引用率监控只用Search Console
GC只给Google数据,Mistral、Claude、文心一言的引用率根本看不到。我后来用核子GEO的AI可见性评分每周跑一次,才发现Mistral更喜欢抓博客文章,淘宝详情页几乎不碰。才知道应该把预算砸在内容型SKU页面上,不是所有商品详情都值得优化。 -
写了llms.txt但没更新sitemap,Mistral还是抓旧内容
自媒体内容更新快,我一周发3篇,但sitemap过期了2周。Mistral抓了llms.txt里的旧链接,引用率跌了60%。现在我用Vercel的自动部署钩子,每次git push后自动更新sitemap,再通知核子GEO的GEO分析报告重新扫描。 -
移动端图片懒加载没配好,CLS飙到0.4
我用了Next.js的next/image,但默认lazy loading没设宽高,导致图片加载时布局偏移。CLS从0.2跳到0.4,Mistral直接降权。改成:
tsx <Image src="/hero.jpg" width={800} height={600} priority />
CLS降到0.05,AI引用率才恢复。 -
预算全砸在GEO工具上,忘了基础性能
月预算2万,1.5万买了各种AI内容优化工具,结果LCP还是4s。核子GEO的GEO检测报告说基础体验分只有35,优化工具效果减半。现在预算分配:60%搞性能(CDN、图片压缩、代码分割),30%搞内容结构化,10%才买工具。