mcpField
M
MarketMirror

MarketMirror

ローカル
darkworldcoder.github.ioビジネス・マーケティング5今日更新

MarketMirror について

MarketMirrorは、起業家、マーケター、営業チーム向けのオープンソースのマーケティングシミュレーションツールです。実施前に広告、価格、営業トークを試せます。AIが生成する買い手の反応はシミュレーションであり、実際の顧客や母集団の証拠ではありません。

主な機能

  1. 01設定可能なシミュレーション買い手の生成
  2. 02広告、コピー、価格、メールのテスト
  3. 03営業対話とウェブサイト訪問のシミュレーション
  4. 04対象層、メッセージ、AIプロバイダーの比較
  5. 05HTMLダッシュボードと複数形式での結果出力

活用シーン

  1. 01キャンペーン前の広告や見出しの比較
  2. 02価格やオファーへの対象層の反応の確認
  3. 03営業トークの練習と想定される懸念の発見
  4. 04シミュレーション結果に基づく実顧客テストの計画

MCP 対応

MarketMirrorはMCP対応エージェントから利用でき、READMEではClaude Code、Codex、Cursor、Geminiが挙げられています。プラグインを通じて、エージェントが自然言語の依頼から買い手を生成し、テストを実行してダッシュボードを表示します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"darkworldcoder-market-mirror": {
"command": "uvx",
"args": [
"marketmirror"
]
}
}
}
起動コマンドuvx marketmirror

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimarketmirror0.4.2

ツール

27

掲載時のツール一覧 · 2 日前に更新

パラメーター型必須説明
outstringいいえ
specobjectはい
spec.urlstringはい
spec.goalstringいいえ
spec.taskstringいいえ
spec.checksarrayいいえ
spec.deviceenumいいえmobile | desktop
spec.headlessbooleanいいえ
spec.max_stepsintegerいいえ
spec.test_dataobjectいいえ自身が所有するテスト用 ID のみ。複数の登録訪問者には、{visitor} を含むメールテンプレートが必要です。プロバイダーの API キーは絶対に指定しないでください。
spec.allow_cartbooleanいいえ
spec.goal_checkstringいいえ
spec.loop_limitintegerいいえ
spec.max_personasintegerいいえ
spec.record_tracebooleanいいえオプトインの生トレースには、テスト認証情報やネットワークデータが含まれる場合があります
spec.record_videobooleanいいえ
spec.max_elapsed_snumberいいえ
spec.max_recoveriesintegerいいえ
spec.max_model_callsintegerいいえ
spec.max_input_tokensintegerいいえ
spec.observation_modeenumいいえcompact | full
spec.allow_signup_submitbooleanいいえ
spec.observation_text_charsintegerいいえ
simulation_idstringはい

詳細

MarketMirror:次の市場戦略をリハーサルしましょう。シミュレーションした購入者グループに提示されたキャンペーンのアイデアのイラスト。

MarketMirror:AI 市場調査とマーケティングシミュレーション

実際のキャンペーンに費用をかける前に、シミュレーションした購入者に広告、価格、セールストークを試せます。

英語 · 簡体字中国語

オープンソースで、AI エージェント向けに構築されています。 Claude Code、Codex、Cursor、Gemini、または MCP 対応エージェントから利用できます。プラグインをインストールして、自然な言葉で(「インドの若い親にこの3つの広告を試して」)頼むだけで、エージェントがシミュレーション上の購入者を作成し、テストを実行して、ダッシュボードを表示します。セルフホスト可能です。ご利用のコンピューター上で動作し、外部に送信されるのはモデルへの呼び出し(選択したプロバイダー宛て)と、任意の公開調査データのみです。

オープンソース テスト ライセンス:AGPL v3 エージェントツール

MarketMirror の60秒ローンチ動画を再生

▶ 60秒のローンチ動画を見る(字幕付き) · 縦型9:16版 · launch-video/の HyperFrames を使用して作成

ライブデモを開く:2,999人の購入者をシミュレーションした実行結果を、インストール不要でブラウザー上からダッシュボード全体を使って確認できます。(Fitloop は架空のアプリです。すべての数値はシミュレーションによるものです。)

MarketMirror によって失敗するローンチを一度でも防げたら、⭐を付けると、ほかの人にも見つけてもらいやすくなります。

購入者に会う · テストできること · スクリーンショット · 仕組み · 結果の例 · 始め方 · ドキュメント

MarketMirror とは?

MarketMirror は、次のマーケティング施策を検討するための練習用オーディエンスを提供します。製品と、リーチしたい人々について説明してください。広告への反応、価格の比較、質問や懸念の提示、セールストークへの応答ができる、AI が生成した人物を作成します。

関心を持った点、敬遠した理由、変更すべき点、次に実際の顧客を対象にテストすべきことを説明したレポートが得られます。シミュレーションの様子を見たり、ダッシュボードで結果を調べたりすることもできます。

たとえば、フィットネスアプリを発売するとします。広告では「1日15分」を前面に出すべきでしょうか、それとも「ジム1回分より安い」と伝えるべきでしょうか。無料トライアルの登録時にクレジットカードを求めるべきでしょうか。MarketMirror を使えば、実際のキャンペーンを始める前に、こうした選択をリハーサルできます。

購入者はシミュレーション上の存在です。 彼らの反応は AI によって生成されるため、アイデアの作成や比較に活用してください。有望な調査結果は、実際の顧客や小規模な実地テストで確認してください。

どのような方におすすめですか?

次のような方MarketMirrorでできること
創業者または小規模事業の経営者さまざまな人が、製品、価格、発売時のオファーをどのように受け止めるかを検討できます。
マーケターまたは代理店実際のテストを始める前に、広告、見出し、メール、対象者を比較できます。
営業チーム営業トークを練習しそうな懸念点を見つけ、よりわかりやすい回答を試せます。
製品開発チームまたはリサーチチーム購入の判断やウェブサイトでの行動を検討し、顧客調査を計画できます。
開発者またはAIエージェントの構築者コマンド、API、Pythonライブラリ、または接続されたAIアシスタントを通じて、同じワークフローを実行できます。

シミュレーション上の購入者について

シミュレーション上の購入者は、想定する対象者を代表する、AIが生成したキャラクターです。キャラクターには背景があり、オファーを受け入れる、疑問を持つ、または断る実際的な理由があります。

検討したいグループを選択できます。たとえば、選択した国の学生、働く親、若手社会人などです。MarketMirrorはそうしたグループの中から異なる人物を作成し、マーケティングを見せる前に、その人たちの生活について質問できます。

購入者が持ちうるものテストで重要な理由
背景年齢、居住地、仕事、ライフステージが、回答の背景になります。
予算と優先事項オファーに興味を持っても、より差し迫った出費との兼ね合いがあります。
スマートフォンとインターネット接続ページの読み込みが重かったり動画があったりすると、端末やデータプランによっては不便な場合があります。
相談相手パートナー、家族、コミュニティが購入に影響することがあります。
信頼に関する懸念隠れた料金、わかりにくい説明、過去の嫌な経験が、ためらいにつながることがあります。
購入判断カード何が購入の決め手になり、何が妨げになり、ほかに誰が関わるのかをまとめます。

購入者の例: 短時間の自宅でのワークアウトを希望する、忙しい親。低価格のスマートフォンを使い、予想外の請求を心配しています。月額料金が安ければ好印象を持つかもしれませんが、すぐに決済カードを求める「無料」トライアルは断るでしょう。価格よりもワークアウトの質を重視する購入者もいます。これらは架空の例であり、実際の顧客から得られた調査結果ではありません。

同じ実行内のテストでは、購入者が以前の体験を覚えている場合があります。広告を気に入らなかった人が、その反応を後のアンケートや営業トークにも持ち越すことがあります。比較シナリオを分けると、それぞれ固有の履歴が保たれます。

詳細なキャラクターを使うことで、さまざまな視点を検討できます。ただし、生成された回答が実際の人口集団を代表するものになるわけではありません。

テストできること

質問MarketMirror が行うことシミュレーションからわかること
どの広告が注目を集めるか?シミュレーション上の Facebook、Instagram、Reddit、TikTok、LinkedIn、または X のフィードに、通常の投稿と並べて広告を表示します。購入者がどの広告で立ち止まり、無視し、クリックし、コメントし、または非表示にするか。
どの見出しやメッセージがわかりやすいか?異なる購入者に異なるバージョンを見せて、反応を尋ねます。どの表現が関心を引き、どの表現が混乱を招くか。
価格やオファーは適切に感じられるか?価格について質問し、オファーや価格帯を比較します。どこで価格が懸念事項になり、どの条件に説明が必要か。
発売時に何が起こりそうか?スケジュールに沿ったブランド投稿やイベントを含む、ソーシャル上の会話をシミュレーションし、購入者が投稿、返信、リアクションできるようにします。会話の中で浮かび上がる質問、懸念、テーマ。
メールに関心を持ってもらえるか?シミュレーション上の受信トレイで、件名、メールの内容、または一連のメールをテストします。生成されたメールの冒頭、閲読、返信の選択肢。メールは送信されません。
営業トークはどう受け止められるか?営業トークを提示し、懸念を集め、回答を試し、改めて尋ねます。どの懸念が残るか、また回答が役に立つか、状況を悪化させるか。
ウェブサイトのどこで訪問者が離脱するか?シミュレーション上の訪問者を実際のウェブサイトに誘導し、その行動を記録します。どこでためらい、離脱し、カートへの追加などの確認済みタスクを完了するか。
最初にどのオーディエンスを調査すべきか?選択したグループや国ごとに反応を比較します。実際の顧客調査でさらに調べる価値のある違い。
次に何をテストすべきか?実行結果と、提供されている場合は実際のキャンペーンデータのエクスポートを使って、次の実験を提案します。次回の実地テストに向けた実用的な出発点。
シミュレーションは実際の結果と一致しているか?シミュレーション結果と観測された結果をペアにして比較します。それらの実験でシミュレーションがどの程度実際の結果に沿っていたか、また調整が必要な箇所。

