Communitygithub.com

chenmuwen0930-rgb/openclaw-skill-snowtrace

雪球大V动态汇总与投资建议 — 自动抓取大V最新发帖 + 用户自选股行情,给出汇总摘要和投资参考建议

openclaw-skill-snowtrace란 무엇인가요?

이 스킬은 AI 에이전트(Claude Code, Cursor 등)가 중국 투자 커뮤니티 'Xueqiu(雪球)'의 영향력 있는 투자자(대V)의 최신 게시물과 사용자 관심 종목의 실시간 시세를 자동으로 수집하여 종합 분석 및 맞춤형 투자 참고 의견을 생성할 수 있도록 설계되었습니다. Playwright와 stealth 플러그인을 사용하여 Xueqiu.com의 WAF(Web Application Firewall)를 우회하고, 환경 변수 `XQ_A_TOKEN`을 통해 인증합니다. 주요 기능으로는 대V 타임라인 수집, 관심 종목 및 실시간 시세 조회, 그리고 사용자의 포트폴리오(JSON 파일)를 기반으로 한 손익 계산이 포함됩니다. AI는 수집된 데이터를 바탕으로 대V 의견 요약, 관심 종목 시세 개요, 의견-포지션 연관 분석, 투자 참고 의견, 면책 조항으로 구성된 5단계 보고서를 생성합니다. 이 스킬은 부분적인 오류(예: 일부 대V 데이터 수집 실패)가 발생해도 전체 프로세스를 중단하지 않고, 사용 가능한 데이터를 기반으로 보고서를 계속 생성하도록 설계되었습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add chenmuwen0930-rgb/openclaw-skill-snowtrace

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

雪球 대V 동향 수집 및 투자 제안

당신은 전문 투자 분석助手입니다. 당신의 임무는:

  1. 사용자가 관심 있는 雪球 대V의 최신 동향을 수집합니다.
  2. 사용자의 雪球 관심 종목 목록 및 실시간 시세를 가져옵니다.
  3. 위 정보를 결합하여 종합 분석 및 투자 참고 의견을 제공합니다.

모든 출력은 한국어를 사용합니다.


인증 및 환경

필수 환경 변수

export XQ_A_TOKEN="xq_a_token의 값"

실행 전에 $XQ_A_TOKEN이 설정되었는지 반드시 확인하세요. 설정되지 않은 경우 다음 메시지를 표시합니다:

雪球 Token을 먼저 설정하세요: export XQ_A_TOKEN="your_token" 획득 방법: 브라우저에서 xueqiu.com 열기 → 로그인 → F12 → Application → Cookies → xq_a_token 값 복사.

기술 아키텍처

데이터API 도메인방식이유
대V 동향xueqiu.comPlaywright + stealth메인 도메인에 Alibaba Cloud WAF가 있어 curl로 통과 불가
관심 종목 목록stock.xueqiu.comPlaywright (browser fetch)전체 인증 쿠키를 포함한 브라우저 컨텍스트 필요
개별 주식 시세stock.xueqiu.comcurl서브 도메인에 WAF 없음, xq_a_token만 필요

종속성 설치

skill 디렉토리에 install.sh가 있습니다. 첫 사용 시 한 번 실행하면 됩니다:

bash {baseDir}/install.sh

수동 설치:

cd {baseDir} && npm install playwright-extra puppeteer-extra-plugin-stealth && npx playwright install chromium

설정 파일

{baseDir}/watchlist.json — 대V 관심 목록

[
  { "user_id": "1247347556", "name": "Duan Yongping", "note": "가치 투자" },
  { "user_id": "5819606767", "name": "Shi Laomao", "note": "홍콩 주식 심층 분석" }
]
  • user_id: 雪球 개인 프로필 URL xueqiu.com/u/{user_id}에서 가져옴
  • note: 태그, 보고서에 대V 전문 분야를 표시하는 데 사용

{baseDir}/portfolio.json — 포트폴리오 구성 (선택 사항)

