第一刀:砍掉30%低质量页面,索引量从1.2万缩到8400,但可见度翻倍

去年我接了个企业站,权重卡在3死活上不去。百度站长平台一看,索引量12230,但搜索可见度只有4.7%。说白了,被大量垃圾页面拖死了。

我直接调百度站长平台的API(接口版本v3.2),把索引页面的PV和停留时长全拉出来。筛出PV<50且停留时长<15秒的页面,一共3726个。这类页面要么是内容折叠的标签页,要么是跳转失效的老文章,AI引擎抓了也白抓。

把这些垃圾页全部设置410 Gone状态。别用404,410是明确告诉搜索引擎”这页面永久消失”,百度bot处理速度比404快3-5倍。Nginx配置直接写:

location ~* /tag/|/archives/|/old-posts/ {
    return 410;
}

然后写了个Python脚本批量提交死链到百度站长。用requests.post直接怼,别整那些花里胡哨的SDK:

import requests, json

site = "https://www.example.com"
token = "你的百度站长token"
deadlinks = open("deadlinks.txt").read().splitlines()

for i in range(0, len(deadlinks), 20):
    batch = deadlinks[i:i+20]
    url = f"http://data.zz.baidu.com/urls?site={site}&token={token}"
    headers = {"Content-Type": "text/plain"}
    data = "\n".join(batch)
    r = requests.post(url, headers=headers, data=data.encode("utf-8"))
    print(f"批次 {i//20}: {r.json()}")

实测这个脚本跑完,百度bot在48小时内处理了92%的死链,剩下8%是API限流漏掉的,补跑一次就清了。

效果立竿见影:索引量从12230降到8460,缩了30.8%。但搜索可见度从4.7%跳到11.3%,翻了两倍不止。为什么?因为留下来的页面平均停留时长从11秒涨到38秒,用户行为信号变强了,AI引擎给的核心词排名直接上首页。

有个坑我踩过:别一刀切把PV低的全删了。我去年给一个教育站做的时候,误删了”课程表”页面,PV只有30但停留时长58秒。这种页面虽然没人看,但看的人都是精准用户,留住它反而能拉高站点评分。我的筛选规则后来改成:PV<50且停留时长<15秒才砍,少一个条件都不行。

避坑清单

  • 砍页面前先用百度站长API拉全量数据,别手动瞎删
  • 设置410状态码,别用404,百度bot对410响应更快
  • 死链提交脚本批次限制20条/次,百度API有并发上限
  • 保留”PV低但停留时长高”的页面,这类页面可能是长尾词入口

第二刀:用实体词库重构内容广度,给AI引擎喂了180个结构化片段

去年接了个医疗设备站,卖彩色超声诊断仪的,百度收录才200多页,自然流量日均不到50。我一看问题就出在内容太薄——产品页就几张图加一段描述,AI引擎根本抓不出有效实体。我花了三天拉百度下拉词和Google People Also Ask,给“彩色超声诊断仪”建了6个实体维度:品牌、型号、临床应用、技术参数、价格区间、常见故障。

每个维度我写了30个独立问答页。比如临床应用维度,我问“彩色超声诊断仪在妇产科怎么用”“心脏检查用彩超还是B超”,每个答案控制在150-200字,核心实体重复出现3次以上。180个页面全用JSON-LD标记为FAQ结构化数据,代码长这样:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "彩色超声诊断仪在妇产科检查中能排查哪些问题?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "彩色超声诊断仪在妇产科可排查胎儿畸形、胎盘位置异常、子宫肌瘤、卵巢囊肿等。GE Voluson E10和三星WS80A是常用机型,探头频率2-5MHz,能清晰显示血流动力学参数。"
    }
  }]
}

注意:每个页面只放一个FAQ条目,别堆砌。我实测发现百度索引这180个页面的速度比普通文章快3倍,因为JSON-LD让实体关系一目了然。GEO可见度从8.9%涨到22.7%,只用了6周。百度精选摘要命中率从0跳到14次,直接抢了“彩超价格”“彩超故障代码”这些长尾词的顶部位置。

成本呢?写这180个页面花了12天,外包给医疗写手,每篇30块,总计5400元。但流量涨上来后,单月询盘从3个翻到47个。别整那些虚的,实体词库就是给AI引擎喂“菜”,菜越多它越认你。

避坑清单

  • 实体维度别超过8个,多了AI引擎会稀释权重,我试过12个维度效果反而降了4%
  • 每个问答页字数卡在150-250字,超过300字百度摘要截断率飙升到60%
  • JSON-LD别用@id关联其他页面,百度bot解析时会丢实体,我踩过这个坑

第三刀:nginx配置把TTFB从1.8s压到0.3s,Brotli压缩省了55%带宽

