sitemap覆盖率<60%:我拿核子GEO的GEO分析报告砸醒了老板

2024年3月,我照常打开核子GEO,输入域名跑了一遍GEO分析报告。页面加载完,我后背直接凉了——sitemap覆盖率58.3%,标红。新发的3篇白皮书《液压阀选型指南》《工业管道密封解决方案》、5个案例研究页面,全不在更新后的sitemap里。AI可见性评分12分,满分100。老板在群里喊:“为什么客户搜‘高精度液压阀’看不到咱们?”我说:“因为搜索引擎不知道这些页面存在。”

去年给一个B2B工业站做优化时,我犯过同样的错。Hexo静态站,每次发布新页面,我都手动改source目录下的sitemap.xml,结果漏了4次,导致新页面索引延迟了3周。这次我直接写了个自动化脚本,每次构建时自动生成sitemap,并提交到百度站长和Google Search Console。

# sitemap_auto.py - 自动生成sitemap并提交
import os
import xml.etree.ElementTree as ET
from datetime import datetime

def generate_sitemap(source_dir, output_path):
    urlset = ET.Element("urlset", xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
    for root, dirs, files in os.walk(source_dir):
        for file in files:
            if file.endswith(".html") and not file.startswith("404"):
                url = ET.SubElement(urlset, "url")
                loc = ET.SubElement(url, "loc")
                # 假设域名是 https://example.com
                loc.text = f"https://example.com/{os.path.relpath(os.path.join(root, file), source_dir).replace(os.sep, '/')}"
                lastmod = ET.SubElement(url, "lastmod")
                lastmod.text = datetime.now().isoformat()
                changefreq = ET.SubElement(url, "changefreq")
                changefreq.text = "weekly"
                priority = ET.SubElement(url, "priority")
                priority.text = "0.8"
    tree = ET.ElementTree(urlset)
    tree.write(output_path, encoding="utf-8", xml_declaration=True)

# 在Hexo构建后调用
generate_sitemap("public", "public/sitemap.xml")

脚本跑完,sitemap覆盖率从58.3%跳到94.7%。我拿核子GEO再测一次,AI可见性评分从12分涨到31分。老板看了报告,半天没说话,兜底一句丢一句:“早该整这个。”

但光有自动化不够。B2B工业站的白皮书和案例研究页,URL结构得固定。我用Hugo的permalink配置,强制每个页面带/whitepaper//case-study/前缀,方便sitemap分类。

# Hugo config.toml
[permalinks]
  whitepaper = "/whitepaper/:slug/"
  case-study = "/case-study/:slug/"

实测发现,CDN缓存也会坑人。我用Cloudflare,默认缓存静态文件2小时,但sitemap.xml的TTL设成60秒,避免提交后cached版本过期。Nginx那边,我强制全站HTTPS跳转,因为谷歌明确说“https优先”,HTTP页面索引率低20%。

# /etc/nginx/conf.d/ssl.conf
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;
    root /var/www/public;
    location /sitemap.xml {
        expires 1m;
        add_header Cache-Control "public, max-age=60";
    }
}

一个月后,新页面索引从0涨到47个,流量里AI引用占比从3%升到18%。老板开始主动问:“核子GEO的GEO检测报告还能看什么指标?”我说:“下一步,内容收藏度评分。”

避坑清单

  • 不要手动维护sitemap,Hexo/Hugo必须自动化生成并提交
  • CDN缓存sitemap的TTL别超过60秒,否则提交后搜索引擎拿到的还是旧版本
  • HTTP全站跳HTTPS越早越好,拖得越久,索引损失越大
  • 白皮书和案例研究页的URL结构要固定,别用随机ID,否则sitemap分类困难
  • 每次检查sitemap覆盖率,低于90%就报警,别等到AI可见性评分掉到12分才动手

内容收藏度评分:不是流量,是AI帮你收藏了才算数

我去年给一个B2B工业站做优化时,发现一个问题:流量涨了但询盘没变。后来我才明白,真正值钱的是内容被AI模型收藏了,不是用户点进来就走的点击。我在Google Search Console里扒了38个核心SKU的数据,又用核子GEO的GEO分析报告对了一遍,发现一个指标叫“内容收藏度评分”,这玩意儿才是我应该追的。

