mcpField
L
LLM Optimizer

LLM Optimizer

リモート
github.com/jonradoffビジネス・マーケティング102 週間前に更新
リポジトリ

LLM Optimizer について

LLM Optimizerは、AIアシスタントや検索エンジンにおけるブランドの表示・引用状況を分析し、可視性スコアと優先アクションを提示します。MCPサーバーからアカウントデータにアクセスし、ToDoの状態を更新できます。

主な機能

  1. 01AI可視性スコア
  2. 02ウェブサイトコンテンツの最適化分析
  3. 03動画・Redditの権威性分析
  4. 04検索可視性分析
  5. 05複数プロバイダーでのブランドテスト
  6. 06優先アクションの提示

活用シーン

  1. 01AI回答におけるブランドの可視性評価
  2. 02引用向上に向けたサイトコンテンツの変更点把握
  3. 03LLMプロバイダー間のブランド回答の比較
  4. 04最適化アクションの追跡

MCP 対応

Streamable HTTPのMCPサーバーはOAuth 2.1を使用し、保存済みのドメイン、レポート、可視性スコア、アクション項目を公開します。大半のツールは読み取り専用で、ToDo状態を更新するツールもあります。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://llmopt.metavert.io/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

LLM Optimizer

Go codecov Go Report Card License: MIT

LLM Optimizer は、AI における可視性を分析するインテリジェンスプラットフォームです。大規模言語モデルや AI 検索エンジンがブランドをどのように認識し、引用し、推奨するかを分析し、その可視性を高めるための、調査に裏付けられた最適化戦略を提供します。

ChatGPT、Claude、Gemini、Perplexity、Google AI Overviews は、何百万人もの人々にとって従来の検索に取って代わりつつあります。AI がブランドを推奨するかどうかを左右するシグナルは、従来の SEO とは根本的に異なります。被リンクやキーワード密度よりも、獲得したメディア掲載、文字起こしの品質、コンテンツ構造、トレーニングデータへの登場頻度、引用ネットワークの動向が重要です。LLM Optimizer は、5 つの分析項目にわたってこれらのシグナルを測定し、総合的な AI 可視性スコア(0~100)と、優先順位付けされた実行可能な推奨事項を提示します。

分析対象

LLM Optimizer は、査読済み研究に基づく 6 種類の分析を実行します。

回答エンジン最適化 — GEO(Generative Engine Optimization) の研究で有効性が検証された最適化戦略に照らして、ウェブサイトのコンテンツを分析します。引用密度(可視性 +41%)、統計的根拠(+33%)、出典の引用(+28%)、文章の流暢さ、構造の最適化、機械可読性に基づいてページをスコアリングします。質問ごとの最適化スコアを提示し、具体的な書き換え案を提案します。

動画オーソリティ分析 — YouTube でのプレゼンスを 2 段階で分析します。第 1 段階では高速モデルを使い、文字起こしの品質、キーワードとの整合性、字幕の有無について動画を個別に評価します。第 2 段階では、コンパクトな評価を推論モデルに入力し、「文字起こしの権威性」「トピックの優位性」「引用ネットワーク」「ブランドのナラティブ」の 4 つの柱に基づいてスコアリングします。YouTube が LLM にとって現在ソーシャルメディアで最も多く引用される情報源であり、AI の回答の 16% に登場するという研究に基づいています。

Reddit オーソリティ分析 — ブランドに言及する Reddit の投稿を収集し、コミュニティの感情、競合との位置づけ、トレーニングデータのシグナル強度を分析します。Reddit の公開 .json エンドポイントを使用し、必要に応じて Cloudflare WARP プロキシにフォールバックします。「プレゼンス」「感情」「競争上の位置づけ」「トレーニングシグナル」の 4 つの柱に基づいてスコアリングします。

検索可視性分析 — Google AI Overviews と独立した LLM の両方で、サイトの可視性を評価します。robots.txt の AI クローラーに関するポリシー、構造化データ、コンテンツの鮮度、ブランド検索の勢い、獲得したメディア掲載のシグナルを確認します。Google の検索結果の上位 10 件と、ChatGPT/Perplexity の引用の間にわずか 12% の重複しかないという研究に基づいています。

LLM ナレッジテスト — ブランドのターゲットクエリを使って複数の LLM プロバイダー(Anthropic、OpenAI、Gemini、Grok)に直接問い合わせ、各モデルの回答を分析します。プロバイダーごとに、ブランドの存在感、情報の正確さ、推奨される可能性を比較します。競合との直接比較にも対応しています。

