モニターとは
モニターはひとつの市場を対象にした名前付きのプロンプトセットです。プロンプトの一覧、送信先のエンジン、 「自社ブランド」を意味するエイリアス、任意で自社ドメインと数社の競合、国、実行間隔で構成されます。 スケジュール実行ごとに、プロンプト × エンジンの数だけ通常の非同期タスクを送信し、完了した回答は一度だけ 採点して保存します。 採点は意図的に狭く、データは保存した以上のことには答えられません。- 回答テキストにブランドのエイリアスが現れるかとその文字オフセット、回答が登録済みの自社ドメインのいずれかを 引用したか、設定した競合のどれが同じ回答に現れたかを記録します。
- 感情スコアや市場シェアの推定値は生成しません。順位は、回答が挙げたブランドの中での位置であり、下のカテゴリ モニターのブランドランキングがその例です。
競合は自動で見つけます
競合を入力する必要はありません。モニターの最初の実行が終わると、最近の回答を言語モデルで読み、自社ブランドと同じものを 扱い、2つ以上の回答で名前が挙がったブランドを最大15社まで残します。この読み取りは30日ごとに繰り返されるため、新しい競合は 加わり、言及されなくなった競合は外れます。- 見つけた競合は
source: "auto"、自分で追加した競合はsource: "user"です。自分で追加したものを読み取りが変更したり 削除したりすることはありません。 - 見つけた一覧が変わると、モニターに保存された回答を新しい一覧で数え直します。そのため、レポート内のすべてのブランドは
同じ回答をもとに測定されます。最後の読み取り時刻はモニターの
competitorsReadAtにあります。 - ラテン文字の名前は単語単位で一致させます。たとえば「replicates」はブランド Replicate の言及として数えません。
モニターセットは意図をもって分ける
モニターが異なればトピックや市場が異なり、レポートも別です。それぞれ独自の期間、採点定義、スケジュールを 持ちます。2つの習慣が役立ちます。- トピックと市場ごとに1つのモニターにして、レポートのコホートを比較可能に保ちます。「おすすめのCRM」と 「CRMの価格はどう決めるか」を1つのセットに混ぜると、異なる2つの意図が1つの数字に平均されます。
- プロンプトは購入者の言い回しで書き、自社ブランドを決して含めないでください。ブランドを含むプロンプトは常に 言及と判定され、永遠に100%を報告して何も測りません。競合名は問題なく、最も有用なプロンプトになることも 多いです。
カテゴリモニター: 市場のブランドを順位付けする
ブランドモニターはひとつのブランドを追跡します。カテゴリモニターは市場を追跡します。カテゴリ名を決め、質問を サブ分野ごとにまとめると、レポートはエンジンが回答で挙げたブランドを順位付けします。モニターを作成するときに"mode": "CATEGORY" を指定します。mode の既定値は BRAND で、保存されるすべての行の意味を決めるため、
モニターの作成後は変更できません。
スケジュール、コスト、期間、フィルター、
quality、ソース、引用、結果、回答はブランドモニターと同じように動作します。
カテゴリモニターにアラートはないため、POST /v1/monitors/{id}/alerts/test は 400 を返します。
レポートが順位付けするもの
GET /v1/monitors/{id}/analytics はカテゴリ用のビューを返します。stats と previous は runs、named(追跡
ブランドを1つ以上挙げた回答の数)、namedRate を持ち、changes.namedRatePp はポイント差で、category オブジェクトが
順位を持ちます。
rankは、ブランドを挙げた回答の数で順序付けします。これらの回答が挙げたブランドの中での位置です。どの回答にも 挙げられなかったブランドのrankはnullです。- ブランドの
mentionRateは、そのブランド自身のsampleSize(ブランドが一覧にあった間に採点された回答)で割ります。 今日追加したブランドは今日から測定されます。 shareOfVoiceは期間内の100 × そのブランドの言及数 / 追跡ブランドの言及の合計なので、ひとつの期間のシェアを 足すと100になります。GET /v1/monitorsはカテゴリモニターごとにleader(最も多く挙げられたブランドとその割合)を加えます。mentionedとcitedは常に0です。GET /v1/monitors/{id}/answers/{taskId}はmode、空のaliases、追跡ブランドの一覧であるcompetitorsを返します。
検索需要からプロンプトをリサーチする
POST /v1/monitors/research は Prompt Research のリクエストボディを受け取り、同じ12クレジットで、
同じ結果を返します。タスクはアカウントとして送信されます。キューに入ったタスクは GET /v1/async/task/{id} で読み取ります。id はレスポンスの data.task.id です。
monitorSet.prompts を prompts に、各プロンプトの topic を promptTopics のサブ分野に、brands[].brand を
competitors に使います。ダッシュボードのリサーチを実行ボタンが同じ処理を行い、フォームを埋めます。モニターを作成
するまで、何も保存されません。
コストとスケジュール
1回の実行で、プロンプトごと・エンジンごとに1タスクを各エンジンの公開クレジット価格でキューに入れます。 スケジュールはモニターを一時停止または削除するまで繰り返すため、作成時に選んでいるのは継続的なコストです。- 実行は一度に集中しません。タスクはプランの同時実行数とキューが許す分だけ投入されるため、無料プランの上限を
超える実行は破棄されず数分かけて届きます。進行中の実行はレポートの
health.pendingで確認してください。 - 次の期間は保証ではなく時刻です。
nextRunAtは実行の予定時刻で、1週間一時停止したモニターは逃した実行を まとめて行わず、再開した時点から1間隔後に再開します。
エンドポイント
いずれもAPIの他の部分と同じBearerキーを使います(認証を参照)。他のアカウントが所有する
モニターは
403 ではなく 404 を返します。
モニターを作成する
name、engines、prompts、aliases、intervalHours はブランドモニターで必須で、カテゴリモニターは aliases の代わりに category を受け取ります。各リストは配列または改行区切りの文字列1つを
受け付け、各エントリは前後の空白を除去し、空行を捨て、重複を取り除きます。country はエンジンが回答する市場を
選ぶだけで、プロンプトを翻訳しません。prompts × engines は capabilities の tasksPerRun 上限以下でなければ
なりません。
エンジンはスケジュール可能なプロンプトサーフェスです: CHATGPT、GEMINI、PERPLEXITY、GOOGLE、AIMODE、
NAVER_AI_BRIEF、NAVER_AI_TAB、および非推奨のエイリアス NAVER。GOOGLE_AIO と GOOGLE_AIMODE は受け付けて
GOOGLE と AIMODE として保存します。SOURCE_INFLUENCE などの分析タスクはプロンプトサーフェスではないため、
モニターにスケジュールできません。
一部のエンジンに制限されたキーはそのエンジンだけをスケジュールでき、それ以外は 403 KEY_SCOPE_DENIED です。
アカウント単位のモニター上限に達すると 409 MONITOR_LIMIT を返します。
実行してからレポートを読む
POST /v1/monitors/{id}/run は次の実行を即座に予定し、回答タスクは約1分以内に現れます。この実行は定期実行と
同じく課金され、その期間がまだ予定中の間に呼び出しを再試行しても二重に課金されません。
GET /v1/monitors/{id}/analytics は、レポートのすべての部分の拠り所となる契約です。期間は半開区間でUTC基準
です。since は含み、until は含まず、次の2つの方法のどちらかで選びます。
任意の2つのフィルターがすべてのセクションに同時に適用されます。
engine(正規idまたは公開エイリアス)と
prompt(完全一致のテキスト、最大2,000文字)です。行はプロンプトのテキストをキーにしているため、後でモニターから
外したプロンプトも引き続き照会できます。
すべてのセクションがその1つのコホートを共有し、前の区間は長さもフィルターもまったく同じなので、同条件で比較できます。
数字の意味
ダッシュボードのパネルに名前を付ける前に読んでください。これらの定義は公開された契約であり、GET /v1/monitors/capabilities が metrics として返すため、クライアントは数字の横に表示できます。
- 期間、エンジン別グループ、セル別グループの
mentionRateは100 × 言及された回答 / 採点された回答です。 エンジン別比率の平均ではなく回答数で重み付けするため、忙しいエンジンが静かなエンジンに埋もれません。 (ブランド自身の比率は独自の分母を持ちます。次で説明します。) citationRateは、登録済みの自社ドメインのいずれかを引用した回答について同じ形で数えます。ドメインを登録 していなければ引用追跡がオフなので、常にゼロです。- ブランドの比率は期間全体ではなく自身の
sampleSizeで割ります。 自社ブランドは採点されたすべての回答、 競合はモニターに登録されていた間に採点された回答だけです。今日競合を追加すると、最初のレポートはその競合を 測った回答だけを扱い、存在前の履歴は不利に数えません。該当する回答がないブランドは0%ではなくmentionRate: nullを報告します。0%は実際に消えたように読めてしまうからです。 brandsのshareOfVoiceは、期間内の100 × そのブランドの言及 / 追跡中の全ブランドの言及で、1つの期間の シェアを合計すると100になります。これらのプロンプトで収集した回答の中でブランドを比較する値であり、 市場シェアでも可視性ランキングでもありません。レガシー詳細エンドポイントのshareOfVoiceは以前の回答浸透率の 見方で、各ブランドを収集した回答数に対して数えるため合計が100を超えることがあります。2つを1つのチャートに 混ぜないでください。competitorOnly(とopportunitiesリスト)は、自社ブランドがなく設定済みの競合を挙げた回答を数えます。 実際に手を打てるギャップです。- 比率はゼロではなくnullになり得ます。 期間に回答がなければ
null、比率ゼロは回答があったが1つも一致 しなかったことを意味します。 - 回答なしで完了した観測は「言及なし」として数えます。 分母に残り、
quality.noAnswerObservationsがその数を 示します。失敗したタスクはすべての比率から除外されhealthにのみ現れます。壊れたエンジンは黙って不在に 変わるのではなくサンプルを減らし、qualityがそれを不在として再構成することもありません (historicalFailuresは常にnull)。 - 誤解を招く変化量は保留します。 一方の期間に回答がない場合(
insufficient_periods)、採点コンテキストが できる前に採点された行の場合(legacy_scoring_unknown)、2つの期間の間で採点定義が変わった場合 (scoring_definitions_changed)は、changesとセル別のmentionRateChangePpがnullになり、quality.comparableはfalseです。過去の行は採点時の定義を保持するため(quality.scoring)、エイリアスや 競合を変えても過去が書き換わることはありません。例外は上で説明した毎月の競合読み取りだけです。 - サンプルサイズを公開します。 採点された回答が30未満なら
quality.lowSampleがtrueになり、quality.missingCellsはまだ回答のない設定済みのプロンプト × エンジンのセル数を数え、quality.partialDaysは 期間が半分に切ったUTCの日を示します。部分日の件数が少ないのは計算上の結果であり、減少ではありません。
position は、回答テキスト内で最初に現れたエイリアスの文字オフセットです。順位ではなく
目立ち具合の代理指標です。ブランドがなければ null なので、0 が「なし」を意味することはありません。
回答のソース
GET /v1/monitors/{id}/sources は「どのページがこれらのプロンプトを勝ち取っているか」に答えます。レポートと同じ
期間とフィルターを使い、生の引用数ではなく異なる回答の数を数えるため、1つの回答で3回引用されたページも
1回と数えます。
各行には
citations と prompts(どちらも異なる回答の数)、登録済みの自社ドメインを示す own、回答エンドポイントで
開ける evidenceTaskId があります。ここでは暗黙の上位N件の切り捨てはありません。カーソルをたどれば期間内の
すべてのドメインやページに到達できます。
引用の推移
GET /v1/monitors/{id}/citations は、ダッシュボードの引用チャートに使われるデータをそのまま返します。
期間全体の日別引用数と、上位のドメインとページごとの日別系列です。保存済みの結果だけを読むため、
クレジットは消費しません。
ここでの引用 1 件は、1 つの回答に現れた 1 つのページです。同じ回答に同じページが 2 回出ても 1 件と数えます。
/sources は異なる回答の数を数えるため、数値が異なる場合があります。
出典のシェアは、その出典の
citations を totals.citations で割った値です。kind、q、offset はリストを
絞るだけで、totals、days、types は常に期間内のすべての出典を対象にします。
採点済みの行をエクスポートする
GET /v1/monitors/{id}/results は行そのものを返します。データウェアハウスへのロード、週次の報告資料、
スプレッドシートに使ってください。
ページネーションはマイクロ秒精度の
(ranAt, id) によるキーセット方式なので、同じタイムスタンプを共有する行も
抜けたり重複したりしません。抽出を再現可能にするには、明示的な since と until を送り、固定したまま、
nextCursor が null になるまでたどってください。 ページの間で期間を変えると、行が抜けたり重複したりする
ことがあります。カーソルは不透明な値として扱い、返されたものをそのまま戻すだけで、自分で組み立てないでください。
format=csv の場合、レスポンスは text/csv(Excel が正しく開けるようBOM付きのUTF-8)になり、CSV本文には置き場所が
ないため、ページネーションの状態はヘッダーに移ります。
列は
ran_at, monitor, engine, prompt, mentioned, cited, position, competitors, task_id で、
includeEvidence=true のときは answer_text, sources, scoring_context が加わります(sources と scoring_context は
セル内のJSONテキスト)。スプレッドシートの数式として読まれ得るセルは書き込み前に無害化するため、外部のテキストが
シート上で数式に変わることはありません。
数字の裏にある回答を読む
GET /v1/monitors/{id}/answers/{taskId} は1行分の保存された根拠を返します。
answerText: エンジンが返したままの回答。可能ならmarkdownで、最大8,000文字、それより長い場合は末尾に 省略記号を付けて切り詰めます。sources: エンジンの順序での引用。それぞれラベルと、引用リスト内での1始まりの位置を持ちます。aliasesとcompetitors: この行の照合対象。言及を鵜呑みにせず確認できます。scoringContext: 使われた定義そのもの。versionハッシュ、採点時刻、answerPresent、上のテキストが 切り詰められた場合のevidenceTruncatedを含みます。
scoringKnown: false とモニターの現在のエイリアス、null の
evidenceTruncated を返します。エンジンが回答テキストを返さなかった場合、answerText は null です。
この領域のエラー
エンベロープは他と同じです(エラーを参照)。モニタリング固有のコードは次のとおりです。エージェントと組み合わせる
このページのエンドポイントだけで、エージェントやスクリプトが実行できる実践的な手順です。例示なので、キー、 モニターid、期間は置き換えてください。GET /v1/monitors/capabilities: 何かを消費する前に、エンジン、価格、上限を読みます。GET /v1/monitors: そのトピックと市場の既存モニターを再利用するか、POST /v1/monitorsで作成します(先にPOST /v1/monitors/suggestを呼んで候補を編集しても構いません)。POST /v1/monitors/{id}/run: 次の予定期間より前に回答が必要なら実行します。GET /v1/monitors/{id}/analytics?days=30&engine=CHATGPT: まずquality(comparable、lowSample、missingCells、partialDays)を読み、それから数字を見ます。health.pendingが落ち着き、quality.sampleSizeが増えなくなるまでポーリングします。GET /v1/monitors/{id}/sources?days=30&groupBy=page:nextCursorでページをめくり、プロンプトを勝ち取って いるページを見つけます。GET /v1/monitors/{id}/answers/{taskId}: 何かを決める前に、opportunitiesの先頭項目の裏にある回答を開きます。GET /v1/monitors/{id}/results?since=...&until=...&includeEvidence=true&format=csv: 同じ期間をエクスポートし、x-next-cursorが空になるまでたどります。
get_monitor_capabilities、list_monitors、
get_monitor、create_monitor、update_monitor、delete_monitor、run_monitor、get_monitor_analytics、
get_monitor_sources、get_monitor_results、get_monitor_answer、suggest_monitor_prompts、
get_monitor_alerts、test_monitor_alert)。書き込み系は変更操作として注釈され、create_monitor と
run_monitor は呼び出し前にクレジットを消費することを明示します。
上限
ボリュームを増やす前に料金とエンジンリファレンスを確認してください。