# Content Analysis – 감정 분석 API

**API:** Data API

**Endpoint:** `POST /v1/beta/dataforseo/content_analysis/sentiment_analysis/live`

**Tags:** DataForSEO

키워드 인용의 감정 분포입니다: `positive_connotation_distribution`(positive, negative, neutral)과 `sentiment_connotation_distribution`(anger, happiness, love, sadness, share, fun). `positive_connotation_threshold`와 `sentiments_connotation_threshold`는 분류가 집계되려면 얼마나 확신해야 하는지 설정합니다. ⚠️ 두 블록은 이미 `post_dataforseo_content_summary_live`에 포함되어 있으며, 같은 비용에 도메인, 카테고리, 국가, 언어까지 추가됩니다. 응답이 작은 것이 중요하지 않다면 이쪽을 선호하세요. 별점별 감정 분포는 `post_dataforseo_content_rating_distribution_live`를 사용하세요.

### 가격 참고

- 과금 기준: 응답에 보고된 비용.
- 참고 요청 추정치: USD 0.024.
- 참고 고객 배수: 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": {
          "keyword": {
            "type": "string",
            "description": "대상 키워드\n필수 필드\nUTF-8 인코딩\n키워드는 소문자로 변환됩니다.\n참고: 단일 키워드 대신 정확한 구문을 일치시키려면 큰따옴표와 백슬래시를 사용하세요.\n예시:\n\"keyword\": \"\\\"tesla palo alto\\\"\"\nDataForSEO API의 keyword 및 keywords 필드 규칙과 제한은 이 도움말 센터 문서에서 자세히 알아보세요."
          },
          "keyword_fields": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            },
            "description": "대상 키워드 필드 및 대상 키워드\n선택 필드\n이 매개변수로 특정 필드에 포함되어야 하는 키워드를 기준으로 데이터세트를 필터링합니다.\n지정할 수 있는 필드: title, main_title, previous_title, snippet\n여러 필드를 지정할 수 있습니다.\n참고: 단일 키워드 대신 정확한 구문을 일치시키려면 큰따옴표와 백슬래시를 사용하세요.\n예시:\n\"keyword_fields\": {\n   \"snippet\": \"\\\"logitech mouse\\\"\",\n   \"main_title\": \"sale\"\n}"
          },
          "page_type": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "대상 페이지 유형\n선택 필드\n이 매개변수로 페이지 유형별로 데이터세트를 필터링합니다\n가능한 값:\n\"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\""
          },
          "internal_list_limit": {
            "type": [
              "integer",
              "null"
            ],
            "description": "내부 배열의 최대 요소 수\n선택 필드\n이 필드로 다음 배열의 요소 수를 제한할 수 있습니다:\ntop_domains\ntext_categories\npage_categories\ncountries\nlanguages\n기본값: 1\n최댓값: 20"
          },
          "positive_connotation_threshold": {
            "type": [
              "number",
              "null"
            ],
            "description": "긍정적 함의 임계값\n선택 필드\n인용 내용과 관련된 긍정적 감정의 확률 지수 임계값으로 지정됩니다\n이 필드를 지정하면 응답의 connotation_types 객체에는 positive 감정 확률이 지정된 값 이상인 인용 데이터만 포함됩니다\n가능한 값: 0 ~ 1\n기본값: 0.4"
          },
          "sentiments_connotation_threshold": {
            "type": [
              "number",
              "null"
            ],
            "description": "감정 함의 임계값\n선택 필드\n인용 내용과 관련된 감정 함의의 확률 지수 임계값으로 지정됩니다\n이 필드를 지정하면 응답의 sentiment_connotations 객체에는 각 감정별 확률이 지정된 값 이상인 인용 데이터만 포함됩니다\n가능한 값: 0 ~ 1\n기본값: 0.4"
          },
          "initial_dataset_filters": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": [
                "object",
                "null"
              ]
            },
            "description": "초기 데이터세트 필터링 매개변수\n선택 필드\nSearch 엔드포인트의 필드에 적용되는 초기 필터링 매개변수\n필터를 한 번에 여러 개 추가할 수 있습니다(최대 8개)\n조건 사이에 논리 연산자 and, or를 설정해야 합니다\n지원되는 연산자는 다음과 같습니다:\nregex, not_regex, <, <=, >, >=, =, <>, in, not_in, like,not_like, has, has_not, match, not_match\nlike 및 not_like와 함께 % 연산자를 사용하여 0개 이상의 문자로 된 문자열을 일치시킬 수 있습니다\n예시:\n[\"domain\",\"<>\", \"logitech.com\"]\n[[\"domain\",\"<>\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]]\n[[\"domain\",\"<>\",\"logitech.com\"]],\n\"and\",\n[[\"content_info.connotation_types.negative\",\">\",1000],\n\"or\",\n[\"content_info.text_category\",\"has\",10994]]]\n필터에 대한 자세한 내용은 Content Analysis API – Filters를 참조하세요\n초기 데이터세트 필터에 대한 자세한 내용은 이 도움말 센터 문서에서 확인하세요."
          },
          "rank_scale": {
            "type": [
              "string",
              "null"
            ],
            "description": "rank 값을 계산하고 표시하는 데 사용되는 척도를 정의합니다\n선택 필드\n이 매개변수로 순위 값을 0–100 또는 0–1000 척도로 표시할지 선택할 수 있습니다\n가능한 값:\none_hundred — 순위 값이 0–100 척도로 표시됩니다\none_thousand — 순위 값이 0–1000 척도로 표시됩니다\n기본값: one_thousand\n이 매개변수의 작동 방식은 이 도움말 센터 문서에서 자세히 알아보세요"
          },
          "tag": {
            "type": [
              "string",
              "null"
            ],
            "description": "사용자 정의 작업 식별자\n선택 필드\n문자 제한은 255자입니다\n이 매개변수로 작업을 식별하고 결과와 연결할 수 있습니다\n지정한 tag 값은 응답의 data 객체에서 확인할 수 있습니다"
          }
        },
        "example": [
          {
            "keyword": "logitech",
            "internal_list_limit": 1
          }
        ]
      }
    ]
  },
  "example": [
    {
      "keyword": "logitech",
      "internal_list_limit": 1
    }
  ]
}
```

## Responses

### 200 — 작업 성공

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

**application/json**

Schema: object | null

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

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

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

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

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

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

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

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

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

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

**application/json**

Schema:

```json
{}
```

## Schema definitions

### 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_ContentAnalysisCategoriesInfo

`#/components/schemas/Response36Afe1097B20_ContentAnalysisCategoriesInfo`

