# OnPage API 중복 콘텐츠

**API:** Data API

**Endpoint:** `POST /v1/beta/dataforseo/on_page/duplicate_content`

**Tags:** DataForSEO

크롤 내에서 `similarity` 임계값을 넘어 주어진 `url`과 콘텐츠가 유사한 페이지를 찾습니다. 완료된 크롤을 읽으므로 `post_dataforseo_on_page_submit`의 `id`가 필요하며, `crawl_progress`와 `max_crawl_pages`, `pages_in_queue`, `pages_crawled` 값의 `crawl_status`를 반환합니다. 결과가 적을 때 신뢰하기 전에 이를 확인하세요. 아직 실행 중인 크롤은 보고할 내용이 그만큼 적을 뿐입니다. 본문 텍스트가 아니라 중복된 제목이나 메타 설명에는 `post_dataforseo_on_page_duplicate_tags`를 사용하세요. 💰 업스트림에서 무료입니다. 완료된 크롤을 조회하는 데는 비용이 들지 않으며, 크롤 자체에만 비용이 듭니다.

### 가격 참고

- 과금 기준: 보고된 응답 비용.
- 참고 요청 추정치: USD 0.012.
- 참고 고객 배수: 1.0. 정산된 고객 금액에 다시 적용하지 마세요.

참고용 메타데이터일 뿐이며, 계정 견적, 보장된 가격 또는 지출 한도가 아닙니다. 리소스 크레딧은 Felo 크레딧이 아닙니다. 최종 청구는 Felo 청구 기록을 따릅니다.

## Base URL

- `https://openapi.felo.ai`

## Authentication

- `FeloBearerAuth` (http bearer, bearer format Felo API Key)
- `FeloApiKey` (apiKey in header `X-API-Key`)

## Request body

Required: **no**

### application/json

Schema:

```json
{
  "type": "array",
  "items": {
    "type": [
      "object",
      "null"
    ],
    "oneOf": [
      {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "<em>작업 ID</em><br><strong>필수 필드</strong><br>이 ID는 <a href=\"https://docs.dataforseo.com/v3/on_page/task_post/\">Task POST</a> 엔드포인트의 응답에서 얻을 수 있습니다<br>예:<br>\"07131248-1535-0216-1000-17384017ad04\""
          },
          "url": {
            "type": "string",
            "description": "<em>페이지 URL</em><br><strong>필수 필드</strong><br>중복 콘텐츠를 받을 초기 페이지를 지정하세요"
          },
          "similarity": {
            "type": [
              "integer",
              "null"
            ],
            "description": "<em>콘텐츠 유사도 점수</em><br>기본적으로 값이 <code>6</code> 이상이면 콘텐츠가 중복된 것으로 간주됩니다<br>0~10 범위의 유사도 점수를 지정할 수 있습니다"
          },
          "limit": {
            "type": [
              "integer",
              "null"
            ],
            "description": "<em>반환되는 최대 페이지 수</em><br>선택 필드<br>기본값: <code>100</code><br>최댓값: <code>1000</code>"
          },
          "offset": {
            "type": [
              "integer",
              "null"
            ],
            "description": "<em>반환된 페이지의 결과 배열에서의 오프셋</em><br>선택 필드<br>기본값: <code>0</code><br>최댓값: <code>2000000</code><br><code>10</code> 값을 지정하면 결과 배열의 처음 열 페이지를 건너뛰고 이후 페이지의 데이터를 제공합니다"
          },
          "tag": {
            "type": [
              "string",
              "null"
            ],
            "description": "<em>사용자 정의 작업 식별자</em><br>선택 필드<br><em>최대 255자</em><br>이 매개변수를 사용해 작업을 식별하고 결과와 매칭할 수 있습니다<br><code>tag</code>에 지정한 값은 응답의 <code>data</code> 객체에서 확인할 수 있습니다"
          }
        },
        "example": [
          {
            "id": "07281559-0695-0216-0000-c269be8b7592",
            "url": "https://www.etsy.com/"
          }
        ]
      }
    ]
  },
  "example": [
    {
      "id": "07281559-0695-0216-0000-c269be8b7592",
      "url": "https://www.etsy.com/"
    }
  ]
}
```

## Responses