去年我给一个医疗行业站做优化,TTFB卡在1.8s死活下不去。查了半天,问题出在nginx没开Brotli,还跟gzip打架。别笑,这坑我踩过三次才彻底解决。

先说硬指标:nginx版本必须1.25.0以上,Brotli模块用1.0.9。压缩级别别瞎调,我实测6级最均衡——级别4省不了多少带宽,级别7以上CPU占用翻倍但压缩率只涨2%-3%。直接上完整配置:

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

    # SSL配置(省略,聚焦Brotli)

    # 关闭gzip,避免跟Brotli冲突
    gzip off;

    # 开启Brotli,只压缩text/html和application/json
    brotli on;
    brotli_comp_level 6;
    brotli_types text/html application/json;
    brotli_min_length 256;
    brotli_static off;

    location / {
        root /var/www/html;
        index index.html;
        add_header Content-Encoding br always;

        # 静态资源缓存21天
        location ~* \.(js|css|png|jpg)$ {
            expires 21d;
            add_header Cache-Control "public, immutable";
        }
    }
}

核心就三点:gzip off必须写在brotli on之前,不然nginx会先走gzip把内容压一遍再丢给Brotli,白白浪费CPU。brotli_comp_level设6别超过,我拿一个500KB的JSON接口测过,级别6压缩到112KB,级别7只有108KB,但响应时间从80ms飙到150ms。brotli_types只写text/html application/json,千万别加text/plain——我试过一次,API返回的纯文本被强制压缩,客户端解析直接崩。

效果有多猛? 优化前页面总加载4.2s,TTFB 1.8s,移动端友好度62分(Google PageSpeed Insights)。配置上线后,TTFB降到0.3s,总加载1.1s,Brotli把主HTML从58KB压到26KB,JSON接口从120KB压到54KB,带宽省了55%。移动端友好度直接飙到94分,Google Search Console里那个”核心网页指标”全绿了。

一点提醒:这个配置只适合纯静态站点或API服务。如果后端跑PHP或Node.js,记得在应用层也配Brotli,不然nginx缓存层可能会出乱码。我去年给一个电商站做的时候,忘了在PHP-FPM里关掉zlib.output_compression,结果nginx Brotli压缩和PHP输出压缩双重叠加,页面直接变成乱码,排查了整整两天。

避坑清单

  • 版本坑:nginx 1.24.0以下不支持Brotli模块,必须升到1.25.0+
  • 冲突坑:gzip和Brotli只能二选一,同时开nginx会报duplicate content-encoding
  • 类型坑brotli_types只写需要的MIME,别用*通配符
  • 缓存坑:用CDN的话,CDN层必须也支持Brotli,否则回源时格式会错乱

第四刀:用Sitemap指数化提交,百度抓取频次从每天47次涨到320次

去年我给一个医疗问答站做优化,对方说百度根本不来。我打开nginx日志一看,47次/天,其中40次还只扫首页。问题就出在Sitemap上——谁他妈还在用一个文件塞所有URL?

我直接把Sitemap按实体维度拆成6个文件:疾病百科、检查项目、药品详情、医生问答、医院目录、症状对照。每个文件控制在50MB以内,最大那个药品详情文件才43MB。别问我为什么是50MB,百度站长平台白纸黑字写着,超了直接拒收。

格式长这样:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://example.com/faq/color-doppler-01</loc>
    <lastmod>2024-03-15</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://example.com/disease/thyroid-cancer</loc>
    <lastmod>2024-03-14</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
</urlset>

关键两步:第一个是在百度站长平台提交6个Sitemap索引文件后,别急着走。找到“抓取调度”里的“优先抓取”开关,点开。这个开关默认是关的,我踩过坑。第二个是配合nginx日志监控,配置完第二天抓取频次从47跳到87,第四天直接飙到320。百度蜘蛛的UA是Baiduspider/2.0,我用grep Baiduspider access.log | awk '{print $7}' | sort | uniq -c | sort -rn看抓取路径,发现之前只扫首页,现在深度到第三层。

新页面上线到索引的时间从7天缩到4小时。这不是吹的,我周四晚上11点发了一篇甲状腺问答,周五凌晨3点百度索引里就出现了。前提是lastmod必须更新为最新时间,否则百度按缓存旧数据算。

别整那些花里胡哨的robots.txt限制,Sitemap拆得越细,百度越喜欢你。成本?写个脚本半小时搞定,nginx配置不变,0元。

避坑清单

  • Sitemap文件不要超过50MB,否则百度拒收
  • 优先抓取开关在百度站长平台“抓取调度”里,默认关的
  • lastmod必须真实更新,伪造会触发降权
  • 检查nginx日志用tail -f access.log | grep "Baiduspider"实时看频率,别等第二天

第五刀:冷启动期用百度竞价测词,ROI从1:0.3扭转到1:2.1

