
关于
产品分析——PostHog、Mixpanel、事件追踪、漏斗、群组、留存、北极星指标、OKR 和产品仪表盘。
name: analytics-product description: "产品分析——PostHog、Mixpanel、事件、漏斗、群组、留存、北极星指标、OKR 和产品仪表板。" risk: none source: community date_added: '2026-03-06' author: renat tags:
- analytics
- product
- metrics
- posthog
- mixpanel tools:
- claude-code
- antigravity
- cursor
- gemini-cli
- codex-cli
ANALYTICS-PRODUCT — 用数据做决策
概述
产品分析——PostHog、Mixpanel、事件、漏斗、群组、留存、北极星指标、OKR 和产品仪表板。激活场景:配置事件追踪、创建转化漏斗、群组分析、留存分析、DAU/MAU、功能标志、A/B 测试、北极星指标、OKR、产品仪表板。
何时使用此技能
- 当你需要此领域的专业帮助时
不使用此技能的情况
- 任务与产品分析无关
- 更简单、更具体的工具可以处理请求
- 用户需要无领域专业知识的通用帮助
工作原理
[对象]_[过去式动词]
正确: user_signed_up, conversation_started, upgrade_completed
错误: signup, click, conversion
产品分析——用数据做决策
"In God we trust. All others must bring data." — W. Edwards Deming
Auri 核心事件
AURI_EVENTS = {
# 获客
"user_signed_up": {"props": ["source", "medium", "campaign"]},
"onboarding_started": {"props": ["step_count"]},
"onboarding_completed": {"props": ["time_to_complete", "steps_skipped"]},
# 激活
"first_conversation": {"props": ["intent", "response_time"]},
"aha_moment_reached": {"props": ["trigger", "session_number"]},
"feature_discovered": {"props": ["feature_name", "discovery_method"]},
# 留存
"conversation_started": {"props": ["intent", "user_tier", "device"]},
"conversation_completed":{"props": ["messages_count", "duration", "rating"]},
"session_started": {"props": ["days_since_last", "platform"]},
# 收入
"upgrade_viewed": {"props": ["trigger", "current_tier"]},
"upgrade_started": {"props": ["target_tier", "trigger"]},
"upgrade_completed": {"props": ["tier", "plan", "revenue"]},
"subscription_canceled": {"props": ["reason", "tier", "tenure_days"]},
"payment_failed": {"props": ["attempt_count", "error_code"]},
}
PostHog 实现(Python)
from posthog import Posthog
import os
posthog = Posthog(
project_api_key=os.environ["POSTHOG_API_KEY"],
host=os.environ.get("POSTHOG_HOST", "https://app.posthog.com")
)
def track(user_id: str, event: str, properties: dict = None):
posthog.capture(
distinct_id=user_id,
event=event,
properties=properties or {}
)
def identify(user_id: str, traits: dict):
posthog.identify(
distinct_id=user_id,
properties=traits
)
## 用法:
track("user_123", "conversation_started", {
"intent": "business_advice",
"device": "alexa",
"user_tier": "pro"
})
Auri 激活漏斗
访问落地页 (100%)
| [目标: 40%]
点击"立即体验" (40%)
| [目标: 70%]
完成注册 (28%)
| [目标: 60%]
进行第一次对话 (17%) <- 顿悟时刻
| [目标: 50%]
次日回访 (8.5%)
| [目标: 40%]
每周使用 3+ 天 (3.4%)
| [目标: 20%]
转化为 Pro (0.7%)
优化漏斗
对于每个超过基准的流失点:
1. 识别:用户具体在哪里离开?
2. 理解:为什么?(会话录制、调查)
3. 假设:什么改变可能改善?
4. 测试:具有统计显著性样本的 A/B 测试
5. 衡量:最少 2 周,p-value < 0.05
6. 学习:即使失败,也能更好地理解用户
群组分析(周留存)
def calculate_cohort_retention(events_df):
"""
events_df: 包含列 [user_id, event_date, event_name] 的 DataFrame
返回:留存矩阵 [群组周 x 周数]
"""
import pandas as pd
first_session = events_df[events_df.event_name == "session_started"] \
.groupby("user_id")["event_date"].min() \
.dt.to_period("W")
sessions = events_df[events_df.event_name == "session_started"].copy()
sessions["cohort"] = sessions["user_id"].map(first_session)
sessions["weeks_since"] = (
sessions["event_date"].dt.to_period("W") - sessions["cohort"]
).apply(lambda x: x.n)
cohort_data = sessions.groupby(["cohort", "weeks_since"])["user_id"].nunique()
cohort_sizes = cohort_data.unstack().iloc[:, 0]
retention = cohort_data.unstack().divide(cohort_sizes, axis=0) * 100
return retention
留存基准(语音助手)
| 周 | 差 | 一般 | 好 | 优秀 | |--------|---------|-----|-----|-----------| | W1 | <20% | 20-35% | 35-50% | >50% | | W4 | <5% | 5-15% | 15-25% | >25% |
兼容工具
Claude CodeCursor
标签
前端开发