### 200 — 작업 성공

Headers:
- `X-Request-Id` (string) — Felo 지원팀에 문의할 때 포함할 요청 식별자입니다.

**application/json**

Schema: object | null

```json
{
  "type": [
    "object",
    "null"
  ],
  "oneOf": [
    {
      "$ref": "#/components/schemas/Response36Afe1097B20_OnPageDuplicateContentResponseInfo"
    }
  ]
}
```

### 400 — 요청을 처리할 수 없습니다. 요청 매개변수를 확인하세요.

### 401 — 유효한 Felo API 키가 필요합니다.

### 402 — 청구 요건이 충족되지 않아 요청을 진행할 수 없습니다.

### 403 — 이 계정에는 이 작업을 수행할 권한이 없습니다.

### 429 — 요청 또는 지출 한도에 도달했습니다.

### 502 — 서비스가 요청을 완료할 수 없습니다.

### 503 — API 또는 청구 서비스를 일시적으로 사용할 수 없습니다.

### 504 — 요청을 처리하는 동안 서비스 시간이 초과되었습니다.

### default — 오류 응답. 업스트림 패스스루 응답은 공급자 형식을 사용할 수 있습니다.

**application/json**

Schema:

```json
{}
```

## Schema definitions

### Response36Afe1097B20_BaseOnPageResourceItem

`#/components/schemas/Response36Afe1097B20_BaseOnPageResourceItem`

```json
{
  "type": "object",
  "properties": {
    "resource_type": {
      "type": [
        "string",
        "null"
      ],
      "description": "요소 유형"
    },
    "status_code": {
      "type": [
        "integer",
        "null"
      ],
      "description": "일반 상태 코드입니다.\n응답 코드 전체 목록은 여기에서 확인할 수 있습니다.\n참고: 관련 예외 또는 오류 조건을 처리하는 시스템을 반드시 설계할 것을 강력히 권장합니다."
    },
    "location": {
      "type": [
        "string",
        "null"
      ],
      "description": "위치 헤더, 페이지를 리디렉션할 URL을 나타냅니다"
    },
    "url": {
      "type": [
        "string",
        "null"
      ],
      "description": "페이지 URL"
    },
    "resource_errors": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_OnPageResourceIssueInfo"
        }
      ],
      "description": "리소스 오류 및 경고"
    },
    "size": {
      "type": [
        "integer",
        "null"
      ],
      "description": "리소스 크기, 지정된 페이지의 크기를 바이트 단위로 나타냅니다"
    },
    "encoded_size": {
      "type": [
        "integer",
        "null"
      ],
      "description": "인코딩 후 페이지 크기, 인코딩된 페이지의 크기를 바이트 단위로 나타냅니다"
    },
    "total_transfer_size": {
      "type": [
        "integer",
        "null"
      ],
      "description": "압축된 페이지 크기, 지정된 페이지의 압축 크기를 나타냅니다",
      "format": "int64"
    },
    "fetch_time": {
      "type": [
        "string",
        "null"
      ],
      "description": "리소스를 가져온 날짜와 시간, UTC 형식: “yyyy-mm-dd hh-mm-ss +00:00” 예: 2019-11-15 12:57:46 +00:00"
    },
    "cache_control": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_CacheControl"
        }
      ],
      "description": "캐싱 지침"
    },
    "checks": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": {
        "type": [
          "boolean",
          "null"
        ]
      },
      "description": "웹사이트 검사, 페이지 관련 온페이지 점검"
    },
    "content_encoding": {
      "type": [
        "string",
        "null"
      ],
      "description": "인코딩 유형"
    },
    "media_type": {
      "type": [
        "string",
        "null"
      ],
      "description": "페이지를 표시하는 데 사용되는 미디어 유형"
    },
    "server": {
      "type": [
        "string",
        "null"
      ],
      "description": "서버 버전"
    },
    "last_modified": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_LastModified"
        }
      ],
      "description": "리소스와 관련된 변경 데이터를 포함합니다. 데이터가 없으면 값은 null입니다"
    }
  },
  "additionalProperties": false,
  "discriminator": {
    "propertyName": "resource_type",
    "mapping": {
      "html": "#/components/schemas/Response36Afe1097B20_OnPageHtmlResourceItem",
      "broken": "#/components/schemas/Response36Afe1097B20_OnPageBrokenResourceItem",
      "redirect": "#/components/schemas/Response36Afe1097B20_OnPageRedirectResourceItem",
      "script": "#/components/schemas/Response36Afe1097B20_OnPageScriptResourceItem",
      "image": "#/components/schemas/Response36Afe1097B20_OnPageImageResourceItem",
      "stylesheet": "#/components/schemas/Response36Afe1097B20_OnPageStylesheetResourceItem"
    }
  }
}
```