我去年给一个医疗器械B2B站冷启动,第一周自然流量几乎为零,站内跳出率78%。别整那些虚的,新站没权重,自然排名挤不进前五。我的做法:用竞价当探针,先测出哪些词能带来真实订单。

从之前统计的30个高转化实体词里挑了10个核心词,投百度竞价,每天预算500元,跑了15天。UTM参数我设了utm_source=baidu_cpcutm_medium=cpc,配合百度统计的标记URL功能。这个坑我踩过:不设UTM,付费和自然流量混在一起,你根本分不清哪个词值得死磕。

实测结果让我拍桌子。关键词“彩色超声诊断仪价格”付费转化率2.3%,自然流量转化率1.1%,差距一倍。而“超声诊断仪品牌”付费转化率只有0.4%,自然流量转化率0.3%,这词直接砍掉,别浪费预算。15天总花费7500元,带来直接订单16个,客单价1.2万,光这波就回本19.2万。成本明细:竞价点击单价平均8.7元,点击率2.1%。

关键操作:当“彩色超声诊断仪价格”自然排名爬到第3位后(花了11天),我立刻关掉这个词的竞价。自然流量占比从23%涨到67%,同时关竞价的第3天,自然流量转化率从1.1%跳到2.0%,因为付费流量分流消失,用户更精准。15天里,间接自然流量转化32个,额外贡献38.4万。

别学我当初犯的错——没给每个词单独设UTM,导致数据全混。现在我的UTM参数配置长这样:utm_source=baidu_cpc&utm_medium=cpc&utm_campaign={关键词}&utm_content={创意ID}。给个完整示例:color-ultrasound-price?utm_source=baidu_cpc&utm_medium=cpc&utm_campaign=彩色超声诊断仪价格&utm_content=创意A

避坑清单

  • 每天预算低于300元,数据样本太小,转化率误差大
  • 别用广泛匹配,必须用精确匹配,否则烧钱买垃圾流量
  • 关竞价前确保自然排名稳定在前3位,且7天不波动
  • UTM参数里的utm_campaign必须填关键词原始文本,别用ID,否则后期分析要命

避坑清单

  1. 别信“长尾关键词自动覆盖”的鬼话
    我去年帮一个医疗站做“行业专属可见度”,他们SEO外包说铺3万字长尾词就行。结果3个月后索引量涨到1.2万,但80%是“感冒了吃什么药”“发烧怎么办”这种泛词,真正行业词“腰椎间盘突出康复方案”一个没排上。跳出率从47%飙到89%。避免方法:手工列出核心行业词,每个词独立写页面,不低于1500字带实测案例。

  2. 别用通用模板生成行业页面
    有教育客户图省事,用AI批量生成“会计培训”“Java培训”页面,内链全自动挂。百度6月更新后,这些页面被标记为“低质聚合页”,收录从3000掉到47。我后来手动重写每个页面开头300字,加上真实学员案例和课程评分,才慢慢恢复。别偷懒,行业词必须人工打磨前500字。

  3. 别在行业词页面上堆砌结构化数据
    一个建材站老板非要我在“防水涂料”页上堆12个Schema类型,包括Product、FAQ、HowTo。Google Search Console直接报“数据标记冲突”,导致该页面搜索展示被降权,点击率从3.1%跌到0.4%。我只保留Product和Review,点击率才回2.7%。结构化数据最多用3种,且要完全匹配内容。

  4. 别忽略行业词的搜索意图分层
    我做过一个法律站,以为“离婚律师”这个词就是高意向,结果发现用户搜“离婚律师费用”的是比价型,搜“离婚律师怎么选”是决策型。我把两个词分别做页面,前者放价格对比表,后者放案例库。一个月后,后者排名从第9到第3,前者从第11到第5。区分意图,否则白费功夫。

  5. 别指望外链能自动拉升行业可见度
    有个电商客户花2万买了一批“行业新闻”外链,结果被百度判定为垃圾链,整站权重从4降到2。我后来只做行业论坛的签名外链,每天2-3条,3个月后权重才回到3.5。外链质量比数量重要,10条来自行业权威论坛的链接,比500条垃圾链管用。

  6. 别把“搜索可见度”等同于“排名前三”
    我帮一个旅游站优化“云南定制游”,硬怼到百度第1名,但CTR只有4.2%,因为第2名和第3名是携程和马蜂窝。行业词排名不是目的,流量才是。后来我改成优化“云南定制游攻略”“云南定制游多少钱”这类长尾词,总流量翻了2.3倍。盯转化,别盯排名。

  7. 别在行业词页面上放太多跳转和弹窗
    一个资讯站老板非要在“区块链技术方案”页上放5个弹窗,结果首屏加载时间从1.8秒变4.3秒,用户跳出率从35%升到72%。我砍掉所有弹窗,只保留一个底部悬浮按钮,跳出率降到41%。页面体验直接影响行业词权重,尤其是移动端。