RevScope について
RevScopeは、訪問者イベントと決済データを結び付け、ウェブサイトの活動を収益に関連付けます。収益源を分析したいサイト運営者向けで、ホスト型サービスまたはセルフホストで利用できます。
主な機能
- 01ページ閲覧と訪問者イベントの追跡
- 02活動データと決済データの結合
- 03ページやキャンペーンへの収益帰属
- 04ホスト型サービスとセルフホスト
- 05CLIでの設定と分析クエリ
活用シーン
- 01収益を生むページの特定
- 02キャンペーンと参照元の比較
- 03プライベートなサイト分析の運用
MCP 対応
RevScopeは分析データにアクセスするMCPサーバーを提供します。ローカルサーバーのみ実行できるMCPクライアントは、Dockerブリッジ経由でホスト型サーバーに接続できます。READMEにはツールの詳細がありません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://api.revscope.co/v2/mcpclaude mcp add --transport http co-revscope-revscope https://api.revscope.co/v2/mcp{"mcpServers":{"co-revscope-revscope":{"type":"http","url":"https://api.revscope.co/v2/mcp"}}}Cursor で開く{"servers":{"co-revscope-revscope":{"type":"http","url":"https://api.revscope.co/v2/mcp"}}}VS Code で開く{"mcpServers":{"co-revscope-revscope":{"type":"http","url":"https://api.revscope.co/v2/mcp"}}}{"mcpServers":{"co-revscope-revscope":{"serverUrl":"https://api.revscope.co/v2/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
RevScope
RevScope は、ウェブサイト向けの収益アトリビューション分析ツールです。ページに設置した小さなスクリプトが、訪問者の行動(閲覧したページ、訪問につながった検索やリファラー、発生させたイベント)を記録します。RevScope はその行動を、Stripe、Polar、Shopify などの決済システムで行われた支払いと結び付けます。これにより、単なるトラフィックではなく、どのページ、チャネル、キャンペーンが実際に収益をもたらしているかが分かります。
利用方法は 2 つあります。
- ホステッドサービス:revscope.co から利用できます。インストールは不要です。
- 独自サーバー。このリポジトリには、プライベートインスタンスの実行に必要なものがすべて含まれています。最も手早い方法は Docker です。次に説明します。
エージェントやスクリプトは、ブラウザーを使わずにコマンドラインからホステッドサービスをセットアップできます。アカウントの作成、トラッカーのインストール、インテグレーションの接続、分析データの照会が可能です。cli/ を参照してください。ローカルサーバーのみを実行する MCP クライアントは、mcp-bridge/ の Docker ブリッジ経由でホステッド MCP サーバーに接続できます。
Docker で独自のインスタンスを実行する
Docker と Compose v2 がインストールされたマシンが必要です。compose.yaml は、ウェブアプリも配信する単一のバックエンドイメージをビルドし、Postgres と並行して実行します。
-
設定ファイルを作成します。
cp docker.env.example .env -
.envでINTEGRATION_ENCRYPTION_KEYとPOSTGRES_PASSWORDを設定します。それぞれの項目の上にあるコメントに、値を生成するコマンドが記載されています。 -
ビルドして起動します。
docker compose up -d --build初回のビルドでは Rust バックエンドをコンパイルするため、数分かかります。
-
http://localhost:4320/ui/signup を開いて、すぐにログインアカウントを作成します。最初にサインアップしたユーザーがインスタンスの所有者となり、その後サインアップは終了します。それ以外のユーザーは招待で参加します(アカウントの仕組みを参照してください)。
インターネットからアクセスできるようにする
バックエンドは 127.0.0.1:4320 のみで待ち受けるため、初期状態ではサーバー外からアクセスできません。パブリックドメインで公開するには、次のいずれかを選択してください。
-
同梱の Caddy サーバーを使用する。 ドメインの DNS をサーバーに向け、ポート 80 と 443 を開放します。そのうえで
.envに次の値を設定します。COMPOSE_PROFILES=caddy REVSCOPE_DOMAIN=analytics.example.com REVSCOPE_WEB_BASE_URL=https://analytics.example.com/uidocker compose up -dを再実行します。Caddy が Let's Encrypt から証明書を取得し、HTTPS で配信します。 -
独自のリバースプロキシを使用する(nginx、Traefik など)。
127.0.0.1:4320にプロキシし、プロキシがX-Forwarded-Forヘッダーを設定するようにしてください。コンテナーはこのヘッダーから訪問者の IP アドレスを読み取ります。ポート 4320 にアクセスできるのがこのマシンだけである場合に限り安全です。そのため、このポートをより広く公開しないでください。
REVSCOPE_WEB_BASE_URL はどちらの場合も重要です。招待やパスワードリセットなど、メールに記載するリンクで使用されるアドレスだからです。
サイトにトラッカーを追加する
tracker/INSTALL.md のスニペットをすべてのページの <head> にコピーします。インスタンスの URL を指定しない場合、スニペットはホステッドサービスにデータを送信します。そのため、最後の行の 3 番目の引数として URL を追加してください。
})(window, "examplecom", "https://analytics.example.com/");
examplecom はプロジェクト名を表します。サインアップ時に選んだ名前、または後から追加したプロジェクトの場合は、ダッシュボードに表示される名前です。
バックアップ、アップグレード、設定
データは2つのDockerボリュームに保存されます。revscope-dataにはプロジェクトごとのSQLiteファイルがあり、分析イベントが格納されています。postgres-dataにはログイン情報、設定、インテグレーションが格納されています。両方をバックアップしてください。
アップグレードするには、git pullを実行してからdocker compose up -d --buildを実行します。データベースのマイグレーションは起動時に自動で実行されます。
.env内のすべての変数がバックエンドに渡されるため、revscope/.env.exampleにあるメール、AIチャット、エラー報告などのオプションも使用できます。変更後はdocker compose up -dを実行してください。
訪問者の所在地(国と都市)の特定には、MaxMindの無料のGeoLite2-Cityデータベースが必要です。このデータベースはこのリポジトリで再配布できません。MaxMindの無料アカウントを作成し、ビルドの前に.envでMAXMIND_ACCOUNT_IDとMAXMIND_LICENSE_KEYを設定すると、ビルド時にデータベースがダウンロードされ、バイナリに組み込まれます。チェックアウト先にrevscope/GeoLite2-City.mmdbがすでに存在する場合は、ビルド時にそのファイルが使われます。どちらもない場合、位置情報の特定は無効になります。
独自のインスタンスでのアカウントの仕組み
セルフホスト可能なインスタンスにはアカウントが1つあり、すべてのユーザーがそのすべてのプロジェクトを参照できます。サインアップすると、指定した名前で最初のプロジェクトが作成されます。プロジェクトはダッシュボードから追加できます。最初のユーザーがサインアップした後、ほかのユーザーを設定から招待します。招待リンクから、招待された人はパスワードを設定できます。リンクの有効期限は7日間です。最新の招待から30日以内に承諾しなかった人は削除されるため、メールアドレスが予約されたままになることはありません。メールが設定されている場合(MAILCHANNELS_API_KEYとMAILCHANNELS_FROM_EMAIL)、RevScopeがリンクをメールで送信します。設定にはリンクが常に表示されるため、自分で送信することもできます。
ホスト型サービスのプラン制限は適用されません。イベント数に上限はなく、AIチャットの月間予算もありません。ドキュメントへのリンク先はrevscope.coです。
Dockerを使わずに独自のインスタンスを実行する
セルフホスト可能なビルドは単一のバイナリです。バックエンド、Webアプリ、トラッカースクリプト、データベースのマイグレーション、および必要に応じてGeoLite2データベースが含まれます。前提条件をインストールしてから、次のようにビルドします。
(cd web && pnpm install && pnpm build:bundle)
cd revscope && cargo build --release --bin revscope --features self-hosted
バイナリはrevscope/target/release/revscopeです。サーバーと同じOSおよびCPUアーキテクチャのマシンでビルドするか、クロスコンパイルしてください。
実行するには、次の手順に従います。
- このバイナリ用のPostgresデータベースを作成します(
createdb revscope)。 revscope/.env.exampleを、バイナリを実行するディレクトリに.envとしてコピーし、値を設定します。必須なのはDATABASE_URLとINTEGRATION_ENCRYPTION_KEYのみです。REVSCOPE_WEB_BASE_URLには、末尾に/uiを付けた公開URLを設定します。例:https://analytics.example.com/ui。- systemdなどのプロセスマネージャーを使い、権限のないユーザーとしてバイナリを実行します。
- HTTPSを処理するリバースプロキシの背後に配置し、訪問者のIPアドレスをプロキシの
X-Forwarded-Forヘッダーから取得するよう、REVSCOPE_TRUST_X_FORWARDED_FOR=trueを設定します。このヘッダーを誰でも偽装できるため、バックエンドのポートにはプロキシ経由でのみアクセスできるようにしてください。
Webアプリは/ui配下で提供され、/へのアクセスは/ui/dashboardにリダイレクトされます。同一オリジンのAPIを呼び出すため、クロスオリジン(CORS)の設定は不要です。プロジェクトのデータベースは作業ディレクトリ内のdata/に保存されるため、このディレクトリもPostgresとあわせてバックアップしてください。
リバースプロキシの代わりに、Let's Encryptの証明書を使ってバックエンド自体にHTTPSを提供させることもできます。REVSCOPE_LISTEN_TLS=0.0.0.0:443、REVSCOPE_LISTEN=0.0.0.0:80(Let's Encryptはポート80経由でドメインを検証します)、およびREVSCOPE_TLS_DOMAINSにホスト名(例:analytics.example.com)を設定します。権限のないユーザーが1024未満のポートにバインドするには、CAP_NET_BIND_SERVICEケイパビリティが必要です。
設定
バックエンドは環境変数と、作業ディレクトリ内の
.env ファイルから設定を読み込みます。実際の環境変数が優先されます。revscope/.env.example には、各オプションと説明のコメントが記載されています。主な項目は次のとおりです。
| Variables | Purpose |
|---|---|
DATABASE_URL, INTEGRATION_ENCRYPTION_KEY | 必須:Postgres の URL と認証情報キー |
REVSCOPE_LISTEN | 平文 HTTP のアドレス(デフォルトは 127.0.0.1:4320) |
REVSCOPE_WEB_BASE_URL, REVSCOPE_API_BASE_URL | メール内のリンクと MCP メタデータで使用する公開 URL |
REVSCOPE_TRUST_X_FORWARDED_FOR | リバースプロキシのヘッダーから訪問者の IP アドレスを取得 |
REVSCOPE_MAX_CONNECTIONS | 接続数の上限(100,000。ulimit -n の値が低い場合はそれ以下) |
MAILCHANNELS_API_KEY, MAILCHANNELS_FROM_EMAIL | メールの送信(招待、パスワードのリセット) |
REVSCOPE_GOOGLE_CLIENT_ID, REVSCOPE_APPLE_CLIENT_ID | Google と Apple でのサインイン。設定されていない場合は非表示 |
REVSCOPE_GOOGLE_CLIENT_ID, REVSCOPE_GOOGLE_CLIENT_SECRET | Google Analytics のインポートで使用する「Google に接続」 |
REVSCOPE_CHAT_URL, REVSCOPE_CHAT_API_KEY, REVSCOPE_CHAT_* | AI チャットタブ。設定されていない場合は非表示 |
SENTRY_DSN | Sentry へのエラー報告 |
REVSCOPE_CORS_ORIGINS | バックエンドとは別にデプロイされたウェブアプリのホスト |
REVSCOPE_LISTEN_TLS, REVSCOPE_TLS_DOMAINS, REVSCOPE_ACME_* | Let's Encrypt 証明書を使用した組み込み HTTPS |
REVSCOPE_REQUIRE_CLOUDFLARE | ホステッドサービスのサーバー向け設定 |
REVSCOPE_MCP_DEMO_TOKEN | 公開デモのみを読み取る rsm_ MCP トークン |
INTEGRATION_ENCRYPTION_KEY は、Stripe などのインテグレーション用に入力した API キーを保存前に暗号化します。このキーを紛失すると、それらのキーを復号できなくなり、再入力が必要になります。
AI チャットタブは、OpenAI 互換のチャット補完エンドポイントにリクエストを送信します。Cloudflare AI Gateway から xAI への転送を想定して構築されているため、REVSCOPE_CHAT_GATEWAY_TOKEN は Cloudflare の cf-aig-authorization ヘッダーとして送信され、デフォルトのモデルは grok/grok-4.7 です。
開発
リポジトリには、次の部分があります。
| ディレクトリ | 内容 |
|---|---|
tracker/ | サイトの所有者がページに埋め込む、単一ファイルの ES5 スクリプト tracker.js です。 |
revscope/ | Rust バックエンドです。イベントの取り込み、クエリ API、アカウント、インテグレーションを担います。プロジェクトごとに SQLite、アカウントには Postgres を使用します。 |
web/ | Web アプリ(web/app、Astro と Solid)と認証クライアント(web/shared)を含む pnpm ワークスペースです。 |
cli/ | HTTP API のみを呼び出す revscope コマンドラインツールです。 |
crates/revscope-api/ | バックエンドと CLI が共有する HTTP コントラクトです。リクエストとレスポンスの型、ルートパス、制限が含まれます。 |
e2e/ | 公開デモダッシュボードを操作する Playwright テストです。読み取りのみを行います。 |
コード規約、実行するチェック、プルリクエストの送信方法については、 CONTRIBUTING.md を参照してください。
前提条件
- Rust。
rust-toolchain.tomlでツールチェーンを固定しており、 初回ビルド時に rustup がインストールします。 - Node.js 24 と pnpm 8(Node.js)。npm ではなく pnpm を使用してください。各 JavaScript プロジェクトにはそれぞれ独自のロックファイルがあります。
- バックエンドのアカウントデータベースとテスト用に、PostgreSQL 17 以降。
- ジオロケーション用に、MaxMind GeoLite2-City データベース(任意)。
MaxMind の認証情報を指定すると、
scripts/download-maxmind.shがrevscope/にダウンロードします。
ローカル環境を起動する
(cd web && pnpm install)
createdb revscope
cd revscope
cp .env.example .env # set DATABASE_URL and INTEGRATION_ENCRYPTION_KEY
cargo run # serves on http://localhost:4320
別のターミナルで Web アプリを起動します。
cd web
pnpm dev # http://localhost:4322
Web アプリは、デフォルトで localhost:4320 のバックエンドを呼び出します。ブラウザーでは
127.0.0.1 ではなく localhost を使用してください。そうしないと、セッション Cookie が送信されません。
ダッシュボードを試すためにプロジェクトへ合成データを投入するには、
revscope/ で cargo generate -- <project-id> を実行します。引数なしで実行すると、
オプションが表示されます。
テストとチェック
| 部分 | コマンド |
|---|---|
tracker/ | pnpm check(Lint とファイルが有効な ES5 であることの確認)、pnpm test、pnpm build(出力をコミットしてください) |
revscope/ | cargo fmt、続いて --features self-hosted ありとなしで cargo clippy および cargo test |
web/ | pnpm tsc(型チェック)、pnpm check(Lint とフォーマット)、pnpm test、pnpm build、pnpm build:bundle |
e2e/ | pnpm tsc、pnpm check、pnpm test(CONTRIBUTING.md を参照) |
cli/ | cargo fmt、cargo clippy、cargo test、および cli/npm で npm test |
crates/ | cargo fmt、cargo clippy、cargo test、続いて revscope/ と cli/ のチェック |
revscope/tests/ にあるバックエンドのエンドツーエンドテストには Postgres が必要です。DATABASE_URL を
環境変数または revscope/.e2e.env から読み込みます。テスト専用のデータベースを指定してください。CI では、
すべてのプルリクエストで上記のチェックを実行します。
ローカルバックエンドに対してトラッカーを試すには、tracker/example のサンプルサイトと
tracker/INSTALL.md の末尾にある手順を参照してください。
ホステッドサービスのデプロイ方法
このセクションでは、revscope.co 独自のセットアップについて説明します。セルフホストする場合、ここに記載された内容は必要ありません。
ホステッドサービスでは、バックエンドを self-hosted ではなく billing 機能を有効にしてビルドします。複数のアカウントと有料プランに対応しており、ウェブアプリは配信しません。プラン、チェックアウト、請求に関する webhook は、revscope/src/billing にチェックアウトしたプライベートリポジトリにあります。この機能を無効にしてビルドすると、すべての登録ユーザーに無料の無制限アカウントが付与されます。ウェブアプリは revscope-app Cloudflare Worker として動作します(web/app/wrangler.jsonc を参照)。web/ から pnpm push でデプロイします。ビルド時に読み込まれる SERVER_HOST 変数(web/app/.env.example を参照)によって、API の接続先が指定されます。バックエンドは、REVSCOPE_CORS_ORIGINS に記載されたウェブアプリのホストからの、ログイン済みリクエストを受け付けます。
バックエンドは複数のホスト名で応答します。API 用の api.revscope.co、トラッカーとイベントの取り込み用の in.revscope.co、そして顧客が独自のドメインを使用するために CNAME を設定する eu1.revscope.co です。REVSCOPE_LISTEN_TLS を設定すると、バックエンドは eu1 と api(デフォルトの REVSCOPE_TLS_DOMAINS)、および顧客のドメインについて、Let's Encrypt 証明書を取得し、更新します。顧客のドメインの証明書を取得するのは、そのドメインを含むプラン(Starter 以上)で、そのドメインがこれらのホスト名のうち最初のものと同じアドレスに解決される場合に限ります。また、各証明書の初回更新の試行を除き、アカウントごとと全体で取得する証明書の数を制限します。
REVSCOPE_REQUIRE_CLOUDFLARE=true を設定すると、サーバーは Cloudflare の IP 範囲からのプレーン HTTP リクエストにのみ応答します。そのため、Cloudflare プロキシを迂回してアクセスすることはできません。
セキュリティ
脆弱性を報告する場合は、公開 issue ではなく、リポジトリの Security タブにある「Report a vulnerability」ボタンを使い、非公開でご連絡ください。
ライセンス
RevScope は Functional Source License, Version 1.1, ALv2 Future License(FSL-1.1-ALv2)のもとでライセンスされています。
平たく言えば、次のとおりです(この要約に法的拘束力はありません。LICENSE の本文が優先されます)。
- 自社サイトや事業で RevScope を利用、変更、セルフホストできます。商用利用も可能です。
- 競合する商用製品やサービス(ホステッド分析サービスなど)として、RevScope またはその改変版を他者に提供することはできません。
- 各バージョンのリリースから 2 年後には、Apache License 2.0 のもとでも利用できるようになります。そのライセンスに定められた制限以外の制限はありません。
RevScope のチャートには ApexCharts を使用しています。ApexCharts には独自のライセンスがあり、RevScope のライセンスがこれに取って代わることはありません。無料の Community License は、年間収益が 200 万 USD 未満の組織を対象としています。組織の収益がそれ以上で、RevScope をセルフホストする場合は、ApexCharts の商用ライセンスが必要です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。