比較を繰り返して、実行ごとに結果が変わるか確認できます。また、異なる AI プロバイダーを使い、意見が分かれる箇所を確認することもできます。どちらも、シミュレーションにどの程度の不確実性があるかを明らかにするのに役立ちます。

プロセスの概要

MarketMirror のワークフロー:製品、シミュレーション上の購入者、キャンペーンテスト、次の実験。AI を活用して検討し、実際の顧客で検証します。

  1. 製品を説明します。 概要、ドキュメント、またはウェブサイトを提示します。何を販売しているか、誰の役に立つか、価格はいくらか、主張を裏付けるものは何かを記載します。リンク先にある公開フィードバックやキャンペーンデータのエクスポートを持ち込むこともできます。
  2. オーディエンスを選びます。 調査したいグループや地域を説明します。MarketMirror がシミュレーション上の人物を作成します。続行する前に、そのプロフィールを確認してください。
  3. 反応してもらうものを提示します。 広告、メッセージ、価格、メール、営業トーク、またはウェブサイト上のタスクを追加します。質問への回答が得られるテストを選びます。
  4. 推奨事項を確認します。 レポートとダッシュボードで、反応、懸念、比較、推奨アクションを確認します。
  5. 小規模な実地実験を試します。 実際の顧客の反応やキャンペーンの結果を使って、何が通用したかを確認します。適切なデータが揃ったら、その結果をインポートして比較できます。

レポートの最初には、次のいずれかの推奨事項が示されます。

推奨事項活用方法
Go(実施)有望なアイデアを小規模な実地テストに進めます。
Iterate(改善)弱い部分を変更して、再度テストします。
No-go(見送り)資金を投じる前に、このバージョンを再検討します。

これらの推奨事項は、シミュレーションの結果を要約したものです。「実施」は売上を保証するものではありません。

得られるもの

ローンチの推奨事項、シミュレーションによる購入者の反応、キャンペーンテストの結果を表示するMarketMirrorの実際のダッシュボード

実際の製品のスクリーンショットです。Fitloopは架空のサンプルアプリで、表示されている購入者の反応と実績値はすべてシミュレーションによるものです。上部に描かれたバナーとワークフローは、概念を表現したアートワークです。

  • 意思決定と次のアクション: 維持するもの、変更するもの、実際の人を対象にテストするものがわかります。
  • 購入者の反応: シミュレーションの対象者、その発言、主な懸念事項を確認できます。
  • 比較: テストを実施した場合、広告、メッセージ、オファー、オーディエンス、AIプロバイダー間の違いを確認できます。
  • 共有可能なレポート: サーバーなしで開けてオフラインでも動作する、保存済みのHTMLダッシュボードです。グラフの元となる表も含まれています。
  • ダウンロード可能な結果: レポートとデータをMarkdown、JSON、CSV、PDF形式でエクスポートできます。
  • ライブビュー: 実行中の進捗、購入者のアクティビティ、ソーシャル投稿を確認できます。

スクリーンショットギャラリー全体と詳しい説明は、以下をご覧ください。

ダッシュボード

各実行で、単独で完結するHTMLダッシュボードが1つ生成されます。サーバーや外部へのリクエストは不要で、ライトテーマとダークテーマ、スマートフォン向けレイアウトに対応しています。サイドバーでは、概要、購入者、テスト、エビデンス、シミュレーション自体の各セクションがグループ化されています。すべてのグラフには元となる表があり、レポートはMarkdown、JSON、CSV、PDF形式でエクスポートできます。エージェントが500人を超える実行では、エージェントの表に最もアクティブな500人が掲載され、その旨が示されます。ほかのエージェントも人物カードとCSVダウンロードにはすべて含まれています。以下のスクリーンショットは、調査ページ(オファー調査)とライブコントロールルーム(1,000人の実行)を除き、3,000人のFitloop市場(Claude、Codex、Geminiが作成した人物)から取得したものです。scripts/readme_screenshots.pyを使うと、インストール済みのChromeで任意の実行結果のdashboard.htmlからスクリーンショットを再生成できます。

概要
KPIカード、意思決定カード、1ページの概要をひと目で確認
概要と意思決定。主要な数値、判断の根拠となるシグナルとともに示す「実行/改善/中止」の判定、3つのアクション、予算案、今後30日間の計画をまとめた1ページの概要です。
シミュレーション上の人々を示す世界地図、指標切り替え、国別テーブル
人々の居住地。シミュレーション上の人々を示す世界地図です。国別に、人数、コンバージョン見込み、広告CTR、ピッチへの賛成、リードスコアを切り替えて表示できます。テーブルには、上位の都市と人々の居住地が表示されます。
購入者
アンケート結果:シミュレーションが示す内容、評価バー、オーディエンス別の購入意向
購入者の声。自由記述の回答から、購入意向、関心、信頼、口コミを抽出し、1~5の分布にマッピングしてオーディエンス別に分類します。
意向バーと並べ替え可能なテーブルによるオーディエンス比較
ターゲットにするオーディエンス。すべてのセグメント、国、コミュニティ、年齢層、性別を並べて比較し、意向、信頼、コンバージョン見込み、最も多い反論を確認できます。
反論別にまとめた反論チャートと引用
人々がためらう理由。反論を割合の高い順に表示し、それぞれに合成された購入者の引用と、その人の考えを変える可能性のあるものを示します。
スプリットテストの結果とオーディエンス別の最適なメッセージ
効果的なメッセージ。メッセージのランダム化スプリットテストに加え、オーディエンスごとに最適なメッセージを確認できます。
テスト
フィードでのリアクション、クリックファネル、支出予測を表示するプラットフォーム形式の広告プレビュー
リアルなフィードでの広告。各広告を、そのプラットフォームのフィード内でオーガニック投稿に交えて表示します。スクロールを止めた割合、CTR、クリック後の行動、コメント、支出予測を確認できます。
ソーシャルシミュレーションのラウンドごとの返信とアクティビティを示すブランド投稿
ソーシャルフィード。シミュレーションの各ソーシャルラウンドにおけるすべての投稿を表示します。いいね、返信とその感情、ラウンド、オーディエンス、国によるフィルター、ラウンドごとのアクティビティを確認できます。
許容価格帯と最適価格を示すVan Westendorp価格感度分析
人々が支払う価格。セグメント別に、許容価格帯、最適価格、価格感度曲線を確認できます。
オーディエンス別のセールス・マーケティングプレイブックカード
プレイブック。オーディエンスごとに1枚のカードを表示します。最初に伝える内容、先回りして対処する反論、その回答方法、情報を広める場所、根拠となる合成引用を確認できます。
モデル間の一致度:コンバージョン見込みの範囲、購入意向、最も多い反論、プロバイダー別の最適なメッセージ
モデル間で見解は一致していますか?同じアンケートを、人ごとに担当したプロバイダー別に分けて表示し、95%範囲と3つの確認項目を示します。ここでは、Codexが担当した人々の回答はClaudeの担当者よりはるかに否定的でした。また、Geminiのクォータが尽きた後にClaudeが担当したGeminiの人々は、Claudeの担当者と同じように回答しました。
セールスリハーサル:ピッチスコア、反論への回答前後の結果、人々の意見をどれほど変えたかを含む各反論
セールスリハーサル。ピッチスコア、反論への回答前後の「賛成/どちらともいえない/反対」の内訳、各反論に使った回答、それによって意見が変わった人数、人々から返された質問を確認できます。
マーケティングラボ。マーケティングラボ(購買委員会、クリエイティブ最適化ツール、バトルカード、カスタマージャーニー、価格選択、競合他社の選択、ランディングページの詳細分析、ロールプレイ、仮定分析、オーディエンス別広告、検索行動、実際の懸念とシミュレーション上の懸念、口コミ)では、質問した人数、回答した人数、回答できなかった人数と、95%範囲を含むすべての結果が表示されます。
エビデンス
独立アナリストパネルの合意、テーマ、5人のアナリストカード
アナリストパネル。5人のアナリストが実行結果を個別に確認し、合意点、共通するテーマ、各アナリストの提言を示します。
インタビューの概要、電話、グループ、リードスコアを含む各シミュレーション対象者のカード
シミュレーション上の人々。短いインタビューから得た各人の生い立ち、電話とデータプラン、所属グループ、実行中の行動、リードスコアを確認できます。セグメント、国、判定、リードスコアで絞り込めます。
目次、意思決定の概要、テーブルを含む平易な言葉で書かれたレポート
レポート。目次、冒頭の意思決定、シミュレーション対象、結果、反論、価格設定、セールスに関するメモ、アクションプラン、制限事項を、平易な言葉でまとめたレポートです。Markdown、JSON、CSV、PDFにエクスポートできます。
3つのシードで3つの提案を比較する調査ページ
調査。同じ人々を対象に、複数のシードで複数のシナリオを比較します。勝者、並列比較テーブル、変化した点、シード間のばらつきを超えているかどうかを確認できます。
ライブ
実行ステージ、カウンター、すべてのシミュレーション対象者、アクティビティストリームを表示するライブコントロールルーム
ライブコントロールルーム。/liveで実行の進行をリアルタイムに確認できます。各ステージ、行動に応じて点灯し回答の色に変化するシミュレーション対象者、投稿やコメント、進捗ログを表示します。
Fitloop、その対象ユーザー、およびパイロットの数値は架空のものです。これらのスクリーンショットに含まれるすべての数値はシミュレーションであり、実際に観測されたキャンペーンの実績ではありません。レポートの生成では、数値を実行時のファクトシートと照合し、モデルが失敗した場合はデータのみのレポートに切り替えます。この検証で確認できるのは保存済みの出力との一貫性であり、現実の正確さではありません。

仕組み

技術ワークフロー:製品を理解し、シミュレーション上の購入者を作成してテストを実施し、判断したうえで実際の結果と照合します