```json
{
  "properties": {
    "category": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "integer",
          "null"
        ]
      }
    },
    "count": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int64"
    }
  }
}
```

### Response36Afe1097B20_ContentAnalysisSentimentAnalysisLiveResponseInfo

`#/components/schemas/Response36Afe1097B20_ContentAnalysisSentimentAnalysisLiveResponseInfo`

```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_ContentAnalysisSentimentAnalysisLiveTaskInfo"
              }
            ]
          },
          "description": "작업 배열"
        }
      }
    }
  ]
}
```

### Response36Afe1097B20_ContentAnalysisSentimentAnalysisLiveResultInfo

`#/components/schemas/Response36Afe1097B20_ContentAnalysisSentimentAnalysisLiveResultInfo`

```json
{
  "type": "object",
  "properties": {
    "type": {
      "type": [
        "string",
        "null"
      ],
      "description": "요소 유형"
    },
    "positive_connotation_distribution": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_PositiveConnotationDistribution"
        }
      ],
      "description": "감정 함의 유형별 인용 분포\n감정 유형(감정 극성)별로 배포된 인용 수와 관련 데이터를 담은 객체를 포함합니다;\n가능한 감정 함의 유형: positive, negative, neutral"
    },
    "sentiment_connotation_distribution": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_SentimentConnotationDistribution"
        }
      ],
      "description": "감정 함의별 인용 분포\n감정(정서적 반응)별로 배포된 인용 수와 관련 데이터를 담은 객체를 포함합니다;\n가능한 감정 함의 유형: anger, happiness, love, sadness, share, fun"
    }
  }
}
```

### Response36Afe1097B20_ContentAnalysisSentimentAnalysisLiveTaskInfo

`#/components/schemas/Response36Afe1097B20_ContentAnalysisSentimentAnalysisLiveTaskInfo`

```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_ContentAnalysisSentimentAnalysisLiveResultInfo"
              }
            ]
          },
          "description": "결과 배열"
        }
      }
    }
  ]
}
```

### Response36Afe1097B20_ContentAnalysisSummaryInfo

`#/components/schemas/Response36Afe1097B20_ContentAnalysisSummaryInfo`

