搜索全站
百度SEO 10 分钟阅读

页面广告比例与百度体验评价:WordPress 广告密度的合理边界

广告放多少算过分?本文结合百度落地页体验规范,给出广告面积、位置、数量的可执行边界,以及 WordPress 里按段落插入广告并控制密度的代码写法。

U
UFO_PF 2019-06-13 · 阅读 10 分钟
页面 百度SEO
阅读提示
本文约 3,782 字,预计阅读 10 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:为了多接一个广告位,整页排名掉了

内容站变现和搜索排名之间始终存在张力。常见的情况是:站点跑通了广告,运营想在正文里多塞一个位,从「每 5 段一个」改成「每 3 段一个」,再在标题下方、正文末尾、侧边各加一个。短期收入确实涨了,两周后却发现文章页的排名开始往下掉,尤其是那些竞争激烈的词。站长容易把原因归结为「内容不够好」,但实际上百度的落地页体验评估里,广告与主体内容的比例是明确的评分项。石榴算法打击的就是「以广告为主体、正文被挤压」的低质页面。问题在于,多少算「挤压」,规范里没有一个数字公式,需要自己建立可执行的判断标准。

原理分析:百度如何评估广告与内容的比例

百度的评估不是简单数广告个数,而是从三个层面综合判断:首屏占比(用户第一屏看到的内容里,广告占多少面积、正文占多少)、正文干扰度(阅读过程中被广告打断的次数、广告与正文的视觉区分度)、主体完整性(正文是否被截断、是否需要点击才能看到全文)。其中首屏占比权重最高——移动端首屏如果一半是广告,用户点进来立刻感知到「这是个广告页」,跳出率会飙升,而跳出与停留时长又会反过来影响排序。

维度 安全区间 警戒区间 高危
首屏广告面积占比 < 20% 20%–35% > 35%
正文内广告间隔 ≥ 4 个自然段 2–3 段 每 1 段
标题下方广告 不放或仅 1 个小条 1 个横幅 多个堆叠
正文是否被截断 完整展示 需点击展开 强制跳转
广告与正文区分 明确标注「广告」 样式接近正文 伪装成正文

需要注意,广告的可接受程度与页面本身的内容价值相关:一篇五千字的深度教程配三个广告位完全合理;一段三百字的快讯配两个广告位就属于广告为主体。所以密度标准要跟内容体量挂钩,不能只看绝对数量。

保姆级实操

步骤 1:统计现有页面的广告密度。 先把现状量化,别凭感觉。以正文段落数为基准计算插入频率:

# 统计已发布文章的平均段落数,用于推算广告位数量是否合理
wp post list --post_type=post --post_status=publish --format=ids \
  | tr ',' '\n' \
  | while read -r id; do
      wp post get "$id" --field=content \
        | grep -c '<p>'
    done \
  | awk '{sum+=$1; n++} END {printf "平均段落数 %.1f(样本 %d 篇)\n", sum/n, n}'

步骤 2:按段落数动态插入广告,而不是固定位置。 短文不放、长文按间隔放,这样密度天然可控。下面是按段落插入的实现,同时保证首段前不放广告:

/**
 * 在正文中按段落插入广告:前 2 段不插,之后每 4 段插一次,最多 3 个
 */
add_filter( 'the_content', function ( $content ) {
    if ( ! is_singular( 'post' ) || is_feed() ) {
        return $content;
    }

    $ad_unit = '<div class="post-ad" data-ad-slot="in-article">'
             . '<span class="post-ad__label">广告</span>'
             . '<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>'
             . '<ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-xxxxxxxxxxxxxxxx" data-ad-slot="1234567890"></ins>'
             . '<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>'
             . '</div>';

    $paragraphs = explode( '</p>', $content );
    $count      = count( $paragraphs );

    // 段落太少(短文)不放广告,避免广告占比过高
    if ( $count < 8 ) {
        return $content;
    }

    $out         = [];
    $ads_placed  = 0;
    $since_last  = 0;

    foreach ( $paragraphs as $i => $paragraph ) {
        $out[] = $paragraph . '</p>';
        $since_last++;

        if ( $i >= 2 && $since_last >= 4 && $ads_placed < 3 ) {
            $out[]      = $ad_unit;
            $ads_placed++;
            $since_last = 0;
        }
    }

    return implode( '', $out );
}, 20 );

步骤 3:用 CSS 明确区分广告与正文。 广告块要有可见的「广告」标识,且与正文样式有明确视觉差异,同时限制高度避免撑爆首屏:

.post-ad {
  margin: 1.5rem 0;
  padding: .5rem 0;
  max-height: 280px;
  overflow: hidden;
  border-top: 1px dashed #e0e0e0;
  border-bottom: 1px dashed #e0e0e0;
}

.post-ad__label {
  display: block;
  margin-bottom: .25rem;
  font-size: 12px;
  color: #999;
}

/* 移动端适度收紧,避免一屏被广告占满 */
@media (max-width: 767px) {
  .post-ad { max-height: 200px; }
}

步骤 4:检查首屏。 用移动端视口打开文章,第一屏(约 667px 高)内广告不应超过一个,且正文首段必须完整可见。标题正下方、正文第一段内不要放广告。

步骤 5:给高价值页面做减法。 把带来主要流量的前 20 个页面单独列出,广告位减半,观察两周的排名与收入变化。多数情况下排名回升带来的流量增益会超过减少的广告收入。

步骤 6:区分广告与自有推广。 站内推荐、自家产品引导不算商业广告,但同样占用视觉空间,计算面积时应一并计入。

常见踩坑

  1. 用固定位置插入(第 2 段后必插),短文章里广告占比直接过半。
  2. 案例: 某站把所有文章页的「相关文章」模块替换为广告位,又在正文每两段插一次,移动端首屏几乎全是广告,两周内移动端点击率下降 62%,被判定为低质广告页,恢复用了将近三个月。
  3. 广告用 float 或绝对定位压在正文上,用户选文字时选到广告。
  4. 广告位与正文同字体同色,用户分不清哪段是正文,被判定为伪装广告。
  5. 用 JS 动态插入广告,抓取时看不到,但渲染后面积很大,抓取与体验评估结果不一致。
  6. 只在 PC 端控制密度,移动端模板另有一套更密的广告配置。
  7. 广告容器没有固定高度,加载时页面跳动(CLS 问题),用户误触广告。

总结

广告密度的判断标准是「主体内容是否仍然是页面的主角」。落地执行时用三个数卡住:首屏广告面积不超过 20%、正文内广告间隔不少于 4 段、短文(段落少于 8)不放正文广告。行动清单:统计平均段落数 → 改成按段落动态插入 → CSS 标识并限高 → 移动端视口核对首屏 → 高价值页减半试运行 → 把自有推广一并计入面积。变现与排名不是二选一,把广告控制在合理区间内,两者可以长期共存。弹窗类广告的风险更高,见 百度移动端弹窗与体验算法;首屏加载问题见 移动端首屏加载优化。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。