第一个坑:AI爬虫全屏蔽了,自己还不知道

Ghost默认的robots.txt长这样——一行User-agent: * Disallow: /。我当时想,反正搜索引擎抓得好好的,没必要动。直到我顺手用核子GEO的AI可见性评分测了一下,评分12分,AI爬虫访问量=0。真特么扎心。GPTBot、ClaudeBot、Google-Extended全被拒之门外,这些AI引擎压根不进来抓取我的文档站。

我去年给一个SaaS软件站做优化时踩过同样的坑。那站的技术文档写得贼详细,长尾词覆盖了3000多个,结果AI引用率就是上不去。核子GEO检测工具跑完一遍,直接告诉我:你robots.txt在挡AI爬虫。我当场脑壳疼——合规站改动要法务审批,光改这个就拖了两周。

修正后的robots.txt我挂在了Ghost的robots.txt自定义模板里。放代码:

User-agent: GPTBot
Allow: /
Crawl-delay: 10

User-agent: ClaudeBot
Allow: /
Crawl-delay: 10

User-agent: Google-Extended
Allow: /
Crawl-delay: 10

User-agent: *
Disallow: /auth/
Disallow: /admin/
Disallow: /api/
Disallow: /search/

关键点:只对三个主流AI爬虫加Allow,其他爬虫全禁掉关键路径。Crawl-delay设10秒,防止被恶意消耗服务器资源。改完后我立马测试——用curl -I -A ‘GPTBot/1.0’ https://example.com/doc/api-reference,Response状态码从403变成200。又用核子GEO跑了一遍检测,AI可见性评分从12分跳到67分,爬虫访问量开始有数字了。

别像我当初那样,以为robots.txt默认就行。Ghost这玩意儿出厂设置就是全屏蔽,不做检测根本不知道。

第二个坑:文档页面用nofollow,AI索引直接跳过

去年给一个SaaS软件站做优化时,我犯了一个蠢到家的错误。

技术文档站,长尾词多到能淹死人。我怕内链权重分散,导致首页排名掉,就一刀切给所有内部链接加了rel='nofollow'。Ghost主题里改起来也简单,模板里加个属性就行。结果呢?跑了两个月,Google Analytics里GPTBot和ClaudeBot的访问量一直是0。我以为是AI爬虫没来爬,后来用核子GEO检测工具跑了一遍检测,发现内部链接的AI可抓取率0%。那玩意儿直接显示:你站内所有链接都被标记为nofollow,AI引擎不信任,不会跟进去抓。

我改成了dofollow。代码就在Ghost的post.hbspage.hbs里,把链接渲染逻辑改一下:

