> ## Documentation Index
> Fetch the complete documentation index at: https://docs.querying.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# AI検索エンジン: 回答、引用、レスポンスフィールド

> すべてのtaskTypeについて、読むpayloadフィールド、返す内容、実際に効くincludeフラグ。

`taskType` がエンジンを選びます。結果を包むエンベロープはすべてのエンジンで同じで、異なるのはその中の
`response` オブジェクトです。

<Note>
  **9つの回答サーフェスを提供しています**: `CHATGPT`、`GEMINI`、`PERPLEXITY`、`BING_COPILOT`、`GOOGLE`、
  `AIMODE`、`BING_SEARCH`、`NAVER_AI_BRIEF`、`NAVER_AI_TAB`。`GOOGLE_SERP` はAIによる概要なしのGoogle検索結果、
  `NAVER_SERP` はNAVERのウェブ文書結果、`REDDIT` はRedditの投稿とコメントを返します。
</Note>

## エンジンが読むpayloadフィールド

検証は `prompt` と `query` のどちらか一方があれば通り、すべてのエンジンがもう一方にフォールバックするため、
「違う」キーで送ったリクエストも実行されます。下の2つのカードは各エンジンが**最初に**読むフィールドで、
APIリファレンスに記載され、ダッシュボードのPlaygroundがそのエンジンに送るものです。

<CardGroup cols={2}>
  <Card title="promptを読む" icon="message-square">
    `CHATGPT` `PERPLEXITY` `GEMINI` `BING_COPILOT`

    `prompt` がなければ `query` を読みます。
  </Card>

  <Card title="queryを読む" icon="search">
    `GOOGLE` `AIMODE` `GOOGLE_SERP` `NAVER_AI_BRIEF` `NAVER_AI_TAB` `NAVER_SERP` `BING_SEARCH` `REDDIT`

    `query` がなければ `prompt` を読みます。
  </Card>
</CardGroup>

## レスポンスオプション

すべての回答エンジンは既定で生のレスポンスを含みます。省くには `payload.include.rawResponse` を `false` に
設定してください。その他のオプションはエンジンにより異なります。

| エンジン | 有効なフラグ | 生データの格納先 |
| - | - | - |
| `CHATGPT` | `markdown` `html` `rawResponse` `searchQueries` `ads` `shopping` | `rawResponse` |
| `PERPLEXITY` | `markdown` `rawResponse` `searchQueries` | `rawResponse` |
| `GEMINI` | `markdown` `rawResponse` | `rawResponse` |
| `BING_COPILOT` | `markdown` `rawResponse` | `rawResponse` |
| `BING_SEARCH` | `markdown` `rawResponse` | **`rawContent`**(結果ページのHTML) |
| `GOOGLE_SERP` | `rawResponse`(既定でオフ) | **`rawContent`**(結果ページのHTML) |
| `GOOGLE` `AIMODE` `NAVER_AI_BRIEF` `NAVER_AI_TAB` | `rawResponse` | **`rawContent`** |
| `NAVER_SERP` `REDDIT` | なし | 生ペイロードなし |

<Note>
  `rawResponse` には解析済みのストリームイベントが入ります。Google のAIによる概要、AIモード、Bing 検索は
  レンダリングされたページHTML全体を `rawContent` として返し、NAVER は元のイベントストリームを `rawContent`
  文字列として返します。これらのフィールドは大きくなることがあるため、構造化された結果だけが必要なら
  `include.rawResponse: false` を設定してください。例外は `GOOGLE_SERP` で、`include.rawResponse: true` の
  ときだけページHTMLを返します。
</Note>

`markdown` を返すすべてのエンジンでそれがフラグというわけではありません。NAVER は `markdown` を常に返します。
NAVER ではそれが `text` のコピーではなく、回答の本来の形だからです。

<Warning>
  効かないフラグはエラーもフィールドもなく黙って無視されます。特に `html` は、複数のエンジンがフラグを
  受け付けても、実際に生成するのは `CHATGPT` だけです。
</Warning>

## レスポンスの形

