API 문서

곡소리닷컴 API 문서

이 문서는 홈 상단 공개 곡소리 지수 API와, 곡소리닷컴의 커뮤니티 기반 주식/거시 체감 신호를 TradingBot에 전달하는 API를 함께 설명합니다.

트레이딩봇 토큰 요청, 승인 후 확인, 폐기는 API로 직접 호출하지 말고 `내 프로필` 화면에서 브라우저로 처리하세요.

빠른 시작

  1. 사용자가 `내 프로필`에서 TradingBot 토큰을 요청합니다.
  2. 관리자가 `/admin/tokens`에서 승인합니다.
  3. 사용자가 다시 `내 프로필`에서 토큰 값을 1회 확인합니다.
  4. 봇은 `Authorization`, `X-Client-Id`, `X-Request-Id` 헤더와 함께 `/api/v1/*`를 호출합니다.

인증 방식

public 인증 없이 호출할 수 있습니다.

tradingbot 승인된 트레이딩봇 Bearer 토큰과 `X-Client-Id`, `X-Request-Id`가 필요합니다.

TradingBot 호출 예시

curl -s "https://goksorry.com/api/v1/signals/latest?market=us&symbols=AAPL,NVDA" \
  -H "Authorization: Bearer gkst_your_token" \
  -H "X-Client-Id: trading-bot-main" \
  -H "X-Request-Id: 11111111-1111-1111-1111-111111111111"

홈 공개

홈 상단 곡소리 지수와 시장 개요에 쓰는 공개 API입니다.

GET/api/community-indicators
public

홈 커뮤니티 카드의 원감성 점수와 표시용 곡소리 지수를 조회합니다.

쿼리타입설명
market_adjustmenton|off시장 보정 적용 여부입니다. 기본값은 `on`입니다.

응답 예시

{
  "generated_at": "2026-04-08T09:30:00.000Z",
  "market_adjustment_enabled": true,
  "overall_base_score": 5.4,
  "overall_market_adjustment": -0.32,
  "overall_sentiment_score": 5.1,
  "overall_goksorry_index": 5.4,
  "overall_sentiment_band": "neutral",
  "community_indicators": [
    {
      "id": "ppomppu",
      "label": "뽐뿌 증권포럼 지수",
      "shortLabel": "뽐뿌",
      "mentions": 8,
      "bullish": 5,
      "bearish": 3,
      "neutral": 4,
      "base_score": 5.6,
      "market_adjustment": -0.21,
      "score": 5.4,
      "goksorry_index": 5.1,
      "sentiment_band": "neutral",
      "tone": "mixed",
      "rows": [
        {
          "post_key": "ppomppu:12345",
          "source": "ppomppu_stock",
          "title": "오늘 국장 반등 보시나요",
          "clean_title": "오늘 국장 반등 보시나요",
          "url": "https://www.ppomppu.co.kr/zboard/view.php?id=stock&no=12345",
          "symbol": null,
          "symbol_name": null,
          "symbol_market": null,
          "label": "bullish",
          "sentiment_score": 7,
          "confidence": 0.82,
          "analyzed_at": "2026-04-08T09:28:00.000Z"
        }
      ]
    }
  ]
}
  • 홈 상단 커뮤니티 카드와 동일한 집계 결과입니다.
  • `overall_sentiment_score` 와 각 섹션의 `score` 는 내부 원감성 점수이며 높을수록 희망입니다.
  • `overall_goksorry_index` 와 각 섹션의 `goksorry_index` 는 홈 표시용 반전 점수이며 높을수록 곡소리입니다.
  • 소스 그룹은 토스증권, 뽐뿌, 블라인드, 디시 4종으로 고정됩니다.
GET/api/overview
public

홈 상단 시장 지표와 원감성 점수, 표시용 곡소리 지수를 함께 조회합니다.

쿼리타입설명
market_adjustmenton|off시장 보정 적용 여부입니다. 기본값은 `on`입니다.