### Response36Afe1097B20_BaseResponseInfo

`#/components/schemas/Response36Afe1097B20_BaseResponseInfo`

```json
{
  "properties": {
    "version": {
      "type": [
        "string",
        "null"
      ],
      "description": "API의 현재 버전"
    },
    "status_code": {
      "type": [
        "integer",
        "null"
      ],
      "description": "일반 상태 코드입니다.\n응답 코드 전체 목록은 여기에서 확인할 수 있습니다."
    },
    "status_message": {
      "type": [
        "string",
        "null"
      ],
      "description": "일반 정보 메시지입니다.\n일반 정보 메시지 전체 목록은 여기에서 확인할 수 있습니다."
    },
    "time": {
      "type": [
        "string",
        "null"
      ],
      "description": "총 실행 시간(초)"
    },
    "cost": {
      "type": [
        "number",
        "null"
      ],
      "description": "전체 작업 비용, USD",
      "format": "double"
    },
    "tasks_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "tasks 배열의 작업 수",
      "format": "int64"
    },
    "tasks_error": {
      "type": [
        "integer",
        "null"
      ],
      "description": "오류와 함께 반환된 tasks 배열의 작업 수",
      "format": "int64"
    }
  }
}
```

### Response36Afe1097B20_BaseResponseTaskInfo

`#/components/schemas/Response36Afe1097B20_BaseResponseTaskInfo`

```json
{
  "properties": {
    "id": {
      "type": [
        "string",
        "null"
      ],
      "description": "작업 식별자\n시스템 내 고유 작업 식별자(UUID 형식)"
    },
    "status_code": {
      "type": [
        "integer",
        "null"
      ],
      "description": "작업의 상태 코드\nDataForSEO가 생성하며 10000-60000 범위일 수 있습니다.\n응답 코드 전체 목록은 여기에서 확인할 수 있습니다."
    },
    "status_message": {
      "type": [
        "string",
        "null"
      ],
      "description": "작업의 정보 메시지\n일반 정보 메시지 전체 목록은 여기에서 확인할 수 있습니다."
    },
    "time": {
      "type": [
        "string",
        "null"
      ],
      "description": "실행 시간, 초"
    },
    "cost": {
      "type": [
        "number",
        "null"
      ],
      "description": "전체 작업 비용, USD",
      "format": "double"
    },
    "result_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "result 배열의 요소 수",
      "format": "int64"
    },
    "path": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "string",
          "null"
        ]
      },
      "description": "URL 경로"
    },
    "data": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": {
        "type": [
          "object",
          "null"
        ]
      },
      "description": "POST 요청에 지정한 것과 동일한 매개변수를 포함합니다"
    }
  }
}
```

### Response36Afe1097B20_CacheControl

`#/components/schemas/Response36Afe1097B20_CacheControl`

```json
{
  "type": "object",
  "properties": {
    "cachable": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "페이지를 캐시할 수 있는지 나타냅니다"
    },
    "ttl": {
      "type": [
        "integer",
        "null"
      ],
      "description": "캐시 수명, 브라우저가 리소스를 캐시하는 시간"
    }
  }
}
```

### Response36Afe1097B20_CrawlStatusInfo

`#/components/schemas/Response36Afe1097B20_CrawlStatusInfo`

```json
{
  "type": "object",
  "properties": {
    "max_crawl_pages": {
      "type": [
        "integer",
        "null"
      ],
      "description": "크롤링할 최대 페이지 수\n작업을 설정할 때 지정한 max_crawl_pages 한도를 나타냅니다",
      "format": "int64"
    },
    "pages_in_queue": {
      "type": [
        "integer",
        "null"
      ],
      "description": "현재 크롤링 대기열에 있는 페이지 수",
      "format": "int64"
    },
    "pages_crawled": {
      "type": [
        "integer",
        "null"
      ],
      "description": "크롤링된 페이지 수",
      "format": "int64"
    }
  }
}
```