```json
{
  "type": "object",
  "properties": {
    "type": {
      "type": [
        "string",
        "null"
      ],
      "description": "요소 유형"
    },
    "total_count": {
      "type": [
        "integer",
        "null"
      ],
      "description": "<em>요청과 관련해 데이터베이스에 있는 총 결과량</em>",
      "format": "int64"
    },
    "rank": {
      "type": [
        "integer",
        "null"
      ],
      "description": "<em><code>keyword</code>를 인용하는 모든 URL의 순위</em><br>대상 <code>keyword</code>를 인용하는 모든 URL 순위의 정규화된 합계입니다"
    },
    "top_domains": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "object",
          "null"
        ],
        "oneOf": [
          {
            "$ref": "#/components/schemas/Response36Afe1097B20_TopDomainInfo"
          }
        ]
      },
      "description": "<em>대상 키워드를 인용하는 상위 도메인</em><br>대상 키워드를 인용하는 상위 도메인과 각 도메인별 인용 수를 담은 객체를 포함합니다"
    },
    "sentiment_connotations": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": {
        "type": [
          "integer",
          "null"
        ],
        "format": "int64"
      },
      "description": "<em>감정 함의</em><br>대상 키워드 인용과 관련된 감정(정서적 반응) 및 각 감정별 인용 수를 포함합니다<br>가능한 감정 함의: <code>anger</code>, <code>happiness</code>, <code>love</code>, <code>sadness</code>, <code>share</code>, <code>fun</code>"
    },
    "connotation_types": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": {
        "type": [
          "integer",
          "null"
        ],
        "format": "int64"
      },
      "description": "<em>함의 유형</em><br>키워드 인용과 관련된 감정 유형(감정 극성) 및 각 감정 유형별 인용 수를 포함합니다<br>가능한 감정 함의 유형: <code>positive</code>, <code>negative</code>, <code>neutral</code>"
    },
    "text_categories": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "object",
          "null"
        ],
        "oneOf": [
          {
            "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisCategoriesInfo"
          }
        ]
      },
      "description": "<em>텍스트 카테고리</em><br>텍스트 카테고리와 각 텍스트 카테고리의 인용 수를 담은 객체를 포함합니다<br>사용 가능한 카테고리 전체 목록은 <a href=\"/v3/content_analysis/categories/\" rel=\"noopener noreferrer\" target=\"_blank\">Categories</a> 엔드포인트를 참고하세요"
    },
    "page_categories": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "object",
          "null"
        ],
        "oneOf": [
          {
            "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisCategoriesInfo"
          }
        ]
      },
      "description": "<em>페이지 카테고리</em><br>페이지 카테고리와 각 페이지 카테고리의 인용 수를 담은 객체를 포함합니다<br>사용 가능한 카테고리 전체 목록은 <a href=\"/v3/content_analysis/categories/\" rel=\"noopener noreferrer\" target=\"_blank\">Categories</a> 엔드포인트를 참고하세요"
    },
    "page_types": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": {
        "type": [
          "integer",
          "null"
        ],
        "format": "int64"
      },
      "description": "<em>페이지 유형</em><br>페이지 유형과 각 페이지 유형별 인용 수를 포함합니다"
    },
    "countries": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": {
        "type": [
          "integer",
          "null"
        ],
        "format": "int64"
      },
      "description": "<em>국가</em><br>국가와 각 국가의 인용 수를 포함합니다<br>사용 가능한 국가 전체 목록은 <a href=\"/v3/content_analysis/locations/\" rel=\"noopener noreferrer\" target=\"_blank\">Locations</a> 엔드포인트를 참고하세요"
    },
    "languages": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": {
        "type": [
          "integer",
          "null"
        ],
        "format": "int64"
      },
      "description": "<em>언어</em><br>언어와 각 언어의 인용 수를 포함합니다<br>사용 가능한 언어 전체 목록은 <a href=\"/v3/content_analysis/languages/\" rel=\"noopener noreferrer\" target=\"_blank\">Languages</a> 엔드포인트를 참고하세요"
    }
  }
}
```

### Response36Afe1097B20_PositiveConnotationDistribution

`#/components/schemas/Response36Afe1097B20_PositiveConnotationDistribution`

```json
{
  "type": "object",
  "properties": {
    "positive": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisSummaryInfo"
        }
      ]
    },
    "negative": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisSummaryInfo"
        }
      ]
    },
    "neutral": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisSummaryInfo"
        }
      ]
    }
  }
}
```

### Response36Afe1097B20_SentimentConnotationDistribution

`#/components/schemas/Response36Afe1097B20_SentimentConnotationDistribution`

```json
{
  "type": "object",
  "properties": {
    "anger": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisSummaryInfo"
        }
      ]
    },
    "happiness": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisSummaryInfo"
        }
      ]
    },
    "love": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisSummaryInfo"
        }
      ]
    },
    "sadness": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisSummaryInfo"
        }
      ]
    },
    "share": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisSummaryInfo"
        }
      ]
    },
    "fun": {
      "type": [
        "object",
        "null"
      ],
      "oneOf": [
        {
          "$ref": "#/components/schemas/Response36Afe1097B20_ContentAnalysisSummaryInfo"
        }
      ]
    }
  }
}
```

### Response36Afe1097B20_TopDomainInfo

`#/components/schemas/Response36Afe1097B20_TopDomainInfo`

```json
{
  "properties": {
    "domain": {
      "type": [
        "string",
        "null"
      ]
    },
    "count": {
      "type": [
        "integer",
        "null"
      ],
      "format": "int64"
    }
  }
}
```
