37K Star PostHog:自建用户行为分析首选
做网站或产品的开发者,迟早会面对一个朴素的问题:用户在我的网站上到底在干什么?
Google Analytics 是一套方案,但数据归 Google;付费工具如 Amplitude、Mixpanel 好用,但价格随数据量飙升。如果你的项目属于独立开发者或小团队,或者干脆想自己掌控数据——PostHog 是目前最值得关注的开源答案。
PostHog 是一个开源的产品分析平台,提供事件追踪、 session 回放、功能开关、A/B 实验、AI 可观测性等能力,2026 年 7 月已有 37,000+ GitHub Stars。项目由 PostHog Inc. 维护,核心代码采用 MIT 协议,支持自托管和云服务两种方式。
核心功能亮点
PostHog 的功能范围相当广,但有三个能力最能体现它的价值。
1. 事件追踪与产品分析
用一行代码就能开始追踪用户事件:页面浏览、按钮点击、表单提交、购买行为。PostHog 的可视化界面支持拖拽式的漏斗分析、留存分析、路径分析,不需要写 SQL。
和传统分析工具最大的区别是:PostHog 默认不抽样,所有数据都是全量收集。对小流量站点来说,这是很实在的差异——Google Analytics 的免费版在数据量上来后会抽样,导致数据失真。
2. Session 回放
这是 PostHog 最让人印象深刻的功能之一。它能录制用户的操作序列(点击、滚动、输入),以视频回放的形式呈现在后台。开发者可以精确地看到用户在哪个步骤卡住、表单的哪个字段让用户犹豫、错误弹窗是否被看到。
回放数据和事件数据打通,意味着你可以筛选出「发生了错误」的回放会话,直接看用户在报错前后的操作,排查体验问题。这个能力在传统分析工具中通常是付费功能,而 PostHog 的免费自托管版完整包含。
3. 功能开关与 A/B 实验
PostHog 内置了 Feature Flags,可以按用户属性、地区、设备粒度发布功能。比如「对新注册用户显示新首页,老用户保持不变」,不需要写复杂的逻辑代码。
A/B 实验基于统计学检验自动判断显著性,直接告诉你「版本 A 比版本 B 转化率高 12%,置信度 95%」。对于独立开发者来说,这意味着不需要接第三方的 A/B 测试 SDK,一个工具解决。
白物集能用 PostHog 做什么
白物集目前的网站是 Astro SSR 架构,数据层用 Supabase。目前还没有接入任何分析系统——这是一个典型的「有空再搞,但一直没搞」的缺口。
PostHog 的自托管特性很适合白物集这样的个人项目。我们可以在 ECS 上用 Docker Compose 部署一个 PostHog 实例,数据存在本地 Postgres,不需要担心 SaaS 服务的隐私边界和数据外流。
具体来说,PostHog 能为白物集解决的问题:
- 内容有效性验证:哪些文章被完整读完?哪些被快速跳出?通过 Session 回放,可以观察到读者在文章中的滚动行为和阅读深度,判断内容是否符合预期。
- 频道热度判断:AI、Apple、科技三个频道中,用户的访问分布如何?PostHog 的看板可以实时展示每个频道的活跃用户数和内容消费时长。
- 搜索结果优化:结合站内搜索和 fuse.js 的使用情况,分析用户在找什么,但站内搜索是否能满足需求。PostHog 可以追踪搜索事件,发现高频但无结果的关键词。
PostHog 的 JavaScript SDK 对 Astro 的支持也比较好——只需要在布局组件中引入 <script> 标签初始化,所有页面的浏览事件就自动上报了。Astro 的 Island 架构不会影响 SDK 加载。接入成本大概是一个下午的工作量。
适合什么场景,不适合什么场景
适合: - 自建站点的产品分析(博客、内容平台、SaaS 工具) - 需要 Session 回放但预算有限的小团队 - 数据隐私敏感的行业(教育、医疗、金融) - 需要实验验证的产品团队(内置 A/B 测试)
不适合: - 超大规模站点(日活千万级以上),自托管的 Postgres 会成为瓶颈——但 PostHog 也提供 ClickHouse 方案和云服务版本 - 只需要基础 PV/UV 统计,不需要用户行为深度的场景——Google Analytics 就够用了 - 数据合规要求严格不能出境的场景——PostHog 云服务的数据存储在美欧,自托管可以自己控制服务器位置
快速上手
第一步:用 Docker 启动 PostHog
curl -L https://posthog.com/docker-compose.yml -o docker-compose.yml
docker compose up -d
启动后访问 http://localhost:8000,设置管理员账户和项目名称。
第二步:在前端项目中接入 SDK
<script>
!function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(s,i,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys getNextSurveyStep onSessionId".split(" "),n=0;n<o.length;n++)g(u,o[n]);e._i.push([s,i,a])},e.__SV=!0)}(document,window.posthog||[]);
posthog.init('YOUR_PROJECT_API_KEY', {api_host: 'https://your-selfhosted-instance.com'})
</script>
SDK 初始化完成后,pageview 事件自动上报,无需额外代码。
第三步:自定义事件追踪
对关键操作定义事件名称:
// 追踪文章阅读
posthog.capture('article_viewed', {
article_id: '123',
category: 'AI',
read_time_seconds: 45
});
// 追踪搜索行为
posthog.capture('search_performed', {
query: 'PostHog setup',
results_count: 12
});
第四步:在后台查看数据
PostHog 启动后自带一套示例看板。建议从三个看板开始:
- 实时看板(Live Dashboard)——看当前在线用户的行为
- 漏斗分析——定义「访问首页 → 阅读文章 → 分享」的事件序列
- Session 回放——随机样本或按事件筛选后的用户操作回放
第五步:接入 Feature Flags(可选)
需要控制某个功能的上线范围时,在 PostHog 后台创建一个 Feature Flag,代码中这样使用:
if (posthog.isFeatureEnabled('new-homepage')) {
renderNewHomepage();
} else {
renderOldHomepage();
}
不需要部署新代码,后台关闭 Flag 即可回滚。
写在最后
PostHog 代表着一类趋势:曾经只有付费 SaaS 才能提供的能力,正在被开源项目以可自托管的方式重新定义。Session 回放、A/B 实验、功能开关,单独拿出来每个都是成熟的付费产品,PostHog 把它们整合在一起,而且给出了一个小团队也能承担的价格——自托管版是零成本。
如果你的项目还没有接入分析系统,或者对现有方案的数据控制权不满意,PostHog 值得花一个下午部署试试。它的 GitHub 仓库包含了完整的 Docker 部署文档和前端 SDK 接入指南,从拉取代码到看到第一条数据,不会超过 30 分钟。