응답 예시

{
  "generated_at": "2026-04-08T09:30:00.000Z",
  "market_indicators": [
    {
      "id": "kospi",
      "label": "KOSPI",
      "value_text": "2,732.11",
      "delta_text": "+18.42 (+0.68%)",
      "change_value": 18.42,
      "change_percent": 0.68,
      "tone": "up",
      "note": ""
    },
    {
      "id": "usdkrw",
      "label": "원/달러 환율",
      "value_text": "1,351.20",
      "delta_text": "+4.10 KRW (+0.30%)",
      "change_value": 4.1,
      "change_percent": 0.3,
      "tone": "up",
      "note": "네이버 환율"
    }
  ],
  "market_adjustment_enabled": true,
  "overall_base_score": 5.4,
  "overall_market_adjustment": -0.32,
  "overall_sentiment_score": 5.1,
  "overall_goksorry_index": 5.4,
  "overall_sentiment_band": "neutral",
  "community_indicators": [
    {
      "id": "ppomppu",
      "label": "뽐뿌 증권포럼 지수",
      "shortLabel": "뽐뿌",
      "mentions": 8,
      "bullish": 5,
      "bearish": 3,
      "neutral": 4,
      "base_score": 5.6,
      "market_adjustment": -0.21,
      "score": 5.4,
      "goksorry_index": 5.1,
      "sentiment_band": "neutral",
      "tone": "mixed",
      "rows": [
        {
          "post_key": "ppomppu:12345",
          "source": "ppomppu_stock",
          "title": "오늘 국장 반등 보시나요",
          "clean_title": "오늘 국장 반등 보시나요",
          "url": "https://www.ppomppu.co.kr/zboard/view.php?id=stock&no=12345",
          "symbol": null,
          "symbol_name": null,
          "symbol_market": null,
          "label": "bullish",
          "sentiment_score": 7,
          "confidence": 0.82,
          "analyzed_at": "2026-04-08T09:28:00.000Z"
        }
      ]
    }
  ]
}
  • `/api/community-indicators` 응답에 KOSPI, KOSDAQ, NASDAQ, 원/달러 환율 요약을 추가한 형태입니다.
  • `overall_sentiment_score`/`score` 는 원감성 점수, `overall_goksorry_index`/`goksorry_index` 는 홈 표시용 곡소리 지수입니다.
  • 시장 지표와 커뮤니티 지수를 한 번에 받아야 하는 외부 클라이언트용 요약 엔드포인트입니다.

트레이딩봇 조회

자동거래봇이 읽는 커뮤니티 지수 API입니다. 공식 시세와 거시 원데이터는 봇이 별도로 가져가고, 여기서는 커뮤니티 기반 신호만 제공합니다.

GET/api/v1/health
public

서비스 상태와 배포 버전을 확인합니다.

응답 예시

{
  "status": "ok",
  "time": "2026-03-11T10:00:00.000Z",
  "version": "1.0.0"
}
  • 인증 없이 호출할 수 있습니다.
GET/api/v1/signals/latest
tradingbot

한국·미국 시장의 최신 커뮤니티 기반 종목 신호를 조회합니다.

쿼리타입설명
marketkr|us|all시장 필터입니다. 기본값은 `all`입니다.
symbolscsv선택적 종목 CSV 목록입니다. 최대 100개까지 가능합니다.
max_age_secinteger신호 신선도 기준(초)입니다. 기본값은 1800, 최대값은 86400입니다.
헤더필수설명
AuthorizationBearer <승인된 트레이딩봇 토큰>
X-Client-Id`trading-bot-`로 시작해야 합니다.
X-Request-Id호출 측에서 만든 UUID

응답 예시