ブランドインテリジェンス — すべての分析項目を集約し、最適化(30%)、動画オーソリティ(20%)、Reddit オーソリティ(20%)、検索可視性(15%)、LLM テスト(15%)の重み付けで総合的な AI 可視性スコアを算出します。完了まで進捗を追跡できる、優先順位付けされたアクション項目を生成します。

調査の基盤

分析手法は、公開済みの研究に基づいています。スコアリングに活用している主な知見は次のとおりです。

  • コンテンツの最適化:信頼性の高い引用を加えると、AIによる引用の可視性が+41%向上します。統計データを加えると+33%向上し、キーワードの過剰な詰め込みは可視性を-9%低下させます(GEO、Princeton/KDD 2024)。
  • トレーニングデータでの出現頻度:トレーニングデータ内の出現頻度が低い(文書1~5件)場合と高い(文書51件以上)場合では、回答の正確性が2倍以上になります。トレーニングデータに含まれていることと、検索可能であることが重なると、相乗的な優位性が生まれます(NanoKnow、2026)。
  • 情報源の選好:AI 検索エンジンが引用する情報源のうち、獲得メディアは72~92%を占める一方、ブランド所有コンテンツは18~27%です。従来の Google 検索結果との重複はわずか15~50%です(GEO、Toronto 2025)。
  • 動画のトランスクリプト:YouTube のトランスクリプトでトレーニングした70億パラメーターのモデルは、解説の品質で720億パラメーターのモデルを上回りました。動画に対する LLM の影響を左右する最大のシグナルはトランスクリプトの品質であり、制作価値や視聴回数ではありません(LiveCC、CVPR 2025)。
  • 引用の集中度:AI による引用全体の28~67%を、プロバイダーに応じて上位20のニュース情報源が占めます。AI プロバイダーによって引用する情報源は大きく異なります(異なるファミリー間の類似度:0.11~0.58)(AI Search Arena、2025)。
  • コンテンツの鮮度:AI アシスタントが引用するコンテンツは、従来の検索が引用するコンテンツより25.7%新しいものです。鮮度のシグナルにより、ランキングが最大95位変動することがあります(Ahrefs、2025)。

手法の詳細、スコアリングの枠組み、プロンプトの設計を含む調査結果の完全版については、research.mdを参照してください。

アーキテクチャ

┌─────────────────────────────────────────────────────────┐
│                     Caddy (port 8080)                   │
│                   TLS + reverse proxy                   │
└──────────┬────────────────────────────┬─────────────────┘
           │                            │
    /api/auth, /api/users,       Everything else
    /api/tenants, /api/billing,
    /api/admin, /api/bootstrap
           │                            │
           ▼                            ▼
┌─────────────────────┐    ┌──────────────────────────────┐
│  LastSaaS Backend   │    │   LLM Optimizer Backend      │
│    (port 8091)      │    │       (port 8090)            │
│                     │    │                              │
│  - Authentication   │    │  - Site analysis engine      │
│  - OAuth / SSO      │    │  - Video analysis (2-phase)  │
│  - Billing (Stripe) │    │  - Reddit analysis           │
│  - Tenant management│    │  - Search visibility         │
│  - API key mgmt     │    │  - LLM knowledge testing     │
│  - User management  │    │  - Brand intelligence        │
│                     │    │  - MCP server (OAuth 2.1)    │
│                     │    │  - REST API (v1)             │
│                     │    │  - PDF report generation     │
│                     │    │  - Health monitoring          │
│                     │    │  - Cloudflare WARP proxy     │
└─────────────────────┘    └──────────────────────────────┘
           │                            │
           └────────────┬───────────────┘
                        ▼
              ┌───────────────────┐
              │   MongoDB Atlas   │
              │                   │
              │  - analyses       │
              │  - brand_profiles │
              │  - video_analyses │
              │  - reddit_cache   │
              │  - health_checks  │
              │  - tenants / users│
              └───────────────────┘

バックエンド — Go 1.24、標準ライブラリのnet/httpとgorilla/mux風のルーティングを使用しています。Web フレームワークは使用しません。LLM プロバイダーの抽象化レイヤーは、ストリーミング SSE 応答を含む Anthropic、OpenAI、Gemini、Grok に対応しています。各プロバイダーは、Call、Stream、VerifyKey、BuildStreamBodyの共通インターフェースを実装します。