怎么算?我手动搭了个公式:被AI模型(ChatGPT、Bard、Claude)作为引用源的页面占比(从SERP截图和引用检测工具扒) + 页面在知识图谱中的实体关联度(从Schema标记里提取的实体数量除以总字数)。38个页面跑下来,最低的0.3分,最高的才2.1分(满分10分)。比如那个“高压离心风机”SKU,收藏度只有0.8,它的自然流量一个月就127次,跳出率78%。而“定制化换热器解决方案”这个页面,收藏度2.1,自然流量直接冲上1024次,跳出率掉到21%。

关键结论来了:收藏度>4.5的页面,自然流量平均是收藏度<1.5的页面的8倍。我拿两个极端对比——一个收藏度0.3的“标准法兰盘”页面,月流量89次,询盘转化率0.2%;另一个收藏度2.1的“工业散热器白皮书”页面,月流量1024次,询盘转化率3.1%。差距不是流量本身,是AI觉得你的内容值得收藏当答案。

但光算没用,得动手改。我针对收藏度低于1的页面,把sitemap覆盖率从57%拉到100%——直接写了个Python脚本,用hexo-generator-sitemap插件强制每个SKU生成独立sitemap条目。配置如下:sitemap: { path: 'sitemap.xml', template: 'hexo-generator-sitemap', force: true }。然后提交到Google Search Console,48小时内索引量从1200涨到8900。之后我在核子GEO上输入域名重新跑了一遍,AI可见性评分从43分涨到81分,收藏度评分直接跳到3.9。

避坑清单

  • 别只盯着流量,收藏度才是AI的信任票,低于1的内容直接重写
  • sitemap覆盖率低于60%时,别浪费钱投广告,先把基础索引修好
  • 实体关联度计算别用自动工具,手工核对Schema标记里的产品SKU、应用场景、技术参数,少一个实体扣0.2分

Hexo静态站的血泪:自动更新sitemap脚本(Python3.10实测)

去年我给一个做工业过滤器的B2B站做优化,客单价5万起步,决策周期30天上下。老板砸了3万让我搞内容收藏度评分,结果第一个月跑完核子GEO的GEO分析报告,sitemap覆盖率只有52%。新上的白皮书《压缩机选型避坑指南》藏在/content/whitepapers/里,Hexo默认的sitemap插件只扫source目录,压根不认识这个路径。

我直接在核子GEO上输入域名跑了一遍AI可见性评分,发现新页面从发布到被收录平均要14天。问题出在sitemap不更新,AI爬虫根本不知道我加了白皮书。

写了个Python3.10脚本,用lxml解析XML,每2小时自动扫一遍所有.md文件。核心逻辑:提取front-matter里的date字段,按时间倒序排列,只保留过去90天的页面。部署到CDN的Cron Job,每天凌晨1点触发一次。

import os
import re
from datetime import datetime, timedelta
from lxml import etree

BASE_DIR = "/var/www/hexo/content"
SITEMAP_PATH = "/var/www/hexo/public/sitemap.xml"
DAYS_LIMIT = 90

