mcpField
E
exploring-live-traffic

exploring-live-traffic

github.com/posthog数据与数据库95209 次安装今天更新
代码仓库

关于 exploring-live-traffic

exploring-live-traffic 是解读 Web analytics Live 标签页并将流量卡片转为较长时间范围 Trends 洞察的技能,适用于实时访客、机器人和流量对比问题。

主要功能

  1. 01说明 Live 标签页卡片和时间范围
  2. 02按主机筛选实时数据
  3. 03识别具名机器人流量
  4. 04将卡片映射为 Trends 查询模式
  5. 05说明不支持的筛选项和限制

适用场景

  1. 01查看当前访客和页面活动
  2. 02检查抓取网站的机器人
  3. 03创建七天机器人流量分析
  4. 04比较实时指标与较长时间范围

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/posthog/ai-plugin --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,按底层属性细分:

磁贴细分属性显示方式
热门页面$pathnameActionsBarValue
热门引荐来源$referring_domainActionsBarValue
设备$device_typeActionsPie
浏览器$browserActionsPie
国家/地区$geoip_country_codeWorldMap

如果用户询问特定域名,请始终继承实时标签页中的主机过滤条件——将 { "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。

评论

支持 Markdown