广告与变现
本站支持通过 Google AdSense 在文档页展示广告,用于补贴域名与写作成本。样式已预留位置,未配置环境变量时生产环境不显示广告。
广告位置
| 位置 | 环境变量 | 说明 |
|---|---|---|
| 正文上方 | ADSENSE_SLOT_ARTICLE_TOP | 面包屑下方 |
| 正文下方 | ADSENSE_SLOT_ARTICLE_BOTTOM | 页脚导航上方 |
| 右侧栏 | ADSENSE_SLOT_SIDEBAR | 仅桌面端(有目录时) |
开发环境下会显示 虚线占位框,便于预览版式。
配置步骤
- 在 Google AdSense 注册并通过站点审核。
- 获取发布商 ID 与各广告单元 slot ID(参考项目根目录
.env.example)。
根域(apex)与子域 doc.
| 项目 | 说明 |
|---|---|
| 本站实际访问地址 | **https://doc.abcreatoris.com**(须与 docusaurus.config.ts 中 url 一致) |
| AdSense「网站」里添加什么 | 通常只能添加 根域 abcreatoris.com(或 https://abcreatoris.com),不能单独再添加 doc.abcreatoris.com 为第二个站点 |
| 子域是否可投放 | 根域验证通过后,同一发布商账号下的子域(含 doc.)一般自动纳入;无需在控制台重复添加 doc. |
| ads.txt / 脚本 | 仍部署在 doc 子域根路径(如 https://doc.abcreatoris.com/ads.txt),与文档站 Vercel 项目一致 |
若控制台只显示根域 Ready,但 doc. 上仍长期 data-ad-status="unfilled",多为填充尚未放开或自动广告与手动单元冲突,见下文「合规与体验建议」。
连接站点(AdSense「Connect your site」)
AdSense 审核通过后,控制台会要求 Connect your site to AdSense。本站已在代码侧完成脚本与 ads.txt 配置;你只需在控制台填写正确 URL 并等待 Google 抓取。
控制台应填写的 URL
| 项目 | 正确值 | 常见错误 |
|---|---|---|
| 站点 URL | https://abcreatoris.com(根域)或按控制台提示;文档站实际域名为 doc.abcreatoris.com | 填成 docs.、单独添加无法识别的子域、带 /docs/intro 路径、或 http:// |
| 发布商 ID | ca-pub-2085315988106926 | 与 ads.txt 中的 pub-2085315988106926 为同一账号 |
部署后自检清单
部署到 Vercel 后,用浏览器或 curl 确认以下三项均可公开访问:
-
AdSense 脚本(全站
<head>)
打开 首页 与任意文档页(如 /docs/intro),查看页面源代码,应包含:<script src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-2085315988106926" async crossorigin="anonymous"></script>脚本由
docusaurus.config.ts的scripts配置注入,首页与文档页均会加载,无需单独改首页组件。 -
ads.txt(站点根目录)
访问 https://doc.abcreatoris.com/ads.txt,应返回一行:google.com, pub-2085315988106926, DIRECT, f08c47fec0942fa0文件位于仓库
static/ads.txt,构建后复制到站点根路径。 -
robots.txt
本站未配置会屏蔽 Google 的robots.txt;若后续添加,请勿对/或/ads.txt使用Disallow。
控制台操作步骤
- 登录 AdSense → Sites(网站)。
- 点击 Add site 或待连接站点的 Connect site。
- 输入
https://abcreatoris.com(根域,不要带子路径);若界面仅接受根域,不要强行填doc.子域。 - 若提示粘贴代码:本站已部署脚本,选择 I've placed the code / 代码已放置 即可。
- 提交后等待 Google 抓取(通常 数小时至 48 小时);状态变为 Ready 或 已关联 即完成。
连接失败常见原因
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 找不到 AdSense 代码 | 脚本未部署或 ADSENSE_CLIENT 未在 Vercel 构建时注入 | 确认 Vercel 环境变量后 Redeploy |
| ads.txt 无效 / 404 | static/ads.txt 未合并进部署产物 | 确认最新 commit 已部署,直接访问 /ads.txt |
| URL 不匹配 | 控制台填了错误子域或路径 | 改为 https://doc.abcreatoris.com |
| 站点无法访问 | DNS、HTTPS 或 Vercel 部署异常 | 确认首页可打开且无登录墙 |
| 长时间 Pending | Google 尚未完成抓取 | 等待 24–48 小时后再在控制台点 Check status |
生产环境(Vercel)
本站部署在 Vercel。AdSense 变量在 构建时 注入,需在 Vercel 控制台配置:
- 打开 Vercel Dashboard → 选择本项目 → Settings → Environment Variables。
- 添加以下 4 个变量(Production 环境,建议 Preview / Development 同步配置以便预览):
| 变量名 | 说明 |
|---|---|
ADSENSE_CLIENT | AdSense 发布商 ID(ca-pub-…) |
ADSENSE_SLOT_ARTICLE_TOP | 正文上方广告单元 slot |
ADSENSE_SLOT_ARTICLE_BOTTOM | 正文下方广告单元 slot |
ADSENSE_SLOT_SIDEBAR | 右侧栏广告单元 slot |
- 保存后 重新部署(Deployments → 最新部署 → Redeploy,或推送新 commit 触发构建),否则变量不会生效。
请勿将 .env 提交到 Git。.gitignore 已忽略该文件。
本地开发
复制 .env.example 为 .env 并填入上述变量。docusaurus.config.ts 通过 dotenv 在构建时读取 .env。
npm run build
合规与体验建议
- 若使用上述 手动广告单元,请在 AdSense 控制台 关闭自动广告(Auto ads)(站点 → 自动广告 → 全部关闭)。自动广告会额外插入
<ins>,与手动push({})抢同一队列,常见现象是只显示「广告」标签、正文下方位永远不填充。 - 本站为 Docusaurus 客户端路由:已在
src/theme/Root.tsx与AdSlot中在路由切换时重新请求填充;部署后请用「硬刷新」或隐身窗口测试,并在多篇文章间点击侧栏链接验证三个位是否都会出现。 - 根域刚变为 Ready 后,子域填充可能仍需 数小时至数天;
unfilled在审核通过初期也属常见,并非一定是代码错误。 - 在 隐私政策(或独立页面)中说明使用 Cookie / 广告合作伙伴。
- 投资、健康类内容避免误导性广告文案与正文混淆;本站已在广告块上标注「广告」字样。
- 若 AdSense 审核未通过,可考虑 Carbon、EthicalAds 等替代,需自行改
src/components/AdSlot组件。
关闭广告
删除 ADSENSE_CLIENT 或留空即可;重新部署后全站不加载 AdSense 脚本。