fed3526b20
설정·스크립트·스킬·문서·큐레이션 메모리 추적. 시크릿(credentials/identity)·런타임 상태(state/logs/sessions/sqlite)· 백업(clobbered/bak)·dream 캐시는 .gitignore로 제외. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
6.3 KiB
6.3 KiB
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