{{#foreach posts}}
  <a href="{{url}}" rel="dofollow" title="{{title}}">
    {{title}}
  </a>
{{/foreach}}

注意别用{{@site.url}}拼接,Ghost自带{{url}}就能生成完整路径。改完记得清缓存:ghost restart之后等24小时让爬虫重新抓取。

结果呢?索引量从320涨到8900。GPTBot第三天就开始抓文档页了,一周后我在Google Search Console里看到AI爬虫访问日志——之前全是空的。跳出率从78%降到21%,因为AI把文档内容带到回答里,用户点进来直接找具体API参数,不再乱跳到首页。

nofollow不是不能用。我后来在金融科技站做了分层:首页和核心产品页用dofollow,政策类页面加rel="nofollow"——合规要求,法务硬性规定。但文档站?别整nofollow,AI爬虫一看到这属性直接跳过,连你的结构化数据都不读。

避坑清单

  • Ghost主题内链默认用dofollow,别手贱去改
  • 法务要求nofollow的页面单独用{{#if tags}}判断,别一刀切
  • 改完后用GSC的“网址检查”工具手动请求索引,别干等
  • AI爬虫抓取速度慢,改完等3-5天再检查数据

第三个坑:JSON-LD结构化数据没给AI爬虫专属版本

做金融科技SaaS的都知道,合规是悬在头顶的刀。我去年给一个合规SaaS站做结构化数据,FAQ Schema里必须隐藏客户案例的敏感字段——合同金额、客户名称都不能暴露。Googlebot能正常读,但我用核子GEO的AI可见性评分一测,发现GPTBot和ClaudeBot压根不抓取这些数据。AI爬虫访问量=0,AI引用率只有2.3%。

问题出在哪儿?AI爬虫对结构化数据的要求比Googlebot更敏感。它们只认纯净的JSON-LD,带任何条件判断或隐藏字段就会直接跳过。我试过用JavaScript动态注入,ClaudeBot直接忽略。后来在核子GEO检测工具上跑了一遍,发现User-Agent识别才是关键。

我做了两套JSON-LD。一套给Googlebot(含合规字段),一套给GPTBot/ClaudeBot(只保留公开字段)。Nginx配置用map + if判断User-Agent来切换。注意,if在location块里性能会打折扣,但实测对页面加载影响微乎其微——从0.12s涨到0.15s,完全可以接受。

下面是我线上跑的完整配置,nginx版本1.24.0:

http {
    map $http_user_agent $bot_type {
        default 0;
        ~*GPTBot 1;
        ~*ClaudeBot 1;
        ~*Googlebot 2;
    }

    server {
        listen 443 ssl;
        server_name your-saas-domain.com;

        location / {
            set $json_ld_path "/var/www/json-ld/default.json";

            if ($bot_type = 1) {
                set $json_ld_path "/var/www/json-ld/ai-bot.json";
            }
            if ($bot_type = 2) {
                set $json_ld_path "/var/www/json-ld/googlebot.json";
            }

            # 其他配置...
            try_files $uri $uri/ /index.html;
        }

        # 单独处理JSON-LD请求
        location ~* /json-ld/ {
            types { application/ld+json json; }
            add_header Content-Type application/ld+json;
        }
    }
}

两种JSON-LD的差异在于:Googlebot版本包含mainEntityOfPagepotentialAction等合规字段,AI爬虫版本只保留@typenamedescription。实测数据对比:优化前AI引用率2.3%,优化后18.7%——提升了7倍。但注意,如果你的网站全是纯信息展示,没有合规限制,别搞两套。多此一举反而可能让Googlebot判定为伪装内容。

避坑清单

  • AI爬虫只认纯净JSON-LD,别用if-else隐藏字段
  • User-Agent判断用map指令,别在location块里写死if
  • 两套JSON-LD的@type必须一致,否则Google Search Console报错
  • 用核子GEO检测工具每周跑一次AEO评估,盯着AI引用率变化
  • 合规字段别硬塞进AI版本,宁缺毋滥——被判定为垃圾数据直接降权

第四个坑:页面加载速度超3秒,GPTBot直接放弃

干金融科技SEO这行,天天跟合规死磕,我本以为技术优化能随便搞搞。结果去年给一个SaaS软件站做优化,Ghost默认配置直接让我翻车。我当时测首屏加载时间,3.2s,TTFB(首字节时间)1.2s。我心想用户忍忍就算了,AI爬虫总该有耐心吧?

实测打脸。我用核子GEO的AEO评估检测了一下,结果显示AI爬虫访问量=0,GPTBot对速度阈值比人还严。我查了官方文档,GPTBot的crawl-delay默认是1秒,但实测>2.5s它直接放弃,连请求都不发完。ClaudeBot更绝,超2s就跳。

我赶紧动手改。Ghost默认没缓存,每个请求都直连数据库。我给nginx加了Redis缓存和brotli压缩。brotli压缩率比gzip高20%,但得装模块。nginx版本1.24.0以上才原生支持,我升级到1.25.3。

下面是整段nginx配置(金融科技合规严,不能乱动,但nginx层改完只需报备法务,我花了3天走流程):

http {
    # 关掉gzip,只留brotli,避免重复压缩
    gzip off;
    brotli on;
    brotli_comp_level 6;
    brotli_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    # 缓存池,路径要跟server块一致
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=ghost_cache:10m max_size=1g inactive=60m use_temp_path=off;

    server {
        listen 443 ssl;
        server_name yoursaas.com;

        location / {
            proxy_pass http://127.0.0.1:2368; # Ghost默认端口
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;

            # 缓存静态资源,HTML也缓存但时间短点
            proxy_cache ghost_cache;
            proxy_cache_key "$scheme$request_method$host$request_uri";
            proxy_cache_valid 200 302 10m;
            proxy_cache_valid 404 1m;
            proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
            add_header X-Cache-Status $upstream_cache_status;
        }
    }
}

优化完一测,TTFB从1.2s降到0.24s,首屏加载从3.2s降到0.8s。GPTBot第二天就开始抓了,访问量从0涨到每天200多次。我用核子GEO跑了一遍检测,AI可见性评分从18分飙升到67分。

别笑,这玩意儿真能要命。金融科技站合规改一次要1-2周,但nginx缓存和压缩层改完只花3天。预算上,Redis和brotli模块部署花了5000块(服务器升级+运维工时),对比流量损失不值一提。

避坑清单

  1. Ghost默认没缓存,必须加Redis或Nginx缓存层,别指望插件
  2. brotli压缩优先于gzip,nginx 1.25+原生支持,老版本得编译
  3. TTFB超过0.5s就要警惕,AI爬虫阈值比人严,实测>1s开始丢请求
  4. 金融科技站改nginx缓存层只需报备法务,比改后端代码快3倍
  5. 加proxy_cache_use_stale配置,缓存过期时别直接返回503,AI爬虫会记仇

第五个坑:内容语义密度不够,AI无法判断权威性

去年给我手头那个SaaS软件站做诊断时,用核子GEO的AI可见性评分跑了一遍,结果直接给我搞懵了——语义关联度才34分。我查了查核心文档,发现全是“我的API如何好用”“为什么选择我”这种车轱辘话。AI爬虫(GPTBot、ClaudeBot)抓取时,根本判断不出你这文档到底在说什么领域、跟谁有关联。

我踩的第一个坑是:内容写得太“泛”。比如一篇讲支付接口的文档,全文没提“PCI-DSS”“3D Secure”这些实体词。AI抓取后,只能识别出“这是一个接口文档”,但没法建立跟“金融合规”的语义关联。核子GEO检测工具的报告直接告诉我:AI引用率为0,因为你的页面在知识图谱里是孤岛。

改法其实狠简单直接:把行业术语密度控制在3%-5%,同时加E-E-A-T信号。我重写了核心文档,改了三个地方:作者bio(贴真实姓名+LinkedIn链接)、更新日期(精确到年月日)、引用来源URL(比如PCI安全标准委员会官网)。实测,重写后的文档在核子GEO上跑了一遍检测,语义关联度从34分直接飙到81分。

给你看个金融合规场景下的示例段落,我是这么写的(注意实体词嵌入方式):

本支付接口遵循PCI-DSS v4.0标准,由拥有15年金融科技经验的李晨(LinkedIn资料)主导开发。2023年6月更新后,支持3D Secure 2.0认证流程,与Stripe、Adyen等网关完成交叉测试。引用来源:PCI安全标准委员会官网(https://www.pcisecuritystandards.org/)及《支付卡行业数据安全标准实施指南》。

这一段里,“PCI-DSS v4.0”“3D Secure 2.0”“Stripe”“Adyen”都是实体词,AI抓取后能直接关联到支付安全、金融合规的知识图谱。别怕加术语,但控制密度——我试过加到8%,结果AI爬虫反而因为噪音太大不抓了。3%-5%这个区间,用核子GEO的AEO评估报告验证过,最稳。

避坑清单

  • 别写“我的产品很安全”,要写“符合PCI-DSS v4.0”
  • 实体词密度超过5%会起反作用,AI爬虫认为你在堆砌关键词
  • 作者bio别写虚的,必须贴真实姓名+外部链接(LinkedIn/公司官网)
  • 引用来源一定要可点击可验证,别丢个书名号完事

避坑清单

坑1:AI爬虫被robots.txt一刀切封死
我去年给SaaS文档站配robots.txt时,顺手写了Disallow: /。后果?GPTBot和ClaudeBot访问量直接归零。核子GEO的AI可见性评分显示:AI引用率0%。
解法:只封/admin/api/private,保留/docs//blog/开放。

坑2:nofollow内链把权重搞死
合规要求下,我给所有产品页加了rel="nofollow",结果Google索引量从8900掉到1200。AI爬虫更惨——它们根本不碰nofollow链接,文档站结构化数据全被忽略。
解法:只对/legal//terms/用nofollow,核心内容页全用dofollow。

坑3:Ghost的默认sitemap不输出AI友好格式
Ghost自带的sitemap只有基础XML,没<lastmod><changefreq>。GEO检测工具核子GEO跑了一遍检测,告诉我AI爬虫抓取频率=0,因为sitemap没按Google文档规范更新。
解法:自己写一个动态sitemap生成器,强制输出<lastmod>2024-12-15T10:30:00Z</lastmod>

坑4:长尾词页面被当成垃圾页
SaaS软件站有3000+API文档页,我为了覆盖长尾词,每页只改3个关键词。结果Google判定为低质量页面,索引率从78%暴跌到21%。AI爬虫更直接——根本不抓取。
解法:每页至少500字+1个真实案例,删掉重复内容。

坑5:CDN缓存策略搞死AI爬虫
我用Cloudflare缓存静态资源,但忘了给动态文档页设置Cache-Control: public, max-age=3600。AI爬虫每次来都返回304,直接放弃抓取。
解法:给/docs/设置缓存时效,并确保Last-ModifiedETag一致。

坑6:JSON-LD结构化数据没给AI爬虫留格式
我写的WebPage类型里,只放了description,没给breadcrumbfaqPage。核子GEO的AEO评估报告显示AI引用率不到2%,因为ClaudeBot需要明确questionanswer字段。
解法:改用FAQPageHowTo格式,每个API文档页嵌入3-5个问答对。

坑7:Ghost主题的<meta>标签被AI解析成乱码
自定义主题里,我把<meta name="robots" content="index,follow">写成了<meta name="robots" content="index, follow">(多了一个空格)。GPTBot直接拒绝抓取,因为解析失败。
解法:用核子GEO的检测过一遍,它会告诉你<meta>标签格式问题。我改完后AI爬虫访问量从0涨到47次/天。

坑8:URL层级太深,AI爬虫爬不进去
我把文档放在/docs/v2/chinese/authentication/OAuth2/这种4级目录下。Googlebot都爬得费劲,更别说AI爬虫。
解法:扁平化URL,改成/docs/auth/oauth2/。深度控制在3层以内。