ステージ入力 → 出力
理解製品概要、ドキュメント、またはウェブサイト → 製品プロフィールとナレッジグラフ
作成対象ユーザーのセグメントと公開フィードバック → インタビューと意思決定カードを持つシミュレーション上の購入者
テスト広告、メッセージ、価格、投稿、またはピッチ → 反応、懸念点、比較
判断保存済みのシミュレーション出力 → 推奨事項、レポート、ダッシュボード
検証観測されたキャンペーンまたはアンケートの結果 → バックテスト、キャリブレーション、次の実験

1つのコマンド market-test で、1つの設定ファイルから設定済みのパイプラインステージを実行します。個別のテストを単独で実行することもできます。各ステップの生成物はすべて実行フォルダーに保存されるため、中断した実行は停止したところから再開できます。

1. 製品を理解する

MarketMirror は、概要、ドキュメント、またはウェブサイトを読み取り、対象ユーザー、提供内容、ポジショニング、根拠、競合他社、まだ不明な点をまとめた製品プロフィールを作成します。以降のプロンプトはすべてこのプロフィールを読み込むため、シミュレーション上の人々は曖昧なアイデアではなく、実際の製品に反応します。

ドキュメントは、小規模なナレッジグラフにも変換されます(ローカルの SQLite に保存され、ローカルの埋め込みデータで検索されます。追加のサービスは不要です)。ナレッジグラフ内の組織や著名人は、投稿するアカウントとしてシミュレーションに参加できます。

任意で research を使うと、実際の人々がすでに発信している内容を収集できます。Hacker News のスレッド、国別の App Store レビュー、Reddit の検索結果、指定したページを、それぞれのリンクとともに取得します。こうした引用は、シミュレーション上の購入者を作成する人々に提示されるため、市場の出発点に実際の言い回しを反映できます。

2. 市場を構築する

小さな仕様書に対象者を記述します。「インドの18〜24歳の学生、500人。フィリピンの30〜45歳の親、400人」のように、国、都市、WhatsAppのランニンググループやサブレディットなどのコミュニティも指定します。そして、各人物について次の処理を行います。

flowchart LR
    S["Slot<br/>age · gender · city<br/>income · life stage"] --> P["Persona<br/>150-250 words"]
    P --> G["Stereotype guard<br/>no two alike in job<br/>and city"]
    G --> I["Life interview<br/>12 questions +<br/>first-person summary"]
    I --> F["Follow-ups<br/>2 probes · 3 product<br/>questions · decision card"]
  • スロットによって、それぞれの対象者の年齢、性別、都市(大都市と小都市)、収入、ライフステージが均等に分散されるため、同じ24歳の人物が500人も生まれることはありません。
  • ステレオタイプ防止機能によって、同じ対象者内で職業と都市の両方が一致する人物がいないようにします(一方を別の都市に移すか、役割を変えます。コード内で行うため、モデルの呼び出しはありません)。また、人物が似通いすぎている対象者にもフラグを立てます。
  • ライフインタビューでは、研究者が尋ねるような質問をします。*どこで育ちましたか?今月のお金のやりくりはどうですか。最初に何を削りますか?どんなスマートフォンを使っていますか。データプランはどんな感じですか?詐欺に遭ったときのことを教えてください。まとまったお金を使う前に誰に相談しますか?広告で最も不快に感じることは何ですか?*回答は、その人物自身の言葉と語り口による一人称の要約になります。
  • 意思決定カードには、その人物の購買行動が記されています。相談相手、決断までの速さ、購入を決めるきっかけ、購入を思いとどまる理由、譲れない条件、信頼の手がかりとして重視すること、毎月自由に使えるお金、そして本人の発言と実際の行動が異なる点です。
  • コミュニティが、人々の会話の場になります。各人物はいくつかの指定したグループに参加し、その場で互いをフォローします。

3,000人を生成した実行のうち、1人を紹介します。モデルが書いた内容をそのまま掲載しています(抜粋)。

人物Yash Malhotra、42歳、Pune。在車アプリの運転手兼オーナーで、週末には携帯アクセサリーの屋台を営んでいます。低中所得層、Realme 9 Pro、Jioのプリペイドプラン ₹349(1日2 GB)。Working Moms & Dads Indiaのメンバーです。
本人の言葉「Mi Yash Malhotra, 42, Pune madhe cab chalvto ani weekend la mobile accessories stall lavto… crypto course madhe ₹6,000 gelele mhanun reviews bghto ani bayko aai la vicharto.」(暗号資産の講座で₹6,000を失ったため、レビューを読み、妻と母に相談します。)
購入前の相談相手妻のPooja、母親、屋台仲間のSantosh
購入を決める要素無料トライアル、安い価格、ファミリープラン、ヒンディー語のコーチ
購入を見送る要素誇大な広告、スキップできない長い広告、事前にカードが必要なこと、隠れた料金
信頼するもの星4つ以上のレビュー、明確な価格、家族の意見
発言と行動の違い待ち時間に15分間取り組むと言いますが、勤務時間が長引いて疲れているため、実際には続けられそうにありません。

人物は実行中ずっと記憶を保ちます。広告を非表示にしたりメールを無視したりした人物は、そのことをアンケートや売り込みの場にも持ち越します。複数のモデルプロバイダーを使う場合、各プロバイダーが担当する人物をそれぞれ作成し、最初から最後まで演じます(1つの市場で複数のモデルを使う)。

3. 市場に投入する

現実的なフィードに広告を掲載する(フィードテスト)。 テストする各プラットフォーム(Facebook、Instagram、Reddit、TikTok、LinkedIn、X)で、各人物はフィードをスクロールします。各フィードには、地元の一般投稿が数件あり、そのプラットフォームでスポンサー投稿が表示される位置に、あなたの広告が1つ配置されます。複数の広告をテストする場合、各人物が見る広告は1つだけで、ランダムに割り当てられるため、比較はスプリットテストになります。各投稿について、スクロールして通り過ぎたか、立ち止まったか、立ち止まった時間、視聴したか、リアクションしたか、コメントしたか、シェアしたか、保存したか、クリックしたか、非表示にしたかに加え、ひと言の感想も報告します。プラットフォーム別のプレイブックには一般的な基準率(ほとんどの人はほとんどの広告をスクロールして通り過ぎます)が記載されており、シミュレーション上の人物が非現実的に好意的になるのを防ぎます。広告ごと、オーディエンスごとの広告マネージャー指標(スクロールを止めた割合、CTR、クリック後に起きたこと)が得られ、--seeds 3を指定すると、単一の数値ではなく幅が表示されます。

ソーシャルラウンド。 その後、人々はOASISエンジンとそのレコメンデーションフィードを使って、RedditやXに似たプラットフォーム上で数ラウンドを過ごします。ブランドの投稿やローンチカレンダー(3日目の値下げ、5日目のインフルエンサー投稿など)は、予定したラウンドに表示されます。また、実行中のシミュレーションに最新ニュースを反映させることもできます(「競合他社がたった今、値下げした」など)。人々はそれぞれの口調で投稿、返信、いいね、フォロー、議論を行います。ダッシュボードのソーシャルフィードには、ラウンド、オーディエンス、国ごとのすべての投稿と、ブランド投稿への返信およびそのセンチメントが表示されます。

4. 人々に尋ねる

アンケート。 参加者全員が自分の言葉で回答します。試してみたいか、どのくらい関心があるか、信頼しているか、人に勧めたいかを尋ねます。自由記述の回答は、意味類似度評価(SSR)によって1~5の評価分布に変換されます。ローカル埋め込みを使って各回答を5つの基準文と比較するため、追加のモデル呼び出しは不要です。数値を直接尋ねると、言語モデルの評価分布は狭く、現実離れしたものになります。自分の言葉で書いた回答を評価すると、SSR論文が報告しているとおり、実際の調査パネルに近い分布が得られます。アンケートでは、さらに次のこともできます。

  • 各人にランダムに1つのメッセージを提示して、メッセージをスプリットテストする。
  • 価格に関する4つの質問を行い、許容価格帯と最適価格を算出する(Van Westendorp)。
  • サンプルに「シミュレーション上で1週間後」に再度質問し、同じ判断をした人の割合を報告する(テスト・リテスト)。
  • 各オーディエンスの回答割合が、設定した許容幅に収まった時点で早期終了する。

営業リハーサル。 あなたの営業トークをすべての購入者候補に提示します。購入者候補は反論を返し、あなたは反論への切り返しで応じ、購入者候補は再度判断します。反論の順位、効果のあった切り返し、各人のリードスコア(「誰に最初に電話するか」)が得られます。

アナリストパネル。 5人のアナリストがシミュレーション全体を独立して読み、それぞれが実行、改善、または中止を推奨します。意見の一致度はレポートの妥当性を確認するためのものであり、結果を決める投票ではありません。

5. 判断する

判断カードの最上部に、実行、改善、または中止を表示し、その根拠となるシグナルを示します。アンケートの購入意向(実行には1~5の尺度で平均3.75、改善には3.1が必要)、フィードテストで最も良かった広告、アナリストの評価、最も多かった反論などです。レポートでは、誰をシミュレーションしたか、どのような回答があったか、何が障壁になったか、何を変更すべきか、アクションプラン、制限事項を平易な言葉で説明します。レポート内のすべての数値はシミュレーションのファクトシートと照合されます。文章生成モデルが失敗した場合は、データのみを使ったレポートが作成されます。

すべてが1つのHTMLダッシュボードにまとめられます。サーバーなしで開けて、オフラインでも、ライトモードとダークモードの両方で、スマートフォンから利用できます。すべてのグラフには対応する表があり、レポートはMarkdown、JSON、CSV、PDF形式でダウンロードできます。ライブコントロールルームでは、実行中の各段階や、行動するたびに動き出す一人ひとりの人物、そしてその投稿を確認できます。ダッシュボードを見る。

6. 現実と照らし合わせる

