<Analytics />,根据配置同时把数据发到
七家 provider,外加 metadata.verification 块来生成三家搜索引擎站长工具的
所有权 meta 标签。每个 loader / 标签自己检查 env 变量,没配就返回 null,
所以你只为配过的 provider 付出代价。增减 provider 不需要重写架构——配 env 变量、
重启,搞定。
分析 provider
前置条件
- 在 Vercel、Google Analytics 4、PostHog、Plausible、Umami、Microsoft Clarity、 Yandex Metrika 里挑至少一家注册。
- 拿到 provider dashboard 里的 site / property / website ID。
- 一个生产域名(部分 provider 拒绝来自
localhost的事件,或者直接采样掉)。
一步步配置
-
在
src/config/site.ts选要启用的 provider。七个默认全是true; 想关掉就设false,即便 env 变量配了也不会渲染。 -
把对应的 env 变量加到
.env.local。全部是NEXT_PUBLIC_*——loader 跑在 浏览器里,所以必须打进客户端 bundle。 -
Vercel Analytics 在 Vercel 上零配置——
@vercel/analytics/next组件会自动 注入脚本。本地是 no-op。要关掉就设analytics.vercel = false。 -
重启
pnpm dev——NEXT_PUBLIC_*是构建时打进去的,不重启不会生效。
怎么挑
| Provider | 适用场景 |
|---|---|
| Vercel Analytics | 已经部署在 Vercel 上、想要个零配置的基线。免费额度够用。 |
| GA4 | 要做 Google Ads 归因、或者市场团队已经在用 GA。 |
| PostHog | 产品分析、feature flag、session 录屏一站式。免费额度大方。 |
| Plausible | 隐私优先,GDPR 友好,不用 cookie banner。脚本很轻。 |
| Umami | 开源、可自托管。隐私优势同 Plausible,自托管更省钱。 |
| Microsoft Clarity | 热图 + session 录屏,永久免费、无流量上限。和 GA4 配合非常顺。 |
| Yandex Metrika | 免费的分析 + 热图 + session 录屏。在俄罗斯 / 独联体市场是主力。 |
验证生效
- 用无痕窗口打开站点。
- 打开 devtools → Network,按 provider 域名过滤(如
posthog.com、plausible.io、clarity.ms、mc.yandex.ru),页面加载时应该至少看到一个 请求发出去。 - 随便点点页面——每家 provider 的后台应该在 30 秒内出现实时访客。
- 看页面源码:每个开启的 provider 应该有一个
<script>标签,关掉的应该没有。
常见坑
- 忘了
NEXT_PUBLIC_前缀。浏览器要读的变量必须带前缀。不带前缀, Next.js 在打包时会把它从客户端 bundle 里剥掉,loader 静默挂成null。 - 被广告拦截屏蔽。uBlock Origin、Brave 默认会屏蔽 GA4、PostHog、Clarity、
Yandex Metrika、Umami。解决办法是走代理域名——Plausible 支持自托管的
/js/script.outbound-links.js路由,PostHog 也有 reverse-proxy 教程。 - GA4 在欧盟要 consent banner。GDPR 要求 GA4 显式 opt-in。Clarity 和 Yandex Metrika 同理(session 录屏 = 个人数据)。要么把脚本挂在 consent 弹窗后面,要么改用 Plausible / Umami 这种本来就不用 cookie 的。
- 本地流量污染生产 dashboard。dev 环境的访问会跑到生产 dashboard 里。
要么 dev 时设
analytics.posthog = false,要么用 provider 的 “exclude IP” / “disable on localhost” 过滤器。 - Plausible 域名不匹配。
NEXT_PUBLIC_PLAUSIBLE_DOMAIN必须和 Plausible 后台注册的域名完全一致——www写不写都得对得上。不匹配的事件会被静默丢弃。 - Yandex Metrika counter id 是纯数字。别把整段脚本贴进去——只把
ym(数字, ...)里的那个数字填到 env 变量里。
搜索引擎站长工具验证
要在 Google Search Console、Bing Webmaster Tools 或 Yandex Webmaster 里证明站点所有权,每家后台都会让你往<head> 里加一个 meta 标签。vibestrap
通过 src/app/layout.tsx 里的 Next.js metadata.verification 来渲染这些标签,
你只需要把对应的值贴到 env 变量里就行。
一步步配置
-
在每家后台添加你的域名:
- Google Search Console → search.google.com/search-console
- Bing Webmaster Tools → bing.com/webmasters
- Yandex Webmaster → webmaster.yandex.com
-
选择 “HTML tag” 验证方式。每家后台会给你一段类似的 meta 标签:
-
只复制
content里的值(不是整段标签),贴到.env.local:这些是服务端 env 变量(不带NEXT_PUBLIC_前缀)——Next.js 在构建时读取 它们生成 root metadata。 -
想单独关掉某个标签就改
src/config/site.ts(即便 env 变量已经设了, 也会跳过渲染): - 部署上线,然后回到每家后台点 Verify。
验证生效
<meta> 标签。env 没设就完全不渲染,
不会出现空的 content="" 污染。
常见坑
- 别把整段
<meta>标签贴进来——只贴content里的值。贴整段会让渲染出 的 head 出现重复或损坏的 HTML。 - 验证是一次性的。后台一旦确认,env 变量可以一直留着;保留 meta 标签没 任何额外成本。
- CDN 缓存。如果部署后后台还是说 “tag not found”,去清一下 CDN 缓存 (Cloudflare、Vercel)——验证器是去抓你的实时 HTML 的。
- DNS 是替代方案。三家后台都支持 DNS TXT 记录验证,不用动 HTML。如果你 更喜欢这种方式,env 变量留空,去 DNS provider 里加 TXT 记录。
官方文档
- Vercel Analytics:vercel.com/docs/analytics
- Google Analytics 4:support.google.com/analytics
- PostHog:posthog.com/docs
- Plausible:plausible.io/docs
- Umami:umami.is/docs
- Microsoft Clarity:learn.microsoft.com/clarity
- Yandex Metrika:yandex.com/support/metrica
- Google Search Console:support.google.com/webmasters
- Bing Webmaster Tools:bing.com/webmasters/help
- Yandex Webmaster:yandex.com/support/webmaster