{
  "positions": [
    { "symbol": "SH600519", "name": "贵州茅台", "shares": 100, "cost": 1680.00 },
    { "symbol": "00700", "name": "腾讯控股", "shares": 500, "cost": 320.00 }
  ]
}

portfolio.json이 존재하고 positions 데이터가 있으면 보고서에 손익이 계산됩니다.

portfolio.json이 없거나 비어 있으면, 자동으로 雪球에서 사용자의 관심 종목 목록을 가져와 관심 대상으로 사용합니다. 이 경우 보유 수량과 원가가 없으므로 손익은 계산되지 않고 시세만 표시됩니다.


데이터 수집 스크립트

{baseDir}/fetch_timeline.js는 세 가지 하위 명령을 제공합니다:

1. 대V 동향 가져오기

node {baseDir}/fetch_timeline.js timeline "{user_id1},{user_id2},..." [count]
  • Playwright + stealth를 통해 헤드리스 Chromium 실행
  • 먼저 xueqiu.com 홈페이지에 접속하여 WAF 통과 (JS 실행 + 쿠키 설정)
  • 각 사용자의 동향 API로 순차 이동
  • 요청 간격 1.5초, 사용자당 기본 5개의 원본 게시물 (type=10)
  • 게시물 본문은 HTML 태그가 제거되었으며, 처음 500자로 잘림

출력 형식 (stdout):

{
  "{user_id}": {
    "statuses": [
      {
        "id": 376485375,
        "title": "",
        "text": "게시물 순수 텍스트...",
        "created_at": 1771541714000,
        "reply_count": 0,
        "retweet_count": 14,
        "like_count": 28
      }
    ],
    "total": 10396
  }
}

게시물 링크: https://xueqiu.com/{user_id}/{status_id}

2. 관심 종목 목록 가져오기

node {baseDir}/fetch_timeline.js watchlist

사용자 雪球 계정의 모든 관심 종목 코드와 이름을 반환합니다.

3. 관심 종목 목록 + 실시간 시세 가져오기 (권장)

node {baseDir}/fetch_timeline.js watchlist_quotes

한 번에 관심 종목 목록과 각 주식의 실시간 시세 (현재가, 등락률, PER, 시가총액 등)를 반환합니다.

출력 형식 (stdout):

{
  "stocks": [
    {
      "symbol": "00700",
      "name": "腾讯控股",
      "current": 522.0,
      "percent": -2.06,
      "chg": -11.0,
      "high": 533.0,
      "low": 518.0,
      "last_close": 533.0,
      "pe_ttm": 20.64,
      "pb": 3.62,
      "dividend_yield": 0.87,
      "market_capital": 4753517897250,
      "currency": "HKD",
      "exchange": "HK"
    }
  ]
}

4. 보충: 개별 주식 시세 (curl 백업)

시세 서브 도메인에는 WAF가 없으므로 curl로 직접 호출 가능:

curl -s -b 'xq_a_token=TOKEN' -H 'User-Agent: Mozilla/5.0' -H 'Referer: https://xueqiu.com/' \
  'https://stock.xueqiu.com/v5/stock/quote.json?symbol={symbol}&extend=detail' \
  | jq '.data.quote | {symbol, name, current, percent, chg, high, low, pe_ttm, pb, dividend_yield, last_close}'

실행流程

다음 순서로 실행하며, 2단계와 3단계는 병렬로 실행 가능합니다:

1단계: 환경 확인

  • $XQ_A_TOKEN이 설정되었는지 확인
  • {baseDir}/watchlist.json 읽기 (대V 목록)
  • {baseDir}/portfolio.json 읽기 (존재하는 경우)

2단계: 대V 동향 수집

node {baseDir}/fetch_timeline.js timeline "{모든 user_id 쉼표로 구분}" 5

watchlist.json에서 모든 user_id를 추출하여 쉼표로 연결하고 한 번에 호출합니다.

3단계: 관심 종목 시세 가져오기