シミュレーションの数値は、実際の数値と比較するまではほとんど意味がありません。実際の広告結果やアンケート回答をインポートすると、MarketMirror は次のことを行います。

  • 過去の広告を使って予測をバックテストします。
  • 実際の回答に照らしてシミュレーションしたアンケートを調整します。回答の重複、オーディエンスごとの信頼度、補正後のコンバージョン率を確認します。
  • 比較から得た知見を使って、予算に応じたクリック数や登録数を予測します。
  • 実際の広告エクスポートと実行結果から、次に行うテストを提案します。

シミュレーションから小規模な実テストへ進み、またシミュレーションに戻る。このサイクルこそが重要です。シミュレーションでテスト対象を絞り込み、最終的な判断は現実の結果に委ねます。

ユースケース

各レシピは、準備済みのシミュレーション(./mm cli quickstart を実行し、次に "approve_spend": true を指定して market-test を実行)から始めます。エージェントに普段の言葉で依頼するか、自分でコマンドを実行してください。結果は実行フォルダーと、最後の列に記載されたダッシュボードのセクションに表示されます。

まず、判断したいことから始めてください。

質問テスト確認項目
最初に試す広告はどれですか?シードを繰り返したフィードテスト注目度、クリック数、反応、オーディエンスごとの差
オファーは信頼できると感じられますか?アンケートとオファーの調査購買意向、懸念点、シードごとの差
どの価格をテストすべきですか?価格感度調査または価格帯の比較許容範囲とシミュレーション上の選択
ウェブサイトのどこで購入者を逃していますか?ブラウザーでの顧客行動テストアクションの記録、スクリーンショット、成果の確認
営業担当者は懸念にどう答えるべきですか?ピッチと反論への対応のリハーサル対応前後の回答と懸念の傾向
観測された結果と一致していますか?ホールドアウト・バックテストと調整誤差、カバレッジ、検証の限界
知りたいことエージェントに尋ねるまたは実行する
---------
どの広告を出すべきか「この3つの広告を、現実的なフィードで購入者に対して3つのシードでテストしてください。」./mm cli feedtest --simulation $SIM --creatives @creatives.json --seeds 3
どのメッセージや名前が響くか「この見出しを分割テストして、どれが試してみたいと思わせるか確認してください。」./mm cli survey --simulation $SIM --messages @messages.txt --split
いくらに設定し、どのオファーを出すべきか「カード登録が必要でも、利用を始めてもらえますか?妥当だと感じる価格はいくらですか?」./mm cli survey --simulation $SIM --offer "7-day trial, no card" --pricing USD
変更が本当に効果を上げるか「同じ人を対象に、カード不要、カード必須、値下げをそれぞれ比較してください。各条件を3つのシードで実施してください。」./mm cli study --spec study.json
どの国・オーディエンスから始めるべきか「インド、フィリピン、ケニアのうち、どこで最も響きますか?」セグメントと国を含むペルソナ仕様を用意してから、market-test を実行します
ローンチがソーシャル上でどう展開するか「ローンチ投稿と3日目のお知らせを、数回のソーシャルラウンドにかけてください。」market_test.json のキー posts、events、rounds
ニュースによって会話がどう変わるか「競合がたった今値下げしました。実行中のシミュレーションに反映してください。」./mm cli context --simulation $SIM --text "..."
メールが開封されるか「この件名と3段階のシーケンスを、受信トレイでテストしてください。」./mm cli emailtest --simulation $SIM --emails @emails.json
営業トークがどう受け止められるか「すべての購入者に提案し、懸念に回答して、誰に最初に電話すべきか教えてください。」./mm cli pitch --simulation $SIM --script @pitch.md --rebuttals @rebuttals.md
ウェブサイトでコンバージョンが発生するか「購入者を3人、商品ページに誘導して、カートに追加するか確認してください。」./mm cli website-test --simulation $SIM --url https://... --goal add_to_cart
実際の人々がすでに何と言っているか「インドで、ホームワークアウトアプリについて人々が何と言っているか、リンク付きで調べてください。」./mm cli research --query "home workout app" --country in
実際の広告から、次に何をテストすべきか「広告のエクスポートを読み込んで、次の3つのテストを提案してください。」./mm cli ideas --ads export.csv --run-dir mirofish_runs/x --brand Acme
どのような結果が見込まれるか「過去のキャンペーンを基に調整して、500 USDの広告費で見込まれる登録数を予測してください。」./mm cli predict --run-dir mirofish_runs/x --brand Acme --spend 500
シミュレーションが現実と一致しているか「シミュレーションのアンケート結果を、実際の回答と比較してください。」./mm cli calibrate --run-dir mirofish_runs/x --real answers.csv
なぜ断られたのか「利用を始めない理由を、エージェント12に尋ねてください。」./mm cli interview --simulation $SIM --agent 12 --prompt "..."
誰が商談を阻み、誰が契約に署名するか「12世帯または12社を対象に、購買委員会を実施してください。」./mm cli gtm committee --simulation $SIM
広告を改善する方法「この広告を書き換えて3案作り、それぞれを同じ人々に再テストしてください。」./mm cli gtm creative --simulation $SIM --creative @ad.json --generations 3
懸念にどう回答するか「実際の懸念をもとにバトルカードを作り、回答をテストしてください。」./mm cli gtm battlecard --simulation $SIM
どのプランを選ぶか「この価格のベーシック、プラス、ファミリーでは、それぞれ何割が選びますか?」./mm cli gtm pricing --simulation $SIM --tiers @tiers.json
競合が動いたらどうなるか「Xが30%値下げしたら、乗り換えますか?」./mm cli gtm competitors --simulation $SIM --competitors X Y --move "X cuts its price by 30%"
ランディングページが関心を引きつけるか「購入者20人の視点で、ランディングページを徹底的に分析してください。」./mm cli gtm teardown --simulation $SIM --url https://...
異なるモデルの見解が一致するか「Claude、Codex、Geminiの各モデルの人々を一緒にして、同じ市場を実行してください。」バックエンドの設定にある LLM_POOL(1つの市場で複数のモデルを使うを参照)
ある人が考えていたけれど、口にしなかったこと「スクロールしている間に人々が考えていたことを見せてください。」./mm cli gtm thoughts --simulation $SIM
実行中のどこに特定のテーマが現れるか「ケニアで価格について人々が話した内容をすべて探してください。」./mm cli search --run-dir mirofish_runs/x -q "price Kenya"
今、何が起きているか「実行状況をリアルタイムで表示してください。」./mm live --run-dir mirofish_runs/x を実行してから、/live を開きます
シミュレーション上の人々は、同じ実行内のテストを通じて、自分に起きたことを記憶します。広告を非表示にした人やメールの配信を解除した人は、その情報をアンケートや売り込みにも引き継ぎます。各調査セルはそれぞれ独自の記憶を持つため、シナリオ同士が影響し合うことはありません。毎回新しい人で各ステップをテストするには、設定に "memory_scope": "off" を指定します。

フィードテストのプレビューは、Facebook、Instagram、Reddit、TikTok、LinkedIn、X に対応しています。オプションのソーシャルラウンドでは、MiroFish/OASIS の Twitter および Reddit 環境を使用します。検索、オーガニック、紹介、営業の各テストファミリーは、既存のアンケート、受信箱、売り込みエンジンを応用したものです。それらのチャネルの本番システムを再現するものではありません。

結果の例:シミュレーションによる市場調査

以下は、架空のフィットネスアプリ Fitloop を対象に、ローカルで実行した記録済みの結果です。ワークフローとその限界を示しています。実際に観測された顧客のコンバージョン率でも、予測精度の証明でもありません。

概要
例対象範囲明らかになったこと
2,999人の購入者による複合市場調査6つのオーディエンスに対して、Claude、Codex、Gemini が作成した購入者信頼に関する懸念と、回答モデル間の大きな違い
150人の購入者によるオファー調査同じ合成コホートで、3つのオファーを3つのシードでテストどのシードでも、カード情報の要件により、シミュレーション上の利用開始意向が低下
1,008人の購入者によるローンチテストフィードテスト、ソーシャルラウンド、アンケート、レポート広告の「カード不要」という約束と、ランディングページで求められるカード情報との矛盾

Fitloop のトライアル開始に関するシミュレーション回答:USD 4.99 でカード不要の場合は 4.1 パーセント、USD 4.99 でカード必須の場合は 0.2 パーセント、USD 2.99 でカード不要の場合は 6.7 パーセント。ひげは3つのシードにおける最小値と最大値を示します。

トライアルオファーシミュレーション上の「利用を開始する」平均値3つのシードでの最小値~最大値
カード不要 · USD 4.994.1%2.7~5.4%
カード必須 · USD 4.990.2%0.0~0.7%
カード不要 · USD 2.996.7%5.3~8.0%

シード間の範囲は、シミュレーションのばらつきを表します。次のステップは、少人数を対象としたランダム化された実験です。値下げによって予測上の優位性が確立されたわけではありません。

3,000人による複合市場調査

Fitloop を対象に、依頼人数3,000人の市場調査を実施しました。3分の1ずつを Claude Sonnet、Codex(gpt-6-luna)、Gemini 3.8 Flash(gemini-3.8-flash-low)が作成し、インタビューしました。対象はインド、フィリピン、ケニアの6つのオーディエンスと、5つのコミュニティです。Bengaluru Fitness Buddies(WhatsApp)、Working Moms & Dads India(Facebook)、Fit Pinoy Community(Facebook)、Nairobi Runners & Gym Rats(WhatsApp)、r/budgetfitness が含まれます。各人は最大2つのコミュニティに参加します。広告で提示したオファーは、カード不要の7日間無料トライアル、その後は月額 USD 4.99 です。1,000人を対象とした実行と同様に、概要説明とランディングページでは登録時にカード情報を求めており、テストではこの不一致を検出することを目的としています。

