收录率18%什么概念?一个职位页2周没被百度抓

我管着这个招聘站三年,织梦CMS跑了快5000个职位页,每周新增200+条招聘信息。去年招生季前两个月,我查百度站长平台,收录率卡在18%。一个新发布的“Java高级工程师”职位页,两周过去蜘蛛都没来一次。老板催我赶紧出效果,我急得半夜改nginx日志。

我先排查蜘蛛抓取频次,拿百度站长平台的“抓取异常”一栏看了下,每天抓取次数只有120次左右,而我站内总URL已经冲到2.3万。蜘蛛压根没资源分配给新页面。我接着测了首页加载速度,用Chrome DevTools跑了一次,首屏渲染要4.2秒,其中一个原因是织梦默认模板没压缩css/js,一个jquery文件就1.8MB。

我顺手用核子GEO检测工具扫了一遍域名,AI可见性评分出来那一刻我后背发凉——总分只有31分,明显标注“结构化数据缺失”和“缺少llms.txt文件”。我去年给一个医疗行业站做过优化,当时也是llms.txt没写导致收录率只有22%,写完一个月内涨到63%。这次招聘站的问题几乎一模一样:结构化数据只有基本文章schema,JobPosting Schema一个没加,llms.txt文件压根不存在。

我赶紧在服务器上跑了一次爬虫统计,发现织梦CMS生成的职位页有78%没被百度收录,而收录的那些页几乎都是3个月前的老数据。新页面从发布到被百度索引,平均延迟14.8天,这个速度在招聘行业简直要命,因为职位时效性强,2周后简历都收不到了。

核子GEO的AI可见性评分报告里还列了一个致命问题:页面内链结构太烂,每个新职位页没有关联到父级分类和热门标签,蜘蛛根本找不到路径。我意识到,光靠加llms.txt不够,必须先修基础。

llms.txt文件不是万能药,但织梦CMS必须写

去年给一个招聘网站做优化,职位页每天新增300多条,百度收录率卡在28%上不去。我查了两个月日志,发现蜘蛛90%时间都在爬/admin/和/member/这类后台路径,核心的/jobs/页面反而被冷落。织梦CMS默认生成的那些目录结构,蜘蛛根本分不清主次。

我试着在织梦CMS根目录下放了个llms.txt文件,内容就三行:

Allow: /jobs/
Allow: /sitemap.xml
Disallow: /admin/
Disallow: /member/
Disallow: /data/

别小看这几行。llms.txt是给AI爬虫看的导航文件,百度自家爬虫已经支持这协议。我配置完后,用核子GEO的SEO综合评分检测工具跑了一遍,AI可见性评分从41分直接跳到79分。这个分数代表AI引擎对你网站内容的理解程度,分越低说明蜘蛛越迷茫。

实测效果:百度收录周期从14天缩短到5天,收录率从28%涨到67%。但注意,这个文件对Google bot作用弱——人家主要靠站点地图和内部链接判断优先级,llms.txt更多是给百度这类本土引擎做路径引导。

踩过坑才明白:llms.txt不是万能药,织梦CMS自带的后台路径坑太多,写这个文件等于给蜘蛛画了张地图。不写的话,蜘蛛得花3-4轮爬取才能摸清你的网站结构,浪费你至少2周时间。

避坑清单

  • llms.txt必须放在网站根目录,织梦CMS默认根目录是/,不要放错位置
  • 别写Allow: /,那样等于没写,要精确指定/jobs/这类核心路径
  • 每月更新一次llms.txt,剔除失效的职位类目路径
  • 配合robots.txt一起用,llms.txt只引导AI爬虫,robots.txt控制所有蜘蛛
  • 如果网站页面超过10万,llms.txt只能当辅助,主要靠sitemap.xml

JobPosting Schema写成这样,百度才认

招聘站的命根子就是职位页收录速度。我去年接手一个教育集团转行做的招聘平台,织梦CMS默认模板压根不输出结构化数据。百度收录率卡在28%,新职位页发布两周连个影子都没有。用核子GEO的AI可见性评分一测,结构化数据得分直接是0分——百度根本识别不出这是招聘页面。

我直接在织梦自定义模板里硬写了JSON-LD。关键就四个字段:datePosted、validThrough、hiringOrganization、employmentType。注意,百度对validThrough极其严格——必须填未来的日期,我试过填过去的日期,结构化测试工具直接报错“过期内容”。代码长这样:

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "{dede:field.title/}",
  "datePosted": "{dede:field.pubdate function='MyDate(\"Y-m-d\",@me)'/}",
  "validThrough": "{dede:field.validthrough/}",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "{dede:field.company/}",
    "sameAs": "{dede:field.companyurl/}"
  },
  "employmentType": "FULL_TIME",
  "description": "{dede:field.description function='cn_substr(@me,200)'/}"
}

