{
  "openapi": "3.1.1",
  "paths": {
    "/v1/suggest-keywords": {
      "post": {
        "description": "サジェストキーワード取得。\n\nあるキーワードの関連語を広く集めたいときにまず使う。\nGoogle/YouTube/Amazon/楽天/Bing等から、modesパラメータで指定（複数可）した検索エンジンのサジェストを返す。\n\nGoogleは汎用的、SEO目的に適する。Bingは汎用的だがユーザー層が高齢者層寄り。\nYouTube,Google動画は動画リサーチに、Amazonや楽天はECにおすすめ。\n\nサジェストには、検索エンジンが元キーワードを入力した人の検索意図を汲み取って提案する「関連性の高い複合キーワード」が表示される。\n\nキーワードリサーチの最初期に使用すると、ユーザーがどのような掛け合わせワードで検索しているのか、市場需要や検索意図を幅広く把握できる。\n\n通常最大1,000件前後、increaseKeyword=trueで最大10,000件前後のKWを取得。\n\n月間検索数・SEO難易度・CPC・競合性などのSEO指標付き。\nSEO難易度はデータがない場合が多い。またSEO指標は最新でない可能性がある。\nこの指標を重要視する用途なら、データ取得後にPOST /v1/search-volumeで最新のSEO指標を取得すること。\n\nさらに大量のキーワードが必要な場合は POST /v1/related-keywordsを使う。\n元キーワードと検索意図の近いキーワードを取得したい場合は POST /v1/ranking-keywordsを使う。\n検索意図を深掘りしたい場合は、元キーワードを調べた人が次に調べるKW・抱えている疑問を取得できるPOST /v1/other-keywordsを併用する。\n\n1リクエストあたり1.5クレジットを消費。",
        "operationId": "SuggestKeywordsController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SuggestKeywordsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuggestKeywordsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "サジェストキーワード取得",
        "tag": "サジェストキーワード取得",
        "tags": [
          "サジェストキーワード取得"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/related-keywords": {
      "post": {
        "description": "関連キーワード取得。\n\n指定キーワードに部分一致するキーワードをラッコのDBから大量に取得する。\n関連語が欲しい場合はまずPOST /v1/suggest-keywordsを使い、さらに大量にKWを取得したい場合にのみ当機能を使う。\n\n最大25,000件を取得。月間検索数・SEO難易度・CPC・競合性などのSEO指標付きで返却。\nSEO難易度はデータがない場合が多い。またSEO指標は最新でない可能性がある。\nこの指標を重要視する用途なら、データ取得後にPOST /v1/search-volumeで最新のSEO指標を取得すること。\n\n検索意図の近いキーワードを取得したい場合はPOST /v1/ranking-keywordsを、\nLSIキーワードを取得したい場合はPOST /v1/other-keywordsを使う。\n\n1リクエストあたり1.5クレジットを消費。",
        "operationId": "RelatedKeywordsController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RelatedKeywordsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelatedKeywordsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "関連キーワード取得",
        "tag": "関連キーワード取得",
        "tags": [
          "関連キーワード取得"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/other-keywords": {
      "post": {
        "description": "潜在的な検索キーワード/質問（LSI/PAA）取得。\n\nそのキーワードで検索する人の次の検索行動・疑問を予測したり、SEO記事設計やユーザーニーズの深掘りに役立つ。\n\n潜在的な検索キーワード（LSI・Google検索結果の「他の人はこちらも検索」に表示されるキーワード）と「他の人はこちらも質問」（PAA）を最大2階層まで、それぞれ数十件程度を再帰取得する。\nLSIには月間検索数・SEO難易度・CPC・競合性などのSEO指標が付く。\nSEO難易度はデータがない場合が多い。またSEO指標は最新でない可能性がある。\nこの指標を重要視する用途なら、データ取得後にPOST /v1/search-volumeで最新のSEO指標を取得すること。\n\nimportance(high/medium/low)は再帰取得中の出現回数で決まる。\n多く登場するほど高く、Googleがより広く提示しているキーワード/質問であることを示す。\n\nLSIはGoogleがそのキーワードを調べた人が次に調べると予測するキーワード。\nPAAはGoogleがそのキーワードを調べた人が気になっていると予測する質問文・悩み。\n\nimportanceの高いLSI/PAAは、元の検索キーワードを調べる人にとって関心の高い・重要な事柄である可能性が高い。\n\n関連語をより多く取得したい場合は POST /v1/suggest-keywords を使う。\n指定キーワードを含む質問を大量に取得したい場合はPOST /v1/question-searchを使う。\n\n1リクエストあたり22.5クレジットを消費。",
        "operationId": "OtherKeywordsController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OtherKeywordsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OtherKeywordsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "潜在的な検索キーワード/質問（LSI/PAA）取得",
        "tag": "潜在的な検索キーワード/質問（LSI/PAA）取得",
        "tags": [
          "潜在的な検索キーワード/質問（LSI/PAA）取得"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/question-search": {
      "post": {
        "description": "よくある質問検索。\n指定キーワードを含む質問を、出現頻度順に最大200件取得する。\nQ&A/SEO記事作成や、AIO/GEO/LLMO対策の際、質問サンプルを得るのに有用。\n\nラッコキーワードのDBに蓄積した質問文を、出現頻度の高い順に返却する。\nユーザーがGoogle検索AIモードや、チャットAIに入力する可能性の高い質問・疑問を網羅的に集められる。\n\nそのキーワードを検索したときにGoogle検索結果に表示される質問を取得したい場合はPOST /v1/other-keywordsを使う。\n\n1リクエストあたり3クレジットを消費。",
        "operationId": "QuestionSearchController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQuestionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchQuestionResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword must be a string"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "よくある質問検索取得",
        "tag": "よくある質問検索",
        "tags": [
          "よくある質問検索"
        ],
        "validationErrorExample": [
          "keyword must be a string"
        ]
      }
    },
    "/v1/ranking-keywords": {
      "post": {
        "description": "同時ランクインキーワード取得。\nGoogle検索上位ページが他にSEO流入を獲得しているKWを抽出。検索意図の近い・遠い関連語の発見に使う。\n\n最大5,000件取得。月間検索数・SEO難易度・CPC・競合性などのSEO指標付き。\n\nSEO指標は最新でない可能性がある。\nこの指標を重要視する用途なら、データ取得後にPOST /v1/search-volumeで最新のSEO指標を取得すること。\n\n指定キーワードで上位ページ群がランクインしている他のキーワードを集めるため、検索意図の近いキーワードを発見できる。\nsearchTop / searchRangeの範囲を狭めれば検索意図の近いキーワードが、広げれば検索意図の遠いキーワードの抽出が行える。\n\nrelevanceの高いキーワードは、検索意図が近い可能性が高いため、一つのSEO記事で同時にGoogle上位ランクインを狙える可能性が高い。\nrelevanceの低いキーワードは、検索意図が遠い可能性が高いため、元キーワードとは別の記事として上位ランクインを狙うことが望ましい。\nsearchTop / searchRangeを広げると、relevanceの低いキーワードを多く取得できるため、既存キーワードと被りづらい・新しいキーワードを発見するのに役立つ。\n\n特定サイト・ページがSEO流入を獲得しているキーワードを調べたい場合は POST /v1/influx-keywords を、\nより多くの関連語を取得したい場合は POST /v1/suggest-keywords を使う。\n\n1リクエストあたり4.5クレジットを消費。",
        "operationId": "RankingKeywordsController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RankingKeywordsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RankingKeywordsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword should not be empty"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "同時ランクインキーワード取得",
        "tag": "同時ランクインキーワード",
        "tags": [
          "同時ランクインキーワード"
        ],
        "validationErrorExample": [
          "keyword should not be empty"
        ]
      }
    },
    "/v1/search-volume": {
      "post": {
        "description": "一括キーワード調査を登録する。\nキーワードリストを渡すと非同期で月間検索数・SEO難易度・CPC・競合性などを調査開始する。\n\n処理はバックグラウンドで行われるため、以下の手順で結果を取得すること:\n1. 戻り値の requestId を控える\n2. GET /v1/search-volume/{requestId}/status で完了を待つ（ポーリング推奨: 初回は30秒後、以降30秒間隔）\n3. isCompleted=true になったら POST /v1/search-volume/{requestId}/results で結果を取得する\n\n通常は10秒程度で取得完了するが、seoDifficultyをONにした場合、最大60分程度時間がかかる。\nONの場合、一定の時間が経過してから処理ステータスを確認することを推奨する。\nSEO以外の目的で当機能を使う場合、時短のためseoDifficultyをOFFすることを推奨する。\n\n1キーワードあたり0.03クレジットを消費。seoDifficultyがONの場合、追加で1キーワードあたり0.75クレジットを消費する。ただし、1リクエストの消費クレジットの合計が15クレジットに満たない場合は15クレジットを消費する。",
        "operationId": "SearchVolumeHistoryController_register",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchVolumeHistoryDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "登録成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchVolumeHistoryResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keywords is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "登録成功",
        "summary": "一括キーワード調査登録",
        "tags": [
          "一括キーワード調査"
        ],
        "validationErrorExample": [
          "keywords is a required field"
        ]
      }
    },
    "/v1/search-volume/histories": {
      "get": {
        "description": "一括キーワード調査の過去リクエスト履歴一覧を取得する。取得結果から requestId を取り出し、GET /v1/search-volume/{requestId}/status で完了確認 / POST /v1/search-volume/{requestId}/results で結果取得が可能。\n- ソート順: createdAt 降順固定(新しい順)\n- 全体ステータス (status) は searchVolume と seoDifficulty の両方が processed なら completed(seoDifficulty=skip も完了扱い)。noiseReduction は判定対象外。\n\nクレジットは消費しない。",
        "operationId": "SearchVolumeHistoryController_listHistories",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "取得件数。1〜100の整数を指定する。省略時は 100。",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 100,
              "example": 100,
              "type": "number"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "取得開始位置。0以上の整数を指定する。省略時は 0。offset + limit が 50000 を超える指定は不可。",
            "schema": {
              "minimum": 0,
              "maximum": 9007199254740991,
              "default": 0,
              "example": 0,
              "type": "number"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "ステータスフィルタ。completed: 全処理完了 / processing: 処理中。省略時は全件取得。",
            "schema": {
              "$ref": "#/components/schemas/SearchVolumeHistoryOverallStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchVolumeHistoriesResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Invalid query parameters"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証失敗",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "取得成功",
        "summary": "一括キーワード調査履歴一覧取得",
        "tags": [
          "一括キーワード調査"
        ],
        "validationErrorExample": [
          "Invalid query parameters"
        ]
      }
    },
    "/v1/search-volume/{requestId}/status": {
      "get": {
        "description": "POST /v1/search-volume で登録した一括キーワード調査の処理ステータスを確認する。\nisCompleted が true になるまでポーリングすること（推奨間隔: 30秒）。\nisCompleted=true になったら POST /v1/search-volume/{requestId}/results で結果を取得できる。\n\n何回かステータスをチェックしてもisCompletedがtrueにならない場合は一定の時間が経ってから再度結果をチェックすることを推奨する。\n（利用が混雑している場合は、取得完了まで数時間以上時間がかかるケースがあるため）\n\nクレジットは消費しない。",
        "operationId": "SearchVolumeHistoryController_getStatus",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "description": "POST /v1/search-volume で取得したリクエストID",
            "schema": {
              "example": 1234567,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "ステータス取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchVolumeStatusResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Invalid requestId"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証失敗",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "ステータス取得成功",
        "summary": "一括キーワード調査ステータス取得",
        "tags": [
          "一括キーワード調査"
        ],
        "validationErrorExample": [
          "Invalid requestId"
        ]
      }
    },
    "/v1/search-volume/{requestId}/results": {
      "post": {
        "description": "POST /v1/search-volume で登録した一括キーワード調査の結果を取得する。事前に GET /v1/search-volume/{requestId}/status で処理完了を確認してから呼び出す。フィルタ・ソート・件数制限が可能。\n\nクレジットは消費しない。",
        "operationId": "SearchVolumeHistoryController_getResults",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "description": "POST /v1/search-volume で取得したリクエストID",
            "schema": {
              "example": 1234567,
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchVolumeResultsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "データ取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchVolumeResultsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Invalid request parameters"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証失敗",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "データ取得成功",
        "summary": "一括キーワード調査データ取得",
        "tags": [
          "一括キーワード調査"
        ],
        "validationErrorExample": [
          "Invalid request parameters"
        ]
      }
    },
    "/v1/metadata/locations": {
      "get": {
        "countryCodeDescription": "ISO 3166-1 alpha-2 国コードでの絞り込み（完全一致・大文字小文字無視 例: JP）。指定すると国レベルに加え市区町村など下位レベルの地域も返却する。locationName と併用した場合はAND条件。省略可。",
        "description": "POST /v1/search-rank / POST /v1/search-volume の location パラメータに指定可能な地域名の一覧を取得する。未対応の地域名でエラーになった場合、この一覧から正しい地域名を確認する。一覧が多い場合は locationName（地域名・部分一致）/ countryCode（ISO 3166-1 alpha-2 国コード・完全一致）で絞り込める（複数指定時はAND条件）。フィルタ未指定時は国レベルのみ、フィルタ指定時は国レベルに加え市区町村レベルの地域も返る。\n\nクレジットは消費しない。認証は不要。",
        "locationNameDescription": "地域名での絞り込み（部分一致・大文字小文字無視）。指定すると国レベルに加え市区町村など下位レベルの地域も返却する。省略可。",
        "operationId": "SearchVolumeMetadataController_getLocations",
        "parameters": [
          {
            "name": "locationName",
            "required": false,
            "in": "query",
            "description": "地域名での絞り込み（部分一致・大文字小文字無視）。指定すると国レベルに加え市区町村など下位レベルの地域も返却する。省略可。",
            "x-nestjs_zod-parent-additional-properties": false,
            "schema": {
              "example": "Japan",
              "type": "string"
            }
          },
          {
            "name": "countryCode",
            "required": false,
            "in": "query",
            "description": "ISO 3166-1 alpha-2 国コードでの絞り込み（完全一致・大文字小文字無視 例: JP）。指定すると国レベルに加え市区町村など下位レベルの地域も返却する。locationName と併用した場合はAND条件。省略可。",
            "x-nestjs_zod-parent-additional-properties": false,
            "schema": {
              "example": "JP",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataLocationsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "countryCode must be an ISO 3166-1 alpha-2 code (two letters)"
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "successDescription": "取得成功",
        "summary": "地域一覧取得",
        "tags": [
          "メタデータ"
        ],
        "validationErrorExample": [
          "countryCode must be an ISO 3166-1 alpha-2 code (two letters)"
        ]
      }
    },
    "/v1/metadata/languages": {
      "get": {
        "description": "POST /v1/search-rank / POST /v1/search-volume の language パラメータに指定可能な言語名の一覧を取得する。未対応の言語名でエラーになった場合、この一覧から正しい言語名を確認する。言語名は取得した一覧の値（例: Japanese）をそのまま指定する。件数が限られるため絞り込みフィルタは持たない。\n\nクレジットは消費しない。認証は不要。",
        "operationId": "SearchVolumeMetadataController_getLanguages",
        "parameters": [],
        "responses": {
          "200": {
            "description": "取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MetadataLanguagesResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "successDescription": "取得成功",
        "summary": "言語一覧取得",
        "tags": [
          "メタデータ"
        ]
      }
    },
    "/v1/influx-keywords": {
      "post": {
        "description": "獲得キーワード調査。\n指定ドメイン/URLがGoogleからSEO流入を獲得しているキーワードを取得。競合のSEO調査・自サイト分析に使う。\n\n最大10,000件取得。\n対象サイト・ページが各キーワードで何位にランクインし、どれだけ推定流入数を得ているかを返す。\n\n検索順位やSEO指標は最新でない可能性がある。\nこの指標を重要視する用途なら、データ取得後にPOST /v1/search-volumeで最新のSEO指標を取得するか、POST /v1/search-rankで最新の検索順位を取得すること。\n\n競合がSEO流入を獲得している主要なキーワードを調査するのに有用。\nまた、コンテンツギャップの調査にも役立つ。\n自サイト・競合サイトのデータを比較することで、\n競合がランクインしているが、自サイトがランクインできていないキーワードを把握できる。\n\nページ単位で集計したい場合は POST /v1/influx-pages を、\n指定ドメインの競合サイトを抽出したい場合はPOST /v1/competitiveを使う。\n\n1リクエストあたり4.5クレジットを消費。",
        "operationId": "InfluxKeywordsController_searchKeyword",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InfluxKeywordsKeywordDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InfluxKeywordsKeywordResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "urls must be a string"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "獲得キーワード調査取得",
        "tag": "獲得キーワード調査",
        "tags": [
          "獲得キーワード調査"
        ],
        "validationErrorExample": [
          "urls must be a string"
        ]
      }
    },
    "/v1/influx-pages": {
      "post": {
        "description": "獲得ページ調査。\n\n指定ドメイン/URLがGoogleからSEO集客できているページを取得。\n競合や自サイトの主力集客ページの把握に有用。\n\n最大10,000件取得。\n指定ドメインの各ページの合計推定流入数・合計集客価値(USD)・ランクインキーワード数・最もSEO流入を集めているキーワードを返す。\n\n検索順位やSEO指標は最新でない可能性がある。\nこの指標を重要視する用途なら、データ取得後にPOST /v1/search-volumeで最新のSEO指標を取得するか、POST /v1/search-rankで最新の検索順位＋SEO指標を取得すること。\n\n競合がすでにSEOで集客できているページは、Google検索のユーザーから需要がある情報が掲載されていることが推定できる。\n\n当機能で発見したページの、2位以降のSEO流入キーワードを確認したい場合はPOST /v1/influx-keywordsをmatchType=urlで使う。\n\n1リクエストあたり4.5クレジットを消費。",
        "operationId": "InfluxPagesController_searchPage",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InfluxPagesDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InfluxPagesResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "urls must be a string"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "獲得ページ調査取得",
        "tag": "獲得キーワード調査",
        "tags": [
          "獲得キーワード調査"
        ],
        "validationErrorExample": [
          "urls must be a string"
        ]
      }
    },
    "/v1/competitive": {
      "post": {
        "description": "競合サイト抽出。\n\n指定ドメインのSEOランクインキーワードが重複しているサイトを最大20件抽出する。\n競合サイトを把握するのに有用。\n\nキーワード重複率・推定流入数・集客価値・キーワード数・ページ数などの指標で競合サイトを比較分析できる。\n\n当機能で発見したサイトのSEO流入キーワードを調査したい場合はPOST /v1/influx-keywordsを、\n主要なSEO流入を獲得しているページを調査したい場合はPOST /v1/influx-pagesを使う。\n\n1リクエストあたり4.5クレジットを消費。",
        "operationId": "CompetitiveController_searchCompetitive",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompetitiveDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompetitiveResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "urls must be a string"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "競合サイト抽出",
        "tag": "獲得キーワード調査",
        "tags": [
          "獲得キーワード調査"
        ],
        "validationErrorExample": [
          "urls must be a string"
        ]
      }
    },
    "/v1/content-search": {
      "post": {
        "description": "集客コンテンツ検索。\n\n指定キーワードをタイトル/ディスクリプション/主なSEO流入キーワードに含むWEBページを検索する。\n寄稿/広告掲載先探しや、参考記事探し・競合コンテンツの把握に使う。\n\n最大5,000件取得。各ページの推定流入数・集客価値・ランクインキーワード数・トップキーワードなどのSEO指標を返す。\nSEO指標は最新でない可能性がある。\nこの指標を重要視する用途なら、データ取得後にPOST /v1/search-volumeで最新のSEO指標を取得すること。\n\ntopKeywordCollapseをtrueにした際のトップキーワードには、元キーワードをタイトル/ディスクリプションに含むページが、SEO流入を獲得している主要なキーワードが重複無しで抽出される。\n検索意図の近いキーワードを探したり、弱いサイトが意図せずランクインしているニッチキーワードを抽出したりするのに役立つ。\n\n当機能で発見したページの、2位以降のSEO流入キーワードを確認したい場合はPOST /v1/influx-keywordsをmatchType=urlで使う。\n\n1リクエストあたり4.5クレジットを消費。",
        "operationId": "ContentSearchController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentSearchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "集客コンテンツ検索",
        "tag": "集客コンテンツ検索",
        "tags": [
          "集客コンテンツ検索"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/headline": {
      "post": {
        "description": "見出し抽出。指定キーワードのGoogle検索上位ページの見出し（h1〜h6）を抽出する。\n\nそのキーワードでSEO上位表示するために必要な情報を分析したいときや、\n競合上位ページがどのようなオリジナルコンテンツを記事に含めているのかを把握するのに役立つ。\nSEO記事のタイトル/見出し/本文を作成する前に使うべき機能。\n\nページごと・上位ページ平均の文字数・見出し数なども返す。\n\nGoogleは、そのキーワードで検索するユーザーの悩みを解決できる可能性の高い記事を上位表示する。\nこのため上位ページ中で共通して出現する見出し/トピックは、そのキーワードを調べるユーザーにとって必要な情報である可能性が高い。\n\n上位ページの頻出単語（共起語）も欲しい場合はPOST /v1/co-occurrenceを併用する。\n\n1リクエストあたり3クレジットを消費。",
        "operationId": "HeadlineController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HeadlineDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeadlineResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "見出し抽出取得",
        "tag": "見出し抽出",
        "tags": [
          "見出し抽出"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/co-occurrence": {
      "post": {
        "description": "共起語取得。\n指定キーワードのGoogle検索上位ページから共起語（一緒に使われることが多い語）を抽出する。\n\nSEO記事を上位表示させるために記事に含めるべき単語を把握できる。\nSEO記事タイトル/見出し/記事本文を作成する前に使う。\n\n検索上位表示できているページを対象に、本文・タイトル・見出しでの出現回数やサイト数などの指標付きで返す。\n\nGoogleは、そのキーワードで検索するユーザーの悩みを解決できる可能性の高い記事を上位表示する。\nこのため検索上位ページ中で共通して出現する単語は、上位表示のために記事に盛り込むべき単語である可能性が高い。\n\n上位ページの見出し情報も欲しい場合はPOST /v1/headlineを併用する。\n\n1リクエストあたり3クレジットを消費。",
        "operationId": "CoOccurrenceController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CoOccurrenceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CoOccurrenceResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "共起語取得",
        "tag": "共起語取得",
        "tags": [
          "共起語取得"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/search-rank": {
      "post": {
        "description": "検索順位チェックを登録する。\nGoogle検索における検索順位および、KWの月間検索数/SEO難易度を取得できる（isSearchVolumeAndSeoDifficultyEnabledがONの場合）。\nキーワードリストとURL/ドメインを渡すと非同期で検索順位を調査開始する。\n\n処理はバックグラウンドで行われるため、以下の手順で結果を取得すること:\n1. 戻り値の requestId を控える\n2. GET /v1/search-rank/{requestId}/status で完了を待つ（ポーリング推奨: 初回は30秒後、以降30秒間隔）\n3. isCompleted=true になったら POST /v1/search-rank/{requestId}/results で結果を取得する\n\n通常は10件以内は数分以内、それ以外は60分以内程度で取得される。\n混雑時は数時間以上かかる場合もあるため、数分経過しても処理が完了しない場合は、\n一定の時間を置いてから処理ステータスを確認することを推奨する。\n\n1キーワードあたり0.9クレジットを消費（1〜30位取得）。31〜100位まで取得範囲を拡張する場合は、取得範囲を10位追加するごとに、1キーワードあたり0.3クレジットを追加消費する。",
        "operationId": "SearchRankHistoryController_register",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchRankHistoryDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "登録成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchRankHistoryResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keywords is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "登録成功",
        "summary": "検索順位チェック登録",
        "tags": [
          "検索順位チェック"
        ],
        "validationErrorExample": [
          "keywords is a required field"
        ]
      }
    },
    "/v1/search-rank/histories": {
      "get": {
        "description": "検索順位チェックの過去リクエスト履歴一覧を取得する。取得結果から requestId を取り出し、GET /v1/search-rank/{requestId}/status で完了確認 / POST /v1/search-rank/{requestId}/results で結果取得が可能。\n- ソート順: createdAt 降順固定(新しい順)\n- 全体ステータス (status) は serp が processed かつ searchVolumeAndSeoDifficulty が processed（順位のみ取得＝isSearchVolumeAndSeoDifficultyEnabled が false の場合は serp のみ）なら completed、それ以外は processing。\n\nクレジットは消費しない。",
        "operationId": "SearchRankHistoryController_listHistories",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "取得件数。1〜100の整数を指定する。省略時は 100。",
            "schema": {
              "minimum": 1,
              "maximum": 100,
              "default": 100,
              "example": 100,
              "type": "number"
            }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "取得開始位置。0以上の整数を指定する。省略時は 0。offset + limit が 50000 を超える指定は不可。",
            "schema": {
              "minimum": 0,
              "maximum": 9007199254740991,
              "default": 0,
              "example": 0,
              "type": "number"
            }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "ステータスフィルタ。completed: 全処理完了 / processing: 処理中。省略時は全件取得。",
            "schema": {
              "$ref": "#/components/schemas/SearchRankHistoryOverallStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchRankHistoriesResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Invalid query parameters"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証失敗",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "取得成功",
        "summary": "検索順位チェック履歴一覧取得",
        "tags": [
          "検索順位チェック"
        ],
        "validationErrorExample": [
          "Invalid query parameters"
        ]
      }
    },
    "/v1/search-rank/{requestId}/status": {
      "get": {
        "description": "POST /v1/search-rank で登録した検索順位チェックの処理ステータスを確認する。\nisCompleted が true になるまでポーリングすること（推奨間隔: 30秒）。\nisCompleted=true になったら POST /v1/search-rank/{requestId}/results で結果を取得できる。\n\n何回かステータスをチェックしてもisCompletedがtrueにならない場合は一定の時間が経ってから再度結果をチェックすることを推奨する。\n（利用が混雑している場合は、取得完了まで数時間以上時間がかかるケースがあるため）\n\nクレジットは消費しない。",
        "operationId": "SearchRankHistoryController_getStatus",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "description": "POST /v1/search-rank で取得したリクエストID",
            "schema": {
              "example": "01HQZX5Y4JMQK8XNQ7WVZXZ5Y4",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "ステータス取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchRankStatusResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Invalid requestId"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証失敗",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "ステータス取得成功",
        "summary": "検索順位チェックステータス取得",
        "tags": [
          "検索順位チェック"
        ],
        "validationErrorExample": [
          "Invalid requestId"
        ]
      }
    },
    "/v1/search-rank/{requestId}/results": {
      "post": {
        "description": "POST /v1/search-rank で登録した検索順位チェックの結果を取得する。事前に GET /v1/search-rank/{requestId}/status で処理完了を確認してから呼び出す。フィルタ・ソート・件数制限が可能。\n※ 非同期API（登録 → ステータス確認 → 結果取得の3ステップ）\n\nクレジットは消費しない。",
        "operationId": "SearchRankHistoryController_getResults",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "description": "POST /v1/search-rank で取得したリクエストID",
            "schema": {
              "example": "01HQZX5Y4JMQK8XNQ7WVZXZ5Y4",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchRankResultsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "データ取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchRankResultsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Invalid request parameters"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証失敗",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "データ取得成功",
        "summary": "検索順位チェック結果データ取得",
        "tags": [
          "検索順位チェック"
        ],
        "validationErrorExample": [
          "Invalid request parameters"
        ]
      }
    },
    "/v1/site-search": {
      "post": {
        "description": "サイト検索。\nコンテンツ・ドメイン・各種指標で関連サイトを検索し、推定流入数が多い順に取得する。\n\n最大100件取得。各サイトの推定検索流入数・集客価値(USD)・ランクインキーワード数・ページ数を返す。\n\nコンテンツフィルタ（filter.keyword）を使った場合、まず関連サイトを検索流入が多い順に最大100件抽出した後に他のフィルタが適用される。\nそのため、フィルタを掛け合わせて101〜200件目を取得することはできない（フィルタは抽出済み100件に対して掛かるため）。\nコンテンツフィルタ指定時は、関連コンテンツの推定流入数（relatedContent.estimatedTraffic）とコンテンツ関連性スコア（relatedContent.relevanceScore）も返す。\n\n特定サイトがSEO流入を獲得しているキーワードを調べたい場合は POST /v1/influx-keywords を、\n指定ドメインの競合サイトを抽出したい場合は POST /v1/competitive を使う。\n\n1リクエストあたり1.5クレジットを消費。",
        "operationId": "SiteSearchController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SiteSearchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SiteSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "filter must be an object"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "サイト検索",
        "tag": "サイト検索",
        "tags": [
          "サイト検索"
        ],
        "validationErrorExample": [
          "filter must be an object"
        ]
      }
    }
  },
  "info": {
    "title": "ラッコキーワードAPI",
    "description": "ラッコキーワードAPIの仕様です。\nスタンダードプランでAPIキー（最大5個）を発行することで利用できます。\n取得データは社内利用の範囲でご利用いただけます。サービスへの組み込み等をご検討の際はAPI利用ガイドライン・利用規約を厳守の上ご利用ください。\nMCPの設定方法や接続手順については、MCP設定ガイドをご覧ください。\n\nAPI Docs（JSON（OpenAPI）/ AI・プログラム向け）\nAPI Docs（Markdown / 人間向け）",
    "version": "1.11.0",
    "contact": {},
    "license": {
      "name": "License: Apache 2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "tags": [],
  "servers": [
    {
      "url": "https://api.rakkokeyword.com",
      "description": "本番環境"
    }
  ],
  "components": {
    "securitySchemes": {
      "X-API-Key": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "APIキーを指定してください"
      }
    },
    "schemas": {
      "SuggestKeywordsDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "サジェスト取得の元となる検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "modes": {
            "default": [
              "google"
            ],
            "description": "サジェストキーワードを取得する検索エンジン（複数選択可）。google / bing / youtube / googleVideo / amazon / rakuten / googleShopping / googleImage から選択。省略時は google のみ。",
            "example": [
              "google",
              "bing"
            ],
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "google",
                "bing",
                "youtube",
                "googleVideo",
                "amazon",
                "rakuten",
                "googleShopping",
                "googleImage"
              ]
            }
          },
          "increaseKeyword": {
            "default": false,
            "description": "キーワード増量オプション。true にすると、より多くのサジェストキーワードを取得する。SEOキーワードを網羅的に取得したい場合は、limitを指定せずにtrueにすること。省略時は false。",
            "type": "boolean"
          },
          "filter": {
            "description": "結果のフィルタリング条件。月間検索数・SEO難易度・CPC・競合性・出現時期・サジェストクラスなどで絞り込む。",
            "type": "object",
            "properties": {
              "suggestClass": {
                "description": "サジェストクラスフィルタ（0-3の配列）。0: ＋（サジェスト）, 1: ＋＋（サジェストのサジェスト）, 2: ＋α（元キーワードにあいうえお...・abcde...・12345...を付与した際に表示されるサジェスト）, 3: ＋＋＋（「＋＋」または「＋α」からさらに展開されたサジェスト）",
                "example": [
                  0,
                  1
                ],
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 3
                }
              },
              "keyword": {
                "description": "キーワードフィルタ",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "cpc": {
                "description": "クリック単価（CPC）フィルタ（USD、範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小CPC",
                    "example": 0.5,
                    "type": "number",
                    "minimum": 0
                  },
                  "max": {
                    "description": "最大CPC",
                    "example": 10,
                    "type": "number",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "competition": {
                "description": "競合性フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "firstSeenRange": {
                "description": "出現時期フィルタ",
                "type": "object",
                "properties": {
                  "include": {
                    "description": "出現時期の選択肢",
                    "example": "last_30_days",
                    "type": "string",
                    "enum": [
                      "last_7_days",
                      "last_30_days",
                      "last_90_days",
                      "within_6_months",
                      "within_1_year",
                      "over_1_year"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "searchVolume",
            "description": "結果のソート項目。keyword / suggestClass / seoDifficulty / searchVolume / cpc / competition / firstSeenRange。省略時は searchVolume。",
            "type": "string",
            "enum": [
              "keyword",
              "suggestClass",
              "seoDifficulty",
              "searchVolume",
              "cpc",
              "competition",
              "firstSeenRange"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "description": "取得件数の上限。正の整数を指定。省略時はすべての結果を返す。",
            "example": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "SuggestKeywordsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 1.5
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "サジェスト取得の元になった検索キーワード",
                    "example": "ラッコ"
                  },
                  "suggestEngines": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "google",
                        "bing",
                        "youtube",
                        "googleVideo",
                        "amazon",
                        "rakuten",
                        "googleShopping",
                        "googleImage"
                      ]
                    },
                    "description": "サジェストキーワードの取得対象としたサーチエンジン一覧。単一取得の場合も配列で出力されます。",
                    "example": [
                      "google"
                    ]
                  }
                },
                "required": [
                  "keyword",
                  "suggestEngines"
                ],
                "description": "リクエストで指定された検索クエリ情報（キーワードと対象エンジン）"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "keyword": {
                      "type": "string",
                      "description": "サジェストキーワード文字列",
                      "example": "ラッコ 水族館"
                    },
                    "suggestClass": {
                      "type": "string",
                      "description": "サジェストキーワードの区分ラベル。＋（0: サジェスト）, ＋＋（1: サジェストのサジェスト）, ＋α（2: 元キーワードにあいうえお...・abcde...・12345...を付与した際に表示されるサジェスト）, ＋＋＋（3: 「＋＋」または「＋α」からさらに展開されたサジェスト）",
                      "example": "＋"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 45
                        },
                        "searchVolume": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "月間検索数（年平均）",
                          "example": 12000
                        },
                        "cpc": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "推定クリック単価（USD）",
                          "example": 1.5
                        },
                        "competition": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）。",
                          "example": 2
                        },
                        "firstSeenRange": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "last_7_days",
                                "last_30_days",
                                "last_90_days",
                                "within_6_months",
                                "within_1_year",
                                "over_1_year"
                              ]
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "出現時期。キーワードが最初にラッコキーワードデータベースで検出された時期を日付範囲ラベルで表す。不明な場合は null。",
                          "example": "last_30_days"
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition",
                        "firstSeenRange"
                      ],
                      "description": "SEO関連の各種指標（検索ボリューム・SEO難易度・CPC・競合性・出現時期）"
                    },
                    "suggestEngines": {
                      "type": "object",
                      "properties": {
                        "count": {
                          "type": "number",
                          "description": "このキーワードが取得できたサーチエンジン数",
                          "example": 2
                        },
                        "active": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "google",
                              "bing",
                              "youtube",
                              "googleVideo",
                              "amazon",
                              "rakuten",
                              "googleShopping",
                              "googleImage"
                            ]
                          },
                          "description": "このキーワードが取得できたサーチエンジン一覧",
                          "example": [
                            "google",
                            "youtube"
                          ]
                        }
                      },
                      "required": [
                        "count",
                        "active"
                      ],
                      "description": "このサジェストキーワードを返した検索エンジンの情報（エンジン数と一覧）"
                    }
                  },
                  "required": [
                    "keyword",
                    "suggestClass",
                    "metrics",
                    "suggestEngines"
                  ]
                },
                "description": "サジェストキーワードのリスト。各アイテムにキーワード・サジェスト分類・SEO指標・取得エンジン情報を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "サジェストキーワード検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "RelatedKeywordsDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "関連キーワード取得の元となる検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "matchType": {
            "default": "partialMatch",
            "description": "キーワードのマッチタイプ。partialMatch: 部分一致 / phraseMatch: フレーズ一致 / prefixMatch: 前方一致 / suffixMatch: 後方一致 / wordMatch: 単語一致。省略時は partialMatch。",
            "type": "string",
            "enum": [
              "partialMatch",
              "phraseMatch",
              "prefixMatch",
              "suffixMatch",
              "wordMatch"
            ]
          },
          "filter": {
            "description": "結果のフィルタリング条件。月間検索数・SEO難易度・CPC・競合性・出現時期などで絞り込む。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "キーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "cpc": {
                "description": "クリック単価（CPC）フィルタ（USD、範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小CPC",
                    "example": 0.5,
                    "type": "number",
                    "minimum": 0
                  },
                  "max": {
                    "description": "最大CPC",
                    "example": 10,
                    "type": "number",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "competition": {
                "description": "競合性フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "firstSeenRange": {
                "description": "出現時期フィルタ",
                "type": "object",
                "properties": {
                  "include": {
                    "description": "出現時期の選択肢",
                    "example": "last_30_days",
                    "type": "string",
                    "enum": [
                      "last_7_days",
                      "last_30_days",
                      "last_90_days",
                      "within_6_months",
                      "within_1_year",
                      "over_1_year"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "searchVolume",
            "description": "結果のソート項目。seoDifficulty / searchVolume / cpc / competition / firstSeenRange。省略時は searchVolume。",
            "type": "string",
            "enum": [
              "seoDifficulty",
              "searchVolume",
              "cpc",
              "competition",
              "firstSeenRange"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 1000,
            "description": "取得件数の上限。1〜25000 の整数を指定。省略時は 1000 件。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 25000
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "RelatedKeywordsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 1.5
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "関連キーワード取得の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "keyword": {
                      "type": "string",
                      "description": "検索キーワードを元に取得した関連キーワード",
                      "example": "ラッコ 水族館"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 40
                        },
                        "searchVolume": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "月間検索数（年平均）",
                          "example": 90500
                        },
                        "cpc": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "推定クリック単価（USD）",
                          "example": 0
                        },
                        "competition": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）。",
                          "example": 1
                        },
                        "firstSeenRange": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "last_7_days",
                                "last_30_days",
                                "last_90_days",
                                "within_6_months",
                                "within_1_year",
                                "over_1_year"
                              ]
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "出現時期。キーワードが最初にラッコキーワードデータベースで検出された時期を日付範囲ラベルで表す。不明な場合は null。",
                          "example": "last_30_days"
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition",
                        "firstSeenRange"
                      ],
                      "description": "SEO関連の各種指標（検索ボリューム・SEO難易度・CPC・競合性・出現時期）"
                    }
                  },
                  "required": [
                    "keyword",
                    "metrics"
                  ]
                },
                "description": "関連キーワードのリスト。各アイテムにキーワード・SEO指標を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "関連キーワード検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "OtherKeywordsDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "潜在的な検索キーワード（LSI）および関連する質問（PAA）を取得するための検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "sortBy": {
            "default": "importance",
            "description": "結果のソート項目。importance / seoDifficulty / searchVolume / cpc / competition / firstSeenRange。省略時は importance。",
            "type": "string",
            "enum": [
              "importance",
              "seoDifficulty",
              "searchVolume",
              "cpc",
              "competition",
              "firstSeenRange"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "OtherKeywordsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 22.5
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "潜在的な検索キーワード/質問（LSI/PAA）取得の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "lsiCount": {
                    "type": "number",
                    "description": "LSI（潜在的な検索キーワード）の件数",
                    "example": 1
                  },
                  "paaCount": {
                    "type": "number",
                    "description": "PAA（People Also Ask / 関連する質問）の件数",
                    "example": 1
                  }
                },
                "required": [
                  "lsiCount",
                  "paaCount"
                ],
                "description": "LSI/PAA の件数サマリー"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "lsi",
                        "paa"
                      ],
                      "description": "データ種別。lsi: 潜在的な検索キーワード / paa: 関連する質問。",
                      "example": "lsi"
                    },
                    "keyword": {
                      "description": "取得した潜在的な検索キーワード。type が lsi の場合に含まれる。",
                      "example": "ラッコ 水族館",
                      "type": "string"
                    },
                    "question": {
                      "description": "取得した関連する質問。type が paa の場合に含まれる。",
                      "example": "ラッコはどこで見れますか？",
                      "type": "string"
                    },
                    "importance": {
                      "type": "string",
                      "enum": [
                        "low",
                        "medium",
                        "high"
                      ],
                      "description": "重要度。高いほど関連性や注目度が高いことを示す。high: 高 / medium: 中 / low: 低。",
                      "example": "high"
                    },
                    "sourceKeyword": {
                      "type": "string",
                      "description": "このキーワードまたは質問の取得元となったキーワード",
                      "example": "ラッコ"
                    },
                    "metrics": {
                      "description": "SEO関連の各種指標。type が lsi の場合のみ含まれる。",
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 30
                        },
                        "searchVolume": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "月間検索数（年平均）",
                          "example": 33100
                        },
                        "cpc": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "推定クリック単価（USD）",
                          "example": 2.17
                        },
                        "competition": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）。",
                          "example": 5
                        },
                        "firstSeenRange": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "last_7_days",
                                "last_30_days",
                                "last_90_days",
                                "within_6_months",
                                "within_1_year",
                                "over_1_year"
                              ]
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "出現時期。キーワードが最初にラッコキーワードデータベースで検出された時期を日付範囲ラベルで表す。不明な場合は null。",
                          "example": "last_30_days"
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition",
                        "firstSeenRange"
                      ]
                    }
                  },
                  "required": [
                    "type",
                    "importance",
                    "sourceKeyword"
                  ]
                },
                "description": "LSI/PAA アイテムのリスト。LSI アイテムが先に、PAA アイテムが後に並ぶ。各アイテムに種別・重要度・取得元キーワードを含み、LSI の場合は SEO 指標も含まれる。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "潜在的な検索キーワード/関連する質問の検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchQuestionDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "よくある質問検索の元となる検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "limit": {
            "default": 100,
            "description": "出力数の上限。1〜200 の整数を指定。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 200
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "SearchQuestionResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数",
                "example": 3
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "よくある質問検索の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "question": {
                      "type": "string",
                      "description": "検索キーワードに関連する質問",
                      "example": "ラッコが絶滅しそうな理由は何ですか?"
                    }
                  },
                  "required": [
                    "question"
                  ]
                },
                "description": "質問アイテムのリスト"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "よくある質問検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "RankingKeywordsDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "同時ランクインキーワード取得の元となる検索キーワード。指定キーワードの検索上位URLが他にランクインしているキーワードを取得する。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "searchTop": {
            "default": 20,
            "description": "検索上位ページの参照数。そのキーワードでGoogle検索で上位表示できているページのうち、上位何件のURLを同時ランクイン判定に使用するかを指定する。選択肢: 3 / 5 / 10 / 20 / 30 / 50。省略時は 20。値を大きくすると、Google検索でより下位にランクインしている＝検索意図とズレのより大きいページが調査対象となる。値を小さくすると、Google検索でより上位にランクインしている＝検索意図に一致するページのみが調査対象となる。",
            "example": 20,
            "anyOf": [
              {
                "type": "number",
                "const": 3
              },
              {
                "type": "number",
                "const": 5
              },
              {
                "type": "number",
                "const": 10
              },
              {
                "type": "number",
                "const": 20
              },
              {
                "type": "number",
                "const": 30
              },
              {
                "type": "number",
                "const": 50
              }
            ]
          },
          "searchRange": {
            "default": 50,
            "description": "検索順位範囲。searchTopで指定したページがGoogle上位表示できているキーワードのうち、この順位以内にランクインしているキーワードを対象にする。選択肢: 10 / 20 / 30 / 50 / 100。省略時は 50。",
            "example": 50,
            "anyOf": [
              {
                "type": "number",
                "const": 10
              },
              {
                "type": "number",
                "const": 20
              },
              {
                "type": "number",
                "const": 30
              },
              {
                "type": "number",
                "const": 50
              },
              {
                "type": "number",
                "const": 100
              }
            ]
          },
          "filter": {
            "description": "結果のフィルタリング条件。キーワード・SEO難易度・月間検索数・CPC・競合性・関連度で絞り込む。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "キーワードフィルタ",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "cpc": {
                "description": "クリック単価（CPC）フィルタ（USD、範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小CPC",
                    "example": 0.5,
                    "type": "number",
                    "minimum": 0
                  },
                  "max": {
                    "description": "最大CPC",
                    "example": 10,
                    "type": "number",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "competition": {
                "description": "競合性フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "relevance": {
                "description": "関連度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "relevance",
            "description": "結果のソート項目。seoDifficulty / searchVolume / cpc / competition / relevance。省略時は relevance。",
            "type": "string",
            "enum": [
              "seoDifficulty",
              "searchVolume",
              "cpc",
              "competition",
              "relevance"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 500,
            "description": "取得件数。1〜5000 の整数を指定する。省略時は 500。",
            "example": 500,
            "type": "integer",
            "minimum": 1,
            "maximum": 5000
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "RankingKeywordsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 4.5
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "同時ランクインキーワード取得の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "keyword": {
                      "type": "string",
                      "description": "同時ランクインしているキーワード",
                      "example": "ラッコ 水族館"
                    },
                    "wordCount": {
                      "type": "number",
                      "description": "キーワードのスペース区切りの単語数",
                      "example": 2
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 30
                        },
                        "searchVolume": {
                          "type": "number",
                          "description": "月間検索数（年平均）",
                          "example": 10000
                        },
                        "cpc": {
                          "type": "number",
                          "description": "推定クリック単価（USD）",
                          "example": 0.5
                        },
                        "competition": {
                          "type": "number",
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）。",
                          "example": 32
                        },
                        "relevance": {
                          "type": "number",
                          "description": "同時ランクイン度。1–100で表し、高いほど元キーワードと検索結果の重複度が高いことを示す。",
                          "example": 5
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition",
                        "relevance"
                      ],
                      "description": "SEO関連の各種指標（SEO難易度・月間検索数・CPC・競合性・関連度）"
                    }
                  },
                  "required": [
                    "keyword",
                    "wordCount",
                    "metrics"
                  ]
                },
                "description": "同時ランクインキーワード結果のリスト。各アイテムにキーワード・単語数・SEO指標を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "同時ランクインキーワード検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchVolumeHistoryDto": {
        "type": "object",
        "properties": {
          "keywords": {
            "minItems": 1,
            "maxItems": 50000,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "キーワード（入力上限50,000件）",
            "example": [
              "ラッコ",
              "カワウソ"
            ]
          },
          "seoDifficulty": {
            "default": false,
            "description": "SEO難易度取得フラグ。true の場合にSEO難易度を取得する。省略時は false。",
            "type": "boolean"
          },
          "dataCompletion": {
            "default": true,
            "description": "データ補完フラグ。true の場合にデータ補完を行う。省略時は true。",
            "type": "boolean"
          },
          "location": {
            "default": "Japan",
            "description": "地域名。省略時は Japan。\n\n- 指定可能な地域名は metadata の locations 一覧を参照（一覧は国レベルのみ）\n- 市区町村レベルの地域も指定可能。「市区町村名,上位地域名,国名」のようにカンマ区切りの正式名で指定する（例: Shibuya,Tokyo,Japan）\n- 途中の階層のみ（例: 都道府県のみ）の指定は未サポート",
            "example": "Japan",
            "type": "string"
          },
          "language": {
            "default": "Japanese",
            "description": "言語名。指定可能な言語名は metadata の languages 一覧を参照。省略時は Japanese。",
            "example": "Japanese",
            "type": "string"
          },
          "deduplicate": {
            "default": true,
            "description": "キーワードの重複除去を行うかどうか。省略時は true。",
            "type": "boolean"
          },
          "aggregationPeriodMonths": {
            "default": 12,
            "description": "集計期間（月数）。12/24/36/48 のいずれか。省略時は 12。",
            "anyOf": [
              {
                "type": "number",
                "const": 12
              },
              {
                "type": "number",
                "const": 24
              },
              {
                "type": "number",
                "const": 36
              },
              {
                "type": "number",
                "const": 48
              }
            ]
          }
        },
        "required": [
          "keywords"
        ],
        "additionalProperties": false
      },
      "SearchVolumeHistoryResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 10
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "requestId": {
                "description": "リクエストID",
                "example": 1234567,
                "type": "number"
              }
            },
            "description": "履歴登録結果"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchVolumeHistoryOverallStatus": {
        "type": "string",
        "enum": [
          "completed",
          "processing"
        ]
      },
      "SearchVolumeHistoriesResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "number",
                    "description": "リクエストで指定された取得件数",
                    "example": 100
                  },
                  "offset": {
                    "type": "number",
                    "description": "リクエストで指定された取得開始位置",
                    "example": 0
                  },
                  "status": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "completed",
                          "processing"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "リクエストで指定されたステータスフィルタ",
                    "example": null
                  }
                },
                "required": [
                  "limit",
                  "offset",
                  "status"
                ],
                "description": "リクエストで指定されたクエリパラメータ"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリ",
                "example": {
                  "totalCount": 1,
                  "returnedCount": 1
                }
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "requestId": {
                      "type": "number",
                      "description": "リクエストID",
                      "example": 1500
                    },
                    "createdAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "リクエスト作成日時（ISO 8601、UTC）",
                      "example": "2026-05-31T01:00:00.000Z"
                    },
                    "completedAt": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "全処理完了日時（ISO 8601、UTC）。未完了時は null。",
                      "example": null
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "completed",
                        "processing"
                      ],
                      "description": "全体ステータス。statuses の searchVolume と seoDifficulty の両方が processed の場合に completed（seoDifficulty が skip の場合も完了扱い）、それ以外は processing。noiseReduction は判定対象外。",
                      "example": "processing"
                    },
                    "statuses": {
                      "type": "object",
                      "properties": {
                        "searchVolume": {
                          "type": "string",
                          "enum": [
                            "unprocessed",
                            "processing",
                            "processed"
                          ],
                          "description": "月間検索数取得ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了。",
                          "example": "processed"
                        },
                        "seoDifficulty": {
                          "type": "string",
                          "enum": [
                            "skip",
                            "unprocessed",
                            "processing",
                            "processed"
                          ],
                          "description": "SEO難易度取得ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了 / skip: スキップ（SEO難易度取得OFFの場合）。",
                          "example": "unprocessed"
                        },
                        "noiseReduction": {
                          "type": "string",
                          "enum": [
                            "unprocessed",
                            "processing",
                            "processed"
                          ],
                          "description": "ノイズ除去ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了。ノイズ除去には時間がかかる可能性があります。",
                          "example": "processing"
                        }
                      },
                      "required": [
                        "searchVolume",
                        "seoDifficulty",
                        "noiseReduction"
                      ],
                      "description": "各処理のステータス情報"
                    },
                    "keywordSummary": {
                      "type": "string",
                      "description": "キーワードのサマリ（カンマ区切り、先頭20件・255文字以内で切り詰め）",
                      "example": "ラッコ,カワウソ"
                    },
                    "keywordCount": {
                      "type": "number",
                      "description": "キーワードの件数",
                      "example": 2
                    },
                    "seoDifficulty": {
                      "type": "boolean",
                      "description": "SEO難易度取得が有効かどうか",
                      "example": true
                    },
                    "location": {
                      "type": "string",
                      "description": "地域名。Google Ads API の LocationCriterion に準拠。",
                      "example": "Japan"
                    },
                    "language": {
                      "type": "string",
                      "description": "言語名。Google Ads API の LanguageCriterion に準拠。",
                      "example": "Japanese"
                    },
                    "aggregationPeriodMonths": {
                      "type": "number",
                      "description": "集計期間（月数）",
                      "example": 12
                    },
                    "dataCompletion": {
                      "type": "boolean",
                      "description": "データ補完が有効かどうか",
                      "example": true
                    }
                  },
                  "required": [
                    "requestId",
                    "createdAt",
                    "completedAt",
                    "status",
                    "statuses",
                    "keywordSummary",
                    "keywordCount",
                    "seoDifficulty",
                    "location",
                    "language",
                    "aggregationPeriodMonths",
                    "dataCompletion"
                  ]
                },
                "description": "一括キーワード調査履歴アイテムのリスト"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "一括キーワード調査履歴一覧データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchVolumeStatusResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "isCompleted": {
                "description": "全処理完了フラグ。searchVolume が processed かつ seoDifficulty が processed または skip の場合に true。noiseReduction は判定対象外。",
                "example": true,
                "type": "boolean"
              },
              "statuses": {
                "description": "各処理のステータス情報",
                "type": "object",
                "properties": {
                  "searchVolume": {
                    "description": "月間検索数取得ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了。",
                    "example": "processed",
                    "type": "string",
                    "enum": [
                      "unprocessed",
                      "processing",
                      "processed"
                    ]
                  },
                  "noiseReduction": {
                    "description": "ノイズ除去ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了。ノイズ除去には時間がかかる可能性があります。",
                    "example": "processing",
                    "type": "string",
                    "enum": [
                      "unprocessed",
                      "processing",
                      "processed"
                    ]
                  },
                  "seoDifficulty": {
                    "description": "SEO難易度取得ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了 / skip: スキップ。",
                    "example": "skip",
                    "type": "string",
                    "enum": [
                      "skip",
                      "unprocessed",
                      "processing",
                      "processed"
                    ]
                  }
                }
              }
            },
            "description": "ステータス情報"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchVolumeResultsDto": {
        "type": "object",
        "properties": {
          "noiseReduction": {
            "default": true,
            "description": "ノイズ除去フラグ。true の場合にノイズ除去を適用する。省略時は true。",
            "type": "boolean"
          },
          "filter": {
            "description": "結果のフィルタリング条件。キーワード・SEO難易度・月間検索数・CPC・競合性で絞り込む。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "キーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "cpc": {
                "description": "CPC（$）フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小CPC",
                    "example": 0.5,
                    "type": "number",
                    "minimum": 0
                  },
                  "max": {
                    "description": "最大CPC",
                    "example": 10,
                    "type": "number",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "competition": {
                "description": "競合性フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "firstSeenRange": {
                "description": "出現時期フィルタ",
                "type": "object",
                "properties": {
                  "include": {
                    "description": "出現時期の選択肢",
                    "example": "last_30_days",
                    "type": "string",
                    "enum": [
                      "last_7_days",
                      "last_30_days",
                      "last_90_days",
                      "within_6_months",
                      "within_1_year",
                      "over_1_year"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "searchVolume",
            "description": "ソート項目。keyword / seoDifficulty / searchVolume / rateOfChange / cpc / competition / firstSeenRange。省略時は searchVolume。",
            "type": "string",
            "enum": [
              "keyword",
              "seoDifficulty",
              "searchVolume",
              "rateOfChange",
              "cpc",
              "competition",
              "firstSeenRange"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1〜50,000の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 50000
          }
        },
        "additionalProperties": false
      },
      "SearchVolumeResultsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "description": "クエリ情報（リクエストID・地域・言語）",
                "type": "object",
                "properties": {
                  "requestId": {
                    "type": "number",
                    "description": "リクエストID",
                    "example": 1234567
                  },
                  "location": {
                    "type": "string",
                    "description": "月間検索数取得対象の地域",
                    "example": "Japan"
                  },
                  "language": {
                    "type": "string",
                    "description": "月間検索数取得対象の言語",
                    "example": "Japanese"
                  },
                  "aggregationPeriodMonths": {
                    "type": "number",
                    "description": "集計期間（月数）",
                    "example": 12
                  }
                },
                "required": [
                  "requestId",
                  "location",
                  "language",
                  "aggregationPeriodMonths"
                ]
              },
              "summary": {
                "description": "件数サマリー",
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ]
              },
              "items": {
                "description": "検索結果アイテムのリスト",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "keyword": {
                      "type": "string",
                      "description": "キーワード",
                      "example": "ラッコ"
                    },
                    "dataSource": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "検索数データの取得元。取得できなかった場合は null。",
                      "example": "GoogleLive"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い。（1–33:低 / 34–66:中 / 67–100:高）不明な場合は null。",
                          "example": 40
                        },
                        "searchVolume": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "月間検索数（年平均）。無効な場合は null。",
                          "example": 90500
                        },
                        "cpc": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "推定クリック単価（USD）。無効な場合は null。",
                          "example": 0
                        },
                        "competition": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い。（0–33:低 / 34–66:中 / 67–100:高） 無効な場合は null。",
                          "example": 1
                        },
                        "firstSeenRange": {
                          "anyOf": [
                            {
                              "type": "string",
                              "enum": [
                                "last_7_days",
                                "last_30_days",
                                "last_90_days",
                                "within_6_months",
                                "within_1_year",
                                "over_1_year"
                              ]
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "出現時期。キーワードが最初にラッコキーワードデータベースで検出された時期を日付範囲ラベルで表す。不明な場合は null。",
                          "example": "last_30_days"
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition",
                        "firstSeenRange"
                      ],
                      "description": "各種指標（SEO難易度・月間検索数・CPC・広告競合性）"
                    },
                    "trends": {
                      "type": "object",
                      "properties": {
                        "changeRate": {
                          "type": "object",
                          "properties": {
                            "12m": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "直近12か月に対する直近月の検索数増減率",
                              "example": 0.4159
                            },
                            "6m": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "直近6か月に対する直近月の検索数増減率",
                              "example": 0.0796
                            },
                            "3m": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "直近3か月に対する直近月の検索数増減率",
                              "example": -0.0695
                            },
                            "yoy1y": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "1年前同月比（集計期間24か月以上で算出）",
                              "example": 0.1523
                            },
                            "yoy2y": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "2年前同月比（集計期間36か月以上で算出）",
                              "example": -0.0845
                            },
                            "yoy3y": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "3年前同月比（集計期間48か月以上で算出）",
                              "example": 0.2311
                            }
                          },
                          "required": [
                            "12m",
                            "6m",
                            "3m",
                            "yoy1y",
                            "yoy2y",
                            "yoy3y"
                          ],
                          "description": "検索数の増減率（3か月・6か月・12か月）"
                        },
                        "monthlySearchVolume": {
                          "anyOf": [
                            {
                              "type": "object",
                              "propertyNames": {
                                "type": "string"
                              },
                              "additionalProperties": {
                                "type": "number"
                              }
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "月ごとの検索数。キーは YYYY-MM 形式。データがない場合は null。",
                          "example": {
                            "2025-01": 2740000,
                            "2025-02": 2240000
                          }
                        }
                      },
                      "required": [
                        "changeRate",
                        "monthlySearchVolume"
                      ],
                      "description": "検索数トレンド（増減率・月別検索数）"
                    }
                  },
                  "required": [
                    "keyword",
                    "dataSource",
                    "metrics",
                    "trends"
                  ]
                }
              }
            },
            "description": "検索ボリューム結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "MetadataLocationsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。無料ツールのため常に 0。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "locations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "地域名",
                      "example": "Japan"
                    },
                    "countryIsoCode": {
                      "type": "string",
                      "description": "ISO 3166-1 alpha-2 国コード",
                      "example": "JP"
                    }
                  },
                  "required": [
                    "name",
                    "countryIsoCode"
                  ]
                },
                "description": "指定可能な地域の一覧（フィルタ未指定時は国レベルのみ・フィルタ指定時は市区町村レベルも含む）"
              }
            },
            "required": [
              "locations"
            ],
            "description": "地域一覧"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "MetadataLanguagesResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。無料ツールのため常に 0。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "languages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "言語名",
                      "example": "Japanese"
                    }
                  },
                  "required": [
                    "name"
                  ]
                },
                "description": "指定可能な言語の一覧"
              }
            },
            "required": [
              "languages"
            ],
            "description": "言語一覧"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "InfluxKeywordsKeywordDto": {
        "type": "object",
        "properties": {
          "targets": {
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "minLength": 1,
                  "description": "ドメインまたはURL",
                  "example": "https://rakkokeyword.com/"
                },
                "matchType": {
                  "default": "sub_domain",
                  "description": "マッチタイプ。url: 完全一致URL / forward_url: 前方一致URL / domain: ドメイン完全一致 / sub_domain: サブドメイン含むドメイン一致。省略時は sub_domain。",
                  "type": "string",
                  "enum": [
                    "url",
                    "forward_url",
                    "domain",
                    "sub_domain"
                  ]
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false
            },
            "description": "獲得キーワード調査の対象ドメインまたはURLとマッチタイプの配列。最大20件まで指定可能。各要素は { url, matchType } のオブジェクト。",
            "example": [
              {
                "url": "https://rakkokeyword.com/",
                "matchType": "sub_domain"
              }
            ]
          },
          "keywordCollapse": {
            "default": false,
            "description": "キーワード重複除去の有効/無効。true にすると同一キーワードの重複を除去する。省略時は false。",
            "type": "boolean"
          },
          "filter": {
            "description": "結果のフィルタリング条件。キーワード・SEO難易度・検索順位・月間検索数・CPC・競合性・推定流入数で絞り込む。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "キーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "rank": {
                "description": "検索順位フィルタ（1〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "cpc": {
                "description": "CPC（$）フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小CPC",
                    "example": 0.5,
                    "type": "number",
                    "minimum": 0
                  },
                  "max": {
                    "description": "最大CPC",
                    "example": 10,
                    "type": "number",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "competition": {
                "description": "広告競合性フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "etv": {
                "description": "推定流入数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "etv",
            "description": "ソート項目。keyword / seoDifficulty / rank / searchVolume / cpc / competition / etv。省略時は etv。",
            "type": "string",
            "enum": [
              "keyword",
              "seoDifficulty",
              "rank",
              "searchVolume",
              "cpc",
              "competition",
              "etv"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1〜10000 の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 10000
          }
        },
        "required": [
          "targets"
        ],
        "additionalProperties": false
      },
      "InfluxKeywordsKeywordResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 4.5
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "targets": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "獲得キーワード調査の対象URLまたはドメイン一覧",
                    "example": [
                      "https://example.com/"
                    ]
                  }
                },
                "required": [
                  "targets"
                ],
                "description": "リクエストで指定されたクエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 983
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  },
                  "estimatedTraffic": {
                    "type": "number",
                    "description": "対象全体の推定検索流入数（月間）",
                    "example": 2824
                  },
                  "keywordCount": {
                    "type": "number",
                    "description": "ランクインしているキーワード数",
                    "example": 983
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount",
                  "estimatedTraffic",
                  "keywordCount"
                ],
                "description": "集計サマリー（件数・推定流入数・キーワード数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "target": {
                      "type": "string",
                      "description": "このキーワードを獲得している対象URLまたはドメイン",
                      "example": "https://example.com/"
                    },
                    "keyword": {
                      "type": "string",
                      "description": "対象が獲得しているSEOキーワード",
                      "example": "ラッコ"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 30
                        },
                        "searchVolume": {
                          "type": "number",
                          "description": "月間検索数（年平均）",
                          "example": 10000
                        },
                        "cpc": {
                          "type": "number",
                          "description": "推定クリック単価（USD）",
                          "example": 0
                        },
                        "competition": {
                          "type": "number",
                          "description": "広告競合性。0〜100 で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）",
                          "example": 0
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition"
                      ],
                      "description": "キーワードの各種指標（SEO難易度・月間検索数・CPC・広告競合性）"
                    },
                    "ranking": {
                      "type": "object",
                      "properties": {
                        "position": {
                          "type": "number",
                          "description": "検索順位",
                          "example": 1
                        },
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "このキーワードからの推定検索流入数（月間）",
                          "example": 438
                        },
                        "url": {
                          "type": "string",
                          "description": "ランクインしているURL",
                          "example": "https://example.com/page"
                        }
                      },
                      "required": [
                        "position",
                        "estimatedTraffic",
                        "url"
                      ],
                      "description": "検索順位情報（順位・推定流入数・ランクインURL）"
                    }
                  },
                  "required": [
                    "target",
                    "keyword",
                    "metrics",
                    "ranking"
                  ]
                },
                "description": "獲得キーワード調査結果のリスト。各アイテムに対象・キーワード・指標・順位情報を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "獲得キーワード調査結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "InfluxPagesDto": {
        "type": "object",
        "properties": {
          "targets": {
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "minLength": 1,
                  "description": "ドメインまたはURL",
                  "example": "https://rakkokeyword.com/"
                },
                "matchType": {
                  "default": "sub_domain",
                  "description": "マッチタイプ。url: 完全一致URL / forward_url: 前方一致URL / domain: ドメイン完全一致 / sub_domain: サブドメイン含むドメイン一致。省略時は sub_domain。",
                  "type": "string",
                  "enum": [
                    "url",
                    "forward_url",
                    "domain",
                    "sub_domain"
                  ]
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false
            },
            "description": "獲得キーワード調査（ページ軸）の対象ドメインまたはURLとマッチタイプの配列。最大20件まで指定可能。",
            "example": [
              {
                "url": "https://rakkokeyword.com/",
                "matchType": "sub_domain"
              }
            ]
          },
          "topKeywordCollapse": {
            "default": false,
            "description": "トップキーワード重複除去の有効/無効。true にすると同一トップキーワードの重複を除去する。省略時は false。",
            "type": "boolean"
          },
          "filter": {
            "description": "結果のフィルタリング条件。合計推定流入数・キーワード数・合計集客価値・タイトル・URL・トップキーワード・SEO難易度で絞り込む。",
            "type": "object",
            "properties": {
              "totalEtv": {
                "description": "合計推定流入数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "keywordCount": {
                "description": "キーワード数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "totalTrafficValue": {
                "description": "合計集客価値（USD）フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "title": {
                "description": "タイトルフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "url": {
                "description": "URLフィルタ（含む/含まないURL指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含むURLのリスト（複数入力時はOR）",
                    "example": [
                      "https://rakkokeyword.com/"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まないURLのリスト（複数入力時はOR）",
                    "example": [
                      "https://rakkokeyword.com/result/"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "topKeyword": {
                "description": "トップキーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "topSeoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "totalEtv",
            "description": "ソート項目。totalEtv / totalTrafficValue / keywordCount。省略時は totalEtv。",
            "type": "string",
            "enum": [
              "totalEtv",
              "totalTrafficValue",
              "keywordCount"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1〜10000 の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 10000
          }
        },
        "required": [
          "targets"
        ],
        "additionalProperties": false
      },
      "InfluxPagesResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 4.5
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "targets": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "獲得キーワード調査の対象URLまたはドメイン一覧",
                    "example": [
                      "https://example.com/"
                    ]
                  }
                },
                "required": [
                  "targets"
                ],
                "description": "リクエストで指定されたクエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 319
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  },
                  "estimatedTraffic": {
                    "type": "number",
                    "description": "対象全体の推定検索流入数（月間）",
                    "example": 2824
                  },
                  "keywordCount": {
                    "type": "number",
                    "description": "ランクインしているキーワード数",
                    "example": 983
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount",
                  "estimatedTraffic",
                  "keywordCount"
                ],
                "description": "集計サマリー（件数・推定流入数・キーワード数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "target": {
                      "type": "string",
                      "description": "このページが属する対象URLまたはドメイン",
                      "example": "https://example.com/"
                    },
                    "page": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "description": "ページタイトル",
                          "example": "ラッコキーワード｜キーワード分析ツール"
                        },
                        "url": {
                          "type": "string",
                          "description": "ページURL",
                          "example": "https://rakkokeyword.com/"
                        }
                      },
                      "required": [
                        "title",
                        "url"
                      ],
                      "description": "ページ情報（タイトル・URL）"
                    },
                    "performance": {
                      "type": "object",
                      "properties": {
                        "rankingKeywordCount": {
                          "type": "number",
                          "description": "このページでランクインしているキーワード数",
                          "example": 2173
                        },
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "このページの推定検索流入数（月間）",
                          "example": 10000
                        },
                        "trafficValue": {
                          "type": "number",
                          "description": "このページの集客価値（USD）。推定流入数×CPC で算出される広告換算価値。",
                          "example": 5000
                        }
                      },
                      "required": [
                        "rankingKeywordCount",
                        "estimatedTraffic",
                        "trafficValue"
                      ],
                      "description": "パフォーマンス指標（ランクインキーワード数・推定流入数・集客価値）"
                    },
                    "topKeyword": {
                      "type": "object",
                      "properties": {
                        "keyword": {
                          "type": "string",
                          "description": "このページで最もSEO流入を獲得しているトップキーワード",
                          "example": "ラッコ"
                        },
                        "position": {
                          "type": "number",
                          "description": "トップキーワードでの検索順位",
                          "example": 1
                        },
                        "metrics": {
                          "type": "object",
                          "properties": {
                            "seoDifficulty": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                              "example": 30
                            },
                            "searchVolume": {
                              "type": "number",
                              "description": "トップキーワードの月間検索数（年平均）",
                              "example": 10000
                            }
                          },
                          "required": [
                            "seoDifficulty",
                            "searchVolume"
                          ],
                          "description": "トップキーワードの各種指標（SEO難易度・月間検索数）"
                        }
                      },
                      "required": [
                        "keyword",
                        "position",
                        "metrics"
                      ],
                      "description": "トップキーワード情報（キーワード・順位・指標）"
                    }
                  },
                  "required": [
                    "target",
                    "page",
                    "performance",
                    "topKeyword"
                  ]
                },
                "description": "獲得キーワード調査結果（ページ軸）のリスト。各アイテムに対象・ページ情報・パフォーマンス指標・トップキーワードを含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "獲得キーワード調査結果（ページ軸）データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "CompetitiveDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "description": "競合分析を行う対象のドメインURL。対象サイトの競合サイトを抽出し、キーワード重複率や流入数などの指標を比較する。",
            "example": "https://rakkokeyword.com/"
          },
          "sortBy": {
            "default": "etv",
            "description": "ソート項目。duplicate / duplicateRate / competitorUnique / targetUnique / etv / keywordCount / trafficValue / pageCount。省略時は etv。",
            "type": "string",
            "enum": [
              "duplicate",
              "duplicateRate",
              "competitorUnique",
              "targetUnique",
              "etv",
              "keywordCount",
              "trafficValue",
              "pageCount"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "CompetitiveResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 4.5
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "targets": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "競合サイト抽出の対象URLまたはドメイン一覧",
                    "example": [
                      "https://rakkoma.com/"
                    ]
                  }
                },
                "required": [
                  "targets"
                ],
                "description": "リクエストで指定されたクエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "site": {
                      "type": "object",
                      "properties": {
                        "domain": {
                          "type": "string",
                          "description": "競合サイトのドメイン名",
                          "example": "rakko.inc"
                        },
                        "title": {
                          "type": "string",
                          "description": "競合サイトのタイトル。SERP データから取得できない場合は空文字。",
                          "example": "ラッコ株式会社"
                        }
                      },
                      "required": [
                        "domain",
                        "title"
                      ],
                      "description": "競合サイト情報（ドメイン・タイトル）"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "競合サイト全体の推定検索流入数（月間）",
                          "example": 15803
                        },
                        "trafficValue": {
                          "type": "number",
                          "description": "競合サイト全体の集客価値（USD）。推定流入数×CPC で算出される広告換算価値。",
                          "example": 51386
                        },
                        "keywordCount": {
                          "type": "number",
                          "description": "競合サイトが獲得しているキーワード数",
                          "example": 119
                        },
                        "pageCount": {
                          "type": "number",
                          "description": "競合サイトのインデックスされたページ数",
                          "example": 51
                        },
                        "duplicateKeywordCount": {
                          "type": "number",
                          "description": "入力対象サイトと競合サイトで重複しているキーワード数",
                          "example": 119
                        },
                        "duplicateRate": {
                          "type": "number",
                          "description": "重複キーワード率。0〜1 で表し、高いほど入力対象とのキーワード重複率が高い。",
                          "example": 1
                        },
                        "competitorUniqueKeywordCount": {
                          "type": "number",
                          "description": "競合サイトにのみ存在し、入力対象サイトには存在しないキーワード数",
                          "example": 0
                        },
                        "targetUniqueKeywordCount": {
                          "type": "number",
                          "description": "入力対象サイトにのみ存在し、競合サイトには存在しないキーワード数",
                          "example": 596
                        }
                      },
                      "required": [
                        "estimatedTraffic",
                        "trafficValue",
                        "keywordCount",
                        "pageCount",
                        "duplicateKeywordCount",
                        "duplicateRate",
                        "competitorUniqueKeywordCount",
                        "targetUniqueKeywordCount"
                      ],
                      "description": "競合サイトの各種指標（流入数・集客価値・キーワード数・重複率など）"
                    }
                  },
                  "required": [
                    "site",
                    "metrics"
                  ]
                },
                "description": "競合サイト抽出結果のリスト。各アイテムにサイト情報と各種指標を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "競合サイト抽出結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "ContentSearchDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "集客コンテンツ検索の検索キーワード。指定キーワードに関連する上位表示コンテンツを検索する。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "searchTarget": {
            "default": "titleAndKeywordAndDescription",
            "description": "検索対象。title / keyword / description / titleAndKeyword / titleAndKeywordAndDescription。省略時は titleAndKeywordAndDescription。",
            "type": "string",
            "enum": [
              "title",
              "keyword",
              "description",
              "titleAndKeyword",
              "titleAndKeywordAndDescription"
            ]
          },
          "isAdvancedSearch": {
            "default": true,
            "description": "拡張検索の有効/無効。true にするとキーワードを形態素解析して検索精度を高める。省略時は true。",
            "type": "boolean"
          },
          "topKeywordCollapse": {
            "default": false,
            "description": "トップキーワード除去の有効/無効。true にすると同一トップキーワードの重複を除去する。省略時は false。",
            "type": "boolean"
          },
          "filter": {
            "description": "結果のフィルタリング条件。推定流入数・ランクインキーワード数・集客価値・タイトル・URL・トップキーワード・ディスクリプション・SEO難易度で絞り込む。",
            "type": "object",
            "properties": {
              "estimatedTraffic": {
                "description": "推定流入数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "rankingKeywordCount": {
                "description": "ランクインキーワード数フィルタ（0〜の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "trafficValue": {
                "description": "集客価値（USD）フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "title": {
                "description": "タイトルフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "url": {
                "description": "URLフィルタ（含む/含まないURL指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含むURLのリスト（複数入力時はOR）",
                    "example": [
                      "https://rakkokeyword.com/"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まないURLのリスト（複数入力時はOR）",
                    "example": [
                      "https://rakkokeyword.com/result/"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "topKeyword": {
                "description": "トップキーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "description": {
                "description": "ディスクリプションフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "trafficValue",
            "description": "結果のソート項目。estimatedTraffic / trafficValue / rankingKeywordCount。省略時は trafficValue。",
            "type": "string",
            "enum": [
              "estimatedTraffic",
              "trafficValue",
              "rankingKeywordCount"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1〜5000 の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 5000
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "ContentSearchResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 4.5
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "集客コンテンツ検索の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "object",
                      "properties": {
                        "domain": {
                          "type": "string",
                          "description": "ページのドメイン名",
                          "example": "rakkokeyword.com"
                        },
                        "url": {
                          "type": "string",
                          "description": "ページの完全なURL",
                          "example": "https://rakkokeyword.com/result/contentSearch?q=%E3%83%A9%E3%83%83%E3%82%B3"
                        },
                        "title": {
                          "type": "string",
                          "description": "ページのタイトル",
                          "example": "ラッコキーワード"
                        },
                        "description": {
                          "type": "string",
                          "description": "ページの説明文",
                          "example": "多機能でサクサク使えるキーワードリサーチツール。生成AIによる記事生成機能搭載。SEO/市場ニーズ調査/競合分析/コンテンツ制作/商品開発にお役立ていただけます。無料でも使えます！"
                        }
                      },
                      "required": [
                        "domain",
                        "url",
                        "title",
                        "description"
                      ],
                      "description": "ページ情報（ドメイン・URL・タイトル・ディスクリプション）"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "このページの推定検索流入数（月間）",
                          "example": 14000
                        },
                        "trafficValue": {
                          "type": "number",
                          "description": "このページの集客価値（USD）。推定流入数×CPC で算出される広告換算価値。",
                          "example": 2266
                        },
                        "rankingKeywordCount": {
                          "type": "number",
                          "description": "このページでランクインしているキーワード数",
                          "example": 18
                        }
                      },
                      "required": [
                        "estimatedTraffic",
                        "trafficValue",
                        "rankingKeywordCount"
                      ],
                      "description": "ページの各種指標（推定流入数・集客価値・ランクインキーワード数）"
                    },
                    "topKeyword": {
                      "type": "object",
                      "properties": {
                        "keyword": {
                          "type": "string",
                          "description": "このページで最もSEO流入を獲得しているトップキーワード",
                          "example": "ラッコ"
                        },
                        "wordCount": {
                          "type": "number",
                          "description": "トップキーワードを構成する単語数（スペース区切り）",
                          "example": 1
                        },
                        "position": {
                          "type": "number",
                          "description": "トップキーワードでの検索順位",
                          "example": 2
                        },
                        "metrics": {
                          "type": "object",
                          "properties": {
                            "seoDifficulty": {
                              "anyOf": [
                                {
                                  "type": "number"
                                },
                                {
                                  "type": "null"
                                }
                              ],
                              "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                              "example": 37
                            },
                            "searchVolume": {
                              "type": "number",
                              "description": "トップキーワードの月間検索数（年平均）",
                              "example": 5000
                            }
                          },
                          "required": [
                            "seoDifficulty",
                            "searchVolume"
                          ],
                          "description": "トップキーワードの各種指標（SEO難易度・月間検索数）"
                        }
                      },
                      "required": [
                        "keyword",
                        "wordCount",
                        "position",
                        "metrics"
                      ],
                      "description": "トップキーワード情報（キーワード・単語数・順位・指標）"
                    }
                  },
                  "required": [
                    "page",
                    "metrics",
                    "topKeyword"
                  ]
                },
                "description": "集客コンテンツ検索結果のリスト。各アイテムにページ情報・指標・トップキーワードを含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "集客コンテンツ検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "HeadlineDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "見出し抽出を行う検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "lessHeadlines": {
            "default": false,
            "description": "見出し5件未満のページを除外するかどうか。true で除外する。省略時は false。",
            "type": "boolean"
          },
          "lessCharacters": {
            "default": false,
            "description": "文字数1,000未満のページを除外するかどうか。true で除外する。省略時は false。",
            "type": "boolean"
          },
          "h1": {
            "default": true,
            "description": "h1タグの見出しを含めるかどうか。省略時は true。",
            "type": "boolean"
          },
          "h2": {
            "default": true,
            "description": "h2タグの見出しを含めるかどうか。省略時は true。",
            "type": "boolean"
          },
          "h3": {
            "default": true,
            "description": "h3タグの見出しを含めるかどうか。省略時は true。",
            "type": "boolean"
          },
          "h4": {
            "default": true,
            "description": "h4タグの見出しを含めるかどうか。省略時は true。",
            "type": "boolean"
          },
          "h5": {
            "default": false,
            "description": "h5タグの見出しを含めるかどうか。省略時は false。",
            "type": "boolean"
          },
          "h6": {
            "default": false,
            "description": "h6タグの見出しを含めるかどうか。省略時は false。",
            "type": "boolean"
          },
          "sortBy": {
            "default": "position",
            "description": "ソート項目。position / title / headlineCount / wordCount。省略時は position。",
            "type": "string",
            "enum": [
              "position",
              "title",
              "headlineCount",
              "wordCount"
            ]
          },
          "orderBy": {
            "default": "asc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は asc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 20,
            "description": "取得件数。1〜20 の整数を指定する。省略時は 20。",
            "example": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "HeadlineResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 3
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "見出し抽出の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  },
                  "averageHeadlineCount": {
                    "type": "number",
                    "description": "1ページあたりの平均見出し数",
                    "example": 19.5
                  },
                  "averageWordCount": {
                    "type": "number",
                    "description": "1ページあたりの平均文字数",
                    "example": 7782
                  },
                  "minWordCount": {
                    "type": "number",
                    "description": "ページ文字数の最小値",
                    "example": 2935
                  },
                  "maxWordCount": {
                    "type": "number",
                    "description": "ページ文字数の最大値",
                    "example": 12629
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount",
                  "averageHeadlineCount",
                  "averageWordCount",
                  "minWordCount",
                  "maxWordCount"
                ],
                "description": "件数・文字数・見出し数のサマリー情報"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string",
                          "description": "検索結果ページの URL",
                          "example": "https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%83%E3%82%B3"
                        },
                        "title": {
                          "type": "string",
                          "description": "検索結果ページのタイトル",
                          "example": "ラッコ - Wikipedia"
                        },
                        "description": {
                          "type": "string",
                          "description": "検索結果ページのディスクリプション",
                          "example": "ラッコは、..."
                        }
                      },
                      "required": [
                        "url",
                        "title",
                        "description"
                      ],
                      "description": "検索結果ページの基本情報（URL・タイトル・ディスクリプション）"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "position": {
                          "type": "number",
                          "description": "検索順位",
                          "example": 1
                        },
                        "headlineCount": {
                          "type": "number",
                          "description": "このページに含まれる見出し数",
                          "example": 19
                        },
                        "wordCount": {
                          "type": "number",
                          "description": "このページの文字数",
                          "example": 14190
                        }
                      },
                      "required": [
                        "position",
                        "headlineCount",
                        "wordCount"
                      ],
                      "description": "ページの各種指標（検索順位・見出し数・文字数）"
                    },
                    "headlines": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "description": "見出しレベル（h1, h2, h3, h4 など）",
                            "example": "h1"
                          },
                          "text": {
                            "type": "string",
                            "description": "見出しテキスト",
                            "example": "ラッコ"
                          }
                        },
                        "required": [
                          "level",
                          "text"
                        ]
                      },
                      "description": "ページ内の見出し一覧。指定した見出しレベル（h1–h6）に応じてフィルタされる。"
                    }
                  },
                  "required": [
                    "page",
                    "metrics",
                    "headlines"
                  ]
                },
                "description": "見出し抽出アイテムのリスト。各アイテムにページ情報・指標・見出し一覧を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "見出し抽出の検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "CoOccurrenceDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "共起語取得の元となる検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "getDetails": {
            "default": true,
            "description": "URLごとの詳細情報を取得するかどうか。true にすると各共起語について検索上位ページごとの出現情報を返す。省略時は true。",
            "type": "boolean"
          },
          "sortBy": {
            "default": "siteCountTotal",
            "description": "ソート項目。word / occurrencePageCount / occurrenceTitleCount / occurrenceHeadingCount / siteCountTotal / siteCountHeading。省略時は siteCountTotal。",
            "type": "string",
            "enum": [
              "word",
              "occurrencePageCount",
              "occurrenceTitleCount",
              "occurrenceHeadingCount",
              "siteCountTotal",
              "siteCountHeading"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "description": "取得件数の上限。正の整数を指定。省略時はすべての結果を返す。",
            "example": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "CoOccurrenceResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 3
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "共起語取得の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "word": {
                      "type": "string",
                      "description": "検索上位ページから抽出した共起語",
                      "example": "水族館"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "occurrencePageCount": {
                          "type": "number",
                          "description": "検索上位ページ内でこの共起語が出現した回数",
                          "example": 230
                        },
                        "occurrenceTitleCount": {
                          "type": "number",
                          "description": "検索上位ページのタイトル内でこの共起語が出現した回数",
                          "example": 8
                        },
                        "occurrenceHeadingCount": {
                          "type": "number",
                          "description": "検索上位ページの見出し内でこの共起語が出現した回数",
                          "example": 21
                        },
                        "siteCountTotal": {
                          "type": "number",
                          "description": "検索上位サイトのうち、この共起語が本文内で出現したサイト数",
                          "example": 13
                        },
                        "siteCountHeading": {
                          "type": "number",
                          "description": "検索上位サイトのうち、この共起語が見出し内に出現したサイト数",
                          "example": 7
                        }
                      },
                      "required": [
                        "occurrencePageCount",
                        "occurrenceTitleCount",
                        "occurrenceHeadingCount",
                        "siteCountTotal",
                        "siteCountHeading"
                      ],
                      "description": "共起語の各種指標（本文・タイトル・見出しの出現回数、出現サイト数）"
                    },
                    "pageDetails": {
                      "description": "URLごとの詳細情報（getDetails=true の場合のみ）",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "rank": {
                            "type": "number",
                            "description": "検索結果における順位",
                            "example": 1
                          },
                          "title": {
                            "type": "string",
                            "description": "ページタイトル",
                            "example": "ラッコ"
                          },
                          "url": {
                            "type": "string",
                            "description": "ページURL",
                            "example": "https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%83%E3%82%B3"
                          },
                          "count": {
                            "type": "number",
                            "description": "共起語の本文内出現回数",
                            "example": 3
                          },
                          "countInHeadline": {
                            "type": "number",
                            "description": "共起語の見出し内出現回数",
                            "example": 0
                          },
                          "countInTitle": {
                            "type": "number",
                            "description": "共起語のタイトル内出現回数",
                            "example": 0
                          },
                          "pageCount": {
                            "type": "number",
                            "description": "共起語が出現したページ数",
                            "example": 1
                          },
                          "pageCountInHeadline": {
                            "type": "number",
                            "description": "見出しに共起語が出現したページ数",
                            "example": 0
                          }
                        },
                        "required": [
                          "rank",
                          "title",
                          "url",
                          "count",
                          "countInHeadline",
                          "countInTitle",
                          "pageCount",
                          "pageCountInHeadline"
                        ]
                      }
                    }
                  },
                  "required": [
                    "word",
                    "metrics"
                  ]
                },
                "description": "共起語アイテムのリスト。各アイテムに共起語・指標・詳細情報を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "共起語検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchRankHistoryDto": {
        "type": "object",
        "properties": {
          "keywords": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "順位チェックするキーワードの配列",
            "example": [
              "ラッコ",
              "カワウソ"
            ]
          },
          "urls": {
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "順位チェックするURL/ドメインの配列。最大50件まで指定可能。",
            "example": [
              "https://rakkokeyword.com",
              "https://rakkokeyword.com/result/contentSearch?q=%E3%83%A9%E3%83%83%E3%82%B3"
            ]
          },
          "matchType": {
            "default": "sub_domain",
            "description": "マッチタイプ。url: 完全一致URL / forward_url: 前方一致URL / domain: ドメイン完全一致 / sub_domain: サブドメイン含むドメイン一致。省略時は sub_domain。",
            "type": "string",
            "enum": [
              "url",
              "forward_url",
              "domain",
              "sub_domain"
            ]
          },
          "depth": {
            "default": 30,
            "description": "検索上位何位までデータ取得するかを指定する。30 / 40 / 50 / 60 / 70 / 80 / 90 / 100 のいずれかを指定。省略時は 30。",
            "example": 30,
            "type": "number",
            "enum": [
              30,
              40,
              50,
              60,
              70,
              80,
              90,
              100
            ]
          },
          "isSearchVolumeAndSeoDifficultyEnabled": {
            "default": false,
            "description": "月間検索数/SEO難易度を取得するかどうか。省略時は false。",
            "type": "boolean"
          },
          "deduplicate": {
            "default": true,
            "description": "キーワードの重複除去を行うかどうか。省略時は true。",
            "type": "boolean"
          },
          "location": {
            "default": "Japan",
            "description": "SERP取得対象の地域名。省略時は Japan。\n\n- 指定可能な地域名は metadata の locations 一覧を参照（一覧は国レベルのみ）\n- 市区町村レベルの地域も指定可能。「市区町村名,上位地域名,国名」のようにカンマ区切りの正式名で指定する（例: Shibuya,Tokyo,Japan）\n- 途中の階層のみ（例: 都道府県のみ）の指定は未サポート",
            "example": "Japan",
            "type": "string"
          },
          "language": {
            "default": "Japanese",
            "description": "SERP取得対象の言語名。指定可能な言語名は metadata の languages 一覧を参照。省略時は Japanese。",
            "example": "Japanese",
            "type": "string"
          },
          "device": {
            "default": "desktop",
            "description": "SERP取得対象のデバイス。desktop / mobile のいずれか。省略時は desktop。",
            "example": "desktop",
            "type": "string",
            "enum": [
              "desktop",
              "mobile"
            ]
          },
          "os": {
            "description": "SERP取得対象のOS。デスクトップは windows / macos、モバイルは android / ios を指定。省略時は desktop→windows / mobile→android。",
            "example": "windows",
            "type": "string",
            "enum": [
              "windows",
              "macos",
              "android",
              "ios"
            ]
          }
        },
        "required": [
          "keywords",
          "urls"
        ],
        "additionalProperties": false
      },
      "SearchRankHistoryResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 1.2
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "requestId": {
                "description": "リクエストID",
                "example": "01HQZX5Y4JMQK8XNQ7WVZXZ5Y4",
                "type": "string"
              }
            },
            "description": "履歴登録結果"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchRankHistoryOverallStatus": {
        "type": "string",
        "enum": [
          "completed",
          "processing"
        ]
      },
      "SearchRankHistoriesResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "number",
                    "description": "リクエストで指定された取得件数",
                    "example": 100
                  },
                  "offset": {
                    "type": "number",
                    "description": "リクエストで指定された取得開始位置",
                    "example": 0
                  },
                  "status": {
                    "anyOf": [
                      {
                        "type": "string",
                        "enum": [
                          "completed",
                          "processing"
                        ]
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "description": "リクエストで指定されたステータスフィルタ",
                    "example": null
                  }
                },
                "required": [
                  "limit",
                  "offset",
                  "status"
                ],
                "description": "リクエストで指定されたクエリパラメータ"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリ",
                "example": {
                  "totalCount": 1,
                  "returnedCount": 1
                }
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "requestId": {
                      "type": "string",
                      "description": "リクエストID",
                      "example": "01HQZX5Y4JMQK8XNQ7WVZXZ5Y4"
                    },
                    "createdAt": {
                      "type": "string",
                      "format": "date-time",
                      "description": "リクエスト作成日時（ISO 8601、UTC）",
                      "example": "2026-05-31T01:00:00.000Z"
                    },
                    "completedAt": {
                      "anyOf": [
                        {
                          "type": "string",
                          "format": "date-time"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "全処理完了日時（ISO 8601、UTC）。未完了時は null。",
                      "example": null
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "completed",
                        "processing"
                      ],
                      "description": "全体ステータス。statuses の両方が processed の場合に completed（月間検索数/SEO難易度取得 OFF の場合は serp のみで判定）。",
                      "example": "processing"
                    },
                    "statuses": {
                      "type": "object",
                      "properties": {
                        "serp": {
                          "type": "string",
                          "enum": [
                            "unprocessed",
                            "processing",
                            "processed"
                          ],
                          "description": "SERP取得ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了。",
                          "example": "processed"
                        },
                        "searchVolumeAndSeoDifficulty": {
                          "description": "月間検索数/SEO難易度ステータス。月間検索数/SEO難易度取得 OFF のリクエストでは欠落する。unprocessed: 未処理 / processing: 処理中 / processed: 完了 / failed: 失敗 / integration_failed: 統合失敗。",
                          "example": "processing",
                          "type": "string",
                          "enum": [
                            "unprocessed",
                            "processing",
                            "processed",
                            "failed",
                            "integration_failed"
                          ]
                        }
                      },
                      "required": [
                        "serp"
                      ],
                      "description": "各処理のステータス情報"
                    },
                    "keywordSummary": {
                      "type": "string",
                      "description": "キーワードのサマリ（カンマ区切り、先頭20件・255文字以内で切り詰め）",
                      "example": "ラッコ,カワウソ"
                    },
                    "urlSummary": {
                      "type": "string",
                      "description": "URLのサマリ（カンマ区切り、先頭20件・255文字以内で切り詰め）",
                      "example": "https://rakkokeyword.com,https://rakko.inc"
                    },
                    "keywordCount": {
                      "type": "number",
                      "description": "キーワードの件数",
                      "example": 2
                    },
                    "urlCount": {
                      "type": "number",
                      "description": "URLの件数",
                      "example": 2
                    },
                    "matchType": {
                      "type": "string",
                      "enum": [
                        "url",
                        "forward_url",
                        "domain",
                        "sub_domain"
                      ],
                      "description": "マッチタイプ。url: 完全一致URL / forward_url: 前方一致URL / domain: ドメイン完全一致 / sub_domain: サブドメイン含むドメイン一致。",
                      "example": "sub_domain"
                    },
                    "depth": {
                      "anyOf": [
                        {
                          "type": "number",
                          "enum": [
                            30,
                            40,
                            50,
                            60,
                            70,
                            80,
                            90,
                            100
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "検索結果の取得深度。30 / 40 / 50 / 60 / 70 / 80 / 90 / 100 のいずれか。取得深度が記録されていない古い履歴では null を返す。",
                      "example": 30
                    },
                    "isSearchVolumeAndSeoDifficultyEnabled": {
                      "type": "boolean",
                      "description": "月間検索数/SEO難易度の取得が有効かどうか",
                      "example": true
                    }
                  },
                  "required": [
                    "requestId",
                    "createdAt",
                    "completedAt",
                    "status",
                    "statuses",
                    "keywordSummary",
                    "urlSummary",
                    "keywordCount",
                    "urlCount",
                    "matchType",
                    "depth",
                    "isSearchVolumeAndSeoDifficultyEnabled"
                  ]
                },
                "description": "検索順位チェック履歴アイテムのリスト"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "検索順位チェック履歴一覧データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchRankStatusResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "isCompleted": {
                "description": "全処理完了フラグ。statuses.serp が processed かつ statuses.searchVolumeAndSeoDifficulty が processed またはなし の場合に true。failed または integration_failed の場合は false。",
                "example": true,
                "type": "boolean"
              },
              "statuses": {
                "description": "各処理のステータス情報",
                "type": "object",
                "properties": {
                  "serp": {
                    "description": "SERP取得ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了。",
                    "example": "processed",
                    "type": "string",
                    "enum": [
                      "unprocessed",
                      "processing",
                      "processed"
                    ]
                  },
                  "searchVolumeAndSeoDifficulty": {
                    "description": "月間検索数/SEO難易度ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了 / failed: 失敗 / integration_failed: 統合失敗。",
                    "example": "processing",
                    "type": "string",
                    "enum": [
                      "unprocessed",
                      "processing",
                      "processed",
                      "failed",
                      "integration_failed"
                    ]
                  }
                }
              }
            },
            "description": "ステータス情報"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchRankResultsDto": {
        "type": "object",
        "properties": {
          "filter": {
            "description": "結果のフィルタリング条件。キーワード・SEO難易度・月間検索数で絞り込む。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "キーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト（複数入力時はOR）",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト（複数入力時はOR）",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "searchVolume",
            "description": "ソート項目。keyword / seoDifficulty / searchVolume。省略時は searchVolume。",
            "type": "string",
            "enum": [
              "keyword",
              "seoDifficulty",
              "searchVolume"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1以上の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "withAggregation": {
            "default": false,
            "description": "ターゲットごとの集計情報（推定流入数）を出力するかどうか。省略時は false。",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "SearchRankResultsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "requestId": {
                    "type": "string",
                    "description": "検索順位チェック結果を識別するリクエストID",
                    "example": "sr_20260309_001"
                  },
                  "filter": {
                    "description": "リクエストで指定された絞り込み条件（キーワード・SEO難易度・月間検索数）。指定がない場合は省略される。",
                    "type": "object",
                    "properties": {
                      "keyword": {
                        "description": "キーワードフィルタ（含む/含まないキーワード指定）",
                        "type": "object",
                        "properties": {
                          "includes": {
                            "description": "含む単語のリスト（複数入力時はOR）",
                            "example": [
                              "水族館"
                            ],
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "notIncludes": {
                            "description": "含まない単語のリスト（複数入力時はOR）",
                            "example": [
                              "グッズ"
                            ],
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "additionalProperties": false
                      },
                      "seoDifficulty": {
                        "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                        "type": "object",
                        "properties": {
                          "min": {
                            "description": "最小値",
                            "example": 1,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "max": {
                            "description": "最大値",
                            "example": 100,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "additionalProperties": false
                      },
                      "searchVolume": {
                        "description": "月間検索数フィルタ（範囲指定）",
                        "type": "object",
                        "properties": {
                          "min": {
                            "description": "最小値",
                            "example": 100,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "max": {
                            "description": "最大値",
                            "example": 10000,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": false
                  },
                  "sortBy": {
                    "type": "string",
                    "enum": [
                      "keyword",
                      "seoDifficulty",
                      "searchVolume"
                    ],
                    "description": "リクエストで指定されたソート項目。keyword / seoDifficulty / searchVolume。",
                    "example": "searchVolume"
                  },
                  "orderBy": {
                    "type": "string",
                    "enum": [
                      "asc",
                      "desc"
                    ],
                    "description": "リクエストで指定されたソート順。asc: 昇順 / desc: 降順。",
                    "example": "desc"
                  },
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 9007199254740991,
                    "description": "リクエストで指定された取得件数",
                    "example": 100
                  },
                  "withAggregation": {
                    "type": "boolean",
                    "description": "ターゲットごとの集計情報（推定流入数）を出力するかどうか",
                    "example": false
                  }
                },
                "required": [
                  "requestId",
                  "sortBy",
                  "orderBy",
                  "limit",
                  "withAggregation"
                ],
                "description": "検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 2
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 2
                  },
                  "targets": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "target": {
                          "type": "string",
                          "description": "順位チェック対象のURLパターンまたはドメイン",
                          "example": "*.rakkoma.com/*"
                        },
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "推定検索流入数の合計（withAggregation=false の場合は0）",
                          "example": 7391
                        },
                        "rankingPositionDistribution": {
                          "type": "object",
                          "properties": {
                            "1-3": {
                              "type": "number",
                              "description": "順位1〜3位のキーワード数",
                              "example": 40
                            },
                            "4-10": {
                              "type": "number",
                              "description": "順位4〜10位のキーワード数",
                              "example": 15
                            },
                            "11-20": {
                              "type": "number",
                              "description": "順位11〜20位のキーワード数",
                              "example": 5
                            },
                            "21-30": {
                              "type": "number",
                              "description": "順位21〜30位のキーワード数",
                              "example": 4
                            },
                            "31-50": {
                              "type": "number",
                              "description": "順位31〜50位のキーワード数",
                              "example": 5
                            },
                            "51-100": {
                              "type": "number",
                              "description": "順位51〜100位のキーワード数",
                              "example": 3
                            },
                            "101+": {
                              "type": "number",
                              "description": "順位101位以降のキーワード数",
                              "example": 10
                            }
                          },
                          "required": [
                            "1-3",
                            "4-10",
                            "11-20",
                            "21-30",
                            "31-50",
                            "51-100",
                            "101+"
                          ],
                          "description": "フィルター条件にマッチした全件の順位分布"
                        }
                      },
                      "required": [
                        "target",
                        "estimatedTraffic",
                        "rankingPositionDistribution"
                      ]
                    },
                    "description": "ターゲットごとの検索順位分布と推定流入数（フィルター条件にマッチした全件の集計）"
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount",
                  "targets"
                ],
                "description": "件数サマリー"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "keyword": {
                      "type": "string",
                      "description": "検索順位を確認したキーワード",
                      "example": "サイト売買 個人"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 23
                        },
                        "searchVolume": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "月間検索数（年平均）。無効な場合は null。",
                          "example": 70
                        },
                        "cpc": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "推定クリック単価（USD）。無効な場合は null。",
                          "example": 3.47
                        },
                        "competition": {
                          "anyOf": [
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）。無効な場合は null。",
                          "example": 41
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition"
                      ],
                      "description": "各種指標（SEO難易度・月間検索数・CPC・広告競合性）"
                    },
                    "rankings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "target": {
                            "type": "string",
                            "description": "順位チェック対象のURLパターンまたはドメイン",
                            "example": "*.rakkoma.com/*"
                          },
                          "position": {
                            "anyOf": [
                              {
                                "type": "number"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "検索順位。圏外または未検出の場合は null。",
                            "example": 3
                          },
                          "rankedUrl": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "null"
                              }
                            ],
                            "description": "実際にランクインしたURL。未検出の場合は null。",
                            "example": "https://rakkoma.com/"
                          },
                          "estimatedTraffic": {
                            "type": "number",
                            "description": "このキーワードでの推定検索流入数（月間）",
                            "example": 9
                          }
                        },
                        "required": [
                          "target",
                          "position",
                          "rankedUrl",
                          "estimatedTraffic"
                        ]
                      },
                      "description": "ターゲットごとの検索順位情報"
                    }
                  },
                  "required": [
                    "keyword",
                    "metrics",
                    "rankings"
                  ]
                },
                "description": "検索順位チェック結果アイテムのリスト"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "検索順位チェック結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SiteSearchDto": {
        "type": "object",
        "properties": {
          "filter": {
            "default": {},
            "description": "絞り込み条件。コンテンツ・ドメイン・推定流入数・キーワード数・ページ数・価値・関連コンテンツ推定流入数・コンテンツ関連性で絞り込む。省略時は全サイトを流入が多い順に取得する。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "コンテンツフィルタ（含む/含まないキーワード）。指定すると、まず関連サイトを流入が多い順に最大100件抽出した後に他フィルタが適用される。",
                "type": "object",
                "properties": {
                  "includes": {
                    "minItems": 1,
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "含む単語のリスト（1件以上必須）",
                    "example": [
                      "水族館"
                    ]
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "required": [
                  "includes"
                ],
                "additionalProperties": false
              },
              "domain": {
                "description": "ドメインフィルタ（含む/含まないドメインとマッチタイプ）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含むドメインのリスト",
                    "example": [
                      "example.com"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まないドメインのリスト",
                    "example": [
                      "example.net"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "matchType": {
                    "default": "partialMatch",
                    "description": "ドメインのマッチタイプ。partialMatch: 部分一致 / prefixMatch: 前方一致 / suffixMatch: 後方一致。省略時は partialMatch。",
                    "type": "string",
                    "enum": [
                      "partialMatch",
                      "prefixMatch",
                      "suffixMatch"
                    ]
                  }
                },
                "additionalProperties": false
              },
              "totalEtv": {
                "description": "推定流入数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "keywordCount": {
                "description": "キーワード数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "pageCount": {
                "description": "ページ数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "totalTrafficValue": {
                "description": "価値（USD）フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "relatedContentEtv": {
                "description": "関連コンテンツ推定流入数フィルタ（範囲指定）。コンテンツフィルタ指定時のみ有効。",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "contentRelevance": {
                "description": "コンテンツ関連性フィルタ（0〜100の範囲指定）。コンテンツフィルタ指定時のみ有効。",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1〜100 の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 100
          }
        },
        "additionalProperties": false
      },
      "SiteSearchResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 1.5
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "filter": {
                    "type": "object",
                    "properties": {
                      "keyword": {
                        "description": "コンテンツフィルタ（含む/含まないキーワード）。指定すると、まず関連サイトを流入が多い順に最大100件抽出した後に他フィルタが適用される。",
                        "type": "object",
                        "properties": {
                          "includes": {
                            "minItems": 1,
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "含む単語のリスト（1件以上必須）",
                            "example": [
                              "水族館"
                            ]
                          },
                          "notIncludes": {
                            "description": "含まない単語のリスト",
                            "example": [
                              "グッズ"
                            ],
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        },
                        "required": [
                          "includes"
                        ],
                        "additionalProperties": false
                      },
                      "domain": {
                        "description": "ドメインフィルタ（含む/含まないドメインとマッチタイプ）",
                        "type": "object",
                        "properties": {
                          "includes": {
                            "description": "含むドメインのリスト",
                            "example": [
                              "example.com"
                            ],
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "notIncludes": {
                            "description": "含まないドメインのリスト",
                            "example": [
                              "example.net"
                            ],
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "matchType": {
                            "default": "partialMatch",
                            "description": "ドメインのマッチタイプ。partialMatch: 部分一致 / prefixMatch: 前方一致 / suffixMatch: 後方一致。省略時は partialMatch。",
                            "type": "string",
                            "enum": [
                              "partialMatch",
                              "prefixMatch",
                              "suffixMatch"
                            ]
                          }
                        },
                        "additionalProperties": false
                      },
                      "totalEtv": {
                        "description": "推定流入数フィルタ（範囲指定）",
                        "type": "object",
                        "properties": {
                          "min": {
                            "description": "最小値",
                            "example": 100,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "max": {
                            "description": "最大値",
                            "example": 10000,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "additionalProperties": false
                      },
                      "keywordCount": {
                        "description": "キーワード数フィルタ（範囲指定）",
                        "type": "object",
                        "properties": {
                          "min": {
                            "description": "最小値",
                            "example": 100,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "max": {
                            "description": "最大値",
                            "example": 10000,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "additionalProperties": false
                      },
                      "pageCount": {
                        "description": "ページ数フィルタ（範囲指定）",
                        "type": "object",
                        "properties": {
                          "min": {
                            "description": "最小値",
                            "example": 100,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "max": {
                            "description": "最大値",
                            "example": 10000,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "additionalProperties": false
                      },
                      "totalTrafficValue": {
                        "description": "価値（USD）フィルタ（範囲指定）",
                        "type": "object",
                        "properties": {
                          "min": {
                            "description": "最小値",
                            "example": 100,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "max": {
                            "description": "最大値",
                            "example": 10000,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "additionalProperties": false
                      },
                      "relatedContentEtv": {
                        "description": "関連コンテンツ推定流入数フィルタ（範囲指定）。コンテンツフィルタ指定時のみ有効。",
                        "type": "object",
                        "properties": {
                          "min": {
                            "description": "最小値",
                            "example": 100,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "max": {
                            "description": "最大値",
                            "example": 10000,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "additionalProperties": false
                      },
                      "contentRelevance": {
                        "description": "コンテンツ関連性フィルタ（0〜100の範囲指定）。コンテンツフィルタ指定時のみ有効。",
                        "type": "object",
                        "properties": {
                          "min": {
                            "description": "最小値",
                            "example": 1,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          },
                          "max": {
                            "description": "最大値",
                            "example": 100,
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 9007199254740991
                          }
                        },
                        "additionalProperties": false
                      }
                    },
                    "additionalProperties": false,
                    "description": "リクエストで適用された絞り込み条件"
                  }
                },
                "required": [
                  "filter"
                ],
                "description": "リクエストで指定された検索条件"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "no": {
                      "type": "number",
                      "description": "結果内の連番（1始まり）",
                      "example": 1
                    },
                    "site": {
                      "type": "object",
                      "properties": {
                        "domain": {
                          "type": "string",
                          "description": "サイトのドメイン名",
                          "example": "rakkokeyword.com"
                        },
                        "url": {
                          "type": "string",
                          "description": "サイトのトップページURL",
                          "example": "https://rakkokeyword.com/"
                        },
                        "title": {
                          "type": "string",
                          "description": "トップページのタイトル",
                          "example": "ラッコキーワード"
                        },
                        "description": {
                          "type": "string",
                          "description": "トップページの説明文",
                          "example": "多機能でサクサク使えるキーワードリサーチツール。"
                        }
                      },
                      "required": [
                        "domain",
                        "url",
                        "title",
                        "description"
                      ],
                      "description": "サイト情報（ドメイン・URL・タイトル・説明文）"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "サイト全体の推定検索流入数（月間）",
                          "example": 140000
                        },
                        "trafficValue": {
                          "type": "number",
                          "description": "サイト全体の集客価値（USD）",
                          "example": 22660
                        },
                        "rankingKeywordCount": {
                          "type": "number",
                          "description": "サイト全体でランクインしているキーワード数",
                          "example": 1800
                        },
                        "pageCount": {
                          "type": "number",
                          "description": "ランクインしているページ数",
                          "example": 320
                        }
                      },
                      "required": [
                        "estimatedTraffic",
                        "trafficValue",
                        "rankingKeywordCount",
                        "pageCount"
                      ],
                      "description": "サイトの各種指標（推定流入数・価値・キーワード数・ページ数）"
                    },
                    "relatedContent": {
                      "anyOf": [
                        {
                          "type": "object",
                          "properties": {
                            "estimatedTraffic": {
                              "type": "number",
                              "description": "コンテンツフィルタに関連するページの推定流入数の合計",
                              "example": 12000
                            },
                            "relevanceScore": {
                              "type": "number",
                              "description": "コンテンツ関連性スコア（0〜100）。サイト全体の流入に占める関連コンテンツ流入の割合。",
                              "example": 42
                            }
                          },
                          "required": [
                            "estimatedTraffic",
                            "relevanceScore"
                          ]
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "コンテンツフィルタ関連の指標。コンテンツフィルタ未指定時は null。"
                    }
                  },
                  "required": [
                    "no",
                    "site",
                    "metrics",
                    "relatedContent"
                  ]
                },
                "description": "サイト検索結果のリスト。流入が多い順（コンテンツフィルタ指定時は関連コンテンツ流入が多い順）。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "サイト検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      }
    }
  }
}