### Response36Afe1097B20_DuplicatePageInfo

`#/components/schemas/Response36Afe1097B20_DuplicatePageInfo`

```json
{
  "type": "object",
  "properties": {
    "similarity": {
      "type": [
        "integer",
        "null"
      ]
    },
    "page": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "object",
          "null"
        ],
        "oneOf": [
          {
            "$ref": "#/components/schemas/Response36Afe1097B20_OnPageHtmlResourceItem"
          }
        ]
      },
      "description": "<em>중복 콘텐츠가 있는 페이지에 관한 정보</em>"
    }
  }
}
```

### Response36Afe1097B20_HtmlContentInfo

`#/components/schemas/Response36Afe1097B20_HtmlContentInfo`

```json
{
  "type": "object",
  "properties": {
    "plain_text_size": {
      "type": [
        "integer",
        "null"
      ],
      "description": "바이트 단위로 측정된 페이지 텍스트의 총 크기"
    },
    "plain_text_rate": {
      "type": [
        "number",
        "null"
      ],
      "description": "일반 텍스트 비율 값\nplain_text_size 대비 size 비율",
      "format": "double"
    },
    "plain_text_word_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지의 단어 수"
    },
    "automated_readability_index": {
      "type": [
        "number",
        "null"
      ],
      "description": "자동 가독성 지수"
    },
    "coleman_liau_readability_index": {
      "type": [
        "number",
        "null"
      ],
      "description": "Coleman–Liau 지수"
    },
    "dale_chall_readability_index": {
      "type": [
        "number",
        "null"
      ],
      "description": "Dale–Chall 가독성 지수"
    },
    "flesch_kincaid_readability_index": {
      "type": [
        "number",
        "null"
      ],
      "description": "Flesch–Kincaid 가독성 지수"
    },
    "smog_readability_index": {
      "type": [
        "number",
        "null"
      ],
      "description": "SMOG 가독성 지수"
    },
    "description_to_content_consistency": {
      "type": [
        "number",
        "null"
      ],
      "description": "메타 설명 태그와 페이지 콘텐츠의 일치도, 0~1 범위로 측정"
    },
    "title_to_content_consistency": {
      "type": [
        "number",
        "null"
      ],
      "description": "메타 제목 태그와 페이지 콘텐츠의 일치도, 0~1 범위로 측정"
    },
    "meta_keywords_to_content_consistency": {
      "type": [
        "number",
        "null"
      ],
      "description": "메타 키워드 태그와 페이지 콘텐츠의 일치도, 0~1 범위로 측정"
    }
  }
}
```

### Response36Afe1097B20_HunspellInfo

`#/components/schemas/Response36Afe1097B20_HunspellInfo`

```json
{
  "type": "object",
  "properties": {
    "hunspell_language_code": {
      "type": [
        "string",
        "null"
      ],
      "description": "맞춤법 검사 언어 코드"
    },
    "misspelled": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "object",
          "null"
        ],
        "oneOf": [
          {
            "$ref": "#/components/schemas/Response36Afe1097B20_HunspellMisspelledInfo"
          }
        ]
      },
      "description": "맞춤법 오류 단어 배열"
    }
  }
}
```

### Response36Afe1097B20_HunspellMisspelledInfo

`#/components/schemas/Response36Afe1097B20_HunspellMisspelledInfo`

```json
{
  "type": "object",
  "properties": {
    "word": {
      "type": [
        "string",
        "null"
      ],
      "description": "맞춤법 오류 단어"
    }
  }
}
```

### Response36Afe1097B20_LastModified

`#/components/schemas/Response36Afe1097B20_LastModified`

