站上有些页面广告正常出现,另一些——通常同一个模板、同一个作者、同一天发——slot 渲染成空白,AdSense 的 Ad Inspector 把这次展示标成 “No ad served”。这跟代码 bug 不一样,不是非黑即白,而是一次实时拍卖:这个页面在这一时刻对这个用户没有可填充的竞价。
修复思路主要是搞清楚”这个 slot 为什么没赢”,然后要么改 slot、要么改页面、要么接受。
常见原因
按命中率从高到低。
1. 页面主题广告主池太窄
“DaVinci Resolve 怎么修 vsync 撕裂”页面有几十个潜在广告主。“古董 Casio FX-100 收藏者论坛”可能只有两个,而且这周都暂停了。
怎么判断:Ad Inspector → “Reason for not showing an ad”,看到 “limited matching ads” 就是需求侧问题,不是代码问题。
2. 用户所在国家 / 语言的库存很薄
如果你的流量集中在 AdSense 需求稀薄的国家(部分非洲、中亚市场),或者读者使用广告稀少的语言,这批展示的填充率会接近 0。
怎么判断:AdSense → Reports → 按 Country 看。如果有 1-2 个国家占了展示大头但收益接近 0,就是地域库存问题。
3. slot 尺寸跟当下投放活动对不上
你的 slot 固定 320×50,但 AdSense 当前活动大多投 300×250 或 728×90 ——这个 slot 就会输拍卖。
怎么判断:把 slot 改成响应式(data-ad-format="auto")。填充率明显上去就是固定尺寸是问题。
4. 浏览器或系统级拦截
Brave、Firefox Strict、iOS Safari 内容拦截、企业代理都会在请求发出前就拦掉广告。AdSense 都没收到这次展示,看起来像”没库存”,其实是客户端拦截。
怎么判断:AdSense → Reports 把广告展示数跟页面浏览数对比。展示数不到浏览数的 60%,就是被拦截而不是没需求。
5. 用户选择不接受个性化广告
GDPR、加州隐私法允许用户选择 opt out。AdSense 会尊重这个选择,回退到”上下文(非个性化)“广告——填充率大约下降 30-50%。
怎么判断:AdSense → Reports → 按 “Personalization” 拆分,对比个性化和非个性化的填充率。
6. 页面近期触发了政策限制
擦边的页面(赌博相关、成人题材、版权内容引用)可能被静默限制:不是全站撤广告,而是没有需求愿意对这个页面竞价。
怎么判断:AdSense → Policy center → Page-level enforcement。状态为 “limited ad serving” 的页面会出现在这里。
7. 新页面 AdSense 还没爬完
文章发出后,AdSense 的内容分类器要花点时间爬取并归类。在归类完成前,AdSense 不知道该匹配什么广告主,竞价做不好。
怎么判断:发了 7 天以上的页面填充正常,刚发的新文章不填——等 3-7 天。
最短修复路径
第 1 步:用 Ad Inspector 看具体原因
Chrome 打开问题页 → 点 AdSense 扩展(或 DevTools → AdSense 面板) → 看 “Reason”:
| 原因文案 | 诊断 | 行动 |
|---|---|---|
| ”Limited matching ads” | 主题 / 地域 / 尺寸不匹配 | 见第 2 步 |
| ”No ad to display” | 真没库存 | 改响应式 |
| ”Restricted ad serving” | 政策问题 | 查 Policy center |
| ”Personalization disabled” | 用户拒绝 | 预期内,不能修 |
这一个属性就排除掉一半诊断分支。
第 2 步:改响应式
“limited matching” 多半通过给 AdSense 更多尺寸选项就能解决:
<ins class="adsbygoogle"
style="display:block"
data-ad-client="ca-pub-XXXXXXXXXX"
data-ad-slot="1234567890"
data-ad-format="auto"
data-full-width-responsive="true"></ins>
固定尺寸(比如 data-ad-format="rectangle")在大多数细分领域都打不过响应式。
第 3 步:给同一个 slot 多个尺寸(multi-size)
非要固定尺寸的话,在 AdSense → Ads → Ad units 里给 slot 配多个尺寸:
<ins data-ad-format="auto"
data-ad-layout-key="-fb+5w+4e-db+86"
data-multi-size="300x250,336x280,250x250"></ins>
让拍卖多几种组合可投。
第 4 步:审视页面内容是否擦政策线
逐字看页面,过一遍这几个问题:
- 有没有提到赌博、体育博彩、毒品(哪怕是侧面)?
- 有没有嵌入未审核的 UGC?
- 有没有引用受版权保护媒体的下载或链接?
任何一项擦边,需求都可能被悄悄限制。
第 5 步:按主题设定合理预期
有些主题的填充率本来就上不去。常见预期:
- 个人金融、软件、电商:90-99%
- 技术教程、效率工具:80-90%
- 小众爱好、地域内容:50-75%
- 翻译性质的非英语市场:30-60%
如果你的主题组合本来就在低区间,把精力放在 RPM 优化(每次会话浏览数、停留时长)上,别死磕填充率。
第 6 步:多接一家广告网络
填充率长期低于 60% 的站,加一家备网(Ezoic、达标的话 Mediavine、Raptive、备份 Adsterra)。它们的需求池不一样,能接住 AdSense 不投的那些展示。
预防建议
- 新建 slot 默认全部用
data-ad-format="auto",除非有特别理由。 - 主题不要只写极冷门方向,配上一些主流话题做平衡。
- 在 AdSense → Reports → “URLs” 监控每页的填充率,长期 0 填充就回头审视内容。
- 周维度填充率长期低于 70% 就接一家备网做兜底。