このプロジェクトについて

SightingsはTypeScriptで書かれた軽量なクッキーレスのページビュー分析ライブラリです。Cookie、localStorage、フィンガープリントのいずれもユーザーデバイスに書き込むことなく訪問をトラッキングし、すべてのレコードを直接あなたのデータベースに保存します。 設計上、各訪問は「sighting(目撃)」として扱われます——どの身元にも紐づかない、訪問が発生したという観察です。訪問者識別には、IP、ユーザーエージェント、秘密鍵、UTC日付から派生したソルト付きSHA-256ハッシュが使用され、128ビットに切り捨てられて毎日ローテーションされます。ライブラリは厳格なデータ境界を強制しており、許可リスト外のクエリパラメータは拒否され、referrerにはホスト名のみが保存され、カスタムイベントペイロードはありません。ビーコンボディにフィールドを追加しても新しいメトリクスを記録せず400エラーを返します。 大半のツールが混同しがちな2つのトラフィック区分を明確に区別します。人間の訪問者はナビゲーションごとに1回の`sendBeacon`リクエストを送信し、サーバーサイドでカウントされます。一方、gptbot、claudebot、perplexitybot、telegram-previewなどのクローラーやAIエージェントはクライアントサイドJavaScriptを実行しないため、Family名の分類によりミドルウェアで検出・カウントされます。これにより、AIモデルが実際にコンテンツをクロールしているかどうかを測定することが実用的になります。 コアパッケージは、標準的なRequest/ResponseペアとWeb Cryptoが存在する環境であればどこでも動作します——Node、Deno、Bun、Vercel Edge、Cloudflare Workersなど。公式インテグレーションには`@sightings/next`(Next.js App Routerハンドラおよびミドルウェア)と`@sightings/prisma`(スキーマモデル付きPrismaアダプタ)が含まれます。カスタムストレージアダプターは、単一の`record()`メソッドを、必要に応じて`summary()`メソッドを提供することで実装できます。 主要な設定オプションには、ベースAPIパス、パスレベルでの削除(例:`/admin`や`/invite`のサブツリーを除外)、クエリパラメータの許可リスト(デフォルトは`utm_*`および`ref`)、クローラー Family検出、訪問者ハッシュウィンドウ(デフォルトは日次、または時間次)、IPおよび国ヘッダーの優先順位、エラー処理があります。 組み込みの`api.summary()`クエリインターフェースにより、ボット/人間フィルタ付きの日付範囲に対する集計ビューが提供されます。SSRコンテキスト、非HTTPフレームワーク、バックフィル用の直接記録メソッドも公開されています。リポジトリはchangesetsを使用して3パッケージ全体の連動バージョン管理を行い、CI経由でプロヴェナンストラッキングされたtarballを公開します。 カテゴリ: data | サブカテゴリ: analytics-bi