```json
{
  "type": "object",
  "properties": {
    "header": {
      "type": [
        "string",
        "null"
      ],
      "description": "헤더가 마지막으로 수정된 날짜와 시간. UTC 형식: \"yyyy-mm-dd hh-mm-ss +00:00\". 예: 2019-11-15 12:57:46 +00:00. 데이터가 없으면 값은 null입니다"
    },
    "sitemap": {
      "type": [
        "string",
        "null"
      ],
      "description": "사이트맵이 마지막으로 수정된 날짜와 시간. UTC 형식: \"yyyy-mm-dd hh-mm-ss +00:00\". 예: 2019-11-15 12:57:46 +00:00. 데이터가 없으면 값은 null입니다"
    },
    "meta_tag": {
      "type": [
        "string",
        "null"
      ],
      "description": "메타 태그가 마지막으로 수정된 날짜와 시간. UTC 형식: \"yyyy-mm-dd hh-mm-ss +00:00\". 예: 2019-11-15 12:57:46 +00:00. 데이터가 없으면 값은 null입니다"
    }
  }
}
```

### Response36Afe1097B20_OnPageDuplicateContentItem

`#/components/schemas/Response36Afe1097B20_OnPageDuplicateContentItem`

```json
{
  "type": "object",
  "properties": {
    "url": {
      "type": [
        "string",
        "null"
      ],
      "description": "<em>지정된 페이지의 URL</em>"
    },
    "total_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "<em>중복 페이지의 총 개수</em>",
      "format": "int64"
    },
    "pages": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "object",
          "null"
        ],
        "oneOf": [
          {
            "$ref": "#/components/schemas/Response36Afe1097B20_DuplicatePageInfo"
          }
        ]
      },
      "description": "<em>중복 콘텐츠가 있는 페이지</em>"
    }
  }
}
```

### Response36Afe1097B20_OnPageDuplicateContentResponseInfo

`#/components/schemas/Response36Afe1097B20_OnPageDuplicateContentResponseInfo`

```json
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/Response36Afe1097B20_BaseResponseInfo"
    },
    {
      "type": "object",
      "properties": {
        "tasks": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": [
              "object",
              "null"
            ],
            "oneOf": [
              {
                "$ref": "#/components/schemas/Response36Afe1097B20_OnPageDuplicateContentTaskInfo"
              }
            ]
          },
          "description": "<em>작업 배열</em>"
        }
      }
    }
  ]
}
```

### Response36Afe1097B20_OnPageDuplicateContentResultInfo

`#/components/schemas/Response36Afe1097B20_OnPageDuplicateContentResultInfo`

```json
{
  "type": "object",
  "properties": {
    "crawl_progress": {
      "type": [
        "string",
        "null"
      ],
      "description": "<em>크롤링 세션 상태</em><br>가능한 값: <code>in_progress</code>, <code>finished</code>"
    },
    "crawl_status": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_CrawlStatusInfo"
        }
      ],
      "description": "<em>크롤링 세션 세부 정보</em>"
    },
    "items_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "<em>결과 배열의 항목 수</em>",
      "format": "int64"
    },
    "items": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "object",
          "null"
        ],
        "oneOf": [
          {
            "$ref": "#/components/schemas/Response36Afe1097B20_OnPageDuplicateContentItem"
          }
        ]
      },
      "description": "<em>항목 배열</em>"
    }
  }
}
```

### Response36Afe1097B20_OnPageDuplicateContentTaskInfo

`#/components/schemas/Response36Afe1097B20_OnPageDuplicateContentTaskInfo`

```json
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/Response36Afe1097B20_BaseResponseTaskInfo"
    },
    {
      "type": "object",
      "properties": {
        "result": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": [
              "object",
              "null"
            ],
            "oneOf": [
              {
                "$ref": "#/components/schemas/Response36Afe1097B20_OnPageDuplicateContentResultInfo"
              }
            ]
          },
          "description": "<em>결과 배열</em>"
        }
      }
    }
  ]
}
```

### Response36Afe1097B20_OnPageHtmlResourceItem

`#/components/schemas/Response36Afe1097B20_OnPageHtmlResourceItem`