判断:要改善(確信度は中程度)。アンケートだけでは「中止」という結果です(購入意向は5点満点中2.88、トライアルを開始すると回答した人は0.7%、n = 2,999)。フィードテストは「要改善」という結果です(最良の広告は fb_parents、予想 CTR は1.02%)。シミュレーション上のアナリスト5人全員も「要改善」と判断しています。まず改善すべき点は、信頼感(「詐欺のように見える」)、本当に無料なのかという疑念、製品のわかりにくさです。

測定項目結果
トライアルを開始するかはい 0.7%、たぶん 50.4%、いいえ 48.9%(2,999人中2,999人が回答)
自由記述の回答から見た購入意向(1~5)2.88 ± 1.14、関心度 3.22
主な懸念信頼性/「詐欺のように見える」:59.6%、価格:20.4%、何なのか分からない:9.1%
対象者別の開始意向フィリピンの若手社会人 1.7%、フィリピンの親 0.9%、インドの親 0.9%、インドの若手社会人 0.6%、学生 0.3%、ケニアの若手社会人 0.0%
最も効果のあったアンケートメッセージ「Fitloop の1か月分の料金は、ジム1回分より安い」(他と同様、はいは約1%)
許容できる価格帯1.50~5.50米ドル、最適価格は約2.20米ドル
再テスト(30人、1週間後をシミュレーション)76.7%が同じ判断を示し、93.3%が関心度を2ポイント以内の差で評価
セールストーク(2,999人中2,997人が両方のターンに回答)反論を聞く前は、はい 1.1%、たぶん 64.0%、いいえ 34.8%。聞いた後は、はい 1.1%、たぶん 44.6%、いいえ 54.2%。信頼性への反論で、信頼性を懸念した人の44.9%が態度を変え、価格への反論で態度を変えた人は8.9%
ソーシャルラウンド(Redditで4ラウンド)3,565件のアクション:コメントへのいいね1,375件、何もしない選択1,259件、コメント770件、投稿へのいいね135件、低評価18件、投稿7件
アナリストパネル5人中5人が改善を提案(Claudeが演じたのが3人、Codexが2人)。論点:現地の決済手段(UPI)がない、無料のYouTubeに対して米ドル建ての価格、信頼には証拠が必要、カード情報の入力を求めるとトライアルの利用が止まる、安価なスマートフォンでのデータ通信料

フィードテストでは、5,140件のユーザーとプラットフォームのセッションで5種類の広告をテストしました。

広告プラットフォームインプレッションスクロール停止率CTR予測CTR
fb_parentsFacebook85817.9%2.2%1.02%
ig_commuteInstagram74921.5%2.3%1.02%
ig_priceInstagram75019.9%1.9%0.91%
tt_challengeTikTok2,14118.3%0.8%1.42%
rd_honestReddit64215.3%0.5%0.41%

セールストークは改善どころか、状況を悪化させました。反論を聞いた後、約5分の1の人が「たぶん」から「いいえ」に移りました(セールストークの評価は100点中23点)。レポートが示した改善策は、主張を重ねるのではなく、7日目以降の正確な請求額、解約手順、現地価格を示すように、信頼性と価格への反論を書き直すことです。これはアナリストが挙げた論点とも一致します。

**モデルの回答は一致せず、どのモデルが回答するかが最も大きく影響しました。**各人物を作成したプロバイダー別の内訳は次のとおりです。

人物の作成元ラウンド、アンケート、セールストークでの演者開始意向:はい/たぶん/いいえ主な懸念
Claude(1,000人)Claude Sonnet 5.51.3%/75.6%/23.1%信頼性、次いで価格
Gemini(1,000人)Claude Sonnet 5.5(代役)0.9%/69.7%/29.4%信頼性、次いで価格
Codex(999人)Codex0.0%/5.7%/94.3%信頼性、次いで「何なのか分からない」

購入者の作成モデルと回答プロバイダー別のトライアル開始意向のシミュレーション結果

Geminiが作成し、Claudeが演じた人物の回答は、Codexの人物ではなくClaudeの人物の回答に似ていました。つまり今回の実行では、人物を作成したモデルよりも回答するモデルのほうがアンケート結果に大きく影響し、CodexはClaudeよりはるかに否定的です。上記の割合は、単一市場の回答ではなく、この2つの挙動の間の範囲として捉えてください。 実行状況。 人口データの準備に2時間57分(再起動1回を含む)、3つのログインゲートウェイを経由するフィードテストに62分かかりました。その後のソーシャルラウンドでは利用上限に達しました。ラウンド中にGeminiまたはClaudeのログインが4回上限に達し、そのたびに4ラウンドが最初からやり直しとなり、通常は上限リセットまで数時間待つ必要がありました。その後、Geminiのログインは約4日間クォータ切れになりました(Flash、Argonともに)。そこで、残りの実行ではAnthropic APIキーに切り替えました。Claude Sonnet 5.5がClaude作成の人々を演じ、Gemini作成の人々は代役として(MM_PROVIDER_STANDIN=antigravity=claude)演じました。Codexは引き続き、ログインを通じて自分が作成した人々を演じました。その後は中断なく進み、4ラウンドを40分、再テストを含む2,999人への調査を23分、2,999人への提案を37分で実施し、その後にパネルとレポートを作成しました。この部分のAPI利用料金はAnthropicコンソールで確認できます。MarketMirrorはラウンド、調査、提案におけるトークン数を計測していません。

その基盤となる人口データ:

ClaudeCodexGemini合計
作成した人々1,0009991,0002,999
インタビュー実施1,0009871,0002,987
意思決定カードあり9809339922,905
  • 依頼された人々のうち1人は、呼び出しに失敗したため作成されませんでした。人数には含まれますが、補完はしていません。
  • インタビューに失敗したCodexの12人は、深度profileのまま保持されています。インタビューを受けた人々のうち82人には意思決定カードがありません。
  • 対象層:学生642人、フィリピンの若手社会人536人、インドの若手社会人534人、インドの親429人、フィリピンの親429人、ケニアの若手社会人429人。それぞれ3つのプロバイダーに均等に分割されています。国別では、インド1,284人、フィリピン1,125人、ケニア590人です。
  • ステレオタイプガードによって20人が変更され、バリエーションが少なすぎる対象層は見つかりませんでした。
  • ナレッジグラフのアクター7人とコミュニティアカウント5つを加えると、シミュレーションにはそれぞれプロフィールを持つエージェントが3,011人います。
  • フィードテストでは1,289回のモデル呼び出し(Gemini 442回、Codex 440回、Claude 407回)を行い、入力トークンは19.9M、出力トークンは0.94Mで、セッションの消失はありませんでした。
Fitloopはどのオファーでローンチすべきでしょうか?

同じシミュレーション上の購入者150人に対して、3つのオファーをそれぞれ異なるシードで3回ずつ実施する調査を行いました(9セル、ローカルのClaude Codeゲートウェイ経由で1セルあたり約10分)。各数値はシード間の平均で、括弧内は最小値と最大値です。括弧内の範囲はシミュレーションのばらつきのみを示しています。

指標カード不要、USD 4.99カード必須、USD 4.99カード不要、USD 2.99
購入意向(1–5)3.51 (3.46–3.60)3.01 (2.99–3.04)3.60 (3.59–3.60)
トライアルを開始する(%)4.1 (2.7–5.4)0.2 (0.0–0.7)6.7 (5.3–8.0)
クリックする(%)7.7 (3.3–16.5)10.9 (8.0–12.7)23.5 (21.3–25.3)
信頼度(0–10)3.6 (3.4–4.0)3.4 (3.3–3.4)4.1 (4.1–4.1)
最大の懸念が「詐欺に見える」(%)54.6 (47.5–59.7)88.2 (86.7–90.7)60.5 (58.0–62.7)
シード間の判定3回中2回で改善継続3回中3回で見送り3回中2回で改善継続

調査の結論。 カードの必須化は、すべてのシードで明確なマイナスとなりました。購入意向は0.5低下し、トライアルを開始する割合は3.9ポイント低下、「たぶん」という回答は44.8ポイント減少し、詐欺への懸念は33.6ポイント上昇しました。いずれもシード間のばらつきを超える変化でした。価格をUSD 2.99に下げると、クリックする割合(+15.8ポイント)と信頼度(+0.47)はばらつきを超えて上昇しましたが、購入意向の上昇(+0.09)はばらつきの範囲内にとどまったため、シミュレーションでも値下げが明確な勝者とは言えませんでした。3シード中2シードで最良の結果となりましたが、調査の要約では、予測的な主張を裏付ける結果ではないとされています。推奨事項は、トライアルはカード不要のままにし、信頼性の向上(証拠、会社名の明記、「カード不要」という明確な文言)に取り組み、USD 2.99とUSD 4.99を比較する小規模なランダム化実テストを行うことです。完全なレポートは、調査フォルダー内のstudy.htmlと同じ場所にstudy_report.mdとして生成されます。

Fitloopのオファー調査ページ:結論、各オファーのカード、並べて比較する表 ### 1,000 人の実行:シミュレーションした 1,008 人の購入者の回答 1,000 人の実行終了時のライブコントロールルーム:回答ごとに色分けされた全員

オファー:カード登録不要の 7 日間無料トライアル、その後は月額 4.99 米ドル。インド、フィリピン、ケニアの若手社会人、保護者、学生に提示しました。

指標結果
アンケートに回答1,008 人中 1,001 人
トライアルを開始する意向はい:1.1%、たぶん:74.8%、いいえ:24.1%
自由記述回答からの購入意向(1~5)3.07 ± 1.12
最も多い懸念「詐欺のように見える/信頼性」:70.3%
最も意欲の高い層ケニアの若手社会人:2.8% が「はい」、8.3% がクリックすると回答
最も意欲の低い層学生:0% が「はい」(回答が信頼性に関する回答と類似しすぎていたため、レポートでフラグが付けられました)
国別の開始意向ケニア:2.0%、インド:0.9%、フィリピン:0.8%
最も効果的なアンケートメッセージ「Fitloop の 1 か月分の料金は、ジム 1 回分より安い」:他の案の 0.9% に対し、1.5% が「はい」
許容価格帯1.80~7.99 米ドル、最適価格は約 2.49 米ドル
再テスト時の一致率(30 人、シミュレーション上の 1 週間後)86.7% が同じ判断を回答
アナリストパネルアナリスト 5 人全員:改善を続ける