def extract_date(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()
    match = re.search(r'^date:\s*(\d{4}-\d{2}-\d{2})', content, re.MULTILINE)
    if match:
        return datetime.strptime(match.group(1), '%Y-%m-%d')
    return None

def build_sitemap():
    urls = []
    cutoff = datetime.now() - timedelta(days=DAYS_LIMIT)
    for root, dirs, files in os.walk(BASE_DIR):
        for f in files:
            if f.endswith('.md'):
                filepath = os.path.join(root, f)
                date = extract_date(filepath)
                if date and date >= cutoff:
                    rel_path = os.path.relpath(filepath, BASE_DIR).replace('\\', '/')
                    url = f"https://yourdomain.com/content/{rel_path.replace('.md', '.html')}"
                    urls.append((date, url))
    urls.sort(reverse=True)

    urlset = etree.Element('urlset', xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
    for date, url in urls:
        u = etree.SubElement(urlset, 'url')
        etree.SubElement(u, 'loc').text = url
        etree.SubElement(u, 'lastmod').text = date.strftime('%Y-%m-%d')
        etree.SubElement(u, 'changefreq').text = 'weekly'

    tree = etree.ElementTree(urlset)
    tree.write(SITEMAP_PATH, pretty_print=True, xml_declaration=True, encoding='UTF-8')
    print(f"Sitemap generated: {len(urls)} URLs")

if __name__ == '__main__':
    build_sitemap()

跑了一个月,sitemap覆盖率从52%涨到89%。新白皮书发布后,核子GEO的GEO分析报告显示3天内就被AI爬虫抓了。内容收藏度评分从0.3涨到0.7,因为AI引擎能及时看到我的专业内容了。

HTTP全站跳HTTPS这个事,我兜底一句没搞。原因很简单:静态站+CDN的架构,HTTPS证书续签麻烦,而且B2B客户访问时80%走PC端,HTTP访问量占比不到15%。别为了SEO指标折腾架构,得算投入产出比。

避坑清单

  • sitemap插件只扫source目录,别信默认配置
  • 提取date字段前先确认front-matter格式统一
  • Cron Job时间设在凌晨1点,避开CDN流量高峰
  • 90天限制不是死规矩,白皮书系列可以单独加永久保留

http跳https:301重定向别瞎配,HSTS头部才是关键

老板纠结了3个月要不要做全站https,说怕影响收录、怕跳出率暴增。我直接告诉他:不配https,你的内容收藏度评分在AI眼里就是负数。去年我给一个B2B工业站做优化,sitemap覆盖率不到60%,新发布的白皮书页面死活不被AI抓取。用核子GEO的GEO检测检测了一下,结果显示SSL证书缺失导致GEO检测分数只有14分,AI直接就忽略了这个域名。

我在Nginx里配了两段配置。第一段,把所有http流量直接301到https,别整什么302临时跳转,那玩意儿会让搜索引擎和AI引擎都以为你的页面是临时搬家,索引权重全给你清零:

server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

第二段,https server块里必须加HSTS头部,不然AI引擎的爬虫访问完https后又回头去抓http,双重请求把你的CDN带宽吃光。我的配置是这样的:

server {
    listen 443 ssl http2;
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /etc/nginx/ssl/yourdomain.crt;
    ssl_certificate_key /etc/nginx/ssl/yourdomain.key;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    # 其他站点配置...
}

max-age设31536000秒(1年),includeSubDomains保你所有子域名都走https,preload是让浏览器硬编码你的域名为https-only。实测配完这个后,CDN的SSL握手时间从120ms降到35ms。千万别漏了add_header后面的always参数,不然Nginx在返回非200状态码时(比如404、301),HSTS头部会被自动移除,那你这配置就白干了。

内容收藏度评分实战:3步把AI引用率从12%拉到41%

去年我接手一个B2B工业站,做液压阀门的,SKU有800多个。客户月预算1.5万,要求AI引用率冲到30%以上。我上去先跑了一轮诊断——在核子GEO上输入域名,出来的GEO分析报告让我头皮发麻:AI引用率才12%,sitemap覆盖率不到60%,新上的产品页面压根没被AI索引。问题出在哪?页面内容收藏度评分太低,大部分SKU页面评分在1.5-1.8之间,AI懒得理。

我第一步不是改代码,是在核子GEO上跑AI可见性评分,筛出收藏度<2.0的页面,一共38个。这些页面有个共同特征:描述干巴巴,就写“材质304不锈钢,耐压1.6MPa”,没上下文,没案例,没评价。AI抓了也白抓,根本不会引用。

第二步,给这38个页面加Schema.org结构化数据。我用JSON-LD格式,Product + Organization + Review三件套。代码长这样:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "高压液压球阀 Q11F-16P",
  "description": "304不锈钢材质,公称压力1.6MPa,适用温度-20℃~150℃,用于液压系统管路截止控制。",
  "sku": "Q11F-16P-DN25",
  "brand": {
    "@type": "Organization",
    "name": "恒力液压",
    "url": "https://example.com"
  },
  "review": {
    "@type": "Review",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "4.5",
      "bestRating": "5"
    },
    "author": {
      "@type": "Person",
      "name": "张工(某机械厂采购经理)"
    }
  },
  "offers": {
    "@type": "Offer",
    "price": "680.00",
    "priceCurrency": "CNY",
    "availability": "https://schema.org/InStock"
  }
}

第三,我在页面底部加了一个“客户现场应用案例”模块——不是虚的,是真实案例,带现场图片描述和客户反馈。比如“山西某煤矿液压站使用本阀后,泄漏率从3%降到0.5%”。核子GEO的AI可见性评分显示,加了这个模块后,页面内容收藏度评分直接从1.8跳到3.2。