```json
{
  "type": "object",
  "allOf": [
    {
      "$ref": "#/components/schemas/Response36Afe1097B20_BaseOnPageResourceItem"
    },
    {
      "type": "object",
      "properties": {
        "meta": {
          "type": [
            "object",
            "null"
          ],
          "oneOf": [
            {
              "$ref": "#/components/schemas/Response36Afe1097B20_PageMetaInfo"
            }
          ],
          "properties": {
            "social_media_tags": {
              "type": [
                "object",
                "null"
              ],
              "additionalProperties": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "broken_html": {
              "type": [
                "object",
                "null"
              ],
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Response36Afe1097B20_OnPageResourceIssueInfo"
                }
              ],
              "description": "리소스 오류 및 경고"
            }
          },
          "description": "페이지 속성. 값은 resource_type에 따라 달라집니다"
        },
        "page_timing": {
          "type": [
            "object",
            "null"
          ],
          "oneOf": [
            {
              "$ref": "#/components/schemas/Response36Afe1097B20_PageTiming"
            }
          ],
          "description": "페이지 로드 지표 객체"
        },
        "onpage_score": {
          "type": [
            "number",
            "null"
          ],
          "description": "페이지가 100점 척도에서 얼마나 최적화되었는지 보여줍니다. 이 필드는 감지된 중요한 페이지 내 문제와 경고를 고려하여 페이지가 얼마나 최적화되었는지 보여줍니다;100은 가능한 최고 점수로, 페이지에 중요한 페이지 내 문제와 주요 경고가 없음을 의미합니다;이 지표의 계산 방식은 이 도움말 센터 문서에서 확인하세요"
        },
        "total_dom_size": {
          "type": [
            "integer",
            "null"
          ],
          "description": "페이지의 총 DOM 크기",
          "format": "int64"
        },
        "custom_js_response": {
          "type": [
            "object",
            "null"
          ],
          "description": "지정된 JS 스크립트 실행 결과. 이 데이터를 받으려면 작업을 설정할 때 custom_js 필드를 지정해야 하며, 필드 유형과 값은 지정한 스크립트에 전적으로 따라갑니다. 다음과 같이 filters를 지정하여 이 값으로 결과를 필터링할 수도 있습니다:[\"custom_js_response.url\", \"like\", \"pixel\"]"
        },
        "custom_js_client_exception": {
          "type": [
            "string",
            "null"
          ],
          "description": "사용자 지정 JS 실행 중 오류. custom_js 필드에 지정한 스크립트를 실행하는 중 오류가 발생하면 여기에 오류 메시지가 표시됩니다"
        },
        "broken_resources": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "페이지에 깨진 리소스가 있는지 나타냅니다"
        },
        "broken_links": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "페이지에 깨진 링크가 있는지 나타냅니다"
        },
        "duplicate_title": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "페이지에 중복 제목 태그가 있는지 나타냅니다"
        },
        "duplicate_description": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "페이지에 중복 설명이 있는지 나타냅니다"
        },
        "duplicate_content": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "페이지에 중복 콘텐츠가 있는지 나타냅니다"
        },
        "click_depth": {
          "type": [
            "integer",
            "null"
          ],
          "description": "페이지에 도달하는 데 필요한 클릭 수. 홈페이지에서 대상 페이지에 도달하기까지 필요한 클릭 수를 나타냅니다"
        },
        "is_resource": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "페이지가 단일 리소스인지 나타냅니다"
        },
        "url_length": {
          "type": [
            "integer",
            "null"
          ],
          "description": "페이지 URL 길이(문자 수)"
        },
        "relative_url_length": {
          "type": [
            "integer",
            "null"
          ],
          "description": "상대 URL 길이(문자 수)"
        }
      }
    }
  ]
}
```

### Response36Afe1097B20_OnPageResourceIssueInfo

`#/components/schemas/Response36Afe1097B20_OnPageResourceIssueInfo`

```json
{
  "type": "object",
  "properties": {
    "errors": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "object",
          "null"
        ],
        "oneOf": [
          {
            "$ref": "#/components/schemas/Response36Afe1097B20_OnPageResourceIssueItemInfo"
          }
        ]
      },
      "description": "리소스 오류"
    },
    "warnings": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "object",
          "null"
        ],
        "oneOf": [
          {
            "$ref": "#/components/schemas/Response36Afe1097B20_OnPageResourceIssueItemInfo"
          }
        ]
      },
      "description": "리소스 경고"
    }
  },
  "description": "리소스 오류 및 경고"
}
```

### Response36Afe1097B20_OnPageResourceIssueItemInfo

`#/components/schemas/Response36Afe1097B20_OnPageResourceIssueItemInfo`