結論:改善を続ける(確信度は中程度)。シグナルは異なっています。アンケートだけでは見送り(n = 1,001)、フィードテストでは改善を続ける(最良のクリエイティブは fb_parents、予測 CTR は 1.58%)、シミュレーション上のアナリスト 5 人全員も改善を続けるという結果でした。アナリストパネルを追加する前に、実行の最後に記録された判断は見送りでした。アイデアには関心が集まっています(4 人に 3 人が「たぶん」と回答)が、信頼性が障壁になっています。また、レポートでは具体的な欠陥も見つかりました。広告では「カード不要」と約束しているのに、ランディングページのフォームではカード番号、有効期限、CVV の入力を求めており、シミュレーション上の人々はその段階で離脱しました。次のステップとして、カード入力をなくし、各国の実際のユーザーによる証拠を追加して、再テストすることを推奨しています。これらはシミュレーション上の人々です。実際の実験で確認されるまでは、すべての率を傾向として扱ってください。

準備、シミュレーション中の各ターン、アンケート、メールやフィードへの反応、プレゼンテーション、レポートには、すべてモデル呼び出しが発生する場合があります。シードを繰り返し使用すると、作業量も増加します。ローカルゲートウェイでは、利用可能な場合は上流の使用状況を報告し、推定値にはその旨を明記します。サブスクリプションの利用が、測定済みの金銭的コストを意味するわけではありません。大規模なコホートを選ぶ前に、小規模な実行で測定してください。初回の埋め込み設定では、推論がローカルで実行される場合でも、モデルアセットがダウンロードされることがあります。

実測実行

これらは Fitloop のローカル測定値であり、速度を保証するものではありません。モデル、ハードウェア、アクティビティ設定、同時実行数、プロバイダーの制限によって実行時間は変わります。このセクションの速度はすべてシミュレーションによるものです。

実行シミュレートした購入者数範囲実測経過時間フィードテスト呼び出し回数請求額
Fitloop ローンチ28マーケティングパイプライン28m 12s75利用不可
Fitloop150マーケティングパイプライン54m 50s262利用不可
Fitloop 混合市場チェック12(Claude、Codex、Gemini から各 4)フィードテスト、ソーシャルラウンド 2 回(37 アクション)、アンケート、ピッチ、3 つのログインゲートウェイ経由17m 50s23(Claude 8、Gemini 8、Codex 7)サブスクリプション(請求なし)
Fitloop 大規模(ソーシャルのみ)1,008Reddit のソーシャルラウンド 6 回のみ3m 42s未測定利用不可
Fitloop 1,0001,008Claude Code ゲートウェイ経由の Sonnet で実行したフルパイプライン:フィードテスト、Reddit ラウンド 4 回、1,008 人へのアンケート+30 人への再テスト、アナリスト 5 人、レポートアクティブ作業時間は約 52m434サブスクリプション(請求なし)

1,000 人の実行におけるアクティブ時間の内訳は、フィードテストが 10m 17s(434 回の呼び出し、入力トークン 1,296,106、出力トークン 375,768)、ソーシャルラウンド 4 回が 18m 28s(1,159 アクション)、アンケートと再テストが 20m 29s、レポートが 1m 26s です。この実行ではアナリストパネル(5 人全員)が失敗したため、後日修正して再実行しました。実際の経過時間はこれより大幅に長くなりました。Claude Code のセッション制限により、アンケートの途中で 4h 12m 中断し、翌朝手動で再開しました。また、ソーシャルラウンド 4 回も再実行したため、上記のアクティブ時間には最終パスのみが含まれます。API プロバイダーはそれぞれ独自のレート制限とクォータを適用します。

人物の準備は、3 つのログインゲートウェイ経由で別途測定しています。「人物の作成」はペルソナプランナーのみを指します(ペルソナ、インタビュー、フォローアップ)。「アップロードから準備完了まで」には、ナレッジグラフ、エージェントプロフィール、シミュレーション設定の作成が含まれます。フルの深度では、意思決定カードはフォローアップの呼び出しから生成されるため、この列の数はフォローアップを行った人数でもあります。

実行深度人物数(Claude / Codex / Gemini)インタビュー済み意思決定カード未作成人物の作成アップロードから準備完了まで
フル深度の速度チェックフル60(20 / 20 / 20)605706m 7s7m 16s
高速人口チェック高速150(45 / 55 / 50)2415007m 29s8m 51s
Fitloop 混合市場 3,000フル2,999(1,000 / 999 / 1,000)2,9872,90512h 40m 11s、再起動あり2h 57m 31s、再起動あり

60 人と 3,000 人の実行では、Sonnet、gpt-6-luna、gemini-3.8-flash-low を使用しました。150 人の実行では、Sonnet、Codex のデフォルトモデル、gemini-3.8-flash-medium を使用しました。インタビューは各対象者層につき 4 人、合計 24 人です。この実行は、対象者層ごとに均等に分割するようになる前のものでした(各対象者層を 2 つのプロバイダーに 20 + 5 人ずつ割り当てたため、45 / 55 / 50 となっています)。現在の実行では、すべての対象者層を全プロバイダーに均等に割り当てます。

3,000 人の所要時間は、単一のパスを正確に反映したものではありません。14:34、3,000 人中 1,865 人の処理後に、レーンの修正を適用するためバックエンドを再起動しました(ハングした呼び出しにより Gemini レーンが 10 から 2 に縮小していました。現在、レーンが半分になるのはレート制限が発生した場合のみです)。新しい準備タスクは、完了済みの回答 1,043 件を人口キャッシュから再生し、残りを作成しました。この後半部分だけで 1h 54m 39s かかりました。人物の作成後、エージェントプロフィール 3,011 件には約 7.5 分、シミュレーション設定には約 9.5 分かかりました。

クイックスタート

Git、Bash、Python 3、uv が必要です。インストーラーによって Python 3.12 環境が用意されます。Linux、macOS、または WSL を使用してください。Windows ネイティブ環境では検証されていません。

git clone https://github.com/DarkWorldCoder/market-mirror.git
cd market-mirror
bash install.sh
./mm configure

モデルプロバイダーを選択し、バックエンドを起動して、最初のシナリオを作成します。

./mm provider check
./mm start
./mm cli quickstart --out scenarios/acme

ウィザードでは、製品、購入者、チャネル、予算、テスト規模について質問されます。編集可能な入力ファイルを書き込み、シミュレーション対象の人々を準備した後、残りのテストを実行する前に確認のため停止します。準備処理自体でもモデル呼び出しが行われます。 まずは少人数のコホートから始めてください。provider check は推論を実行せずにモデルを検出するコマンドであり、モデルの品質やツールのサポート状況をテストするものではありません。

生成されたファイルとプロフィールを確認します。続行するには、返された simulation_id を保持し、scenarios/acme/market_test.json で "approve_spend": true を設定してから、次を実行します。

./mm cli market-test scenarios/acme/market_test.json
./mm live --run-dir mirofish_runs/acme

ライブビューアーは 127.0.0.1:5050 で動作します。コントロールルーム 127.0.0.1:5050/live では、すべての段階、行動するたびに点灯するシミュレーション対象者、投稿内容、そして 2 秒ごとに更新される進行ログを確認できます。名前が異なる場合は、パイプラインが出力した実際の実行ディレクトリを使用してください。保存された dashboard.html は、サーバーを使わずに直接開くこともできます。人々を準備せずにテンプレートを生成するには、./mm cli quickstart --no-run を使用してください。

中断した実行の再開と適切な開始コマンドの選択

market-test の実行が停止した場合(クラッシュ、再起動、ターミナルを閉じた場合など)、まず先行する market-test プロセスが終了しており、./mm cli status --simulation <sid> に実行中のラウンドが表示されないことを確認してください(完了を待つか、./mm cli stop で停止します)。その後、別のポートでバックエンドを実行している場合は同じ MIROFISH_URL を指定して、同じコマンドを再実行します。実行フォルダーの run_manifest.json から再開され、人々の準備が完了する前に停止したシミュレーションは再度準備されます。すでに書き出された人々のデータはキャッシュから取得されます。設定で "resume_steps": true にすると、再利用可能な保存済みフィードテストとアンケート、ライブのソーシャル環境も再利用されます。準備の待ち時間は市場規模に応じて長くなります(最低 1 時間、または 1 人あたり約 6 秒)。また、バックエンドタスクは最長 6 時間追跡されます。

./mm start はバックエンドを起動します。./mm cli start --simulation … はソーシャルシミュレーションのラウンドを開始します。以下の例ではすべてリポジトリの ./mm ヘルパーを使用しているため、グローバルコマンドやエイリアスは必要ありません。

製品の URL をテストする

オプションのブラウザーサポートをインストールし、準備済みのシミュレーションの ID を使用します。

uv sync --project backend --extra browser --python 3.12
backend/.venv/bin/python -m playwright install chromium
./mm cli website-test --simulation "$SIMULATION_ID" \
  --url https://your-product.example/products/shoes --goal add_to_cart \
  --task "Evaluate these shoes and decide whether to add a suitable pair to your cart." \
  --limit 3 --steps 12

ブラウザー用の追加機能をインストールした後、バックエンドを再起動してください。URL を自分のサイトに置き換えます。ブラウザー操作では、検索やキーボード操作、製品オプション、ホバーメニュー、同一サイト内のタブやフレーム、オープンシャドウ DOM、ページ変更時の制限付き復旧に対応しています。録画するには --record-video を、グラフィカルセッションのデスクトップで表示するには --headed を追加します。エージェントが実際のカートを操作する場合があります。サインアップを送信するには、明示的に指定されたテストデータとオプトインが必要です。注文や支払いには対応していません。名前付きの DOM チェックによって、エージェントの主張とは独立して結果を検証します。これらがない場合、完了は未検証のままです。結果チェック、サインアップの設定、ブラウザーの制限、証拠レポートについては、実際のウェブサイトのテストを参照してください。