<AccordionGroup>
  <Accordion title="PERPLEXITY">
    `prompt` を読みます。常に `text` と `sources[]` を返します。

    ```json theme={null}
    {
      "text": "...",
      "sources": [{ "position": 1, "url": "https://...", "label": "...", "description": "..." }],
      "markdown": "...",
      "rawResponse": ["..."],
      "related_queries": ["..."],
      "search_model_queries": ["..."]
    }
    ```

    Perplexity が表示したときのみ付く追加フィールド: `videos`、`images`、`hotels`、`places`、`shopping_cards`。
  </Accordion>

  <Accordion title="GEMINI">
    `prompt` を読みます。常に `text` と `sources[]` を返します。

    ```json theme={null}
    {
      "text": "...",
      "sources": [{ "position": 1, "url": "https://...", "label": "...", "confidence_level": "..." }],
      "markdown": "...",
      "rawResponse": ["..."],
      "model": "...",
      "shoppingCards": [{ "title": "...", "position": 1, "price": { "value": 249.99, "currency": "$", "raw": "$249.99" }, "store": "...",
                         "rating": 4.7, "reviews": "14292", "thumbnail": "https://...", "productLink": "https://google.com/search?...&ibp=oshop..." }],
      "inlineProducts": [{ "title": "...", "position": 1, "productLink": "https://google.com/search?...&ibp=oshop..." }]
    }
    ```

    回答に商品が表示されると、`shoppingCards`（Gemini が回答内に表示する商品カード）と `inlineProducts`（文中でリンクされた商品名）が GOOGLE の概要と同じフィールドで含まれます。カード名は `text` にも残り、文中の商品リンクは Google の商品ページを指します。
  </Accordion>

  <Accordion title="GOOGLE: SERPエンベロープ内のAIによる概要">
    `query` を読みます。単体のAIによる概要オブジェクトでは**なく**、AIによる概要をnullableメンバーの1つとして
    持つ検索結果エンベロープです。

    ```json theme={null}
    {
      "aioverview": {
        "text": "...",
        "sources": [{ "position": 1, "url": "https://..." }],
        "shoppingCards": [{ "title": "...", "position": 1, "price": { "value": 299.99, "currency": "$", "raw": "$299.99" },
                            "oldPrice": { "value": 399.99, "currency": "$", "raw": "$399.99" }, "store": "...",
                            "rating": 4.5, "reviews": "2.3K", "thumbnail": "https://...", "productLink": "https://www.google.com/search?ibp=oshop..." }],
        "inlineProducts": [{ "title": "...", "position": 1, "productLink": "https://www.google.com/search?ibp=oshop..." }]
      },
      "organicResults": [{ "...": "..." }],
      "peopleAlsoAsk": [{ "...": "..." }],
      "relatedSearches": [{ "...": "..." }],
      "knowledgeGraph": { "...": "..." },
      "ads": [{ "...": "..." }],
      "serp": { "topStories": [], "videoResults": [], "localResults": [] }
    }
    ```

    <Warning>
      `aioverview: null` は、そのクエリで **Google がAIによる概要を表示しなかった**ことを示す公式のシグナルです。
      エラーではなく、周囲のSERPフィールドはそのまま設定されます。
    </Warning>

    トップレベルの `text` と `sources` は `aioverview.text` と `aioverview.sources` を複製した**非推奨のエイリアス**
    です。以前の単体AIO形式の利用者が動き続けるために残されています。新しいコードでは `aioverview.*` を読んでください。

    SERPパネルは存在しない場合、`null` や `[]` ではなく**省略**されます。すべてを任意フィールドとして扱ってください。

    `aioverview.shoppingCards` と `aioverview.inlineProducts` は、概要に商品が表示されたときだけ含まれます。カードは Google が回答の横に表示する商品タイル、インライン商品は文中でリンクされた商品名です。カードのタイトルは `aioverview.text` にも含まれます。`price.currency` は表示どおりの記号（`$`、`₩`、`円`）、`reviews` は Google の省略表記（`2.3K`）のまま、`productLink` は Google の商品ページです。
  </Accordion>

  <Accordion title="AIMODE: Google AIモード">
    `query` を読みます。固定形で、markdownはありません。

    ```json theme={null}
    {
      "text": "...",
      "sources": [{ "position": 1, "url": "https://...", "label": "..." }],
      "shoppingCards": [{ "...": "..." }],
      "inlineProducts": [{ "...": "..." }]
    }
    ```

    `shoppingCards` と `inlineProducts` は回答に商品が表示されたときだけ含まれ、フィールドは GOOGLE の概要と同じです。
  </Accordion>

  <Accordion title="GOOGLE_SERP: AIによる概要なしのGoogle検索結果">
    `query` を読みます。google.com の結果ページ1つを `GOOGLE` と同じエンベロープで返しますが、AIによる概要は
    含みません。`aioverview`、`text`、`sources` はありません。概要を待たないため `GOOGLE` より速く、1クレジットです。
    深いページは `payload.page`(1-10)で指定します。

    ```json theme={null}
    {
      "organicResults": [
        { "position": 11, "title": "...", "link": "https://...", "displayedLink": "...", "snippet": "...", "page": 2 }
      ],
      "peopleAlsoAsk": [{ "...": "..." }],
      "relatedSearches": [{ "...": "..." }],
      "ads": [{ "...": "..." }],
      "page": 2
    }
    ```

    `organicResults` は常に存在します。`position` はページをまたいで数えるため、2ページ目の最初の結果は11で、
    すべての行に取得元の `page` が付きます。`organicResults` が空なら、Google 自体がそのクエリに結果を返さな
    かったことを意味します。その他のパネルはページにない場合は省略されます。結果ページのHTMLも受け取るには
    `include.rawResponse: true` を設定してください。`rawContent` として返ります。
  </Accordion>

  <Accordion title="NAVER_SERP: NAVER検索結果">
    `query` を読みます。NAVERのウェブ文書タブ(웹문서)の結果を1ページ(1ページ15件)、1クレジットで返します。
    深いページは `payload.page`(1-10)で指定します。`country` の既定値は `KR` です。

    ```json theme={null}
    {
      "organicResults": [
        { "position": 16, "title": "...", "link": "https://...", "displayedLink": "example.com›path",
          "snippet": "...", "page": 2 }
      ]
    }
    ```

    `position` はページをまたいで数えるため、2ページ目の最初の文書は16です。完了したタスクで `organicResults` が
    空の場合は、NAVER自体が文書を返さなかったことを意味します。NAVERが年齢確認の裏に結果を隠した場合は、
    `type` が `age_verification_required` の `notice` もレスポンスに含まれます。

    検索の代わりにNAVERのページを1つ読むには、`"action": "page"` と naver.com の `url`(ブログ、カフェ、ニュース、
    用語、知恵袋(kin)などあらゆる naver.com ページ)を送ります。レスポンスは `{ type, url, title, text, images, truncated }`
    で、ページにあれば `author`、`publishedAt`、`cafeName` が加わります。`text` は `maxChars`(1,000-50,000、既定
    20,000)で切り詰められます。受け付けるのは https の naver.com URL のみで(それ以外は422)、naver.com の外へ出る
    リダイレクトはタスクを失敗させます。会員しか読めないカフェ記事も同様です。

    このエンジンは生ペイロードを返さないため、`include` フラグは効果がありません。
  </Accordion>

  <Accordion title="REDDIT: Redditの投稿、コメント、フィード">
    `query` を読み、1クレジットでRedditの投稿を検索します。1つのサブレディットだけを検索するには `subreddit`
    (`r/` を除いた名前)を追加します。

    ```json theme={null}
    {
      "results": [
        { "postId": "1uzk9m4", "title": "...", "url": "https://www.reddit.com/r/.../comments/1uzk9m4/...",
          "subreddit": "AskRunningShoeGeeks", "preview": "..." }
      ]
    }
    ```

    `query` の代わりに投稿の `url`(`https://www.reddit.com/r/{subreddit}/comments/{postId}/...`)を送ると、その投稿と
    コメントの最初のページ(20-25件程度)を読みます。`commentSort`(既定 `top`、または `new`、`controversial`、
    `old`、`qa`)がそのページの並び順を決め、`commentMaxDepth` は深い返信を除きます(`0` ならトップレベルの
    コメントのみ)。

    ```json theme={null}
    {
      "post": { "postId": "1uer62n", "title": "...", "body": "...", "author": "...", "subreddit": "...",
                "score": 12, "upvoteRatio": 0.9, "commentCount": 48, "createdAt": "2026-06-24T21:51:21.586000+0000",
                "archived": false, "url": "https://www.reddit.com/r/..." },
      "comments": {
        "availableCount": 24, "returnedCount": 24,
        "items": [{ "commentId": "otlz8m5", "author": "...", "body": "...", "score": 5, "depth": 0,
                    "isSubmitter": false, "createdAt": "...", "url": "https://www.reddit.com/r/..." }]
      }
    }
    ```

    `post.commentCount` は投稿の全コメント数で、`comments` は実際に読んだページです。`archived` は投稿の経過日数から
    推定します(Reddit は約180日後にコメントをロックします)。`"action": "feed"` は `subreddit` の最新投稿を(指定が
    なければ r/popular)、`"action": "user_posts"` と `username` はそのユーザーの投稿を一覧します。どちらも検索と同じ
    `results` を `limit`(既定25)件まで返します。

    完了したタスクで `results` が空なら、Reddit で何も見つからなかったことを意味します。この
    エンジンは生ペイロードを返さないため、`include` フラグは効果がありません。
  </Accordion>

  <Accordion title="CHATGPT">
    `prompt` を読みます。このAPIで最も情報量の多いレスポンスで、すべての `include` フラグが効く唯一の
    エンジンです。すべてのフラグは既定でオンです。

    ```json theme={null}
    {
      "text": "...",
      "model": "...",
      "sources": [{ "position": 1, "url": "https://...", "label": "...", "footnote": "...", "datePublished": "..." }],
      "markdown": "...",
      "html": "...",
      "rawResponse": ["..."],
      "searchQueries": ["..."],
      "shoppingCards": [{ "...": "..." }],
      "inlineProducts": [{ "...": "..." }],
      "ads": [{ "...": "..." }],
      "entities": { "...": "..." },
      "citationPills": [{ "...": "..." }]
    }
    ```

    ChatGPT はマルチターンの会話にも対応しています。下のマルチターンの節を参照してください。
  </Accordion>

  <Accordion title="BING_COPILOT: Bing Copilot">
    `prompt` を読みます。copilot.com の Copilot チャットの回答を、ウェブ検索を常に有効にした状態で返します。
    アカウントやログインは使いません。`COPILOT` も引き続き受け付け、`BING_COPILOT` として実行します。

    ```json theme={null}
    {
      "text": "Solar panels cut electricity bills ...",
      "sources": [{ "position": 1, "url": "https://...", "label": "..." }],
      "shoppingCards": [{ "type": "shoppingProducts", "layout": "inline", "products": [{ "position": 1, "name": "...", "url": "https://...", "price": { "amount": 69, "currencySymbol": "$" } }] }],
      "map": [{ "position": 1, "name": "...", "placeId": "...", "location": { "address": "...", "latitude": 40.75, "longitude": -73.98 }, "layerLabel": "..." }],
      "searchQueries": ["..."],
      "markdown": "...",
      "rawResponse": [{ "event": "appendText", "text": "..." }]
    }
    ```

    `sources` は Copilot が引用したページです。ショッピングの質問では引用せずに商品カードだけを返すことが多く、
    `sources: []` も正常な回答です。`shoppingCards`、`map`、`searchQueries` は常に存在し、Copilot が生成しなかった
    場合は空です。商品の位置はすべてのカードを通して数えます。`markdown` は `include.markdown` が `true` のときに
    返されます。
  </Accordion>

  <Accordion title="BING_SEARCH: AI要約付きのBing検索結果">
    `query` を読みます。bing.com の結果ページを `GOOGLE` と同じエンベロープで返します。自然検索結果、広告、
    関連検索に加え、Bing がその上に表示するAI要約を `aioverview` として含みます。アカウントやログインは使いません。
    `BING` と `BING_COPILOT_SEARCH` も引き続き受け付け、`BING_SEARCH` として実行します。

    ```json theme={null}
    {
      "surface": "bing_search",
      "organicResults": [
        { "position": 1, "title": "...", "link": "https://...", "displayedLink": "...", "snippet": "...", "date": "Aug 3, 2026", "page": 1 }
      ],
      "ads": [{ "position": 1, "title": "...", "link": "https://...", "displayedLink": "...", "description": "...", "blockPosition": "top" }],
      "relatedSearches": [{ "query": "...", "link": "https://www.bing.com/search?q=..." }],
      "aioverview": {
        "text": "Heat pumps move heat instead of generating it [1]. ...",
        "sources": [{ "position": 1, "url": "https://...", "label": "..." }],
        "citationPills": [
          { "citationPillId": 1, "position": 1, "url": "https://...", "label": "...", "domain": "example.com" }
        ],
        "markdown": "..."
      },
      "rawContent": "<!DOCTYPE html>..."
    }
    ```

    <Warning>
      `aioverview: null` は、そのクエリで **Bing がAI要約を表示しなかった**ことを意味します。エラーではなく、
      周囲の結果フィールドはそのまま設定されます。
    </Warning>

    `aioverview.text` の `[n]` は `sources[n-1]` を指します。`citationPills[]` の各エントリはインライン引用1つの
    背後にあるソース1つで、一緒に引用されたソースは同じ `citationPillId` を共有します。要約にインライン引用が
    なければこのフィールドは省略されます。`markdown` は見出し、リスト、表を保持し、`include.markdown` が `true`
    のときに返されます。

    Bing は要約を表示すると自然検索結果の大半を次のページへ移すため、要約ありでは `organicResults` が2、3件、
    なしでは約9件と考えてください。`ads` と `relatedSearches` はページにない場合は省略されます。`rawContent` は
    結果ページ全体で、`include.rawResponse: false` で省けます。トップレベルの `text` と `sources` は
    `aioverview.text` と `aioverview.sources` の非推奨のコピーです(要約がなければ空)。

    Bing はすべてのクエリに要約を書くわけではありません。「寒冷地でヒートポンプはどう動くか」のような検索型の
    質問は、「2つの利点を説明して…」のような指示型よりはるかに多く要約を得られ、英語以外のカバレッジは
    限られています。
  </Accordion>

  <Accordion title="NAVER_AI_BRIEF と NAVER_AI_TAB">
    どちらも `query` を読み、同じレスポンス形を共有します。

    ```json theme={null}
    {
      "text": "...",
      "sources": [{ "position": 1, "url": "https://...", "label": "...", "description": "..." }]
    }
    ```

    `NAVER_AI_BRIEF` はNAVERのSERPに条件付きで現れるAI要約ボックスで、クエリによっては表示されません。
    `NAVER_AI_TAB` は常時利用できる対話型のAIタブで、NAVERの主要サーフェスです。その `text` はmarkdown形式です。

    `NAVER_AI_BRIEF` は、要約ボックスの下にあるウェブ文書も `organicResults` として返します。`GOOGLE` がAIによる
    概要と並べて返すのと同じフィールドです。

    ```json theme={null}
    {
      "organicResults": [
        { "position": 1, "title": "...", "link": "https://...", "displayedLink": "example.com",
          "snippet": "...", "date": "2026.7.30.", "page": 1 }
      ]
    }
    ```

    要約と文書は異なるNAVERのエンドポイントから取得するため、`NAVER_AI_BRIEF` は `NAVER_AI_TAB` と同じ2クレジット
    です。文書の取得に失敗した場合、フィールドは空ではなく存在しません。

    <Note>
      `NAVER` は `NAVER_AI_BRIEF` の非推奨エイリアスです。明示的な名前を使ってください。
    </Note>
  </Accordion>