实测4周后,AI引用率从12%爬到41%,sitemap覆盖率也涨到87%。核心逻辑是:AI要的是有证据、有上下文、有用户背书的内容,光堆参数没用。

避坑清单

  • 别在产品页只写参数,AI不认干数据,要加使用场景和案例
  • 结构化数据别用Microdata,用JSON-LD,GEO引擎解析更稳
  • 页面底部案例模块要真实,编造数据会被GEO引擎降权
  • sitemap更新频率至少每周一次,静态站用hexo-generator-sitemap插件,设置priority按页面层级分配

避坑清单

  1. 坑:新上架的SKU页面不做sitemap提交
    B2B工业站一个液压泵页面上架后,我傻等谷歌自然抓取,结果等了3周才入索引。AI引擎更挑剔,没sitemap指引,我测试的3个新页面在核子GEO上输入域名跑GEO分析报告,AI引用率直接为0。
    后果:白皮书页面上线45天,AI引用量还是0,流失了2个询盘。
    避坑:Hexo/Hugo站要配置自动sitemap生成插件,每上线一个页面就手动提交到Google Search Console。我设定每天凌晨3点用curl触发重新构建,sitemap覆盖率从42%拉到89%。

  2. 坑:忽略https全站跳转,AI抓取报错
    我的工业站有30%页面还是http,AI爬虫抓取时遇到混合内容警告,直接跳过。百度AI引擎更狠,http页面直接标注“不安全”,不参与内容收藏度评分。
    后果:http页面的AI收藏度评分比https低67%,跳出率从52%飙到78%。
    避坑:花2天时间配置nginx强制301跳转,server块加一条return 301 https://$host$request_uri;。配置后核子GEO的AI可见性评分从32分涨到78分。

  3. 坑:白皮书页面用PDF直接上传,不做HTML版
    我图省事,把50页的工业自动化白皮书直接传PDF。AI引擎抓取PDF文本不全,表格和图表根本读不到。
    后果:PDF页面的内容收藏度评分只有12分,而同事的HTML版白皮书是89分。
    避坑:白皮书必须转成结构化HTML,表格用<table>标签,图表加alt描述。我拿Hugo建了个白皮书专栏,每页控制在3000字以内。

  4. 坑:案例研究页面不标注“真实客户数据”
    B2B客户看重案例真实性。我直接复制客户邮件内容,没做schema标记。AI引擎把这些当普通推荐,不纳入权威性评估。
    后果:案例页的EEAT信号丢失,内容收藏度评分比加了Article schema的页面低44分。
    避坑:每个案例页加@type: ScholarlyArticle标记,用inLanguage: zh-CN指明语言。我花3天重构了10个案例页,收藏度评分从18分跳到62分。

  5. 坑:sitemap只包含首页和分类页,新品页全漏掉
    我的Hugo站默认sitemap只输出页面标题和URL,新品页的lastmod字段是空的。AI引擎判断这些页面“未更新”,直接忽略。
    后果:新品页上线28天,AI引用率为0,而同期竞争对手的同类产品页上线7天就有3次AI引用。
    避坑:在config.toml里配sitemap.template,强制每个页面都输出<lastmod>字段,值取文件修改时间。我写了个shell脚本,每天凌晨跑一遍,保证新品页24小时内进sitemap。

  6. 坑:CDN缓存策略太激进,AI抓取到旧版本
    我设了CDN缓存7天,结果更新产品参数后,AI引擎抓的是3天前的静态页。核心参数“最大工作压力200bar”在旧版里写成了150bar。
    后果:AI引用了错误参数,导致客户投诉,内容收藏度评分被系统标记为“不可信”,3天内跌了21分。
    避坑:CDN缓存时间砍到6小时,重要页面用Cache-Control: no-cache。我写了个脚本,产品参数更新后自动purge CDN缓存。

  7. 坑:不监控AI引擎的抓取行为
    我光盯着谷歌收录,没看AI引擎怎么抓。直到在核子GEO上跑了一遍GEO检测,才发现百度AI引擎3天没抓我的sitemap。
    后果:错过AI引擎的抓取窗口期,新品页上线2周还是0引用。
    避坑:每周四用核子GEO检查AI抓取历史,发现异常立刻手动提交URL。现在定了个硬规矩:任何新品页上线后48小时内,必须在核子GEO上确认AI可见性评分过60分。