visualdiff について
visualdiffは、Web UIの変更を確認するSnapDiffのビジュアルテスト用CLI兼MCPサーバーです。意図に沿った変更の検証、ページやベースラインの比較、URLやHTMLの画像化に対応します。
主な機能
- 01意図に沿ったUI変更の検証
- 02ページと保存済みベースラインの比較
- 03URLのスクリーンショット取得
- 04HTMLとCSSの画像化
活用シーン
- 01ステージング環境のUI変更を意図と照合
- 02ページを参照ページやベースラインと比較
- 03ページ全体や指定要素のスクリーンショット取得
- 04ソーシャルカードやメールヘッダー用HTMLの画像化
MCP 対応
stdio MCPサーバーは、UI変更の検証、ページ比較、スクリーンショット取得、HTML画像化のツールを提供します。SnapDiff APIの呼び出しにはSNAPDIFF_API_KEYが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| after | string | はい | 変更後のページの URL。 |
| branch | string | いいえ | 比較に使用するブランチ名。 |
| intent | string | はい | 意図する UI 変更の説明。 |
| project | string | はい | SnapDiff プロジェクトのスラッグ。 |
| full_page | boolean | いいえ | ビューポートではなくページ全体をキャプチャするかどうか。 |
| page_name | string | はい | ベースラインが保存されているページの名前。 |
| threshold | number | いいえ | 視覚的な差分のしきい値。 |
| intent_regions | array | いいえ | 意図した変更が想定される領域。 |
| ignore_selectors | array | いいえ | 比較時に無視する要素の CSS セレクター。 |
| match_tolerance_percent | number | いいえ | パーセンテージで指定する一致許容範囲。 |
詳細
visualdiff
visualdiff は SnapDiff のビジュアルテスト API をラップします。UI の変更が意図したとおりかを検証したり、2 つのページ(またはページと保存済みのベースライン)を比較したり、任意の URL のスクリーンショットをキャプチャしたり、生の HTML/CSS をそのまま画像にレンダリングしたりできます。1 つのバイナリで、コマンドラインインターフェースと stdio MCP サーバーの両方を利用できます。
API キーが必要です。SnapDiff ダッシュボードから取得したキーを SNAPDIFF_API_KEY に設定してください。キーが設定されていない場合、リクエストを送信する前に呼び出しが失敗します。API のベース URL は SNAPDIFF_API_URL で上書きできます。設定されていない場合、呼び出し先は https://api.snapdiff.ai/v1 です。
インストール
npx @reneturcios/visualdiff screenshot https://example.com
または、コンテナイメージを実行します。
docker run -i -e SNAPDIFF_API_KEY=sk_live_... ghcr.io/cloudcorprecords/visualdiff
コンテナはデフォルトで MCP サーバーを起動します(下記を参照)。CLI として使用するには、CLI 引数を渡します。
CLI
export SNAPDIFF_API_KEY=sk_live_...
visualdiff verify myproj pricing https://staging.example.com/pricing "added a yearly billing toggle"
visualdiff compare https://staging.example.com --before https://www.example.com
visualdiff compare http://localhost:3000 --project myproj --page-name homepage
visualdiff screenshot https://example.com --width 800 --full-page
visualdiff html-to-image "<h1>Hello</h1>" --css "h1 { color: navy; }" --width 1200 --height 630
visualdiff --version
コマンドは上流の JSON ペイロードを出力します。終了コード:成功時は 0、呼び出し失敗時(API キー未設定または上流 API エラーを含む)は 1、使用方法のエラー時は 2 です。
MCP サーバー
1 つのバイナリで両方の機能を利用できます。mcp サブコマンドで stdio MCP サーバーを起動します。
npx -y @reneturcios/visualdiff mcp
MCP クライアントの設定:
{
"mcpServers": {
"visualdiff": {
"command": "npx",
"args": ["-y", "@reneturcios/visualdiff", "mcp"],
"env": { "SNAPDIFF_API_KEY": "sk_live_..." }
}
}
}
ツール
| ツール | 入力 | 返される内容 |
|---|---|---|
snapdiff_verify_ui_change | project、page_name、after、intent(すべて必須)。intent_regions、branch、threshold、match_tolerance_percent、ignore_selectors、full_page は省略可能 | 判定結果(pass、expected_change_detected、unexpected_regression、no_change_detected、needs_human_review のいずれか)、next_action、review_url。保存済みのページベースラインがあるプロジェクトが必要です。 |
snapdiff_compare_pages | after(必須)。さらに、before、またはベースラインモードの場合は project と page_name。branch、threshold、ignore_selectors、full_page は省略可能 | 差分率と、差分をハイライトした画像。 |
snapdiff_capture_screenshot | url(必須)。full_page、dark_mode、selector、width は省略可能 | ページのスクリーンショット。 |
snapdiff_html_to_image | html(必須)。css、width、height は省略可能 | レンダリングされた画像(OG カード、ソーシャル画像、メールヘッダー)。 |
各ツールは、ベース URL 配下のツールごとのエンドポイントに、API キーを Bearer トークンとして指定して POST で送信されます。指定されていない省略可能な引数は、リクエスト本文から完全に除外されます。
開発
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev # run the CLI from source via tsx
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。