</AccordionGroup>

## マルチターン(ChatGPT)

ChatGPT は会話を続けられます。両方のフィールドを省略すると、既定の単発動作になります。

<Steps>
  <Step title="スレッドを開始する">
    `newConversation: true` を送ります。レスポンスに `conversationId` が含まれます。

    ```json theme={null}
    { "taskType": "CHATGPT", "payload": { "prompt": "...", "newConversation": true } }
    ```
  </Step>

  <Step title="続ける">
    次のターンでその `conversationId` を送り返します。

    ```json theme={null}
    { "taskType": "CHATGPT", "payload": { "prompt": "...", "conversationId": "..." } }
    ```
  </Step>
</Steps>

<Warning>
  会話は作成したデバイスに紐づき、約2時間で期限切れになります。古い `conversationId` では再開できません。
</Warning>

## エンジンガイド

* [ChatGPT](https://querying.ai/ja/engines/chatgpt)
* [Gemini](https://querying.ai/ja/engines/gemini)
* [Perplexity](https://querying.ai/ja/engines/perplexity)
* [Bing Copilot](https://querying.ai/ja/engines/bing-copilot)
* [Google AI による概要](https://querying.ai/ja/engines/google-ai-overviews)
* [Google AI モード](https://querying.ai/ja/engines/google-ai-mode)
* [NAVER AI ブリーフィング](https://querying.ai/ja/engines/naver-ai-brief)
* [NAVER AI タブ](https://querying.ai/ja/engines/naver-ai-tab)
