exploring-live-traffic について
PostHog Web analytics の Live ページでリアルタイムのサイト活動を確認し、カードを長期間の Trends インサイトに変換する方法をエージェントに案内するスキルです。ホストフィルター、ボットトラフィックのデータ、Live ページの制約も説明します。
主な機能
- 01リアルタイムトラフィックのカードを解説
- 02ホストフィルターの動作を説明
- 03ボットトラフィック分析を案内
- 04カードを Trends インサイトに変換
- 05Live の時間範囲の制約を説明
活用シーン
- 01現在のサイト訪問状況を確認
- 02ホストでリアルタイムデータを絞り込む
- 03GPTBot などのトラフィックを分析
- 04週単位のボットトレンドを作成
MCP 対応
PostHog Web analytics と Trends クエリの利用方法をエージェントに案内します。MCP サーバーの機能は記載されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ posthog/ skills --skill exploring-live-trafficインストール後、Claude Code で/exploring-live-trafficを入力して読み込まれたか確認します。
詳細
Web 分析のライブトラフィックを確認する
Web 分析のライブタブ(/web/live)には、30 分間のスライディングウィンドウでのリアルタイムアクティビティと、60 秒間の「オンラインユーザー」数が表示されます。「今、自分のサイトで何が起きているか?」を確認する場所です。ページビュー、名前が付いたボット、デバイス、地域、上位のパス、上位のリファラー、ライブイベントフィードを確認できます。
このスキルでは、エージェントが次の方法を学びます。
- ライブタブで確認するべきリクエストを見分ける
- タイルのモデルを読み取る(各カードに表示される内容とデータの取得元)
- 唯一存在するフィルター(ホスト)を操作する
- ユーザーがライブウィンドウより長い期間や詳しい内訳を求める場合に、ライブタイルに対応するプロダクト分析のインサイトを作成する
ライブタブは HogQL のプレイグラウンドではありません。データは、短時間の HogQL バックフィルを利用するライブストリームから取得されます。ユーザーが HogQL で「今」のデータをクエリしたい場合はライブタブを案内し、過去の内訳を求める場合は、以下のパターンを使ってインサイトを作成してください。
このスキルを使用する場面
次のような場合にこのスキルを使用してください。
- 「今、サイトには誰がいますか?」「ライブで何が起きていますか?」「ライブトラフィックを表示してください」と尋ねられた場合
- 「ライブ」タブ、「ライブダッシュボード」、またはライブページ(
/web/live)について言及された場合 - ライブのボットトラフィックについて尋ねられた場合(「どのボットがクロールしていますか?」「GPTBot にスクレイピングされていますか?」)
- ドメイン/ホストでライブトラフィックを絞り込みたい場合
- ライブタブの表示内容をより長い期間と比較したい場合。たとえば、「ライブタブには GPTBot が大量にアクセスしていると表示されます。過去 7 日間のグラフを作成してもらえますか?」
リアルタイムではない Web 分析の作業にはこのスキルを使用しないでください。その場合は、標準の Web 分析タブ(/web)を使用してください。
タブの構成
URL:/web/live
タブには、2 つのフィルター操作とタイルのグリッドがあります。「オンラインユーザー」を除き、日付範囲はすべて固定で、30 分間のスライディングウィンドウです(「オンラインユーザー」は直近 60 秒間)。
フィルター
ライブタブのフィルターは、ホスト(ドメイン)セレクターの 1 つだけです。
webAnalyticsFilterLogic.selectedHostから取得されます。- Web 分析の他の部分と共有されるため、
/webで変更すると/web/liveに反映され、その逆も同様です。 - 機能フラグ
WEB_ANALYTICS_LIVE_DOMAIN_FILTERによって制御されます。フラグがオフの場合、ホストフィルターの UI は表示されず、すべてのタイルにすべてのドメインのデータが表示されます。 - ホストフィルターを設定すると、SSE ストリーム、HogQL のバックフィルクエリ(最初の 30 分間もホストで絞り込まれます)、および「オンラインユーザー」数が絞り込まれます。
- ライブタブには、日付ピッカー、比較コントロール、プロパティフィルター、テストアカウントフィルターはありません。存在しない操作をユーザーに約束しないでください。
ユーザーから「ドメイン <host> でライブトラフィックを絞り込んで」と求められた場合は、ライブタブ上部のドメインセレクターを案内してください。直接設定する URL パラメーターはありません。webAnalyticsFilterLogic を介して localStorage に保存されます。
統計カード(上部の列)
| カード | 内容 | 期間 |
|---|---|---|
| オンラインユーザー | 直近 60 秒間に確認された一意のデバイス ID 数 | 60s |
| ユニークビジター | 直近 30 分間の一意のデバイス ID 数 | 30m |
| ページビュー | 直近 30 分間の $pageview 数 | 30m |
コンテンツカード
| カード | 内容 | 備考 |
|---|---|---|
| 1 分あたりのアクティブユーザー数 | 新規訪問者とリピーターを比較する棒グラフ | 直近 30 分 |
| 人気のページ | アニメーション付きランキング、$pathname とビュー数 | 上位 10 件、30 分 |
| 人気のリファラー | アニメーション付きランキング、$referring_domain | 上位 10 件、30 分 |
| デバイス | 内訳を示す棒グラフ、$device_type | 上位 6 件+その他 |
| ブラウザー | ロゴ付きの内訳を示す棒グラフ、$browser | 上位 6 件+その他 |
| 人気の国 | 内訳を示す棒グラフ、$geoip_country_code | 上位 6 件+その他。WEB_ANALYTICS_LIVE_CITY_BREAKDOWN が有効な場合は、国/都市のタブカードに置き換わります |
| 1 分あたりのボットリクエスト数 | 1 分あたりのボットイベントを示す棒グラフ | フラグ WEB_ANALYTICS_BOT_ANALYSIS |
| ボットトラフィック | イベント共有率順に並べた名前付きボットとカテゴリタグ | フラグ WEB_ANALYTICS_BOT_ANALYSIS。行をクリックすると、そのボット固有のインサイトが開きます |
| 国(世界地図) | SVG 世界地図のヒートマップ | フラグ WEB_ANALYTICS_LIVE_MAP |
| ライブイベント | イベントフィード(イベント、人物、URL、タイムスタンプ) | 直近 50 件 |
ライブイベントフィードと世界地図を除くすべてのタイルには、「新しいインサイトとして開く」ボタンがあります。このボタンを押すと、プロダクト分析で 7 日間のトレンドクエリが開きます。ボットトラフィックタイルの行もそれぞれクリック可能で、クリックすると単一ボットのトレンドが開きます。
ボット検出モデル
ボットはサーバーサイドで検出されます。イベントが ClickHouse に保存される前に、次の 3 つの仮想プロパティがイベントに付与されます。
$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 が集計されます。ほとんどのボットは JS のページビューではなくサーバーサイドの
HTTP ログを生成するため、$http_log が含まれています。
Live タブに対応するプロダクト分析クエリの作成
ユーザーがより長い期間、保存済みインサイト、ダッシュボードタイル、または Live タブの表示内容の共有を希望する場合は、トレンドインサイトを作成します。UI の「新しいインサイトとして開く」ボタンでは、次のレシピがそのまま使用されます。
ボットトラフィックの内訳(ボットタイルのヘッダーに対応)
すべてのボットの推移を名前ごとに分類して表示する単一のグラフです。これは「何が自分をクロールしているのか?」を確認するための標準的なビューです。
{
"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_bot_name ではなく $virt_traffic_category で内訳を表示します。
上位ページ/参照元/デバイス/ブラウザー/国
ボット以外のタイルでは、$pageview を使用し、math: unique_users を設定して、基になるプロパティで内訳を表示します。
| タイル | 内訳プロパティ | 表示 |
|---|---|---|
| 上位ページ | $pathname | ActionsBarValue |
| 上位参照元 | $referring_domain | ActionsBarValue |
| デバイス | $device_type | ActionsPie |
| ブラウザー | $browser | ActionsPie |
| 国 | $geoip_country_code | WorldMap |
特定のドメインについて質問された場合は、常にライブタブのホストフィルターを引き継ぎ、properties に { "key": "$host", "value": ["<host>"], "operator": "exact", "type": "event" } を追加します。
使用するデフォルト値
dateRange.date_from:ユーザーが期間を指定しない限り-7dを使用します。ライブビュー自体は 30 分ですが、インサイト版を求める場合、ユーザーはほぼ常により長い期間について質問しています。interval:7 日間の期間にはhour、1 日未満の期間に限りminute、14 日を超える期間にはdayを使用します。- ライブタブにホストフィルターが設定されている場合は、常にそれを引き継ぎます。黙って削除しないでください。回答が変わってしまいます。
よくあるリクエストと適切な対応
| ユーザーの発言 | 適切な対応 |
|---|---|
| 「今、サイトで何が起きていますか?」 | /web/live に案内します |
「ライブトラフィックを example.com に絞り込んで」 | /web/live の上部にあるドメインセレクターを使用します |
| 「過去 30 分間にサイトをクロールしているボットを表示して」 | /web/live → ボットトラフィックタイル |
| 「今週、サイトをクロールしているボットを表示して」 | 上記の「ボットトラフィックの内訳」インサイトを作成し、date_from: -7d を設定します |
| 「GPTBot にどれくらいアクセスされていますか?」 | 「単一ボットの詳細分析」インサイトを作成し、$virt_bot_name に GPTBot を設定します |
| 「ライブタブには X と表示されるのに、ダッシュボードには Y と表示されるのはなぜですか?」 | ライブタブはイベントの直近 30 分間のスライディングウィンドウを表示し、ダッシュボードは選択した期間を集計します。直近 30 分間を除き、両者を直接比較することはできません。 |
| 「ライブタブに日付範囲を追加して」 | ライブタブには日付ピッカーがありません。期間を指定するには、上記のパターンを使ってトレンドインサイトを作成します |
| 「ライブトラフィックをブラウザー/デバイス/国で絞り込んで」 | サポートされていません。ホストフィルターのみ使用できます。代わりに、関連する内訳とフィルターを使ってトレンドインサイトを作成します |
注意点
- ボットの仮想プロパティ(
$virt_*)は、ボットの分類ステップで処理されたイベントにのみ存在します。過去には遡って適用されないため、分類機能のリリース前のイベントには含まれません。ボットの結果を確実に得るには、dateRange.date_fromを直近数か月以内に設定してください。 $http_logイベントは、posthog-jsではなく、サーバー側のログキャプチャから送信されます。プロジェクトが$http_logを出力しない場合、JS を実行しないボット(ほとんどのクローラー)はボットタイルに表示されません。- 30 分のウィンドウは、ブラウザー内のメモリバッファを使ったスライディング集計です。ページを更新すると、SSE ストリームではなくバックフィルの HogQL が再生されます。ページ読み込み直後に一時的に「0」と表示されても、実際に数が減少したと解釈しないでください。
- ホストフィルターではプロトコルが除去されます。
https://example.comではなく、example.comを指定してください。 - タイルの順序は、チームごとに
localStorage(フィーチャーフラグWEB_ANALYTICS_LIVE_EDIT_LAYOUTのもと)に保存されます。ユーザーのレイアウトが自分のものと異なっていても、不具合ではありません。