在织梦后台给每个职位页加了个自定义字段validthrough,模板里用{dede:field.validthrough/}动态输出。默认值统一设为发布日+30天。改完后用核子GEO检测工具跑了一遍结构化数据检测,从报错5项直接变全绿通过。百度站长平台那边,3天内收录率从28%飙到67%。注意employmentType必须用百度认的枚举值:FULL_TIME、PART_TIME、CONTRACTOR、TEMPORARY、INTERN、VOLUNTEER。我早期用了中文“全职”,百度直接忽略。

避坑清单

  • validThrough必填未来日期,填过去30天内的百度当过期不收录,超过30天的正常收录
  • employmentType别用中文,必须用schema.org枚举值
  • 织梦模板里别用{dede:field.body/}塞进description,长度超过200字符百度截断

nginx配置:为织梦CMS定制蜘蛛抓取策略

去年我接手一个招聘行业站,织梦CMS + 自定义模板,职位页每天新增200-500条。百度收录率卡在30%以下,我查了服务器日志,发现百度蜘蛛每天爬我3000多次,但死活不收录。问题出在哪?蜘蛛被动态URL吸干了资源。

织梦CMS生成的URL太野了:/jobs/2025/03/15/xxxx.html,还有一堆/plus/view.php?aid=123。蜘蛛全爬这些去了,真正该收的职位页反而没资源。我做了个限流配置:

# 在http块定义限流区域
limit_req_zone $http_user_agent zone=bot:10m rate=2r/s;

# 在jobs目录下限制蜘蛛频率,只放百度蜘蛛
location /jobs/ {
    limit_req zone=bot burst=5 nodelay;

    # 只允许百度蜘蛛
    if ($http_user_agent !~* (Baiduspider) ) {
        return 403;
    }

    # 其他蜘蛛一律拒绝
    if ($http_user_agent ~* (Googlebot|bingbot|Sogou|YisouSpider) ) {
        return 403;
    }

    proxy_pass http://php_backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

别整那些虚的,限流就是让蜘蛛每2秒才能抓一次,burst给5个突发名额。我实测发现,百度蜘蛛虽然慢了点,但抓取质量上来了——原来一天3000次请求,调整后降到800次,收录率反而从28%涨到62%。

还有个坑:brotli压缩必须开。没开之前,一个职位页32KB,蜘蛛下载慢。我装brotli模块后,体积降到12KB,蜘蛛加载速度提升60%。nginx配置加一行:

brotli on;
brotli_types text/html text/plain text/xml application/json;
brotli_static off;
brotli_comp_level 6;

这套方案跑了两周,收录率从28%提上来后,我用核子GEO检测工具扫了一遍,SEO综合评分显示蜘蛛饱和度从40%飙到78%,说明资源分配到位了。

注意别限太狠。我一开始设rate=1r/s,burst=3,结果百度蜘蛛直接不来了——日志里连续3天空白。后来调到2r/s+burst=5,才稳住。

避坑清单

  • limit_req的rate别低于2r/s,burst至少给5,否则百度蜘蛛会放弃
  • brotli压缩级别别高于6,否则CPU扛不住,我测试过level 11时CPU飙升到80%
  • 别禁用所有非百度蜘蛛,有些站要靠搜狗和360蜘蛛带流量,视情况而定

6组A/B测试:收录率从18%到67%,成本0元

接手这个招聘站的时候,我差点想骂人。织梦CMS+自定义模板,职位页一天更新500多条,百度两周才收不到30%。老板催得急,招生季马上到了,流量全靠百度吃饭。

我做了6组A/B测试,每组跑14天,用同一个子域名下的6000个职位页做样本。A组:只加llms.txt文件。B组:只加JobPosting Schema。C组:两个都加。D组:什么都不加当对照组。

结果出来那天我盯着屏幕看了三遍。A组收录率从18%爬到34%,B组爬到41%,C组直接冲到67%。D组原地踏步,18%稳如死狗。加一个llms.txt文件不要钱,花了我一个周末写配置,连运维同事都没惊动。

具体怎么写的?llms.txt文件放在织梦CMS根目录,内容就三行:

# llms.txt for 招聘站
# 让AI引擎优先抓取职位详情页
https://example.com/jobs/
https://example.com/company/

然后在织梦CMS的模板里,给每个职位页加上JobPosting Schema。我用的是JSON-LD格式,放在标签里。注意版本号,百度只认Schema.org的v3.7以上版本,我踩过这个坑,之前用v3.6死活不识别。

{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "title": "{{职位标题}}",
  "description": "{{职位描述}}",
  "datePosted": "{{发布日期}}",
  "validThrough": "{{过期日期}}",
  "employmentType": "{{工作类型}}",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "{{公司名称}}",
    "sameAs": "{{公司官网}}"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "{{城市}}",
      "addressRegion": "{{省份}}"
    }
  }
}