フロントエンド — React 19 + TypeScript + Vite + Tailwind CSS。SSE ストリーミングを利用したシングルページアプリケーションで、分析の進行状況をリアルタイムに表示します。SaaS のデプロイでは、フロントエンドのオーバーレイシステムを使用し、ベースとなるLastSaaSのフロントエンドを製品固有のページで拡張します。

マルチテナント SaaS — 認証、課金(Stripe)、テナント分離、ユーザー管理を提供するオープンソースの SaaS フレームワークであるLastSaaSを基盤としています。LLM Optimizer は依存アプリケーションとして動作し、認証と課金のプレーンを LastSaaS が担い、製品のプレーンを LLM Optimizer が担います。

MCP サーバー — OAuth 2.1(PKCE + Dynamic Client Registration)を使用する Streamable HTTP トランスポート対応のModel Context Protocolサーバーです。Claude などの AI アシスタントが、分析データ、可視性スコア、アクション項目にプログラムからアクセスできるようにします。

Cloudflare WARP — Reddit のスクレイピングにおけるフォールバック用 SOCKS5 プロキシとして統合されています(429/403 のレート制限に対応します)。

前提条件

  • Go 1.24+
  • **Node.js 20+**および npm
  • MongoDB(Atlas を推奨。開発環境ではローカル環境も使用できます)
  • Anthropic API キー(必須 — サイト分析、最適化スコアリング、ブランドインテリジェンスに使用します)
  • LastSaaS(認証・課金機能を備えた SaaS モードでは必須。スタンドアロンモードでは任意)

追加のプロバイダーや機能で使用する任意の API キー:

  • OpenAI API キー — GPT モデルを使用した LLM の知識テスト
  • Google Gemini API キー — Gemini モデルを使用した LLM の知識テスト
  • xAI Grok API キー — Grok モデルを使用した LLM の知識テスト
  • YouTube Data API キー — 動画の権威性分析

セットアップ

スタンドアロンモード(単一ユーザー、認証なし)
  1. リポジトリをクローンします:

    git clone https://github.com/metavert-io/llmopt.git
    cd llmopt
    
  2. 環境変数のサンプルファイルをコピーし、値を入力します:

    cp .env.dev.example .env
    

    必須の変数:

    ANTHROPIC_API_KEY=sk-ant-api03-your-key-here
    MONGODB_URI=mongodb+srv://user:[email protected]/?appName=Cluster0
    PORT=8080
    
  3. バックエンドをビルドして実行します:

    cd backend
    go build -o llmopt .
    ./llmopt
    
  4. フロントエンドをビルドして実行します(別のターミナルで):

    cd frontend
    npm install
    npm run dev
    
  5. ブラウザーで http://localhost:5173 を開きます。

SaaS モード(認証と課金に対応したマルチテナント)

SaaS モードでは、依存関係として LastSaaS が必要です。LastSaaS は認証(OAuth/SSO)、Stripe による課金、テナント管理、管理者インターフェースを提供します。

  1. LastSaaS の依存関係を含めてクローンします:

    git clone https://github.com/metavert-io/llmopt.git
    cd llmopt
    git clone https://github.com/metavert-io/lastsaas.git lastsaas
    
  2. 環境変数を設定します:

    cp .env.prod.example .env
    

    SaaS モードで追加で必要な変数:

    LLMOPT_SAAS_ENABLED=true
    LLMOPT_ENCRYPTION_KEY=<32-byte-hex-key-for-tenant-api-key-encryption>
    LLMOPT_JWT_ACCESS_SECRET=<random-secret-for-jwt-signing>
    

    認証/課金に関する環境変数(Google OAuth、Stripe キーなど)の全一覧については、LastSaaS README をご覧ください。

  3. ローカル開発では、起動スクリプトを使用します:

    ./start-saas.sh
    
  4. Fly.io に本番環境をデプロイする場合:

    fly deploy -c fly.saas.toml
    

    デプロイの詳細については、deploy.md をご覧ください。

ビルドの検証
cd backend && go build ./...
cd ../frontend && npx tsc --noEmit

環境変数