```json
{
  "type": "object",
  "properties": {
    "line": {
      "type": [
        "integer",
        "null"
      ],
      "description": "오류가 발견된 줄"
    },
    "column": {
      "type": [
        "integer",
        "null"
      ],
      "description": "오류가 발견된 열"
    },
    "message": {
      "type": [
        "string",
        "null"
      ],
      "description": "오류의 텍스트 메시지. 가능한 HTML 오류의 전체 목록은 여기에서 확인할 수 있습니다"
    },
    "status_code": {
      "type": [
        "integer",
        "null"
      ],
      "description": "일반 상태 코드입니다.\n응답 코드 전체 목록은 여기에서 확인할 수 있습니다.\n참고: 관련 예외 또는 오류 조건을 처리하는 시스템을 반드시 설계할 것을 강력히 권장합니다."
    }
  }
}
```

### Response36Afe1097B20_PageMetaInfo

`#/components/schemas/Response36Afe1097B20_PageMetaInfo`

```json
{
  "type": "object",
  "properties": {
    "title": {
      "type": [
        "string",
        "null"
      ],
      "description": "페이지 제목"
    },
    "charset": {
      "type": [
        "integer",
        "null"
      ],
      "description": "코드 페이지. 예: 65001"
    },
    "follow": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "페이지의 'meta robots'가 크롤러의 페이지 링크 팔로우를 허용하는지 나타냅니다. false이면 페이지의 'meta robots' 태그에 크롤러가 페이지 링크를 팔로우하지 않도록 지시하는 \"nofollow\" 매개변수가 포함되어 있습니다"
    },
    "generator": {
      "type": [
        "string",
        "null"
      ],
      "description": "메타 태그 생성기"
    },
    "htags": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": {
        "type": [
          "array",
          "null"
        ],
        "items": {
          "type": "string"
        }
      },
      "description": "HTML 헤더 태그"
    },
    "description": {
      "type": [
        "string",
        "null"
      ],
      "description": "메타 설명 태그의 콘텐츠"
    },
    "favicon": {
      "type": [
        "string",
        "null"
      ],
      "description": "페이지의 파비콘"
    },
    "meta_keywords": {
      "type": [
        "string",
        "null"
      ],
      "description": "키워드 메타 태그의 콘텐츠"
    },
    "canonical": {
      "type": [
        "string",
        "null"
      ],
      "description": "canonical 페이지"
    },
    "internal_links_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지의 내부 링크 수",
      "format": "int64"
    },
    "external_links_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지의 외부 링크 수",
      "format": "int64"
    },
    "inbound_links_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지를 가리키는 내부 링크 수",
      "format": "int64"
    },
    "images_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지의 이미지 수",
      "format": "int64"
    },
    "images_size": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지 이미지의 총 크기(바이트)"
    },
    "scripts_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지의 스크립트 수",
      "format": "int64"
    },
    "scripts_size": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지 스크립트의 총 크기(바이트)"
    },
    "stylesheets_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지의 스타일시트 수",
      "format": "int64"
    },
    "stylesheets_size": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지 스타일시트의 총 크기(바이트)"
    },
    "title_length": {
      "type": [
        "integer",
        "null"
      ],
      "description": "제목 태그의 길이(문자 수)"
    },
    "description_length": {
      "type": [
        "integer",
        "null"
      ],
      "description": "설명 태그의 길이(문자 수)"
    },
    "render_blocking_scripts_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지 렌더링을 차단하는 페이지의 스크립트 수",
      "format": "int64"
    },
    "render_blocking_stylesheets_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "페이지 렌더링을 차단하는 페이지의 CSS 스타일 수",
      "format": "int64"
    },
    "cumulative_layout_shift": {
      "type": [
        "number",
        "null"
      ],
      "description": "페이지의 레이아웃 안정성을 측정하는 Core Web Vitals 지표. 페이지 수명 동안 발생하는 모든 예기치 않은 레이아웃 이동에 대한 개별 레이아웃 이동 점수의 합계를 측정합니다. 자세히 알아보기."
    },
    "meta_title": {
      "type": [
        "string",
        "null"
      ],
      "description": "페이지의 메타 제목. HTML 문서의 head 섹션에서 페이지 제목을 정의하는 메타 태그"
    },
    "content": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_HtmlContentInfo"
        }
      ],
      "description": "페이지 콘텐츠 전반에 대한 정보"
    },
    "deprecated_tags": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "string",
          "null"
        ]
      },
      "description": "페이지의 지원 중단된 태그"
    },
    "duplicate_meta_tags": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "string",
          "null"
        ]
      },
      "description": "페이지의 중복 메타 태그"
    },
    "spell": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_HunspellInfo"
        }
      ],
      "description": "맞춤법 검사. hunspell 맞춤법 검사 오류"
    },
    "social_media_tags": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": {
        "type": [
          "string",
          "null"
        ]
      },
      "description": "페이지에서 발견된 소셜 미디어 태그 객체. 소셜 미디어 태그와 해당 콘텐츠를 포함합니다. 지원되는 태그에는 Open Graph 및 Twitter 카드가 포함되지만 이에 국한되지 않습니다"
    },
    "broken_html": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_OnPageResourceIssueInfo"
        }
      ],
      "description": "리소스 오류 및 경고"
    }
  }
}
```

