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

# 통계로 분석하기

> 인용 출처 도메인·URL 랭킹, 답변 토큰 빈도, fan-out 쿼리 집계

수집된 답변을 서버에서 집계해 랭킹으로 반환하는 엔드포인트들입니다. 답변을 전부 내려받아 직접 집계하는 대신 이 API를 사용하세요.

## 공통 규칙

* 모든 통계는 `runID` 또는 `promptID` 중 **최소 하나**로 범위를 지정해야 합니다. 조직 전체를 한 번에 집계할 수는 없습니다.
* `model`로 특정 모델의 답변만 집계하도록 좁힐 수 있습니다.
* 결과는 상위 N개 랭킹입니다. `limit`은 기본 50, 최대 200이며 페이지네이션(cursor)은 없습니다.

## 인용 도메인 랭킹

어떤 도메인이 AI 답변에 가장 많이 인용됐는지 봅니다. "어떤 소스를 공략해야 하나"에 답하는 핵심 데이터입니다.

```bash theme={null}
curl -H "API-Key: YOUR_API_KEY" \
  "https://dev-platform-api.trychainshift.ai/api/v1beta/platform/sources/statistics/domains?runID=0PCCDohFaNRcUWjLGoBGfw&include=models"
```

아래는 중고차 관련 프롬프트 140개를 8개 모델에 실행한 결과의 실제 집계입니다(상위 2개만 표시).

```json theme={null}
{
  "totalCitations": 800,
  "totalDomains": 144,
  "domains": [
    {
      "domain": "naver.com",
      "citationCount": 264,
      "models": [
        { "model": "NAVER_AI_TAB", "citationCount": 85 },
        { "model": "PERPLEXITY", "citationCount": 61 },
        { "model": "NAVER_AI_BRIEFING", "citationCount": 56 },
        { "model": "GOOGLE_OVERVIEW", "citationCount": 39 },
        { "model": "GOOGLE_AI", "citationCount": 23 }
      ]
    },
    {
      "domain": "youtube.com",
      "citationCount": 74,
      "models": [
        { "model": "PERPLEXITY", "citationCount": 38 },
        { "model": "GOOGLE_AI", "citationCount": 30 },
        { "model": "GEMINI", "citationCount": 4 },
        { "model": "CHATGPT", "citationCount": 1 },
        { "model": "GOOGLE_OVERVIEW", "citationCount": 1 }
      ]
    }
  ]
}
```

모델 분해가 있어야 보이는 것: 이 시장에서는 전체 인용 800건 중 1/3이 네이버 콘텐츠이고, 유튜브는 Perplexity·Google AI가 주로 인용하지만 ChatGPT는 거의 인용하지 않습니다(74건 중 1건). 어떤 모델을 공략하느냐에 따라 만들어야 할 콘텐츠 채널이 달라진다는 뜻입니다.

* `groupBy=subdomain`을 지정하면 서브도메인 단위로 집계합니다(기본은 도메인 단위).
* `include=models`를 지정하면 도메인별 모델 분해 카운트가 포함됩니다.
* `domain` 파라미터(반복 가능)로 특정 도메인만 조회할 수 있습니다.
* `totalDomains`는 도메인 종류가 내부 집계 상한을 넘으면 `null`로 반환됩니다.

## 인용 URL 랭킹

도메인보다 한 단계 깊게, 어떤 페이지가 인용됐는지 봅니다.

```bash theme={null}
curl -H "API-Key: YOUR_API_KEY" \
  "https://dev-platform-api.trychainshift.ai/api/v1beta/platform/sources/statistics/urls?runID=0PCCDohFaNRcUWjLGoBGfw&domain=kbchachacha.com&include=quotes"
```

```json theme={null}
{
  "totalCitations": 800,
  "urls": [
    {
      "url": "https://kbchachacha.com/public/web/magazine/detail.kbc?magazineSeq=36430",
      "domain": "kbchachacha.com",
      "citationCount": 5,
      "quotes": [
        "중고차는 비교적 저렴한 가격에 취향과 라이프스타일에 맞는 … 선택을 하는 데 큰 도움이 되리라 생각합니다",
        "4. 가격대별 인기 중고차 구매 꿀팁. 이번 … 눈여겨보신다면, 가성비 및 실용성 측면에서 후회 없는"
      ]
    }
  ]
}
```

`include=quotes`를 지정하면 AI가 해당 페이지에서 실제로 인용한 문장이 포함됩니다. 위 예시처럼 매거진형 콘텐츠의 어떤 문장이 인용되는지 보이므로, 어떤 형식의 문장이 AI에 잘 인용되는지의 직접적인 힌트가 됩니다. 같은 문서의 URL 표기가 여러 개인 경우(모바일 서브도메인 등)는 자동으로 정규화되어 하나로 집계됩니다.

## 답변 토큰 빈도

답변 본문에 어떤 명사가 자주 등장하는지 집계합니다. 답변에서 브랜드·상품이 얼마나 언급되는지 파악하는 데 씁니다.

```bash theme={null}
curl -H "API-Key: YOUR_API_KEY" \
  "https://dev-platform-api.trychainshift.ai/api/v1beta/platform/answers/statistics/tokens?runID=0PCCDohFaNRcUWjLGoBGfw&limit=5"
```

```json theme={null}
{
  "tokens": [
    { "token": "중고차", "answerCount": 124, "avgPosition": 0.166 },
    { "token": "차량", "answerCount": 108, "avgPosition": 0.358 },
    { "token": "확인", "answerCount": 107, "avgPosition": 0.322 },
    { "token": "구매", "answerCount": 93, "avgPosition": 0.351 },
    { "token": "이력", "answerCount": 88, "avgPosition": 0.424 }
  ]
}
```