変数必須説明
ANTHROPIC_API_KEYはい分析エンジン用の Anthropic API キー
MONGODB_URIはいMongoDB 接続文字列
PORTいいえサーバーポート(デフォルト:8080)
DATABASE_NAMEいいえMongoDB データベース名(デフォルト:llmopt)
LLMOPT_SAAS_ENABLEDSaaS のみマルチテナント SaaS モードを有効にします
LLMOPT_ENCRYPTION_KEYSaaS のみテナントの API キー暗号化用 AES キー
LLMOPT_JWT_ACCESS_SECRETSaaS のみJWT 署名用 HMAC シークレット
MCP_JWT_SECRETいいえMCP OAuth トークン署名キー(未設定の場合、暗号化キーから導出されます)
BASE_URLいいえOAuth メタデータ用の公開 URL(デフォルト:https://llmopt.metavert.io)
YOUTUBE_API_KEYいいえ動画分析用の YouTube Data API キー

プロジェクト構成

llmopt/
├── backend/
│   ├── main.go              # HTTP server, routes, handlers, health checks
│   ├── models.go            # MongoDB document models
│   ├── db.go                # Database connection, collections, indexes
│   ├── llm.go               # LLM provider abstraction, streaming helpers
│   ├── provider.go          # Provider interface and registry
│   ├── provider_anthropic.go # Anthropic Claude implementation
│   ├── provider_openai.go   # OpenAI GPT implementation
│   ├── provider_gemini.go   # Google Gemini implementation
│   ├── provider_grok.go     # xAI Grok implementation
│   ├── youtube.go           # YouTube Data API client, video analysis
│   ├── reddit.go            # Reddit scraper with WARP fallback
│   ├── report_pdf.go        # PDF report generation
│   ├── screenshot.go        # Chromedp-based page screenshots
│   ├── api_v1.go            # REST API v1 handlers
│   ├── crypto.go            # AES encryption for tenant API keys
│   ├── migration.go         # Database migrations
│   ├── telemetry.go         # Anonymous usage telemetry
│   └── internal/
│       ├── mcpserver/       # MCP protocol server (OAuth 2.1 + tools)
│       ├── saas/            # SaaS middleware (JWT, tenant context)
│       └── ratelimit/       # Rate limiting
├── frontend/                # React + TypeScript + Vite + Tailwind
│   └── src/
│       ├── App.tsx          # Main application (analysis UI, dashboards)
│       └── main.tsx         # Entry point
├── frontend-overlay/        # SaaS-specific frontend extensions
│   └── src/
│       ├── pages/           # Settings, API key management
│       └── components/      # SaaS-specific UI components
├── deploy/
│   ├── Caddyfile            # Caddy reverse proxy config
│   └── supervisord.conf     # Process manager config
├── lastsaas/                # LastSaaS dependency (git clone, gitignored)
├── research.md              # Full research synthesis with citations
├── deploy.md                # Production deployment guide
├── Dockerfile               # Standalone mode
├── Dockerfile.saas          # SaaS mode (Caddy + supervisord)
├── fly.toml                 # Fly.io config (standalone)
├── fly.saas.toml            # Fly.io config (SaaS)
└── start-saas.sh            # Local SaaS development script

MCP サーバー

LLM Optimizer には、Claude などの AI アシスタントがブランドインテリジェンスと最適化データにプログラムからアクセスできるようにする Model Context Protocol (MCP) サーバーが含まれています。このサーバーは、Streamable HTTP トランスポートと OAuth 2.1 認証を使用します。

サーバー URL: https://llmopt.metavert.io/mcp

Smithery および awesome-mcp-servers(Glama)に掲載されています。公式 MCP Registry への登録は進行中です。

プライバシー

LLM Optimizer MCP サーバーがアクセスするのは、LLM Optimizer アカウントにすでに保存されているデータ(ドメイン、レポート、可視性スコア、アクション項目)のみです。第三者とデータを共有することはありません。読み取り専用のツール(llmopt_list_domains、llmopt_get_report、llmopt_get_visibility_score、llmopt_list_todos)は、データを変更しません。llmopt_update_todo ツールが変更するのは、todo のステータスフィールドのみです。API キーと OAuth トークンは HTTPS 経由で送信され、ハッシュ化(SHA-256)して保存されます。詳しくは、プライバシーポリシーをご覧ください。

認証

オプション 1 — アクセスキー(推奨): アプリの Settings → Access Keys で個人用の lok_ アクセスキーを作成します。接続時に表示される OAuth プロンプトに入力してください。各キーで、アカウントの MCP ツールすべてにアクセスできます。

オプション 2 — OAuth 2.1: PKCE を使用する、ブラウザー上で完結する OAuth フローです。サーバー URL を追加すると、Claude Desktop が自動的に処理します。

利用可能なツール
ツール説明パラメーター
llmopt_list_domainsアカウントで追跡しているすべてのドメインを一覧表示します(なし)
llmopt_get_reportドメインの特定の分析レポートを取得しますdomain(必須)、report_type(必須):analysis、optimizations、video、reddit、search、summary、tests、brand
llmopt_get_visibility_score5つの構成要素を加重して算出した、ドメインの複合AI可視性スコア(0~100)を取得しますdomain(必須)
llmopt_list_todos最適化分析のアクション項目を一覧表示しますstatus(任意):todo、completed、backlogged、archived;domain(任意)
llmopt_update_todotodo項目のステータスを更新します(管理者/オーナーのみ)id(必須)、status(必須):todo、completed、backlogged、archived
使用例

1. ブランドの健全性をすばやく確認する

「acme.com の AI 可視性スコアと、主な推奨事項を教えてください。」

Claude は llmopt_get_visibility_score を呼び出した後、llmopt_get_report(report_type: summary)を呼び出し、LLM の出力にブランドがどの程度表示されているか、まず何を改善すべきかを概観できるようにします。

2. 最適化の未処理タスクを整理する

「すべてのドメインについて、未完了の todo 項目をドメインごとに優先順位を付けて表示してください。」

Claude は status: todo を指定して llmopt_list_todos を呼び出し、結果をドメインごとにまとめ、割り当てやスケジュール設定にすぐ使える優先順位付きタスクリストとして提示します。

3. 競合との可視性を比較する

「acme.com と competitorx.com の分析レポートを比較して、どの点で負けているか教えてください。」

Claude は両方のドメインについて llmopt_get_report(report_type: analysis)を取得し、違いをまとめます。競合は言及されているのに自社は言及されていないトピックを特定します。

4. 朝のブランド概要

「毎日のブリーフィングをお願いします。mycompany.com の可視性スコアの変化、新しい todo、Reddit のセンチメントを教えてください。」

Claude は llmopt_get_visibility_score、llmopt_list_todos(status: todo)、llmopt_get_report(report_type: reddit)を順に呼び出し、Slack にそのまま投稿できる簡潔な朝の概要を作成します。

5. 完了した作業をクローズする

「meta-description の更新がすべて完了しました。acme.com の meta-description に関する todo をすべて完了済みにしてください。」

Claude はドメインで絞り込んだ llmopt_list_todos を呼び出して該当項目を探し、それぞれに対して llmopt_update_todo を呼び出し、更新した項目を確認します。

MCP の設定
Claude Code(HTTP ネイティブ)

~/.claude.json の mcpServers の下に追加します:

{
  "mcpServers": {
    "llmopt-mcp": {
      "type": "http",
      "url": "https://llmopt.metavert.io/mcp"
    }
  }
}

初回使用時に、Claude Code は認証のためブラウザーを開きます。lok_ アクセスキーを入力してください(Settings → Access Keys で作成できます)。

Claude Desktop

オプション A — OAuth(最も簡単。キーの管理は不要):

npm install -g mcp-remote

~/Library/Application Support/Claude/claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "llmopt-mcp": {
      "command": "npx",
      "args": ["mcp-remote", "https://llmopt.metavert.io/mcp"]
    }
  }
}

