Files
openclaw/agents/stock/workspace/skills/behive-watchlist/SKILL.md
T
hyowons fed3526b20 Initial commit: OpenClaw 워크스페이스 버전관리 시작
설정·스크립트·스킬·문서·큐레이션 메모리 추적.
시크릿(credentials/identity)·런타임 상태(state/logs/sessions/sqlite)·
백업(clobbered/bak)·dream 캐시는 .gitignore로 제외.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 15:39:41 +09:00

6.3 KiB
Raw Blame History

name, description
name description
behive-watchlist 비하이브투자자문 유튜브 '종목분석' 영상에서 추출·저장한 목표가/매입가/손절가/요약 워치리스트 + 수동 추가·삭제 + 장중 15분 간격 시세 모니터링(buy/target/stop 트리거 → 레이 텔레그램). "OO 목표가 얼마야?", "삼성전자 워치리스트 추가해줘(매입 7만, 목표 8.5만)", "라온로보틱스 지워줘" 같은 요청에 사용.

behive-watchlist

비하이브투자자문 채널의 '종목분석' 영상이 새로 올라올 때마다(cron: 평일 07/12/18시), 관리자님 이메일로 요약 리포트가 발송되고 동시에 state/behive_watchlist.json에 종목별 구조화 데이터가 축적된다. 관리자님이 수동으로 직접 추가한 종목(source: manual)도 같은 파일에서 관리된다.

워치리스트 종목은 평일 장중 15분 간격으로 watchlist_monitor.py가 키움 현재가와 비교해 buy(매입가 근접)·target(목표가 도달)·stop(손절가 이탈) 트리거를 감지한다. 조건별 하루 1회 알림이며, 한 실행에서 걸린 항목을 텔레그램에는 요약만 묶어서, 상세 내용은 이메일 한 통으로 묶어서 발송한다. LLM 판단은 거치지 않고 순수 파이썬으로 동작.

언제 쓰는가

관리자님이 워치리스트 조회/추가/삭제를 요청할 때. 예시:

  • "비하이브에서 분석한 종목 뭐 있어?" → list
  • "삼미금속 목표가 얼마야?" → show 삼미금속
  • "펨트론 비하이브 분석 내용 보여줘" → show 펨트론
  • "삼성전자 매수 7만, 목표 8.5만, 손절 6.5만으로 워치리스트 추가" → add
  • "라온로보틱스 워치리스트에서 지워줘" → remove 라온로보틱스

주의: 보유 중인 종목 현황은 kiwoom-rest 스킬로 조회(kt00018). 실시간 시세도 키움 ka10001(kiwoom_client.py quote) 사용. 이 스킬은 관심종목 관리만 담당.

Commands

스크립트: /Users/snowoyh/.openclaw/agents/stock/workspace/scripts/behive_youtube_digest.py

# 전체 종목 테이블 (종목명, 목표가, 상승률, 매입가, 저장일)
python3 scripts/behive_youtube_digest.py list

# 특정 종목 상세 (목표가/매입가/손절가/현재가/주요내용/기타/출처)
# 현재가는 키움 ka10001에서 실시간 조회되어 자동 포함됨.
python3 scripts/behive_youtube_digest.py show 삼미금속

# 종목명 일부만 적어도 부분일치 자동 매칭 (1건 매칭 시)
python3 scripts/behive_youtube_digest.py show 펨    # → 펨트론

# 수동 추가 (관리자님이 "OO 워치리스트 추가"라고 할 때)
# --code 생략 시 키움 ka10099 캐시로 종목명→코드 자동 매핑 (최초 1회 갱신)
python3 scripts/behive_youtube_digest.py add 삼성전자 \\
  --buy 70000 --target 85000-90000 --stop 65000 \\
  --note "반도체 슈퍼사이클 초입"
# target은 단일값("85000") 또는 범위("85000-90000") 둘 다 가능.

# 워치리스트에서 제거 (관리자님이 "OO 지워줘"라고 할 때)
python3 scripts/behive_youtube_digest.py remove 삼미금속

시세 감시 (수동 실행용)

# 1회 감시 — 장외 시간이면 즉시 스킵
python3 scripts/watchlist_monitor.py check

# 강제 실행 (장외·주말 포함)
python3 scripts/watchlist_monitor.py check --force

# 조건 평가만 — 텔레그램 발송 없이 결과 프린트
python3 scripts/watchlist_monitor.py dry-run

답변 가이드

  • show 출력을 그대로 관리자님께 전달. 불필요한 재포맷 금지.
  • 저장일시를 확인해서 "며칠 전 분석이에요"라고 맥락 첨부.
  • show 출력에 현재가가 자동 포함됨(키움 ka10001). 조회 실패 시 "현재가: 조회 불가"로 표기.
  • 관리자님이 "목표가까지 몇 %" 같은 계산을 추가로 원하면 show의 현재가와 목표가로 한 줄 계산해서 덧붙임.
  • 관리자님이 보유 종목인지 궁금해하면 kiwoom-rest 스킬(kt00018)로 현재 보유 종목과 대조해 덧붙임.
  • 수동 추가 요청 시 종목코드는 생략하고 종목명만 받아 add에 넘기면 됨 (키움 캐시가 자동 매핑). 매입/목표/손절 중 일부만 있어도 OK — 누락 필드는 해당 트리거가 비활성화될 뿐.

Watchlist 스키마 (state/behive_watchlist.json)

종목명을 키로 하는 딕셔너리. 같은 종목이 재분석되면 최신 덮어쓰기. 수동 추가는 video.source = "manual".

{
  "삼미금속": {
    "stock": "삼미금속",
    "code": "012210",
    "target": {"raw": "16,000~17,000원", "low": 16000, "high": 17000},
    "buy":    {"raw": "13,000원대 조정", "primary": 13000, "levels": [13000]},
    "stop":   {"raw": "12,000원 이탈", "value": 12000},
    "upside_pct": 23.1,
    "summary": ["...", "..."],
    "notes":   ["...", "..."],
    "video":   {"id": "o9NBtRP1R3Y", "title": "...", "url": "...", "published": "..."},
    "saved_at": "2026-04-23T07:00:00+09:00"
  }
}

트리거 조건 (watchlist_monitor.py)

조건 발동 알림 헤더
buy 현재가 ≤ buy.level × 1.05 (매입가 5% 이내 접근, 다중 레벨이면 가장 높은 1개만) 텔레그램 [매수구간 진입] 요약 + 상세 이메일
target 현재가 ≥ target.low (목표가 하단 도달) 텔레그램 [목표가 도달] 요약 + 상세 이메일
stop 현재가 ≤ stop.value (손절가 이탈) 텔레그램 [손절가 이탈] 요약 + 상세 이메일
  • 조건별 하루 1회 알림 (종목+조건 단위 중복 방지, 상태는 state/watchlist_alerts.json).
  • 필드가 비어있으면 해당 조건 비활성.
  • 보유 종목은 kt00018 결과 재활용으로 ka10001 호출 절감.

Files

  • Script: scripts/behive_youtube_digest.py (fetch/save/add/email/notify/list/show/remove)
  • Monitor: scripts/watchlist_monitor.py (check / dry-run, 장외 시간 자동 스킵)
  • Watchlist: state/behive_watchlist.json
  • Alert dedup: state/watchlist_alerts.json
  • Stock code cache: state/stock_codes.json (키움 ka10099, lazy 갱신)
  • Seen 기록: state/behive_youtube_seen.json
  • Fetch 캐시: state/behive_last_fetch.json
  • Cron: 비하이브 종목분석 요약 / 워치리스트 모니터링cron/jobs.json