* `answerCount` — 해당 토큰이 등장한 답변 수.
* `avgPosition` — 답변 내 평균 **첫 등장** 위치. `0`에 가까울수록 답변 앞부분(먼저 언급), `1`에 가까울수록 뒷부분입니다. 위 예시에서 "중고차"(0.166)는 답변 서두에, "이력"(0.424)은 중반 이후에 주로 등장합니다 — AI가 답의 어느 지점에서 어떤 개념을 꺼내는지 보여줍니다.

<Warning>
  `avgPosition`은 다른 AEO 도구의 "Position"과 다른 값입니다. 여기서는 **한 답변 안에서 그 단어가 몇 번째로 등장했는지**(0\~1)를 뜻하며, "언급된 브랜드 중 몇 위인가"라는 순위가 아닙니다.
</Warning>

### 언급률로 환산하기

`answerCount`는 건수이므로 비율로 바꿔야 실행 간·브랜드 간 비교가 가능합니다. 분모는 **성공한 답변 수**를 쓰세요 — `GET /runs/{runID}`의 `successCount`입니다. 실패한 실행은 답변이 없으므로 `totalCount`를 분모로 쓰면 언급률이 실제보다 낮게 나옵니다.

위 실행은 성공 답변이 140건이므로 "중고차"의 언급률은 124 ÷ 140 = \*\*88.6%\*\*입니다. 카테고리를 가리키는 일반 명사라 대부분의 답변에 등장합니다. 브랜드명은 이보다 훨씬 낮게 나오는 것이 정상이며, 절대값보다 **같은 프롬프트 세트로 반복 측정했을 때의 변화**와 **경쟁 브랜드와의 상대 비교**가 의미 있는 지표입니다.

## 근접 토큰 (neighbors)

특정 단어 주변에 어떤 단어가 함께 등장하는지 봅니다. 브랜드가 어떤 맥락에서 언급되는지 파악하는 데 씁니다.

```bash theme={null}
curl -H "API-Key: YOUR_API_KEY" \
  "https://dev-platform-api.trychainshift.ai/api/v1beta/platform/answers/statistics/neighbors?runID=0PCCDohFaNRcUWjLGoBGfw&word=헤이딜러&include=totalAnswerCount"
```

```json theme={null}
{
  "words": ["헤이딜러"],
  "neighbors": [
    { "token": "비교", "answerCount": 13, "totalAnswerCount": 82 },
    { "token": "거래", "answerCount": 12, "totalAnswerCount": 59 },
    { "token": "엔카", "answerCount": 11, "totalAnswerCount": 42 }
  ]
}
```

* `word`는 1\~20개까지 반복 지정할 수 있습니다. 여러 개를 주면 하나의 개념으로 합쳐 집계합니다(브랜드명 + 동의어 용도).
* `window`는 기준 단어 앞뒤로 몇 토큰까지를 "근접"으로 볼지 정합니다(1\~20, 기본 5).
* `include=totalAnswerCount`를 지정하면 각 토큰이 근접 여부와 무관하게 전체에서 등장한 답변 수가 함께 반환됩니다. 비율로 진짜 연관어를 가려낼 수 있습니다 — 위 예시에서 "엔카"는 전체 42개 답변 중 11개가 헤이딜러 근처에서 등장(26%)했습니다. AI가 두 브랜드를 같은 문맥에서 비교하며 언급한다는 신호입니다.

## fan-out 쿼리 집계

AI가 답변을 만들기 위해 실제로 던진 검색 쿼리의 랭킹입니다. AI가 어떤 검색어로 정보를 찾는지 — 즉 어떤 검색어에서 인용될 콘텐츠를 만들어야 하는지 보여줍니다.

```bash theme={null}
curl -H "API-Key: YOUR_API_KEY" \
  "https://dev-platform-api.trychainshift.ai/api/v1beta/platform/fanouts/statistics?runID=0PCCDohFaNRcUWjLGoBGfw"
```

```json theme={null}
{
  "fanouts": [
    {
      "query": "중고 전기차 구매 주의사항 배터리 성능 점검",
      "count": 1,
      "models": ["CHATGPT"],
      "regions": ["KR"],
      "latestCreatedAt": "2026-07-28T06:29:12Z"
    },
    {
      "query": "한국 중고차 평균 주행거리 연식별 구매 기준",
      "count": 1,
      "models": ["CHATGPT"],
      "regions": ["KR"],
      "latestCreatedAt": "2026-07-28T06:29:00Z"
    }
  ]
}
```

사용자 프롬프트는 "중고 전기차 살 때 주의할 점 알려줘"처럼 구어체지만, AI가 실제로 던진 검색 쿼리는 "중고 전기차 구매 주의사항 배터리 성능 점검"처럼 명사 나열형입니다. 이 형태의 검색어에서 검색되는 콘텐츠를 만드는 것이 AEO의 출발점입니다.

<Warning>
  fan-out은 ChatGPT · Perplexity · Claude 답변에서만 수집됩니다. 다른 모델만 실행한 경우에는 결과가 비어 있습니다. [지원 모델](/models) 참고.
</Warning>

## 자주 묻는 질문

**통계 결과가 비어 있어요.**
실행이 아직 진행 중이거나(`GET /runs/:runID`로 확인), 지정한 `runID`/`promptID`에 성공한 답변이 없는 경우입니다. fan-out 통계는 fan-out을 지원하지 않는 모델만 실행했을 때도 비어 있습니다.

**조직 전체 기간별 추이를 보고 싶어요.**
현재 통계는 실행·프롬프트 단위 스냅샷입니다. 기간 추이는 실행을 정기 제출하고 실행별 통계를 저장해 비교하는 방식을 사용하세요.
