关于 exploring-live-traffic
该技能指导 Agent 使用 PostHog Web analytics 的 Live 页面查看实时网站活动,并将实时卡片转为更长时间范围的 Trends 洞察。它也说明可用的域名筛选、机器人流量数据及页面限制。
主要功能
- 01解读实时流量卡片
- 02说明域名筛选行为
- 03识别并分析机器人流量
- 04将卡片转为 Trends 洞察
- 05说明实时页面的时间范围限制
适用场景
- 01查看网站当前访问活动
- 02按域名筛选实时数据
- 03分析 GPTBot 等机器人流量
- 04生成一周机器人流量趋势
MCP 相关
为 Agent 提供使用 PostHog Web analytics 和 Trends 查询的操作指引;未说明 MCP 服务端功能。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ posthog/ skills --skill exploring-live-traffic安装后在 Claude Code 中输入/exploring-live-traffic确认已加载。
详细介绍
探索 Web analytics 实时流量
Web analytics 的 Live 标签页(/web/live)显示滚动 30 分钟窗口内的实时活动,以及过去 60 秒的“在线用户”数量。你可以在这里了解“我的网站此刻正在发生什么”——页面浏览量、命名机器人、设备、地理位置、热门路径、热门引荐来源,以及实时事件流。
本技能将教你(Agent)如何:
- 识别适用于 Live 标签页的请求
- 了解卡片模型(每张卡片显示什么、数据来自哪里)
- 使用唯一存在的筛选条件(主机)
- 当用户需要更长时间范围或比实时窗口更深入的细分时,构建与 Live 卡片相匹配的产品分析洞察
Live 标签页不是 HogQL 试验场——其数据来自实时数据流,并由短时间范围的 HogQL 回填提供支持。当用户想用 HogQL 查询“此刻”的数据时,请引导他们前往该标签页;当他们想查看历史细分时,请使用下面的模式构建洞察。
何时使用此技能
在用户遇到以下情况时使用此技能:
- 询问“现在有哪些人在我的网站上?”、“实时发生了什么?”、“显示实时流量”
- 提到“Live”标签页、“Live 仪表板”或 Live 页面(
/web/live) - 询问实时机器人流量(“哪些机器人正在抓取我的网站?”、“GPTBot 在抓取我们吗?”)
- 想按域名 / 主机筛选实时流量
- 想将 Live 标签页上的数据与更长时间范围的数据进行比较,例如“Live 标签页显示 GPTBot 正在大量访问我们,你能给我一张 7 天的图表吗?”
对于非实时 Web analytics 工作,请勿使用此技能——这类任务请使用标准的 Web analytics 标签页(/web)。
标签页结构
URL:/web/live
该标签页包含两个筛选控件和一个卡片网格。日期范围是固定的:除“在线用户”外,所有数据均使用滚动 30 分钟窗口(“在线用户”使用过去 60 秒)。
筛选条件
Live 标签页只有一个筛选条件:主机(域名)选择器。
- 数据来自
webAnalyticsFilterLogic.selectedHost。 - 它与 Web analytics 的其他页面共享,因此在
/web上更改后会同步到/web/live,反之亦然。 - 此筛选条件受功能标志
WEB_ANALYTICS_LIVE_DOMAIN_FILTER控制。如果该标志关闭,则不会显示主机筛选界面,所有卡片都会显示所有域名的数据。 - 设置主机筛选条件会缩小以下数据范围:SSE 数据流、HogQL 回填查询(因此初始 30 分钟的数据会限定到所选主机),以及“在线用户”数量。
- Live 标签页没有日期选择器、比较控件、属性筛选条件或测试账户筛选条件。请勿向用户承诺不存在的控件。
当用户询问“按域名 <host> 筛选实时流量”时,请引导他们使用 Live 标签页顶部的域名选择器。没有 URL 参数可直接设置该筛选条件——它通过 webAnalyticsFilterLogic 保存在 localStorage 中。
统计卡片(顶部栏)
| 卡片 | 说明 | 时间窗口 |
|---|---|---|
| 在线用户 | 过去 60 秒内出现的不同设备 ID 数量 | 60s |
| 独立访客 | 过去 30 分钟内的不同设备 ID 数量 | 30m |
| 页面浏览量 | 过去 30 分钟内的 $pageview 计数 | 30m |
内容卡片
| 卡片 | 内容 | 备注 |
|---|---|---|
| 每分钟活跃用户 | 柱状图:新访客与回访访客 | 最近 30 分钟 |
| 热门页面 | 动态排行榜,$pathname + 浏览量 | 前 10 名,30 分钟 |
| 热门引荐来源 | 动态排行榜,$referring_domain | 前 10 名,30 分钟 |
| 设备 | 分类统计条形图,$device_type | 前 6 名 + 其他 |
| 浏览器 | 带徽标的分类统计条形图,$browser | 前 6 名 + 其他 |
| 热门国家/地区 | 分类统计条形图,$geoip_country_code | 前 6 名 + 其他;如果启用了 WEB_ANALYTICS_LIVE_CITY_BREAKDOWN,则替换为国家/城市标签卡片 |
| 每分钟机器人请求数 | 柱状图:每分钟机器人事件数 | 标记 WEB_ANALYTICS_BOT_ANALYSIS |
| 机器人流量 | 按事件占比排序的具名机器人,带类别标签 | 标记 WEB_ANALYTICS_BOT_ANALYSIS;可点击各行,打开针对该机器人的洞察 |
| 国家/地区(世界地图) | SVG 世界地图热度图 | 标记 WEB_ANALYTICS_LIVE_MAP |
| 实时事件 | 流式事件动态(事件、人员、URL、时间戳) | 最近 50 个事件 |
除实时事件流和世界地图外,每个卡片都有一个“作为新洞察打开”按钮,可在产品分析中打开 7 天趋势查询。机器人流量卡片中的各行也可以单独点击,点击某个机器人行会打开该机器人的趋势图。
机器人检测模型
机器人在服务器端检测。事件写入 ClickHouse 前会附加三个虚拟属性:
$virt_is_bot— 布尔值,如果被归类为机器人则为true$virt_bot_name— 字符串,机器人的显示名称(例如Googlebot、GPTBot、Claude、Lighthouse、HeadlessChrome)$virt_traffic_category— 字符串,类别键:ai_crawler、ai_search、ai_assistant、search_crawler、seo_crawler、social_crawler、monitoring、http_client、headless_browser、no_user_agent、regular
实时机器人的卡片会统计“符合机器人统计条件”的事件:$pageview、$pageleave、$screen、
$http_log、$autocapture。之所以包含 $http_log,是因为大多数机器人会发出服务器端
HTTP 日志,而非 JS 页面浏览事件。
构建与实时标签页对应的产品分析查询
如果用户需要更长的时间范围、已保存的洞察、仪表板卡片,或想分享实时标签页中的视图,请构建趋势洞察。界面中的“作为新洞察打开”按钮使用的正是以下配置:
机器人流量细分(与机器人卡片标题对应)
按名称细分的所有机器人随时间变化的单个图表。这是查看“哪些机器人在抓取我的网站?”的标准视图。
{
"kind": "TrendsQuery",
"interval": "hour",
"dateRange": { "date_from": "-7d" },
"series": [
{
"kind": "GroupNode",
"custom_name": "Requests",
"operator": "OR",
"math": "total",
"nodes": [
{ "kind": "EventsNode", "event": "$pageview", "math": "total" },
{ "kind": "EventsNode", "event": "$pageleave", "math": "total" },
{ "kind": "EventsNode", "event": "$screen", "math": "total" },
{ "kind": "EventsNode", "event": "$http_log", "math": "total" },
{ "kind": "EventsNode", "event": "$autocapture", "math": "total" }
]
}
],
"properties": [{ "key": "$virt_is_bot", "value": ["true"], "operator": "exact", "type": "event" }],
"breakdownFilter": {
"breakdown": "$virt_bot_name",
"breakdown_type": "event",
"breakdown_limit": 25
},
"trendsFilter": { "display": "ActionsBarValue" }
}
单个机器人深入分析(与点击机器人行对应)
{
"kind": "TrendsQuery",
"interval": "hour",
"dateRange": { "date_from": "-7d" },
"series": [
/* same combined "Requests" GroupNode as above */
],
"properties": [
{ "key": "$virt_is_bot", "value": ["true"], "operator": "exact", "type": "event" },
{ "key": "$virt_bot_name", "value": ["GPTBot"], "operator": "exact", "type": "event" },
{ "key": "$virt_traffic_category", "value": ["ai_crawler"], "operator": "exact", "type": "event" }
],
"trendsFilter": { "display": "ActionsLineGraph" }
}
类别筛选条件为可选项 — 当用户询问特定的机器人+类别组合时再添加(Lighthouse · headless_browser 与 Lighthouse · monitoring 代表不同信号)。
机器人类别细分(与机器人事件图表磁贴一致)
如果用户想看“AI 爬虫与 SEO 爬虫及其他流量”的对比,而不是按机器人逐行查看,请使用 $virt_traffic_category 进行细分,而不是 $virt_bot_name。
热门页面 / 引荐来源 / 设备 / 浏览器 / 国家/地区
对于非机器人磁贴,使用 $pageview,并设置 math: unique_users,按底层属性细分:
| 磁贴 | 细分属性 | 显示方式 |
|---|---|---|
| 热门页面 | $pathname | ActionsBarValue |
| 热门引荐来源 | $referring_domain | ActionsBarValue |
| 设备 | $device_type | ActionsPie |
| 浏览器 | $browser | ActionsPie |
| 国家/地区 | $geoip_country_code | WorldMap |
如果用户询问特定域名,请始终继承实时标签页中的主机过滤条件——将 { "key": "$host", "value": ["<host>"], "operator": "exact", "type": "event" }
添加到 properties 中。
建议使用的默认值
dateRange.date_from:除非用户指定时间范围,否则使用-7d——实时视图本身显示 30 分钟的数据,但用户请求洞察时几乎总是想看更长的时间范围。interval:7 天时间范围使用hour,不足一天的时间范围仅使用minute,超过 14 天的时间范围使用day。- 如果实时标签页设置了主机过滤条件,始终继承该过滤条件。不要悄悄删除它——这会改变答案。
常见请求及正确处理方式
| 用户的说法 | 正确处理方式 |
|---|---|
| “现在网站上发生了什么?” | 将用户引导至 /web/live |
“将实时流量过滤为 example.com” | 使用 /web/live 顶部的域名选择器 |
| “显示过去 30 分钟内抓取我们网站的机器人” | /web/live → 机器人流量磁贴 |
| “显示本周抓取我们网站的机器人” | 使用上文的“机器人流量细分”洞察,并设置 date_from: -7d |
| “GPTBot 给我们带来了多少流量?” | 使用“单个机器人深入分析”洞察,并将 $virt_bot_name 设置为 GPTBot |
| “为什么实时标签页显示 X,而我的仪表板显示 Y?” | 实时标签页显示的是事件的 30 分钟滑动时间窗口;仪表板则按所选时间范围汇总数据。除最近 30 分钟外,两者无法直接比较。 |
| “为实时标签页添加日期范围” | 实时标签页没有日期选择器——如需查看特定时间范围,请使用上文的模式构建趋势洞察 |
| “按浏览器 / 设备 / 国家/地区筛选实时流量” | 不支持——目前只有主机过滤条件。请改用相关细分条件和过滤条件构建趋势洞察 |
注意事项
- Bot 虚拟属性(
$virt_*)仅存在于经过 Bot 分类步骤处理的事件中,且不会追溯补录——分类器上线前的事件不会包含这些属性。为确保 Bot 结果可靠,请将dateRange.date_from设置为最近几个月内的日期。 $http_log事件来自服务器端日志采集,而非posthog-js。如果项目不产生$http_log,不运行 JS 的 Bot(大多数爬虫)就不会显示在 Bot 磁贴中。- 这 30 分钟的时间窗口是在浏览器内存缓冲区中进行的滑动聚合——刷新页面时会重放回填 HogQL,而不是 SSE 流。页面加载后短暂显示“0”并不代表数据真的下降。
- 主机筛选器会去掉协议——请传入
example.com,而不是https://example.com。 - 磁贴顺序会按团队保存在
localStorage中(位于功能标志WEB_ANALYTICS_LIVE_EDIT_LAYOUT下)。如果某位用户的布局与你的不同,这不是 Bug。