初回起動時に、認証用のブラウザーウィンドウが開きます。llmopt.metavert.io にサインインし、lok_ アクセスキーを入力してください。

オプション B — 直接キー(ブラウザー認証なし。上級ユーザー向け):

{
  "mcpServers": {
    "llmopt-mcp": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://llmopt.metavert.io/mcp",
        "--header",
        "Authorization: Bearer lok_your_access_key_here"
      ]
    }
  }
}

lok_your_access_key_here を Settings → Access Keys で取得したキーに置き換えてください。

直接 HTTP
# List available tools
curl -X POST https://llmopt.metavert.io/mcp \
  -H "Authorization: Bearer lok_your_access_key" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

# Get visibility score
curl -X POST https://llmopt.metavert.io/mcp \
  -H "Authorization: Bearer lok_your_access_key" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"llmopt_get_visibility_score","arguments":{"domain":"acme.com"}}}'
OAuth エンドポイント
エンドポイント説明
GET /.well-known/oauth-protected-resource保護されたリソースのメタデータ(RFC 9728)
GET /.well-known/oauth-authorization-server認可サーバーのメタデータ(RFC 8414)
POST /oauth/register動的クライアント登録(RFC 7591)
GET /oauth/authorize認可エンドポイント
POST /oauth/tokenトークンエンドポイント(コード交換+更新)

REST API

/api/v1/ で REST API も利用できます。整形されたガイドについては、API Docs ページをご覧ください。

ライセンス

MIT - Copyright (c) 2026 Metavert LLC

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。