### Response36Afe1097B20_PageTiming

`#/components/schemas/Response36Afe1097B20_PageTiming`

```json
{
  "type": "object",
  "properties": {
    "time_to_interactive": {
      "type": [
        "integer",
        "null"
      ],
      "description": "TTI(Time To Interactive) 지표. 사용자가 페이지와 상호작용할 수 있을 때까지 걸리는 시간(밀리초)"
    },
    "dom_complete": {
      "type": [
        "integer",
        "null"
      ],
      "description": "리소스 로드 시간. 페이지와 모든 하위 리소스가 다운로드될 때까지 걸리는 시간(밀리초)"
    },
    "largest_contentful_paint": {
      "type": [
        "number",
        "null"
      ],
      "description": "가장 큰 초기 화면 콘텐츠 요소가 표시되는 속도를 측정하는 Core Web Vitals 지표. 사용자가 URL을 요청한 시점부터 뷰포트에 표시되는 가장 큰 콘텐츠 요소를 렌더링하는 데 걸리는 시간(밀리초)입니다. 자세히 알아보기."
    },
    "first_input_delay": {
      "type": [
        "number",
        "null"
      ],
      "description": "페이지의 응답성을 나타내는 Core Web Vitals 지표. 사용자가 페이지와 처음 상호작용한 시점부터 브라우저가 해당 상호작용에 응답하는 시점까지의 시간(밀리초)입니다. 자세히 알아보기."
    },
    "connection_time": {
      "type": [
        "integer",
        "null"
      ],
      "description": "서버 연결 시간. 서버와의 연결이 설정될 때까지 걸리는 시간(밀리초)"
    },
    "time_to_secure_connection": {
      "type": [
        "integer",
        "null"
      ],
      "description": "보안 연결 설정 시간. 서버와의 보안 연결이 설정될 때까지 걸리는 시간(밀리초)"
    },
    "request_sent_time": {
      "type": [
        "integer",
        "null"
      ],
      "description": "서버로 요청을 보내는 시간. 서버로의 요청이 전송될 때까지 걸리는 시간(밀리초)"
    },
    "waiting_time": {
      "type": [
        "integer",
        "null"
      ],
      "description": "첫 바이트까지의 시간(TTFB)(밀리초)"
    },
    "download_time": {
      "type": [
        "integer",
        "null"
      ],
      "description": "브라우저가 응답을 받는 데 걸리는 시간(밀리초)"
    },
    "duration_time": {
      "type": [
        "integer",
        "null"
      ],
      "description": "브라우저가 서버에서 전체 응답을 받기까지 걸리는 총 시간(밀리초)"
    },
    "fetch_start": {
      "type": [
        "integer",
        "null"
      ],
      "description": "HTML 리소스 다운로드를 시작하는 시간. 브라우저가 페이지 다운로드를 시작하는 데 필요한 시간"
    },
    "fetch_end": {
      "type": [
        "integer",
        "null"
      ],
      "description": "HTML 리소스 다운로드를 완료하는 시간. 브라우저가 페이지 다운로드를 완료하는 데 필요한 시간"
    }
  }
}
```