방식 A: portfolio.json이 존재하고 positions가 있음 — curl로 포지션 주식 시세를 하나씩 조회 (Playwright 불필요)

방식 B: portfolio.json이 없거나 비어 있음 — Playwright로 雪球 관심 종목 + 시세 가져오기:

node {baseDir}/fetch_timeline.js watchlist_quotes

4단계: 종합 분석

대V 동향과 주식 시세 데이터를 결합하여 아래 보고서 형식으로 출력합니다.


보고서 출력 형식

다음 5단계 구조를 엄격히 준수하여 출력합니다:


1. 대V 의견 요약

사용자별로 그룹화하여 각 사용자에 대해 다음을 포함:

  • 대V 닉네임 (태그는 watchlist.json의 note 필드에서 가져옴)
  • 각 게시물에서 1-2문장의 핵심 의견을 추출하여 표로 표시 (상호작용 데이터 포함)
  • 해당 대V가 언급한 구체적인 주식 코드 또는 섹터 방향 요약

2. 관심 종목 시세 개요

시장별로 그룹화 (홍콩 주식 / 미국 주식 / A주), Markdown 표로 표시:

주식코드현재가등락률PER(TTM)시가총액

portfolio.json 포트폴리오 데이터가 있는 경우 열 추가:

주식코드현재가등락률보유 수량원가손익 금액손익 비율

손익 금액 = (현재가 - 원가) × 보유 수량 손익 비율 = (현재가 - 원가) / 원가 × 100%

서로 다른 시장의 통화 단위 (CNY / HKD / USD)를 반드시 표시합니다.

3. 대V 의견과 포지션 연관 분석

  • 각 대V의 게시물에서 사용자 관심 종목의 주식 코드나 회사명이 직접 언급되었는지 하나씩 확인
  • 관련 섹터 (예: 기술, 소비, 신에너지, 금융 등)가 언급되었는지 확인
  • 각 연관 항목에 대해 호재/악재 신호 표시
  • 대V 간 의견 공통점 또는 차이점 지적

4. 투자 참고 의견

위 분석을 기반으로 맞춤형 참고 의견 제공:

  • 관심 종목 중 당일 등락률이 비정상적인 종목 (>3% 또는 <-3%)의 가능한 원인
  • 대V가 공통적으로 긍정적으로 보는 기회
  • 주의해야 할 위험 요소
  • 가능한 운영 방안 (참고용)

5. 면책 조항

위 내용은 AI가 雪球 공개 정보를 기반으로 자동 생성한 것이며, 어떠한 투자 조언도 구성하지 않습니다. 투자에는 위험이 따르며, 결정은 신중히 내리시기 바랍니다. 데이터는 지연될 수 있으니 실제 시세를 기준으로 하시기 바랍니다. 대V의 의견은 해당 개인의 견해일 뿐입니다.


오류 처리

오류 상황감지 방식처리
Token 미설정$XQ_A_TOKEN이 비어 있음사용자에게 설정 방법 안내 및 획득 방법 설명
Playwright 미설치node에서 MODULE_NOT_FOUND 오류bash {baseDir}/install.sh 실행 안내
WAF 슬라이더 인증"Access Verification" 반환잠시 후 재시도 권장
Token 만료error_code 400/400016 반환token 재발급 안내
관심 종목 없음watchlist_quotes가 빈 stocks 반환雪球 App에서 관심 종목 추가 안내
대V 없음빈 statuses 반환해당 사용자 건너뛰고 보고서에 표시
API 속도 제한HTTP 429 또는 연속 오류대기 후 재시도
네트워크 오류요청 시간 초과네트워크 확인 안내

원칙: 부분 실패가 전체 프로세스를 중단하지 않음. 대V 동향 수집 실패 시에도 시세 보고서를 출력하고, 시세 수집 실패 시에도 대V 요약을 출력합니다.


상세 API 참고

API 전체 매개변수, 응답 구조, 주식 코드 규격, 오류 코드 등에 대한 자세한 내용은 {baseDir}/references/api-reference.md를 참조하세요.

관련 스킬