GEOInflowの機能
GEOInflowは、生成エンジン最適化(GEO)向けのセルフホスト型分析プラットフォームです。ブラウザーのアクティビティ、AI検索からの流入、サーバーまたはCDNのクロールログ、コンテンツインベントリを、共有ウェブサイトコンテキスト内で統合します。
このプラットフォームは、実務上の疑問に答えるのに役立ちます。どのAIクローラーがサイトを訪問しているか。どのパスをリクエストしているか。リクエストは成功しているか。重要なページのうち、確認できるクロールアクティビティがないものはどれか。対応しているAI検索からの流入によって、訪問者トラフィックやコンバージョンがどの程度発生しているか。
GEOInflowは、企業サイト、メディアパブリッシャー、コンテンツサイト、開発者向けドキュメント、複数のウェブサイトを管理するチームに適しています。アプリケーションのソースコードはMITライセンスで公開されています。READMEには、製品バージョンv1.2およびビルドバージョン1.2.0が記載されています。
クロールログは、確認されたアクセスを示します。ただし、それだけでインデックス登録、モデル学習、回答への引用、推薦順位、顧客獲得を証明するものではありません。
主な機能
AIクローラーの識別情報と目的
組み込みカタログには、OpenAI、Anthropic、Perplexity、Google、Microsoft、ByteDance、Baidu、Kimi、Tencent Hunyuanなどのプロバイダーが含まれています。また、従来型の検索クローラーやその他のボットの観測情報も保持します。
プラットフォーム、製品、リクエスト識別情報、目的、製品タイプは個別に表現されます。これにより、トレーニング、AI検索、ユーザー操作によるアクセス、AIワークベンチ、パーソナルエージェントといった概念を、相互排他的なものとして扱わずに区別できます。
識別情報の根拠も分離して保持されます。申告されたUser-Agentは、公式IP範囲や利用可能なDNSまたは信頼できるエッジの根拠と比較できます。User-Agentの申告だけでは確認済みとはみなされず、十分な根拠がない過去の記録は不明のまま表示されます。
クロールアクティビティとコンテンツの網羅性
リクエストされたページのランキング、繰り返し発生するリクエスト、確認されたページ、ディレクトリ分布、主要なクローラー、最近のアクティビティ、コンテンツの鮮度を確認できます。サイトマップ、CSVファイル、JSONインベントリをインポートすると、既知のページ一覧を作成し、確認されたクロールログと比較できます。
この比較により、アクセスが確認されたページと、AIから見落とされている可能性のあるページを把握できます。識別情報、目的、製品タイプのフィルターは集計とページネーションの前に適用されるため、カード、テーブル、比較、エクスポートで一貫した条件が使用されます。
リクエスト診断とアクセス ポリシー
GEOInflowは、HTTPレスポンス、GETやHEADなどのメソッド、キャッシュ動作、レイテンシ、レスポンスサイズ、収集の継続性、リスクに関する検出結果を、個別の根拠として表示します。チームは対応状況やメモを追加し、調査を保留して後から再開できます。
このプラットフォームでは、robotsおよびNginxのアクセス設定をエクスポートできます。対応しているCloudflareの制御機能を使用するには、個別のZone認証情報、プレビュー、明示的な確認、バックグラウンド実行、変更後のリモート状態の検証が必要です。利用できる制御機能は、デプロイ環境、プロバイダープラン、付与された権限によって異なります。
ウェブサイトとコンバージョンの分析
- ページビュー、訪問者、訪問、参照元、地域、デバイス、ブラウザー、コンテンツパフォーマンス
- カスタムイベント、目標、ファネル、訪問者経路、アトリビューション、収益分析
- 検索エンジン、参照キーワード、UTM分析、パフォーマンス、ヒートマップ、リテンション、オーディエンス
- ウェブサイト、チーム、ワークスペース、ダッシュボード、権限、公開共有のツール
- 選択した範囲のCSV、JSON、ZIPエクスポート
- ウェブサイトの事実に基づくオプションのAI支援(デフォルトでは無効)
ブラウザートラッキングは、対応しているAI検索からの流入を認識し、ランディングページ、イベント、目標、コンバージョンと関連付けます。クローラーのリクエスト、流入セッション、コンバージョンは別々の測定値として扱われ、データソース間の比較には引き続き制約があります。
データフローを理解する
GEOInflowは、主に次の3種類の入力を受け付けます。
- ブラウザートラッキング:ページビュー、イベント、有効にした拡張ブラウザーデータを収集します。
- サーバーまたはCDNのログ:ブラウザースクリプトを実行しないクローラーのリクエストを取得します。
- コンテンツインベントリ:サイトマップ、CSV、JSONのレコードをインポートし、網羅性の評価対象となるべきページを定義します。
アプリケーションAPIと取り込みAPIは、PostgreSQLにデータを書き込みます。ログワーカーと分析ワーカーがレコードを処理し、Redisがレポートのキャッシュを支えます。その後、レポートと公開結果が、GEO、訪問者、コンテンツの分析に加え、権限で管理された共有とエクスポートを支えます。
各データソースは個別に接続できます。データソースがない場合、対応する分析では、欠落した入力を暗黙的に否定的な結果として扱うのではなく、その制約を表示する必要があります。
クイックデプロイの前提条件
開始する前に、Docker Compose V2を備えたDocker EngineまたはDocker Desktopをインストールして実行してください。ビルド中に必要となるイメージおよび依存関係のダウンロード元に、マシンからアクセスできることを確認してください。
GEOInflowのソースコードを取得し、ターミナルを開いてリポジトリのルートに移動します。本番環境へのインストールには、ドメイン、HTTPS、信頼できるリバースプロキシも必要です。
DockerでGEOInflowをデプロイする
デプロイスクリプトを実行する
プロジェクトのルートから、次を実行します。
sh scripts/liekan-deploy.shこのスクリプトは、非公開の.envファイルとランダムなシークレットを作成し、アプリケーションイメージをビルドしてマイグレーションを適用した後、次のコンポーネントを起動します。
- GEOInflowアプリケーション
- ログワーカー
- 分析ワーカー
- PostgreSQL
- Redis
アプリケーションを開く
デフォルトのローカルアドレスは次のとおりです。
http://127.0.0.1:3002新規インストールの場合は、初期認証情報でサインインします。
- ユーザー名:
admin - パスワード:
liekan
サインイン後、初期パスワードを直ちに変更してください。 今後のアップグレードでは、カスタマイズしたアカウントとパスワードが保持されます。
付属のサンプルを読み込む
実際のウェブサイトに接続する前にインターフェースを確認するには、付属の処理済みデータセットを投入します:
docker compose -f docker-compose.liekan.yml exec app node scripts/liekan-seed-demo.mjsサンプルウェブサイトの名前は猎看官网(示例数据)です。初回インポート時には、データセットを確認しやすくするためタイムスタンプが調整されます。繰り返し実行しても、既存のデータと削除状態は保持されます。
最初のウェブサイトを接続する
管理者アカウントを保護したら、GEOInflowでウェブサイトを作成し、導入環境に適したデータソースを接続します。正確な取り込み手順については、プロジェクトのクイックスタートガイドを参照してください。
ステップ1:ブラウザトラッキングを追加する
ブラウザトラッキングスクリプトをインストールして、ページビュー、イベント、有効化した拡張計測を収集します。トラッキングはデフォルトでCookieを使用しません。記録、イベントプロパティ、業務システム連携は、運用担当者が設定したデータ範囲に依存します。
信頼できるIPイングレスがなくても、ブラウザのページビュー収集は継続できます。ただし、ユニークビジターなどのアイデンティティに関わる指標には信頼できるイングレスの証拠が必要なため、本番環境ではリバースプロキシを慎重に設定してください。
ステップ2:サーバーまたはCDNログを接続する
ブラウザスクリプトでは、サーバーからドキュメントだけをリクエストするボットを観測できません。サーバーまたはCDNログを追加して、クローラーのアクセス、リクエストパス、レスポンスコード、メソッド、レイテンシ、キャッシュ、失敗を計測します。
サーバーの自動収集には、パブリックHTTPS、取り込みシークレット、署名済みのインストールアセットが必要です。Cloudflare連携を使用する場合は、OAuth、適切な権限、要求された機能に対するプロバイダーのサポートも必要です。
ステップ3:コンテンツインベントリをインポートする
クローラーが発見すると想定されるページを含むサイトマップ、CSVファイル、またはJSONインベントリをインポートします。GEOInflowは、この既知のインベントリと観測したログレコードを比較して、クロールカバレッジを算出し、観測アクティビティのないページを特定できます。
カバレッジのないページは、除外の証拠ではなく調査の手がかりとして扱ってください。エントリーポイント、内部リンク、robotsディレクティブ、HTTPレスポンス、ログ収集が該当期間をカバーしていたかを確認します。
基本的な分析ワークフロー
サイトを訪問するAIプラットフォームを確認する
- ウェブサイトと日付範囲を選択します。
- クローラー分析エリアを開きます。
- クローラーの識別情報、プロバイダー、目的、リクエスト量、検証状態、傾向を確認します。
- 識別情報、目的、プロダクト種別のフィルターを使ってデータセットを絞り込みます。
- User-Agentだけに頼らず、各識別情報を裏付ける証拠を確認します。
このワークフローにより、利用可能なカタログと証拠に基づいて、学習用クローラー、AI検索リクエスト、ユーザー起点のアクセスを区別できます。
頻繁にクロールされるパスと無効の可能性があるパスを特定する
- リクエストされたページのランキングと繰り返しリクエストを確認します。
- ディレクトリ別およびクローラー別にアクティビティを比較します。
- 最近のアクティビティとコンテンツの鮮度を確認します。
- 形式不正、廃止済み、または予想外に頻繁なURLを探します。
- HTTPステータス、キャッシュ動作、レイテンシ、レスポンスサイズを確認します。
繰り返しリクエストから、重要なコンテンツ、非効率なクローラー動作、リダイレクト、欠落ページ、構造上の問題が明らかになることがあります。各パターンはレスポンスの証拠と併せて解釈してください。
コンテンツカバレッジを測定する
- 最新のコンテンツインベントリをインポートします。
- 一貫したウェブサイト、日付範囲、クローラーフィルターを選択します。
- インベントリのページとログで観測されたパスを比較します。
- 観測アクセスのないページを確認します。
- 発見可能性、ポリシー、レスポンス、ソースの継続性を調査します。
カード、テーブル、比較、エクスポートでは、選択したフィルター条件が共有されます。推定されたパスの観測結果と推定結果には、そのラベルが保持されるため、ユーザーは計算による結論と直接的な証拠を区別できます。
AIリファラルの成果を分析する
- ウェブサイトのブラウザトラッキングを有効にします。
- 認識されたAIリファラルセッションとランディングページを確認します。
- 関連するイベント、目標、またはコンバージョンを定義します。
- リファラルトラフィックとその後の成果を比較します。
- 結果をレポートする際は、クローラーのリクエストとリファラルセッションを分けて扱います。
クローラーのリクエストは、ページがAIの回答に表示されたことを証明するものではありません。同様に、AIリファラルセッションから、モデルがそのページを選択または引用した方法を判断することもできません。ダッシュボードとエクスポートレポートでは、これらの区別を維持してください。
日付範囲、タイムゾーン、更新動作
主な日付範囲は「今日」、「7日間」、「30日間」です。デフォルトの分析タイムゾーンはAsia/Shanghaiです。最初の完全なサインイン時に、アプリケーションは国と都市のタイムゾーンを確認します。その後のリクエストでは、アカウントに保存されたタイムゾーンを使用して「今日」を定義します。
リアルタイム訪問者は直近30分を対象とします。保持分析では暦月を使用します。「今日」のメインダッシュボードは30秒ごとに公開済みの結果を読み込み、実際のデータカットオフを表示します。ページが非表示またはオフラインになると更新は一時停止しますが、リアルタイム分析と負荷の高い分析では、それぞれ独自の更新スケジュールが使用されます。
高度な運用のヒント
分析の高速化を確認する
GEOInflowは、事前集計、正確な訪問事実、永続的な結果、複数の永続化レイヤーを使用して、繰り返し計算を削減します。一般的な範囲は事前にウォームアップでき、バックグラウンド更新の実行中も公開済みの結果を利用できます。
デプロイ後は、Analytics Accelerationページを使用してタスクとカバレッジを確認してください。初回計算、キャッシュヒット、バックグラウンド更新には、それぞれ異なるコストがかかります。実際のパフォーマンスは、データ量、インベントリの構築、PostgreSQLの性能、キャッシュの状態によって異なります。
ワーカーを正常に保つ
ログワーカーと分析ワーカーは、取り込み処理と結果の公開に不可欠です。レポートの更新が停止した場合は、空のダッシュボードを活動がない証拠と解釈する前に、ワーカーの状態、キュー、ソースの継続性、データベースの健全性、Redisを確認してください。
容量保護機能によって古い期間が削除される場合があり、アイドル状態で失敗したタスクは自動再試行を一時停止することがあります。永続的なバックグラウンドタスクにより、ブラウザーセッションを開いたままにしなくても初回計算を完了できます。
ソースと証拠の境界を維持する
- User-Agentの申告を、検証済みのクローラー識別情報として扱わないでください。
- 収集カバレッジが完全でない限り、ログ上の活動がないことを、クローラーがページにアクセスしなかった証拠として扱わないでください。
- クローラーのアクセスを、インデックス登録、学習、引用、ランキング、獲得と同一視しないでください。
- 未接続の連携、空のデータセット、不明な値、推定値、未対応の機能は、それぞれ別の状態として扱ってください。
- 日付範囲、ソースカバレッジ、フィルター、ルールのバージョンに互換性がある場合のみ、結果を比較してください。
アクセス制御を慎重に使用する
生成されたrobots、Nginx、または対応するCloudflareの変更を、適用前にプレビューしてください。Cloudflareの操作には明示的な確認が必要であり、実行後はリモート状態を読み戻して確認してください。実際にデプロイされた環境で、プロバイダーのプランと権限を検証してください。
本番インフラを計画する
本番アクセスには、ドメイン、HTTPS、信頼できるリバースプロキシを使用してください。PostgreSQLをバックアップし、非公開の.env、取り込み用シークレット、アカウント認証情報、秘密鍵、非公開で提供された地理データベースを保護してください。プロキシ、バックアップ、サービス、設定、アップグレードの詳細については、デプロイガイドを確認してください。
必要な場合にのみAI機能を有効にする
基本的なウェブサイト分析とクローラー識別に、モデルAPIキーは必要ありません。AI分析はデフォルトで無効です。有効にすると、ユーザーはモデル接続とウェブサイトの資料を選択するため、選択したモデルプロバイダーに送信されるデータを確認してください。
GEO Weightを慎重に解釈する
GEO Weightは、直近の30日間の完了した暦日における、適格なAIコンテンツアクセスに基づくベータ機能です。これを普遍的なランキングスコアとして扱うのではなく、文書化された計算式、証拠、適用範囲、制限に基づいて使用してください。
開発環境のセットアップ
コントリビューターには、Node.js 22.23.4、pnpm 12.3.4、PostgreSQL、独立した開発用データベース、非公開の環境設定が必要です。次の手順で、ポート3302でウェブアプリケーションを準備して起動します。
pnpm install --frozen-lockfile
pnpm build:db
pnpm db:migrate
pnpm liekan:migrate
pnpm liekan:queue-bootstrap
pnpm build:openapi
pnpm build:packages
pnpm build:tracker
pnpm build:recorder
pnpm liekan:build-worker
pnpm dev --port 3302CONTRIBUTING.mdの説明に従い、ログワーカーと分析ワーカーを別々のターミナルで起動してください。開発用ワーカーとウェブアプリケーションは、同じ非公開の環境設定を使用する必要があります。
プロダクトページはsrc/components/liekanに、データコントラクトはsrc/lib/liekan/contractsに、上流のクエリーおよび権限アダプターはsrc/lib/liekan/upstreamにあります。スキーマの変更は段階的なプロジェクトマイグレーションで追加し、適用済みのマイグレーションは変更しないでください。
まとめ
GEOInflowは、クローラーの証拠、コンテンツインベントリ、訪問者分析、AIからのリファラル、コンバージョンを組み合わせる、セルフホスト型の手段を提供します。Dockerデプロイから始め、管理者アカウントを保護し、ブラウザーとログのソースを接続して、信頼できるインベントリをインポートしてください。最も有用な結論は、一貫したフィルター、正常なワーカー、完全なソースカバレッジ、そして観測されたアクセスと追加の証拠を必要とする主張を明確に分離することから得られます。