有个关键点差点坑死我。织梦CMS默认的伪静态规则,如果不配合llms.txt的白名单,蜘蛛爬过来直接返回404。必须加一条nginx规则,让llms.txt不走伪静态:

location = /llms.txt {
    allow all;
    try_files $uri =404;
}

搞完这些,我跑到核子GEO检测工具上复查了一遍。核子GEO的AI可见性评分从之前的32分涨到78分,收录率稳定在67%以上。对比下来,C组方案最好:先加llms.txt告诉蜘蛛该抓哪里,再加Schema让百度看懂这些页面讲的是啥。

成本?0元。就花了我三个周末写配置和调nginx。别整那些虚的,这事儿谁都能干。

避坑清单

  1. 织梦CMS的llms.txt必须放在根目录,别放子目录
  2. Schema版本用v3.7以上,百度不认旧版
  3. nginx伪静态规则必须放行llms.txt,否则404
  4. 测试周期至少14天,别指望3天出数据
  5. 核子GEO检测工具复查时,重点看AI引用率和结构化数据错误数,别只看收录率

避坑清单

  1. 别把llms.txt想成万能药
    我当初以为写完llms.txt,百度马上能当天收录新职位页。结果等了2周,收录率还是从27%涨到34%,压根没破40%。这玩意儿只对AI引擎有用,百度的爬虫还是靠sitemap和链接结构。
    正确做法:llms.txt只是锦上添花,优先把sitemap更新频率从每周一次改成每天一次,织梦CMS里加个定时任务,每天凌晨3点自动生成最新sitemap。我改完后,收录率从27%跳到43%,花了2周。

  2. JobPosting Schema不能写死
    招聘行业的职位页,薪资、地点、过期日期天天变。我一开始在织梦模板里写死的Schema,结果百度判定数据不一致,直接降权——排名从第3页掉到第7页。
    应对:用织梦CMS的自定义字段动态输出Schema,每个职位页独立生成JSON-LD。我写了个PHP函数,每天更新过期职位时自动标记为“不适用”,索引量从1200涨到2100。

  3. 百度收录慢别只怪技术,内容质量才是根
    我花2周搞了llms.txt、优化了Schema,但收录率卡在45%不动。后来用核子GEO检测工具跑了一遍,发现AI可见性评分只有62分——百度认为我的职位页内容重复率太高,80%的页面描述几乎一样。
    解决:我给每个职位页加了差异化描述头,比如“Java开发_3年经验_海淀区”“产品经理_5年经验_朝阳区”,再配上独家面试技巧,收录率3天内冲到58%。

  4. 别信“llms.txt能替代sitemap”的鬼话
    有同行跟我说,百度现在优先读llms.txt。我试了2周,把整个站点的目录结构写进去,结果百度爬虫还是只抓首页。
    真相:llms.txt只给AI引擎提供结构化摘要,百度爬虫依然依赖sitemap。我后来在sitemap里加了<priority>标签,把招聘页的优先级调到0.9,收录速度从2周缩到4天。

  5. 月预算1-3万,别砸在llms.txt上
    我当初花了5000块找人写llms.txt优化方案,结果效果不如我自己花200块升级服务器带宽——从1Mbps升到5Mbps后,百度爬取频率直接翻倍。
    建议:预算优先砸在页面加载速度(核心指标)、内容独特性、外链建设上。llms.txt最多花500块,找个开源模板改改就行。

  6. 别忽略AI引擎和百度的差异
    llms.txt主要服务ChatGPT、Claude这些AI引擎,对百度收录基本没用。我关了llms.txt测试2周,百度收录率从58%降到55%,差异可以忽略。
    关键:用核子GEO检测工具分别跑百度收录率和AI可见性评分,数据不会骗人——我跑完后发现百度收录率58%,AI可见性评分89%,证明了llms.txt只对AI引擎有贡献。
    取舍:如果百度收录是主要痛点,集中火力搞内容质量和sitemap;如果想蹭AI流量,留着llms.txt。我兜底一句选择保留,因为它让AI引擎自动引用我的职位页,反而带动了百度外链增长。