ブラウザーの実行では、ローカルの完全な証拠を保持しながら、コンパクトなモデル観測データを使用します。呼び出し数、入力トークン数、経過時間に上限を設定できます。変更のないページでの反復操作は、購入者の離脱とは別に検出されます。レポートには、利用可能なキャッシュの使用状況、モデルの実行時間、コストの算出基準が表示されます。ブラウザーのコンテキストと実行上限を参照してください。

モデルを選択

プロバイダーセットアップ認証
Local Codex./mm gateway start codex既存のローカル Codex ログイン
Local Claude Code./mm gateway start claude既存のローカル Claude Code ログイン
ChatGPT sign-in./mm gateway login を実行してから、./mm gateway start siwc対象のアカウントが必要です。セットアップ時にスコープとモデルへのアクセス権が確認されます
Local Antigravity (Gemini models)./mm gateway start antigravity --model gemini-3.8-flash-medium既存のローカル Antigravity ログインが必要です。agy models で利用可能なモデルを確認できます
Local Gemini CLI./mm gateway start gemini既存のローカル Gemini CLI ログイン
インストール済みのすべてのログインを1つのゲートウェイで利用./mm gateway start multiインストール済みでログイン済みの CLI(一覧は LLM_GATEWAY_POOL)。呼び出しはそれらの間で分散されるため、各ユーザーが1つのプロバイダーを使うようにするには、LLM_POOL(下記)を使用してください
Ollama / LM Studio./mm configure でプロバイダーを選択ローカルにインストールされた、ツールに対応するモデル
Claude / OpenAI / Google Gemini API./mm configure でプロバイダーを選択プロバイダー API キー(ANTHROPIC_API_KEY、OPENAI_API_KEY、GEMINI_API_KEY)とモデルへのアクセス権が必要です
その他の API プロバイダー:DeepSeek、Kimi (Moonshot AI)、Mistral、xAI (Grok)、Groq、Together AI、Fireworks AI、OpenRouter、Qwen (Alibaba Model Studio)、Z.ai (GLM)、Cerebras、MiniMax./mm configure、設定ページ(./mm cli setup)、または .env:LLM_PROVIDER=deepseek + DEEPSEEK_API_KEY(ベース URL とデフォルトモデルは自動入力されます。<NAME>_BASE_URL と <NAME>_MODEL_NAME で上書きできます。Qwen では、ワークスペース ID を含む QWEN_BASE_URL も必要です)そのプロバイダーの API キー(MOONSHOT_API_KEY、XAI_API_KEY、ZAI_API_KEY、DASHSCOPE_API_KEY、それ以外は <NAME>_API_KEY)
その他の互換サーバーエンドポイントとモデル、またはプールスロット custom(CUSTOM_BASE_URL、CUSTOM_API_KEY、CUSTOM_MODEL_NAME)を設定プロバイダーによって異なります

ログインゲートウェイは、利用制限の範囲内で、すでにお持ちのサブスクリプションを使用します。API プロバイダーでは使用量が別途課金され、独自のレート制限とクォータが適用されます。モデルの選択、ゲートウェイの設定、利用制限による一時停止、Claude API キーを使ったプロンプトキャッシュ、設定ページ、3,000 人分の API コストについては、プロバイダー、複数市場、大規模実行を参照してください。

デフォルトのナレッジグラフではローカルの SQLite とローカルの埋め込みを使用するため、Zep アカウントは不要です。モデルのダウンロードと公開情報の調査にはネットワークアクセスが必要です。ホスト型プロバイダーと CLI ゲートウェイには、選択したプロバイダーを通じてモデルのプロンプトが送信されます。モデルの使用には、引き続きそのアカウントの利用制限と料金が適用されます。

1つの市場で複数のモデルを使用

1つの市場を、たとえば Claude、Codex、Gemini など複数のプロバイダーで同時に実行できます。各プロバイダーはすべての対象者を均等に分担し、担当する人々にインタビューし、フィードやソーシャルラウンドでその人々として行動し、アンケートやピッチでもその人々に代わって回答します。これにより、1つのモデルが最初から最後まで1人の人物を演じます。次にダッシュボードで 「モデルの見解は一致していますか?」 と問いかけます。結果をプロバイダー別に分け、購入意向の範囲が重なっているか、最も大きな懸念点と最適なメッセージが同じかを確認します。一致はシミュレーションの頑健性を確認するものであり、実際の購入者についての証拠ではありません。

LLM_POOL=claude_code:sonnet,codex:gpt-6-luna,antigravity:gemini-3.8-flash-low
LLM_POOL_STRICT=true          # rounds and tests stay on each person's own provider

各プロバイダーの実行中の呼び出しにはそれぞれ専用のレーンがあるため、応答の遅いプロバイダーが速いプロバイダーを待たせることはありません。また、アカウントの利用上限に達したプロバイダーは、実行中に API キーへ切り替えたり、別のプロバイダーで代替したりできます。ゲートウェイを別々のポートで起動する設定、トークン、レーン、数千人規模に対応する深度設定については、プロバイダー、複数市場、大規模実行を参照してください。

エージェントを接続

MarketMirror は、Codex、Claude Code、Cursor、Gemini、または MCP トランスポートに対応するその他のクライアントから使用できます。まず、上記のクイックスタートに従ってエンジンをインストールし、設定してください。

Codex プラグイン

リポジトリのルートから実行します:

codex plugin marketplace add "$PWD"
codex plugin add market-mirror@market-mirror-local
Claude Code プラグイン
claude plugin marketplace add "$PWD"
claude plugin install market-mirror@market-mirror

このプラグインには、主要なワークフローに加え、調査、計画、テスト、エビデンスレビューに特化した Agent Skills が含まれています。これらは単一の正規ソースを共有しています。クライアントによってプラグインのサポート状況や設定場所が異なります。プラグインガイドを参照してください。

Gemini CLI 拡張機能
gemini extensions install https://github.com/DarkWorldCoder/market-mirror

この拡張機能は、MarketMirror MCP サーバーと短い GEMINI.md ガイドを追加します。上記のクイックスタートでエンジンをインストールするか、Gemini に setup の実行を依頼してください。

互換性のある MCP クライアント

最も手早い方法は PyPI パッケージを使うことです(uv が必要です)。また、公式 MCP Registry に io.github.DarkWorldCoder/market-mirror として登録されています。

{ "mcpServers": { "market-mirror": { "command": "uvx", "args": ["marketmirror"] } } }

次に、エージェントに doctor の実行を依頼し、エンジンがまだインストールされていない場合は setup を実行してください。代わりに、すでにお持ちのチェックアウトを使うには、設定を上書きせずにクライアント用の設定を出力します。

./mm agent-config --client generic
# Also supports: codex, claude, cursor, gemini

出力には、サーバーの絶対パスとエンジンの場所が含まれています。このエントリをクライアントの MCP 設定にコピーし、クライアントを再起動してください。stdio サーバーは ./mm mcp でも起動できます。

認証付きのループバック HTTP MCP を使う場合:

python3 plugin/skills/market-mirror/scripts/mcp_server.py \
  --http --port 5061 --token-file /absolute/path/to/private-token

24 文字以上のランダムなベアラートークンを含む、プライベートなトークンファイルを作成してください。そのトークンを使って http://127.0.0.1:5061/mcp に接続します。このトランスポートはローカルエージェント向けであり、ホスト型のリモートサービス向けではありません。

エージェントで次のように試してください。

MarketMirror を使って、製品とキャンペーンのパフォーマンスを分析してください。アクセスを許可したツールから広告データや分析データを取り込むか、提供するエクスポートデータを使ってください。出典を引用した顧客フィードバックを調査し、小規模なシミュレーション対象者にアンケートを実施して、2 つの広告またはオファーを比較してください。合成訪問者を使って製品 URL をテストし、エビデンスと不足している入力を示したうえで、次に行う実際の実験を提案してください。

コアツール:doctor、provider_setup、understand、ads_import、ideas、website_test、research、actuals_import、campaign_plan、run_test、study、job_status、holdout_backtest、predict、results。時間のかかるジョブは、ステータス、ログ、結果のパスを返します。ジョブが完了したと判断する前に、job_status をポーリングしてください。

ワークフローの例

flowchart LR
    A[Product brief] --> B[Product profile]
    C[Cited public feedback] --> D[Campaign plan]
    J[Connected ad data or exports] --> D
    B --> D
    D --> E[Surveys, campaign tests and website journeys]
    E --> F[Compare scenarios]
    F --> G[Next real experiment]
    G --> H[Import observed results]
    H --> I[Backtest and calibration]
    I --> D

クイックスタートで scenarios/acme/ が作成されたら、そのサンプルコンテンツを製品の資料に置き換えてください。

./mm cli understand --docs scenarios/acme/brief.md --name Acme \
  --out scenarios/acme/product_profile.json

./mm cli research --query "home workout app" --country in \
  --out scenarios/acme/research

./mm cli campaign-plan --profile scenarios/acme/product_profile.json \
  --research scenarios/acme/research/voices.json \
  --goal "trial signup" --budget 500 --currency USD \
  --channels search organic paid_social email sales referral \
  --out scenarios/acme/campaign_plan.json

計画には test_specs、出典を引用したエビデンス、前提、未確認事項が含まれています。チャネル予算は、初期状態では均等なドラフト配分になっています。主張と配分を確認し、選択した spec を experiment.json として保存したうえで、準備済みのシミュレーションでテストしてください。

# Set this to the ID returned by your preparation step.
SIMULATION_ID=sim_replace_me
./mm cli test --simulation "$SIMULATION_ID" --spec @experiment.json
./mm cli study --spec study.json

