做工具站和内容站,迟早会有人问:能不能挂点广告?这篇把常见的几家广告联盟放在一起比:各家门槛多少、给什么样的广告、结算方式、对体验和 SEO 的影响,以及从注册到收到第一笔钱要怎么走。
文中的门槛和费率 2026 年变了好几次(Ezoic、Journey、Raptive 都改过),网上很多标着「2026」的文章用的还是旧规则。下面的数字以各家官方页面为准,截至 2026 年 10 月。申请前请再看一遍官网。
一、先说结论
- 新站先申请 AdSense。 没有流量门槛,主要看内容。没通过就先补内容,再重新申请
- Adsterra 和 Monetag 是兜底选项,不是升级选项。 审核快、什么流量都收,但钱主要来自 Popunder、Social Bar 这些强打扰的形式,广告质量也低
- 做正经产品的站不要用 Popunder。 Chrome 会按 Better Ads Standards 对违规站点过滤全站广告,Google 的广告也一样被过滤。用户还会把弹窗算到你的品牌头上
- 开发者受众优先考虑 EthicalAds 或 Carbon。 每页只有一个小广告位,不伤调性,但要申请,流量也要够
- 流量起来以后换高级联盟。 Journey by Mediavine 从 2026 年 1 月起只要每月 1,000 个 tier 1 session;Raptive 要每月 2.5 万 PV。Ezoic 从 2026 年 2 月起要求每月 25 万活跃用户,小站已经进不去了
- 核心功能页和付费转化页不放广告。 广告只放在博客、教程、SEO 落地页上。广告挣的钱,通常抵不上转化率掉下去的损失
二、各家对比
| 平台 | 准入门槛 | 主要广告形式 | 分成 / 收益 | 结算 | 适合 |
|---|---|---|---|---|---|
| Google AdSense | 没有流量门槛,审内容质量和政策 | 展示、自动广告、信息流、文章内 | 不公开分成;欧美流量单价较高 | 美元账户满 $100 月结;收入到 $10 时邮寄 PIN 验证地址 | 几乎所有内容站、工具站的第一选择 |
| Adsterra | 没有流量门槛,审核快 | Popunder、Social Bar、Interstitial、Native Banner、Display Banner、Direct Link | 不公开分成;CPM 差别很大,看 GEO 和形式 | NET-15,每月两次;Paxum / WebMoney 起付 $5,PayPal $25,USDT $100,电汇 $1,000 | 被 AdSense 拒的新站,非 tier 1 流量为主的站 |
| Monetag(PropellerAds 的发布商业务) | 没有流量门槛,24 小时内审核 | Popunder、Push、In-Page Push、Vignette、SmartLink;MultiTag 一段代码混合多种形式 | 官方说法不一致(80% 或 90%+) | 每周结算,官方写起付 $5 | 和 Adsterra 同类,可以拿来比价 |
| Media.net(Yahoo / Bing 上下文广告) | 要申请,主要收英语、tier 1 流量,没有公开的流量门槛 | 上下文广告、展示广告 | 不公开 | 第三方资料说 $100 起付、NET-30,可能已变 | 美英流量占比高的内容站,作为 AdSense 的补充 |
| Ezoic | 每月 25 万活跃用户(2026-02-19 起);小站只能申请 Incubator,每月选 20 个 | 多家竞价、AI 排广告位 | 收益比 AdSense 高,但页面变重 | — | 已经有规模的站 |
| Journey by Mediavine | 每月 1,000 个 tier 1 session(2026-01-15 起,以前是 1 万);Grow 插件跑满 30 天 | 高级程序化广告 | 发布商拿 70%;12 个月广告收入满 $5,000 自动升级到 Mediavine 正式会员 | — | 欧美读者为主的内容站,门槛最低的高级联盟 |
| Mediavine 正式会员 | 年广告收入 $5,000(以前是 5 万 session/月) | 同上 | 更高分成 | — | 同上 |
| Raptive(原 AdThrive) | 每月 2.5 万 PV(2025-10-16 起,以前是 10 万);2.5 万到 10 万 PV 的站要 50% 流量来自美、英、加、澳、新,域名满 6 个月 | 高级程序化广告 | 发布商拿 75%,NET-45 | — | 欧美流量的长文内容站 |
| EthicalAds | 开发者站,大约每月 5 万 PV(非硬性) | 每页一个文字加图片的广告,不追踪用户 | 发布商拿 70%;北美和西欧流量过半时 CPM 约 $2.25–2.75 | 月结,满 $50;PayPal、GitHub Sponsors、Open Collective、银行转账 | 开发者工具、文档站、开源项目 |
| Carbon Ads(BuySellAds 运营) | 邀请制,看受众匹配度、PV、站点是否活跃 | 每页一个小型原生广告位,要求独占 | 不公开 | PayPal 月结 | 设计、开发、SaaS 受众的站 |
几个容易搞混的点:
- CPM 和 RPM 不是一个东西。 CPM 是每千次广告展示的收入,RPM 是每千次页面浏览的收入。一个页面放三个广告位,CPM 不变,RPM 会涨。比较不同平台时看 RPM,它能直接和你的 PV 对上
- Adsterra 公布的高 CPM 是特定组合下的数字。 比如德国、Windows、社交流量、Popunder,CPM 二三十美元。第三方实测 tier 1 Popunder 大约 $1.5–12,Banner 大约 $0.5–2.5。有一个巴西汽车站跑 Native Banner,第一个月 127 万次展示,实际 CPM 只有 $0.57,比它的费率表低
- Ezoic「不限流量」的说法已经过期。 2021 年 6 月到 2026 年 2 月确实不限,现在要 25 万月活。2026-02-19 之前接入的老站沿用旧规则,但如果拆掉 Ezoic 超过 7 天,就会失去这个资格
三、Adsterra 和 AdSense 的区别
| AdSense | Adsterra | |
|---|---|---|
| 审核 | 审内容。新站、内容少的站常被拒,理由多是 low value content | 基本当天通过 |
| 广告来源 | Google Ads 的广告主,品牌广告多 | 联盟营销、工具、VPN、博彩、下载类较多,质量参差不齐 |
| 主要赚钱的形式 | 展示广告、自动广告 | Popunder 和 Social Bar 单价最高;Banner 和 Native 便宜 |
| 对体验的影响 | 正常位置放置就影响不大;自动广告要控制密度 | Popunder 会弹新标签页,Social Bar 像系统通知,用户感知很强 |
| 对 SEO 的影响 | 主要是 LCP 和 CLS(广告位没有预留高度时会挤动页面) | 除了性能,还有 Chrome 过滤广告和用户跳出的风险 |
| 结算 | 满 $100,月结,电汇 | 起付线低,每月两次,支持 PayPal、Paxum、USDT |
| 中国个人能不能用 | 能,填 W-8BEN,电汇到国内银行卡 | 能,PayPal 或 USDT 比较常见 |
能不能一起用? 能。AdSense 不要求独占,但有两条要注意:
- 其他广告不能长得像 Google 广告,也不能和 Google 广告位挤在一起
- 页面不能有干扰性的弹窗和误导性的广告。Popunder、伪装成系统通知的广告、关不掉的弹窗,都可能同时违反 AdSense 政策和 Chrome 的规则
所以两家一起用时,Adsterra 只用 Native Banner 和 Display Banner。
Chrome 的广告过滤
很多人不知道的一条:Chrome 从 2018 年起会按 Coalition for Better Ads 的标准检查网站。弹窗广告、带声音的自动播放视频、开屏倒计时广告、大面积的粘性广告,都在违规清单里。
流程是这样的:Google 抽样检查,结果显示在 Search Console 的 Ad Experience Report 里;被判不合格的站有 30 天整改期,过了期限 Chrome 会过滤这个站的所有广告,不只是违规的那种。另有一份 Abusive Experiences Report,专门查伪装成播放按钮的链接、假的系统警告、关不掉的关闭按钮、自动跳转到广告。这些问题同样会导致全站广告被过滤。
2026 年 1 月,联盟发布了九年来第一次实质性的修订,违规清单变长了,也更看重广告密度。接了 Popunder 类广告以后,每周去 GSC 看一下这两份报告。
四、怎么选
按阶段来:
| 阶段 | 推荐做法 |
|---|---|
| 刚上线,内容不到 20 篇 | 先不挂广告。把时间花在内容和收录上(见 SEO 落地) |
| 有二三十篇原创内容,有隐私政策、关于、联系页 | 申请 AdSense |
| AdSense 被拒 | 补内容,过一两个月再申请。急着要收入的话,先在博客页上挂 Adsterra 的 Native Banner 过渡 |
| 开发者受众,月 PV 几万 | 申请 EthicalAds 或 Carbon,替换掉博客和文档页上的其他广告 |
| 每月 1,000 个以上 tier 1 session | 申请 Journey by Mediavine |
| 每月 2.5 万 PV 以上,欧美流量过半 | 也可以申请 Raptive,和 Journey 比一下 RPM |
几条硬规则:
- 工具本身的使用页面不放广告,至少不放会遮挡操作的广告
- 订阅、价格、注册页面不放广告
- Popunder 只适合纯流量站,比如下载站、影视站,这类站不在乎品牌。产品站别用
- EthicalAds 要求是页面上唯一的广告,Carbon 也要求独占。想混用的话按页面或按访客分流,不要在同一页上放两家
五、接入流程
1. Google AdSense
上线前准备
- 至少二三十篇原创、有实际内容的文章或页面
- 隐私政策页(要写明使用 Cookie 和第三方广告)、关于页、联系页
- 导航清楚,没有空页面、「建设中」页面
- 站点能被 Google 正常抓取(先接好 GSC,见 GSC 与 Bing 的接入操作)
步骤
- 用 Google 账号注册 adsense.google.com,添加网站
- 把 AdSense 给的代码放进全站的
<head> - 在网站根目录放
ads.txt,内容只有一行,把pub-后面换成你自己的发布商 ID:
上线后用google.com, pub-0000000000000000, DIRECT, f08c47fec0942fa0curl https://你的域名/ads.txt确认能打开 - 设置欧洲同意弹窗:从 2024 年 1 月 16 日起(瑞士从 2024 年 7 月 31 日起),给欧洲经济区、英国、瑞士用户展示个性化广告,必须使用 Google 认证、接入 IAB TCF 的 CMP。普通的 Cookie 横幅不算。最省事的办法是用 AdSense 后台「隐私和消息」里自带的那个
- 在后台点「请求审核」,一般几天到几周出结果
- 审核通过后,选自动广告,或者自己建广告单元放到指定位置。新站建议先用自动广告跑两周,再根据数据换成手动广告位
- 填税务信息(中国个人填 W-8BEN),收入到 $10 时会收到邮寄的 PIN 码。PIN 码要在 4 个月内输入,输错 3 次或者超时都会停止展示广告
- 绑定银行账户,美元账户满 $100 自动付款
Astro 接入
---
// src/layouts/BaseLayout.astro
const ADSENSE_CLIENT = 'ca-pub-0000000000000000'
---
<html>
<head>
<script
async
src={`https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${ADSENSE_CLIENT}`}
crossorigin="anonymous"
></script>
</head>
<body><slot /></body>
</html>
手动广告位:
---
// src/components/AdUnit.astro
const { slot } = Astro.props
---
<ins
class="adsbygoogle"
style="display:block;min-height:280px"
data-ad-client="ca-pub-0000000000000000"
data-ad-slot={slot}
data-ad-format="auto"
data-full-width-responsive="true"
></ins>
<script is:inline>(adsbygoogle = window.adsbygoogle || []).push({})</script>
min-height 是为了给广告预留位置。不预留的话,广告加载出来时会把正文往下挤,CLS 变差。
Next.js 接入
// app/layout.tsx
import Script from 'next/script'
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html>
<head>
<Script
async
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0000000000000000"
crossOrigin="anonymous"
strategy="afterInteractive"
/>
</head>
<body>{children}</body>
</html>
)
}
// components/AdUnit.tsx
'use client'
import { useEffect } from 'react'
import { usePathname } from 'next/navigation'
export function AdUnit({ slot }: { slot: string }) {
const pathname = usePathname()
useEffect(() => {
try {
;((window as any).adsbygoogle = (window as any).adsbygoogle || []).push({})
} catch {}
}, [pathname])
return (
<ins
key={pathname}
className="adsbygoogle"
style={{ display: 'block', minHeight: 280 }}
data-ad-client="ca-pub-0000000000000000"
data-ad-slot={slot}
data-ad-format="auto"
data-full-width-responsive="true"
/>
)
}
SPA 切换路由时页面不会重新加载,广告位要用 key 重新挂载,然后再 push 一次,不然换页以后广告是空的。
2. Adsterra
- 打开 adsterra.com,注册时选 Publisher
- 在后台的 Websites 里点 Add Website:填域名,选网站分类,选广告形式。可以只选 Native Banner 和 Banner
- 审核一般几分钟到 24 小时
- 审核通过后,在对应广告位上点 Get Code 拿到代码:
- Native Banner:一段
<script>加一个<div id="container-…">,放在文章中间或末尾 - Display Banner(728×90、300×250、320×50 等):一段 script,放在固定的广告位上
- Social Bar、Popunder:一段 script,放在
</body>前面(产品站不建议用)
- Native Banner:一段
- 把代码放到网站上。SPA 同样要在换路由时重新挂载
- 在 Statistics 里按广告位、国家、设备看展示量和 CPM
- 在 Payments 里填收款方式,完成 KYC。每月 1–15 日的收入在下个月 1 日左右付款,16 日到月底的收入在下个月 16 日左右付款,不用手动申请
Astro 接入 Native Banner
---
// src/components/AdsterraNative.astro
// 下面两个值换成后台 Get Code 给的
const src = '//pl00000000.example.com/xxxxxxxx/invoke.js'
const containerId = 'container-xxxxxxxx'
---
<div style="min-height:250px">
<script async data-cfasync="false" src={src}></script>
<div id={containerId}></div>
</div>
Next.js 接入 Native Banner
'use client'
import Script from 'next/script'
import { usePathname } from 'next/navigation'
export function AdsterraNative() {
const pathname = usePathname()
return (
<div key={pathname} style={{ minHeight: 250 }}>
<Script
id={`adsterra-${pathname}`}
async
data-cfasync="false"
src="//pl00000000.example.com/xxxxxxxx/invoke.js"
strategy="lazyOnload"
/>
<div id="container-xxxxxxxx" />
</div>
)
}
3. EthicalAds
- 在 ethicalads.io 提交申请,写清楚站点的受众和月 PV
- 通过后在后台拿到 publisher ID
- 接入:
<script async src="https://media.ethicalads.io/media/client/ethicalads.min.js"></script> <div data-ea-publisher="your-publisher-id" data-ea-type="image"></div> - 广告位放在正文的上方、侧边或下方,不要插在正文中间
- 月结,满 $50 付款
Carbon Ads 流程类似:在 carbonads.net/join 提交站点,等邀请,通过后拿到一段 script。
4. Journey 和 Raptive
这两家都要先装它们的脚本或插件,用来核对流量:
- Journey:先装 Grow(Mediavine 的插件),跑满 30 天,在这 30 天里攒够 1,000 个来自美、英、加、澳的 session,然后申请
- Raptive:要连 Google Analytics 核对流量,域名至少满 6 个月
通过后,它们会给你一份完整的 ads.txt(几百行),替换掉原来的;然后接入它们的广告脚本,原来的 AdSense 代码要删掉。广告位一般由对方帮你调。
六、收入怎么算
1. 后台的几列是什么意思
Adsterra 的统计表默认是这几列(AdSense 的叫法略有不同,对应关系在右边):
| Adsterra | 含义 | 公式 | AdSense 里对应的 |
|---|---|---|---|
| Impressions | 广告展示了几次 | — | 展示次数 |
| Clicks | 广告被点了几次 | — | 点击次数 |
| CTR | 点击率 | 点击 ÷ 展示 | 展示点击率 |
| CPM | 平均每 1,000 次展示挣多少钱。这是事后算出来的平均值(也叫 eCPM),不是事先约定的单价。按点击计费的广告也会折算进来 | 收入 ÷ 展示 × 1000 | 展示 RPM |
| Revenue | 收入 | 展示 × CPM ÷ 1000 | 估算收入 |
后台没有、但要自己算的几个数:
| 指标 | 公式 | 用来干什么 |
|---|---|---|
| 页面 RPM | 收入 ÷ 页面浏览量(PV)× 1000 | 每千次浏览挣多少。比较不同平台、不同版位就看它,因为它直接和你的流量挂钩 |
| 每页展示数 | 展示 ÷ PV | 一个页面平均展示几次广告。≈ 广告位数 × 填充率 |
| 填充率 | 实际展示 ÷ 广告请求 | 广告位请求了广告,但没有广告主出价,就是没填上。新站、小语种、低价值地区填充率低 |
| CPC | 收入 ÷ 点击 | 每次点击值多少,只做参考 |
几个数之间的关系:
收入 = 展示 × CPM ÷ 1000
= PV × 每页展示数 × CPM ÷ 1000
页面 RPM = 每页展示数 × CPM
所以想多挣钱,只有三个方向:更多 PV、每页更多展示(多放广告位,但伤体验)、更高的 CPM(更多 tier 1 访客、更好的广告位)。
2. 举例:为什么有展示,收入却是 $0
新接的广告位,后台经常显示成这样:
| Impressions | Clicks | CTR | CPM | Revenue |
|---|---|---|---|---|
| 5 | 0 | 0% | $0.002 | $0 |
算一下:
收入 = 5 × $0.002 ÷ 1000 = $0.00001
只有十万分之一美元,后台按分显示,四舍五入就是 $0。不是没计费,是金额太小显示不出来。
CPM 只有 $0.002 也不用慌,常见原因是:
- 样本太少。 5 次展示的 CPM 没有意义。一个广告位至少攒到几千次展示再看
- 访客是你自己。 开发者自己在国内打开页面测试,这类流量单价很低,还可能被识别成无效流量,不计费
- 广告位刚上线,前几天还在匹配广告主,单价普遍偏低
- 无效流量会被扣掉。 机器人、代理、重复刷新产生的展示,联盟会从收入里扣除。后台的数字是估算,结算时可能变少
不要自己点自己的广告,也不要叫朋友去点。 所有联盟都把这当作作弊,轻则扣收入,重则封号、不结算。测试时看到广告显示出来就够了。
3. 上线前估算一个月能挣多少
收入主要取决于访客来自哪些国家。按国家加权算 CPM:
加权 CPM = Σ(该国展示占比 × 该国 CPM)
月收入 = 月 PV × 每页展示数 × 加权 CPM ÷ 1000
例子:博客每月 3 万 PV,每页 2 个 Banner,填充率 80%,所以每页展示数 = 2 × 0.8 = 1.6。
| 访客地区 | 占比 | 假设 CPM | 占比 × CPM |
|---|---|---|---|
| 美、英、加、澳 | 20% | $1.50 | $0.30 |
| 欧洲其他国家 | 20% | $0.80 | $0.16 |
| 亚洲、拉美等 | 60% | $0.15 | $0.09 |
| 加权 CPM | $0.55 |
月展示 = 30,000 × 1.6 = 48,000
月收入 = 48,000 × $0.55 ÷ 1000 ≈ $26.4
页面 RPM = $26.4 ÷ 30,000 × 1000 ≈ $0.88
表里的 CPM 只是举例,用你自己后台按国家拆分后的真实数据替换。从这个例子能看出两点:
- tier 1 访客只占 20%,却贡献了一半以上的收入。提高收入最有效的办法,是写欧美用户会搜的内容,而不是多塞广告位
- 每月 3 万 PV 只挣二三十美元。在流量还小的时候,广告收入通常不值得拿用户体验去换(见第七节的算账办法)
4. 用后台导出的数据自己算
Adsterra 和 AdSense 的统计都能按日期、国家导出 CSV。下面的脚本按国家汇总,算出 CTR、CPM、收入占比和加权 CPM。不同平台导出的列名不一样,按实际情况改 COLS:
# ad_report.py 用法:python ad_report.py adsterra_export.csv [月 PV]
import csv
import sys
from collections import defaultdict
COLS = { # 改成你导出文件里的列名
"country": "Country",
"impressions": "Impressions",
"clicks": "Clicks",
"revenue": "Revenue",
}
def num(s: str) -> float:
return float(s.replace("$", "").replace(",", "").strip() or 0)
def main(path: str, pageviews: float | None) -> None:
by_country = defaultdict(lambda: {"imp": 0.0, "clk": 0.0, "rev": 0.0})
with open(path, newline="", encoding="utf-8-sig") as f:
for row in csv.DictReader(f):
c = by_country[row[COLS["country"]] or "Unknown"]
c["imp"] += num(row[COLS["impressions"]])
c["clk"] += num(row[COLS["clicks"]])
c["rev"] += num(row[COLS["revenue"]])
total_imp = sum(c["imp"] for c in by_country.values())
total_rev = sum(c["rev"] for c in by_country.values())
print(f"{'国家':<16}{'展示':>10}{'展示占比':>9}{'CTR':>8}{'CPM':>9}{'收入':>10}{'收入占比':>9}")
for name, c in sorted(by_country.items(), key=lambda kv: -kv[1]["rev"]):
ctr = c["clk"] / c["imp"] if c["imp"] else 0
cpm = c["rev"] / c["imp"] * 1000 if c["imp"] else 0
flag = " 样本少" if c["imp"] < 1000 else ""
print(
f"{name:<16}{c['imp']:>10.0f}{c['imp'] / total_imp:>9.1%}{ctr:>8.2%}"
f"{cpm:>9.3f}{c['rev']:>10.2f}{c['rev'] / total_rev if total_rev else 0:>9.1%}{flag}"
)
weighted_cpm = total_rev / total_imp * 1000 if total_imp else 0
print(f"\n总展示 {total_imp:.0f},总收入 ${total_rev:.2f},加权 CPM ${weighted_cpm:.3f}")
if pageviews:
print(f"每页展示数 {total_imp / pageviews:.2f},页面 RPM ${total_rev / pageviews * 1000:.3f}")
if __name__ == "__main__":
main(sys.argv[1], float(sys.argv[2]) if len(sys.argv) > 2 else None)
月 PV 从 GA4 或 Cloudflare 里取,和导出数据用同一个时间段。展示不到 1,000 次的国家会标「样本少」,这些国家的 CPM 先别当真。
5. 收入怎么到手
以 Adsterra 为例:
-
填收款信息:Profile → Payment information。先选你自己所在的国家,这里选的国家只决定能用哪些收款方式,和广告投放到哪里无关;再选收款方式,填好收款账户
-
在后台累计,余额达到起付线才打款:
收款方式 起付线 备注 Paxum / WebMoney $5 PayPal $25 中国大陆 PayPal 提现到银行卡每笔 $35,攒多了再提 USDT(TRC20) $100 换汇自己负责,留好记录 本地银行转账 $50 每笔 $7,要做 KYC,只覆盖部分国家 电汇 $1,000 每笔 $50 -
自动结算,不用申请:NET-15,每月两次
收入期间 打款时间 1 日–15 日 下个月 1 日左右 16 日–月底 下个月 16 日左右 遇到周末和节假日顺延一两个工作日。到了时间没收到钱,先检查个人资料和收款信息是不是填全了
AdSense 是另一套规则:月结,美元账户满 $100 付款;收入到 $10 时会邮寄 PIN 码验证地址,不验证就不付款(见第五节)。
6. 记账
广告收入是境外所得,要在国内申报个税(见 出海收款 第八节)。每次打款都记一行:
| 结算期间 | 平台 | 后台收入(美元) | 打款方式 | 手续费 | 到账金额 | 到账日期 | 结汇金额(人民币) | 汇率 |
|---|---|---|---|---|---|---|---|---|
| 2026-10-01 ~ 10-15 | Adsterra | PayPal |
同时把每期的结算单截图或导出的 CSV 存在一个文件夹里,年度汇算时要用。
七、上线后看什么
挂上广告以后,盯这几个数,每周看一次:
| 指标 | 去哪看 | 看什么 |
|---|---|---|
| 页面 RPM | AdSense / 联盟后台 | 每千次浏览挣多少钱。比较不同平台、不同版位时用这个数 |
| LCP、CLS、INP | GSC 的 Core Web Vitals,PageSpeed Insights | 广告上线前后对比。CLS 变差多半是广告位没预留高度 |
| Ad Experience Report / Abusive Experiences Report | GSC | 只要不是「通过」,就当天处理 |
| 跳出率、平均停留时长 | GA4 | 和挂广告之前比,掉多少 |
| 注册率、付费转化率 | 你自己的埋点(见 工具产品看数据) | 广告页面和没广告页面分开算 |
| 自然搜索点击 | GSC | 挂广告后 4–8 周有没有下滑 |
算账的办法:
广告每月净收益 = 广告月收入 − 转化率下降带来的付费损失
= PV × RPM / 1000 − 访客数 × Δ转化率 × ARPU × 留存月数
举个例子:博客每月 3 万 PV,RPM $3,广告收入 $90。如果广告让注册转化率从 2% 降到 1.8%,每月少 0.2% × 2 万访客 = 40 个注册,按 5% 付费、$10 / 月、平均留存 6 个月算,少挣 40 × 5% × $10 × 6 = $120。这时候挂广告是亏的。
所以要用 A/B 的方式上线:先只在一半的博客页面挂广告,跑两到四周,再决定要不要全量。
八、上线清单
- 隐私政策写了 Cookie 和第三方广告
-
ads.txt放在根目录,curl能打开,发布商 ID 没写错 - 欧洲用户能看到 Google 认证的 CMP 同意弹窗
- 每个广告位都预留了高度
- SPA 换路由后广告能重新加载
- 工具使用页、价格页、注册页没有广告
- 没有 Popunder、Social Bar 这类形式(或者已经想清楚要用)
- GSC 的 Ad Experience Report 和 Abusive Experiences Report 显示正常
- 记下了上线前一周的 Core Web Vitals、跳出率和转化率,留作对比
参考
- Google AdSense:EEA、英国和瑞士的同意管理要求
- Google AdSense:ads.txt 指南
- Adsterra:发布商后台和要求
- Adsterra:发布商广告形式
- AffMaven:2026 年各广告联盟 CPM
- Monetag:广告联盟对比
- Ezoic:加入要求
- Ezoic Incubator
- Mediavine:Journey 两周年
- Raptive:谁可以加入
- EthicalAds:发布商政策
- EthicalAds:发布商 FAQ
- Carbon Ads:FAQ
- Publift:Media.net 与 AdSense 对比
- BleepingComputer:Chrome 广告过滤扩展到全球
- PPC Land:Coalition for Better Ads