{
  "status": "ok",
  "generated_at": "2026-03-11T10:00:00.000Z",
  "detector_mode": "normal",
  "signals": [
    {
      "symbol": "AAPL",
      "market": "us",
      "asof": "2026-03-11T09:57:00.000Z",
      "freshness_sec": 180,
      "mentions": 42,
      "neg_count": 11,
      "pos_count": 20,
      "panic_score": 26.19,
      "euphoria_score": 47.62,
      "signal_quality": 0.81,
      "mention_velocity_z": 0,
      "confidence_grade": "A",
      "source_diversity": 3
    }
  ],
  "missing_symbols": [],
  "ttl_sec": 60
}
  • 이 API는 커뮤니티에서 파생된 신호만 제공합니다.
  • 공식 시세, 지수, 거시 지표 원데이터는 봇이 별도로 수집해야 합니다.
GET/api/v1/signals/{symbol}
tradingbot

특정 종목 하나의 최신 신호 스냅샷을 조회합니다.

경로 파라미터타입설명
symbolstring티커 또는 종목 코드입니다. 최대 20자입니다.
헤더필수설명
AuthorizationBearer <승인된 트레이딩봇 토큰>
X-Client-Id`trading-bot-`로 시작해야 합니다.
X-Request-Id호출 측에서 만든 UUID

응답 예시

{
  "symbol": "AAPL",
  "market": "us",
  "latest": {
    "symbol": "AAPL",
    "market": "us",
    "asof": "2026-03-11T09:57:00.000Z",
    "freshness_sec": 180,
    "mentions": 42,
    "neg_count": 11,
    "pos_count": 20,
    "panic_score": 26.19,
    "euphoria_score": 47.62,
    "signal_quality": 0.81,
    "mention_velocity_z": 0,
    "confidence_grade": "A",
    "source_diversity": 3
  },
  "window": {
    "long_min": 120,
    "short_min": 20
  }
}
GET/api/v1/market/latest
tradingbot

시장 단위의 최신 커뮤니티 레짐과 공포 지수를 조회합니다.

쿼리타입설명
marketkr|us|all시장 필터입니다. 기본값은 `all`입니다.
헤더필수설명
AuthorizationBearer <승인된 트레이딩봇 토큰>
X-Client-Id`trading-bot-`로 시작해야 합니다.
X-Request-Id호출 측에서 만든 UUID

응답 예시

{
  "status": "ok",
  "generated_at": "2026-03-11T10:00:00.000Z",
  "markets": [
    {
      "market": "kr",
      "asof": "2026-03-11T09:58:00.000Z",
      "regime": "risk_off",
      "fear_index": 67.5,
      "payload": {
        "avg_euphoria": 31.2,
        "avg_sentiment_score": 3.84,
        "symbol_count": 18,
        "pos_count": 42,
        "neg_count": 71,
        "neutral_count": 19,
        "actionable_count": 113,
        "dominant_share": 0.6283,
        "regime_basis": "post_dominance_v1"
      }
    }
  ],
  "ttl_sec": 60
}
  • 레짐과 공포 지수는 공식 거래소 지표가 아니라 커뮤니티 활동에서 파생된 값입니다.
  • regime은 최근 수집 글의 bullish/bearish 우세로 계산하고, fear_index는 평균 sentiment score에서 파생합니다.
GET/api/v1/status
tradingbot

봇 측 안전 점검을 위한 detector 파이프라인 상태를 조회합니다.

헤더필수설명
AuthorizationBearer <승인된 트레이딩봇 토큰>
X-Client-Id`trading-bot-`로 시작해야 합니다.
X-Request-Id호출 측에서 만든 UUID

응답 예시

{
  "status": "ok",
  "detector_mode": "normal",
  "collector": {
    "last_run_at": "2026-03-11T09:59:00.000Z",
    "errors": 0
  },
  "llm": {
    "provider": "gemini",
    "last_run_at": "2026-03-11T09:59:00.000Z",
    "degraded": false
  },
  "sources": {
    "us_cooldown_until": null,
    "hold_list": []
  }
}