experiment.json と study.json は、レビュー済みの入力ファイルです。入力例と ./mm cli study --help で、それぞれの仕様を確認できます。Study の各セルでは完了済みの処理を再利用します。同じ仕様を再実行すると、処理が再開されます。比較を個別に行う場合は、それぞれ同じ初期状態と一致するシナリオシードから開始してください。

実際の結果が得られたらインポートしてください。この例では、Day、Country、Views、Clicks の列を含むエクスポートを想定しています。

./mm cli actuals-import exports/campaign.csv --source-type ads \
  --map date=Day market=Country impressions=Views clicks=Clicks \
  --out scenarios/acme/actuals.json

./mm cli holdout-backtest --pairs experiments_with_train_and_holdout.json \
  --out scenarios/acme/holdout_backtest.json

インポーターは、ソース、日付、市場、品質のラベルを保持し、行単位の検証エラーを返します。バックテストには、トレーニング/ホールドアウトの分割を明示した、シミュレーション結果と実際の結果の明示的なペアが必要です。インポートしたエクスポートだけでは、すぐに使えるホールドアウトデータセットにはなりません。

シミュレーションの準備後に便利なコマンド
./mm cli profiles --simulation "$SIMULATION_ID" --brief
./mm cli feedtest --simulation "$SIMULATION_ID" --creatives @creatives.json --seeds 3
./mm cli survey --simulation "$SIMULATION_ID" --offer "Acme trial" \
  --goal "start a trial" --messages @messages.txt --split --pricing USD
./mm cli emailtest --simulation "$SIMULATION_ID" --emails @emails.json
./mm cli pitch --simulation "$SIMULATION_ID" --script @pitch.md --rebuttals @rebuttals.md
./mm cli report --simulation "$SIMULATION_ID" --run-dir mirofish_runs/acme

準備処理によって完全なプロファイルセットが保存されたものの、設定の準備が整う前に停止した場合は、./mm cli prepare --simulation "$SIMULATION_ID" --resume-only を使ってください。保存済みプロファイルを再利用し、不完全なセットの再生成は行いません。

入力は scenarios/ に、出力は mirofish_runs/ に保存してください。どちらも gitignore の対象です。コマンド一覧全体は ./mm cli --help で確認できます。

## OASIS と MiroFish に追加される機能

MarketMirror は MiroFish を基盤としており、OASIS 上で動作します。OASIS は、言語モデルエージェントが活動する、フィード、投稿、フォロー、レコメンデーションシステムを備えたリアルなソーシャルプラットフォームを提供します。MiroFish はその上にナレッジグラフと予測レポートを追加します。MarketMirror はそれらを、意思決定につながる市場テストへと発展させます。

MarketMirror はこの基盤に、オーディエンスの計画、マーケティング実験、意思決定レポートを追加します。

レイヤーワークフローにおける役割
OASISエージェントのアクションやレコメンデーションフィードを備えたソーシャルシミュレーション環境です。
MiroFishナレッジグラフとシミュレーションレポートを支える、上流のアプリケーション基盤です。
MarketMirrorセグメント化された合成購入者、広告やオファーのテスト、アンケート、販売リハーサル、プロバイダー比較、オフラインレポート、キャリブレーションのワークフローを提供します。

エビデンスとシミュレーションの限界

  • 生成されたインタビューは合成データのままです。 詳細な経歴や BDE プロファイルを作成しても、創作された人物が顧客エビデンスになるわけではありません。
  • 行動の制御は仮定に基づいています。 注意力、疲労、社会的証明、ランディングページでの摩擦には、対象市場で検証が必要な手動設定の事前分布が含まれます。
  • シードの変動はシミュレーションの変動を測定します。 予測の信頼区間ではありません。結果の反復的な一致や合成テスト・再テストの一貫性が、人間との一致を証明するわけではありません。
  • バックテストが答えるのは特定の問いです。 既存のペルソナなしの比較対象は、トレーニングセット内の実際の結果の平均です。それを上回っただけでは、一般的な予測の信頼性を証明できず、同条件の汎用リーダー LLM との比較に代わるものでもありません。
  • キャリブレーションはカバレッジと仮定に左右されます。 キャリブレーションされていない予測には、区間や成功確率が含まれません。絶対率、ランキング、サブグループの結果は、それぞれ未使用の実験データで検証してください。

論文、調査したコード上の不足箇所、提案するメモリ/状態アーキテクチャについては、人間行動の調査ガイドをご覧ください。実装済みの制御、今後の作業、実験的に裏付けられた結果を区別しています。

よくある質問

実在する購入者ですか?連絡を取れる人たちですか?

シミュレーション内で AI が生成したキャラクターです。名前、経歴、回答、リードスコアは、それらのキャラクターについて記述したものです。実在する見込み顧客の連絡先リストではありません。

MarketMirror は広告を配信したり、メールを送信したりしますか?

広告、受信トレイでの反応、販売会話をシミュレーションします。広告を公開したり、営業連絡を送信したり、広告アカウントを変更したりすることはありません。

購入者は実際のウェブサイトを利用できますか?

はい。オプションのブラウザーサポートを利用できます。合成訪問者は実際のページを確認し、商品を探したりカートに追加したりするタスクを試せます。レポートにはスクリーンショットと操作記録が含まれます。タスクの完了を確認するには、明示的なページチェックが必要です。注文と支払いには対応していません。対応する操作と登録要件については、ウェブサイトのテストをご覧ください。

コードを書く必要がありますか?

接続した AI アシスタントに、自然な言葉でテストを依頼できます。MarketMirror のインストール、モデルの選択、アシスタントの接続には技術的な設定が必要です。コマンドラインツールを直接使用することもできます。

無料ですか?

MarketMirror のソースコードは AGPL-3.0 で公開されています。実行時に、有料の AI 利用枠、サブスクリプションの利用枠、またはローカルのコンピューティングリソースを消費する場合があります。必要な作業量は、オーディエンスの規模、インタビューの深さ、テスト、反復回数によって変わります。測定済みの実行例は参考例であり、コストや速度を保証するものではありません。

実際の調査データやキャンペーンデータを取り込めますか?

はい。製品ドキュメント、リンク付きのフィードバック、キャンペーンのエクスポートデータを提供できます。MarketMirror では、対応している公開フィードバックをソースリンク付きで収集することもできます。シミュレーションと実際の結果を比較するには、適切な対応データが必要です。広告のエクスポートデータをインポートするだけでは、完全な検証調査にはなりません。

技術用語の意味を教えてください。
用語平易な説明
ペルソナ/合成バイヤーあるタイプの購入者を表す、AI が生成したキャラクターです。
オーディエンスセグメント学生や共働きの親など、調査したいグループです。
クリエイティブ広告で使う画像、動画のアイデア、またはコピーです。
スプリットテスト/A/B テスト異なるバージョンを別々の人々に見せ、反応を比較する方法です。ここでは、その人々はシミュレーションされています。
CTRクリック率です。広告の表示回数のうち、クリックにつながった割合を示します。シミュレーションテストでは、表示もクリックも生成されたイベントです。
シード異なる乱数抽出でシミュレーションを繰り返す際に使う、ランダムな初期設定です。
バックテスト過去の実験で判明している結果とシミュレーションを比較することです。
キャリブレーション観測された結果を使ってシミュレーションの推定値を調整することです。それでも独立した評価が必要です。

その他の連携

インターフェースエントリーポイント
REST APIhttp://127.0.0.1:5001 のバックエンド。エンドポイントガイドとOpenAPI スキーマ
Python SDKpip install -e sdk を実行し、from marketmirror import MarketMirror と記述します。SDK の例
Docker.env を設定してから docker compose up --build を実行します。バックエンドは 5001、ビューアーは 5050 で、どちらもループバック上で公開されます
WebhookMIROFISH_WEBHOOK_URL を設定すると、CLI パイプライン、調査、テストの完了サマリーを受信できます

Docker サービスは、ホスト上のアップロードデータ、シナリオ、実行出力をマウントします。ホストのループバックログインゲートウェイには、これらのコンテナから直接アクセスできません。コンテナから到達できるプロバイダーを使用するか、ホスト上で CLI ゲートウェイのワークフローを実行してください。

開発

cd backend
uv sync --python 3.12
uv run --no-sync python -m pytest tests claude_cli/tests -q

テストではモデル呼び出しをモックするため、有効なモデルキーは必要ありません。CI では生成された API ドキュメントもチェックします。バックエンドサービスは backend/app/ に、CLI とレポートレンダラーは backend/claude_cli/ に、エージェントツールは plugin/ に、Python SDK は sdk/ にあります。

ドキュメント

知りたいこと…こちらをお読みください
MarketMirror をインストールしてアシスタントを接続するローカルインストールとエージェントのセットアップ
詳細なセットアップとリファレンスを別途用意する技術ガイド
AI プロバイダーを選ぶ、またはより大規模なオーディエンスを実行するプロバイダーとスケール
バイヤーの仕様、広告、テストファイルを準備する入力形式
実際の製品ウェブサイトをテストするウェブサイトのテスト
エージェントプラグインをインストールするプラグインガイド · Codex のセットアップ
連携機能を構築するREST API · OpenAPI スキーマ · Python SDK
調査内容と提案されている改善について理解する人間の行動に関する調査
貢献する、または問題を報告する貢献ガイド · セキュリティ · 変更履歴

プロジェクトを支援する

MarketMirror が役に立った場合は、⭐ リポジトリにスターを付けてほかの人にも見つけてもらい、テストした内容をお知らせください。すべての Issue に返信します。

クレジットとライセンス

MarketMirror は MiroFish と OASIS を基盤とし、シミュレーションの基盤にオーディエンス計画、マーケティングテスト、意思決定レポートを追加しています。AGPL-3.0 の下で公開されています。

ダッシュボードには Apache ECharts が組み込まれています。サードパーティに関する通知をご覧ください。MiroFish のオリジナル README もそのまま保存されています。バナーとワークフローのイラストは AI で生成されており、生成に使用したプロンプトも含まれています。

コメント

MCP は初めてですか?

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

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