PostHog 是什麼?
PostHog 是目前 GitHub 上最熱門的開源產品分析與 AI 可觀測性平台(⭐ 超 1.9 萬 Star)。不同於 Google Analytics 等閉源工具,PostHog 將產品分析、使用者行為追蹤、A/B 實驗、功能開關和錯誤追蹤整合到一個統一的開源平台中,資料完全自主可控。
為什麼開發者選擇 PostHog?
| 對比維度 | Google Analytics | Mixpanel | PostHog |
|---|---|---|---|
| 開源/自託管 | ❌ | ❌ | ✅ MIT License |
| 資料所有權 | 歸 Google | 歸 Mixpanel | 歸你自己 |
| Session Replay | ❌ | ✅ 付費 | ✅ 內建 |
| Feature Flags | ❌ | ❌ | ✅ 內建 |
| A/B 實驗 | ❌ | ✅ 付費 | ✅ 內建 |
| AI 可觀測性 | ❌ | ❌ | ✅ 追蹤 LLM 呼叫 |
| 免費額度 | 無限(但有取樣) | 100 萬事件/月 | 100 萬事件/月 |
| 定價 | 企業版貴 | 按用量收費 | 超額後按用量 |
PostHog 的核心定位是幫助產品團隊和開發者理解使用者行為,驅動產品決策。它的獨特賣點在於:
- All-in-One 平台:一個工具覆蓋產品分析、Web 分析、Session Replay、功能開關、實驗、錯誤追蹤、日誌、問卷
- AI 可觀測性:追蹤 LLM 呼叫的延遲、成本、生成內容,這在 2026 年是差異化功能
- MCP 整合:透過 MCP 協定接入 Claude Code、Cursor 等 AI 編碼工具,直接在編輯器中查資料
- Self-driving 模式:自動偵測 rage clicks、報錯、失敗查詢,生成分析報告和 PR
PostHog vs 其他方案的架構差異
┌─────────────────────────────────────────────────┐
│ PostHog │
├──────────┬──────────┬──────────┬────────────────┤
│ 產品分析 │ 會話回放 │ 功能開關 │ AI 可觀測性 │
│ (Events) │ (Replay) │ (Flags) │ (LLM Traces) │
├──────────┴──────────┴──────────┴────────────────┤
│ 統一的 ClickHouse 資料引擎 │
├─────────────────────────────────────────────────┐
│ 前端 SDK | 後端 SDK | API | MCP │
└─────────────────────────────────────────────────┘
自部署 PostHog
方案一:PostHog Cloud(推薦)
最快上手方式,無需任何維運:
- PostHog Cloud US — 海外使用者
- PostHog Cloud EU — 需要資料合規的歐洲使用者
免費額度每月包含:100 萬事件、5000 次錄製、100 萬次 Flag 請求、10 萬異常。
方案二:Docker 一鍵部署(自託管)
如果你想完全掌控資料,PostHog 提供了極簡的 Hobby 部署方案。
前置條件: - Linux 伺服器 - 至少 4GB 記憶體 - Docker + Docker Compose
一行指令部署:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/posthog/posthog/HEAD/bin/deploy-hobby)"
部署完成後,存取 http://localhost:8000 即可看到 PostHog 的管理介面。
方案三:Docker Compose 手動部署
如果你需要更精細的控制:
# docker-compose.yml
version: '3.8'
services:
posthog:
image: posthog/posthog:latest
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgres://posthog:***@db:5432/posthog
- REDIS_URL=redis://redis:6379/
depends_on:
- db
- redis
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: posthog
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7
volumes:
pgdata:
# 啟動服務
docker-compose up -d
# 檢視日誌
docker-compose logs -f posthog
⚠️ 注意:開源自部署版本建議處理量 ≤ 10 萬事件/月。超過後推薦遷移到 PostHog Cloud。
快速上手:接入你的第一個應用
前端 JavaScript SDK 接入
安裝 SDK:
npm install posthog-js
在你的應用入口初始化:
import posthog from 'posthog-js';
posthog.init('YOUR_POSTHOG_API_KEY', {
api_host: 'https://us.posthog.com', // 自託管改為 http://your-server:8000
autocapture: true, // 自動擷取所有點擊、頁面瀏覽等事件
});
// 手動發送自訂事件
posthog.capture('user_signed_up', {
method: 'email',
plan: 'free',
});
// 設定使用者身分(登入時呼叫)
posthog.identify('user-unique-id-123', {
email: 'developer@example.com',
name: '張三',
});
autocapture: true 意味著你不需要埋任何程式碼——所有按鈕點擊、連結點擊、表單提交都會自動記錄。
後端 Python SDK 接入
對於後端事件(如支付成功、訂單建立):
pip install posthog
from posthog import Posthog
# 初始化(建議用環境變數儲存 API 金鑰)
posthog = Posthog(
project_api_key='YOUR_PROJECT_API_KEY',
host='https://us.posthog.com'
)
# 擷取事件
posthog.capture(
distinct_id='user-unique-id-123',
event='payment_completed',
properties={
'amount': 99.00,
'currency': 'USD',
'payment_method': 'stripe',
}
)
# 設定使用者屬性
posthog.identify(
distinct_id='user-unique-id-123',
properties={
'email': 'developer@example.com',
'plan': 'pro',
'company': 'TechCorp',
}
)
# 關閉客戶端(應用退出時)
posthog.shutdown()
Next.js 全端專案接入
npm install posthog-js posthog-node
// components/PostHogProvider.tsx
import { PostHogProvider as PHProvider } from 'posthog-js/react';
import { useEffect, useState } from 'react';
import posthog from 'posthog-js';
export function PostHogProvider({ children }: { children: React.ReactNode }) {
const [clientReady, setClientReady] = useState(false);
useEffect(() => {
posthog.init(process.env.NEXT_PUBLIC_POSTHOG_KEY!, {
api_host: process.env.NEXT_PUBLIC_POSTHOG_HOST || 'https://us.posthog.com',
person_profiles: 'identified_only',
});
setClientReady(true);
}, []);
if (!clientReady) return null;
return <PHProvider client={posthog}>{children}</PHProvider>;
}
// app/layout.tsx
import { PostHogProvider } from '@/components/PostHogProvider';
export default function RootLayout({ children }) {
return (
<html lang="zh">
<body>
<PostHogProvider>{children}</PostHogProvider>
</body>
</html>
);
}
// app/page.tsx
'use client';
import { usePostHog } from 'posthog-js/react';
export default function HomePage() {
const posthog = usePostHog();
return (
<button onClick={() => {
posthog.capture('cta_clicked', {
cta_text: '免費試用',
page: 'homepage',
});
}}>
開始免費試用
</button>
);
}
核心功能實戰
1. 產品分析:理解使用者行為
接入資料後,PostHog 會自動生成趨勢圖、漏斗分析和留存曲線。
漏斗分析範例:註冊 → 啟用 → 付費
-- PostHog 支援 SQL 直接查詢(ClickHouse)
SELECT
event,
COUNT(DISTINCT distinct_id) as users
FROM events
WHERE event IN ('user_signed_up', 'feature_activated', 'payment_completed')
AND timestamp > now() - INTERVAL 30 DAY
GROUP BY event
ORDER BY timestamp
在 PostHog UI 中:
1. 進入 Product Analytics → Funnels
2. 新增步驟:user_signed_up → feature_activated → payment_completed
3. 檢視每步轉換率
留存分析:
1. 進入 Product Analytics → Retention
2. 選擇首事件(如 user_signed_up)和回訪事件(如 pageview)
3. 檢視 D1/D7/D30 留存曲線
2. Session Replay:看使用者真實操作
Session Replay 讓你看到使用者的真實操作錄影,包括滑鼠移動、捲動、點擊。
設定方法:
posthog.init('YOUR_API_KEY', {
api_host: 'https://us.posthog.com',
session_recording: {
maskAllInputs: false, // 不遮蔽輸入內容(隱私敏感場景設為 true)
recordCrossOriginIframes: true,
},
});
排查 Rage Clicks(憤怒點擊):
// 當使用者連續快速點擊同一元素 5 次以上,觸發 rage click 事件
posthog.onFeatureFlags(() => {
posthog.capture('rageclick', {
element: document.activeElement.tagName,
page: window.location.pathname,
});
});
在 PostHog Dashboard 中,你可以: 1. 篩選所有包含 rage click 的 Session 2. 直接觀看錄影,找到導致使用者憤怒的 UI 問題 3. 一鍵建立 Issue 並指派給開發團隊
3. Feature Flags:安全灰度發布
Feature Flags 讓你在不部署程式碼的情況下控制功能開關:
// 檢查某個功能是否對使用者開放
posthog.onFeatureFlags(() => {
const newDashboard = posthog.getFeatureFlag('new-dashboard');
if (newDashboard) {
// 顯示新版儀表板
renderNewDashboard();
} else {
// 保持舊版
renderOldDashboard();
}
});
建立實驗性發布:
// 按使用者屬性定向
posthog.capture('feature_viewed', {
$feature_flag: 'beta-search',
$feature_flag_response: true,
});
在 PostHog 後台:
1. 進入 Feature Flags → Create Flag
2. 設定名稱 beta-search
3. 選擇發布策略:
- 全量發布(100% 使用者)
- 百分比發布(如 10% 使用者)
- 定向發布(按信箱網域、使用者群組)
4. 儲存後,SDK 自動生效,無需重新部署
4. A/B 實驗:資料驅動決策
A/B 實驗讓你用統計學驗證功能改動的效果。
// 實驗程式碼
posthog.onFeatureFlags(() => {
const experiment = posthog.getFeatureFlag('landing-page-test');
if (experiment === 'variant-a') {
showVariantA();
} else if (experiment === 'variant-b') {
showVariantB();
}
// 記錄實驗曝光
posthog.capture('experiment_exposure', {
$feature_flag: 'landing-page-test',
variant: experiment,
});
});
在 PostHog 中建立實驗:
1. 進入 Experiments → Create Experiment
2. 選擇對應的 Feature Flag
3. 設定目標指標(如 payment_completed 事件)
4. 設定顯著性水準(通常 95%)
5. 執行實驗,等待統計顯著結果
PostHog 會自動計算 p 值、信賴區間和勝出機率。
5. 錯誤追蹤:自動擷取前端異常
import posthog from 'posthog-js';
posthog.init('YOUR_API_KEY', {
api_host: 'https://us.posthog.com',
capture_performance: true,
});
// 自動擷取 uncaught errors
window.addEventListener('error', (event) => {
posthog.capture('frontend_error', {
error_message: event.message,
error_url: event.filename,
error_line: event.lineno,
error_col: event.colno,
stack: event.error?.stack,
});
});
// 擷取 unhandled promise rejections
window.addEventListener('unhandledrejection', (event) => {
posthog.capture('promise_rejection', {
error_message: event.reason?.message || String(event.reason),
});
});
在 PostHog Error Tracking 頁面,你可以: - 檢視錯誤頻率趨勢 - 關聯到受影響的 Session 錄影 - 設定告警規則(如單日錯誤數 > 100 時通知 Slack)
6. AI 可觀測性:追蹤 LLM 呼叫
這是 PostHog 2026 年的特色功能,專為 AI 應用開發者設計。
用 Python SDK 追蹤 OpenAI 呼叫:
pip install posthog openai
from posthog import Posthog
import openai
posthog = Posthog('YOUR_API_KEY', host='https://us.posthog.com')
def generate_with_tracking(user_id: str, prompt: str):
import time
start = time.time()
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}]
)
latency = time.time() - start
tokens_used = response.usage.total_tokens
# 追蹤 LLM 呼叫
posthog.capture(
distinct_id=user_id,
event='llm_call_completed',
properties={
'model': 'gpt-4',
'prompt_length': len(prompt),
'response_length': len(response.choices[0].message.content),
'tokens_used': tokens_used,
'latency_ms': latency * 1000,
'success': True,
}
)
return response
用 LangChain 追蹤:
from langchain.callbacks import PostHogCallbackHandler
handler = PostHogCallbackHandler(
api_key='YOUR_API_KEY',
host='https://us.posthog.com',
distinct_id='user-123',
)
# 在 chain 中使用
chain = LLMChain(llm=llm, prompt=prompt, callbacks=[handler])
result = chain.run("你好,請介紹一下 PostHog")
在 PostHog Dashboard 中你可以看到: - 每次 LLM 呼叫的延遲分布 - Token 消耗和成本統計 - 失敗請求的錯誤原因 - 按使用者分組的呼叫模式
MCP 整合:在編輯器中查資料
PostHog 支援 MCP 協定,你可以直接在 Claude Code、Cursor 等工具中查詢產品資料。
設定 MCP(Claude Code):
// .mcp.json
{
"mcpServers": {
"posthog": {
"command": "npx",
"args": ["-y", "@posthog/mcp"],
"env": {
"POSTHOG_API_KEY": "phc_your_api_key",
"POSTHOG_PERSONAL_API_KEY": "phx_your_personal_key",
"POSTHOG_PROJECT_ID": "12345",
"POSTHOG_API_HOST": "https://us.posthog.com"
}
}
}
}
設定完成後,在 Claude Code 中可以直接對話:
> 過去 7 天有多少使用者註冊?
> 顯示 /dashboard 頁面的轉化漏斗
> 昨天 rage click 最多的頁面是哪個?
常見問題
PostHog 免費版夠用嗎?
對於大多數獨立開發者和中小團隊:每月 100 萬事件 + 5000 次錄製完全夠用。按一般 SaaS 網站,100 萬事件 ≈ 5-10 萬 MAU。
自託管和 Cloud 有什麼區別?
| Cloud | 自託管 | |
|---|---|---|
| 維運 | 無需 | 需要 Docker + DB 管理 |
| 資料位置 | PostHog 伺服器 | 你自己的伺服器 |
| 功能完整性 | 全部功能 | 部分企業功能不可用 |
| 適用規模 | 任何規模 | ≤ 10 萬事件/月 |
| 價格 | 免費額度 + 按量 | 伺服器成本 |
PostHog 效能開銷大嗎?
JavaScript SDK 是非同步載入的,不會影響頁面渲染效能。後端 SDK 使用佇列批次發送,對業務邏輯無影響。
支援隱私合規(GDPR/PIPL)嗎?
支援。PostHog EU 執行個體滿足 GDPR 要求。中國市場可以透過 maskAllInputs 和自訂資料過濾規則適配 PIPL。
總結
PostHog 是目前最全面的開源產品分析平台,一個工具替代了 Google Analytics + Hotjar + LaunchDarkly + Optimizely + Sentry 的組合。對於開發者和產品團隊來說,資料自主可控 + All-in-One 體驗是最大的價值。
關鍵資源: - PostHog 官網 - GitHub 儲存庫 ⭐ 19,000+ - 文件中心 - 部署指南 - 公司手冊(開源)
如果你覺得這篇文章有幫助,歡迎分享給更多開發者!