telegramlens-mcp 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- telegramlens_mcp-0.1.0/.github/workflows/release.yml +66 -0
- telegramlens_mcp-0.1.0/.gitignore +24 -0
- telegramlens_mcp-0.1.0/LICENSE +32 -0
- telegramlens_mcp-0.1.0/PKG-INFO +166 -0
- telegramlens_mcp-0.1.0/README.md +143 -0
- telegramlens_mcp-0.1.0/channels.csv +132 -0
- telegramlens_mcp-0.1.0/channels.md +138 -0
- telegramlens_mcp-0.1.0/pyproject.toml +45 -0
- telegramlens_mcp-0.1.0/skills/telegram-buzz-snapshot/SKILL.md +83 -0
- telegramlens_mcp-0.1.0/telegram_lens/__init__.py +3 -0
- telegramlens_mcp-0.1.0/telegram_lens/api.py +199 -0
- telegramlens_mcp-0.1.0/telegram_lens/classify.py +126 -0
- telegramlens_mcp-0.1.0/telegram_lens/client.py +271 -0
- telegramlens_mcp-0.1.0/telegram_lens/cluster.py +232 -0
- telegramlens_mcp-0.1.0/telegram_lens/config.py +78 -0
- telegramlens_mcp-0.1.0/telegram_lens/daemon.py +412 -0
- telegramlens_mcp-0.1.0/telegram_lens/data/aliases.json +43 -0
- telegramlens_mcp-0.1.0/telegram_lens/data/ambiguous_codes.json +37 -0
- telegramlens_mcp-0.1.0/telegram_lens/db.py +579 -0
- telegramlens_mcp-0.1.0/telegram_lens/discover.py +109 -0
- telegramlens_mcp-0.1.0/telegram_lens/export_channels.py +130 -0
- telegramlens_mcp-0.1.0/telegram_lens/extract.py +174 -0
- telegramlens_mcp-0.1.0/telegram_lens/licensing.py +176 -0
- telegramlens_mcp-0.1.0/telegram_lens/login_cli.py +152 -0
- telegramlens_mcp-0.1.0/telegram_lens/queries.py +844 -0
- telegramlens_mcp-0.1.0/telegram_lens/reindex.py +132 -0
- telegramlens_mcp-0.1.0/telegram_lens/server.py +737 -0
- telegramlens_mcp-0.1.0/telegram_lens/setup_claude.py +208 -0
- telegramlens_mcp-0.1.0/telegram_lens/stocks.py +270 -0
- telegramlens_mcp-0.1.0/telegram_lens/sync.py +213 -0
- telegramlens_mcp-0.1.0/telegram_lens/tagging.py +169 -0
- telegramlens_mcp-0.1.0/tests/smoke_offline.py +608 -0
- telegramlens_mcp-0.1.0/uv.lock +852 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
# 태그 푸시(v*) 시 자동:
|
|
4
|
+
# 1. Python 빌드 (wheel + sdist)
|
|
5
|
+
# 2. PyPI 업로드
|
|
6
|
+
# 3. GitHub Release 생성 + dist 자산 첨부
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
push:
|
|
10
|
+
tags:
|
|
11
|
+
- 'v*' # v0.1.0, v0.2.0 등
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
release:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
permissions:
|
|
17
|
+
contents: write # GitHub Release 생성용
|
|
18
|
+
id-token: write # PyPI Trusted Publishing (OIDC) 용
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Setup Python
|
|
23
|
+
uses: actions/setup-python@v5
|
|
24
|
+
with:
|
|
25
|
+
python-version: '3.11'
|
|
26
|
+
|
|
27
|
+
- name: Verify version matches tag
|
|
28
|
+
run: |
|
|
29
|
+
TAG_VER="${GITHUB_REF_NAME#v}"
|
|
30
|
+
PKG_VER=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
|
|
31
|
+
if [ "$TAG_VER" != "$PKG_VER" ]; then
|
|
32
|
+
echo "::error::Tag version ($TAG_VER) does not match pyproject.toml version ($PKG_VER)"
|
|
33
|
+
exit 1
|
|
34
|
+
fi
|
|
35
|
+
echo "Version OK: $PKG_VER"
|
|
36
|
+
|
|
37
|
+
- name: Build distribution
|
|
38
|
+
run: |
|
|
39
|
+
python -m pip install --upgrade pip build
|
|
40
|
+
python -m build
|
|
41
|
+
|
|
42
|
+
- name: Verify distribution
|
|
43
|
+
run: |
|
|
44
|
+
python -m pip install --upgrade twine
|
|
45
|
+
twine check dist/*
|
|
46
|
+
|
|
47
|
+
# Trusted Publishing (OIDC) — 토큰 불필요. PyPI 측 pending publisher 등록 필요.
|
|
48
|
+
# https://docs.pypi.org/trusted-publishers/
|
|
49
|
+
# PyPI Project Name: telegramlens-mcp / Owner: Johnhyeon
|
|
50
|
+
# Repository: telegramlens-mcp / Workflow: release.yml / Environment: (비움)
|
|
51
|
+
- name: Publish to PyPI (Trusted Publishing)
|
|
52
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
53
|
+
|
|
54
|
+
- name: Create GitHub Release
|
|
55
|
+
uses: softprops/action-gh-release@v2
|
|
56
|
+
with:
|
|
57
|
+
files: |
|
|
58
|
+
dist/*.whl
|
|
59
|
+
dist/*.tar.gz
|
|
60
|
+
generate_release_notes: true
|
|
61
|
+
body: |
|
|
62
|
+
TelegramLens — 텔레그램 채널의 종목 내러티브·언급 흐름을 구조화해
|
|
63
|
+
AI에게 전달하는 로컬 MCP 서버.
|
|
64
|
+
|
|
65
|
+
설치·활성화는 구매자 안내문 기준으로 진행합니다.
|
|
66
|
+
유효한 라이선스 키가 있어야 도구가 동작합니다(`telegramlens-activate`).
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
.eggs/
|
|
6
|
+
build/
|
|
7
|
+
dist/
|
|
8
|
+
|
|
9
|
+
# Virtualenvs
|
|
10
|
+
.venv/
|
|
11
|
+
venv/
|
|
12
|
+
env/
|
|
13
|
+
|
|
14
|
+
# 로컬 런타임 데이터(세션·DB·자격증명)는 ~/.telegramlens 에 저장되지만 혹시 모를 유출 방지
|
|
15
|
+
*.session
|
|
16
|
+
*.session-journal
|
|
17
|
+
credentials.json
|
|
18
|
+
telegramlens.db
|
|
19
|
+
telegramlens.db-*
|
|
20
|
+
|
|
21
|
+
# IDE / OS
|
|
22
|
+
.idea/
|
|
23
|
+
.vscode/
|
|
24
|
+
.DS_Store
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
TelegramLens 독점 라이선스 (Proprietary License)
|
|
2
|
+
Copyright (c) 2026 Johnhyeon. All rights reserved.
|
|
3
|
+
|
|
4
|
+
본 소프트웨어(TelegramLens, 이하 "소프트웨어")는 저작권자 Johnhyeon의 독점
|
|
5
|
+
저작물입니다. 오픈소스가 아니며, 유효한 라이선스 키를 구매한 사용자에게만
|
|
6
|
+
아래 조건으로 사용 권한이 부여됩니다.
|
|
7
|
+
|
|
8
|
+
1. 사용 허가
|
|
9
|
+
- 정당하게 발급된 유효한 라이선스 키를 보유한 사용자는, 본인의 기기에서
|
|
10
|
+
소프트웨어를 설치·실행할 수 있습니다.
|
|
11
|
+
|
|
12
|
+
2. 금지 사항
|
|
13
|
+
- 소프트웨어의 전부 또는 일부를 재배포, 재판매, 대여, 양도, 공개 게시하는 행위.
|
|
14
|
+
- 라이선스 검증 메커니즘을 우회·제거·변조하는 행위.
|
|
15
|
+
- 라이선스 키를 제3자와 공유하거나 유출하는 행위.
|
|
16
|
+
- 소프트웨어를 기반으로 한 2차적 저작물을 제작·배포하는 행위.
|
|
17
|
+
|
|
18
|
+
3. 권리 유보
|
|
19
|
+
- 본 라이선스에 명시적으로 부여되지 않은 모든 권리는 저작권자에게 유보됩니다.
|
|
20
|
+
|
|
21
|
+
4. 보증 부인 및 책임 제한
|
|
22
|
+
- 소프트웨어는 "있는 그대로(AS IS)" 제공되며, 명시적이든 묵시적이든 어떠한
|
|
23
|
+
보증도 하지 않습니다.
|
|
24
|
+
- 본 소프트웨어는 공개된 텔레그램 채널의 데이터를 수집·정리해 AI가 분석에
|
|
25
|
+
활용하도록 돕는 데이터 연결 도구이며, 투자 추천·매수/매도 신호·자동매매·
|
|
26
|
+
수익 보장을 제공하지 않습니다. 최종 투자 판단과 책임은 사용자 본인에게 있습니다.
|
|
27
|
+
- 사용자는 본인이 접근 권한을 가진 채널의 데이터만 수집하며, 관련 법령과
|
|
28
|
+
텔레그램 이용약관을 준수할 책임이 있습니다.
|
|
29
|
+
- 저작권자는 소프트웨어의 사용 또는 사용 불능으로 인한 어떠한 손해에 대해서도
|
|
30
|
+
책임지지 않습니다.
|
|
31
|
+
|
|
32
|
+
문의: 저작권자(Johnhyeon)
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: telegramlens-mcp
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: TelegramLens — 텔레그램 채널의 종목 내러티브·언급 흐름을 구조화해 AI에게 전달하는 로컬 MCP 서버
|
|
5
|
+
Author: Johnhyeon
|
|
6
|
+
License: Proprietary
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Keywords: ai,claude,finance,korea,mcp,narrative,stock,stocklens,telegram
|
|
9
|
+
Classifier: Development Status :: 3 - Alpha
|
|
10
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
11
|
+
Classifier: License :: Other/Proprietary License
|
|
12
|
+
Classifier: Natural Language :: Korean
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Topic :: Office/Business :: Financial :: Investment
|
|
17
|
+
Requires-Python: >=3.11
|
|
18
|
+
Requires-Dist: httpx>=0.27.0
|
|
19
|
+
Requires-Dist: mcp[cli]>=1.12.0
|
|
20
|
+
Requires-Dist: telethon>=1.36.0
|
|
21
|
+
Requires-Dist: tzdata>=2024.1
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
|
|
24
|
+
# TelegramLens
|
|
25
|
+
|
|
26
|
+
텔레그램 채널의 **종목 언급·내러티브 흐름을 구조화**해 AI(Claude)에게 전달하는 로컬 MCP 서버.
|
|
27
|
+
|
|
28
|
+
> AI는 이미 퍼져 있는 정보를 정리할 뿐, 아직 구조화되지 않은 내러티브 흐름은 못 잡는다.
|
|
29
|
+
> 텔레그램에서 도는 찌라시·모멘텀·테마를 구조화해 던져주면 그 갭을 메운다.
|
|
30
|
+
|
|
31
|
+
**비공개·판매용 (Proprietary).** 공개 배포하지 않는다.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 구조
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
사용자 Telegram 계정 (Telethon 세션, 로컬)
|
|
39
|
+
→ 가입한 채널 메시지 수집
|
|
40
|
+
→ 종목 언급 추출 (KRX 2700+ 종목 사전 검증)
|
|
41
|
+
→ 로컬 SQLite (히스토리 보존 → 모멘텀 감지)
|
|
42
|
+
→ MCP 툴로 Claude에 구조화 요약 제공
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
데이터는 전부 사용자 PC(`~/.telegramlens/`)에만 저장된다. 서버로 보내지 않는다.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 설치 & 로그인
|
|
50
|
+
|
|
51
|
+
```powershell
|
|
52
|
+
pip install -e .
|
|
53
|
+
|
|
54
|
+
# 1) Telegram API 자격증명 발급: https://my.telegram.org → API development tools
|
|
55
|
+
# 2) 로그인 (전화번호 인증 — 1회만)
|
|
56
|
+
telegramlens-login
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
로그인하면 세션 파일·DB·종목 사전(KRX)이 `~/.telegramlens/` 에 준비된다.
|
|
60
|
+
|
|
61
|
+
## Claude 등록
|
|
62
|
+
|
|
63
|
+
```powershell
|
|
64
|
+
telegramlens-setup # Claude Desktop/Code 자동 등록
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
또는 수동으로 `claude_desktop_config.json`:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{ "mcpServers": { "telegramlens": { "command": "telegramlens" } } }
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 백그라운드 자동 수집 (별도 자식 데몬)
|
|
74
|
+
|
|
75
|
+
수동 `telegram_sync` 를 매번 부르지 않아도, **Claude 가 이 MCP 서버를 켜둔 동안**
|
|
76
|
+
수집 데몬이 10분 주기로 백그라운드 수집한다. 삭제되기 전 찌라시를 박제하고
|
|
77
|
+
momentum 히스토리를 쌓는 게 목적. 데몬이 DB를 미리 채워두므로 **조회 도구는 즉시
|
|
78
|
+
응답**한다(질문할 때 텔레그램 접속을 기다리지 않는다).
|
|
79
|
+
|
|
80
|
+
**왜 '별도 자식 프로세스'인가.** 두 함정을 동시에 피하려는 설계다:
|
|
81
|
+
|
|
82
|
+
1. **백신(persistence)** — 데몬을 창 없이 *detach* 하거나 부팅 자동시작(Run키/예약작업)을
|
|
83
|
+
걸면, 행위가 멀웨어의 persistence/defense-evasion 패턴과 같아 행위 엔진(예: AhnLab
|
|
84
|
+
V3 `Persistence/MDP.Event`)에 잡힌다.
|
|
85
|
+
2. **stdio 오염·멈춤** — 반대로 수집을 MCP 서버 *안*에서 돌리면, Telethon 로그가
|
|
86
|
+
stdout(= Claude 와의 JSON-RPC 채널)을 오염시키고 무거운 수집이 이벤트 루프를 막아
|
|
87
|
+
"응답 멈춤/용량" 에러가 난다.
|
|
88
|
+
|
|
89
|
+
그래서 데몬을 **평범한 자식 프로세스**로 띄운다 — detach·breakaway·자동시작
|
|
90
|
+
레지스트리가 전혀 없고(= persistence 아님), `stdout/stderr` 는 DEVNULL 로 막아(= stdio
|
|
91
|
+
오염 없음), 별도 프로세스라 서버 이벤트 루프를 막지 않는다(= 멈춤 없음). Claude(부모
|
|
92
|
+
MCP 서버)가 종료되면 함께 정리된다.
|
|
93
|
+
|
|
94
|
+
- **동작**: 서버 기동 시 데몬 자식 1개 spawn → 데몬이 즉시 1회(백필) 후 10분 주기.
|
|
95
|
+
데몬이 떠 있는 동안 `telegram_sync` 는 세션을 데몬에 양보하고 DB 신선도만 보고한다.
|
|
96
|
+
- **공백 처리(정합성)**: Claude 를 닫으면 데몬도 종료. 다시 열면 데몬이 꺼져 있던
|
|
97
|
+
구간을 **DB 최신 메시지 시각(watermark)부터 지금까지** 자동 백필한다 — 시간 상한
|
|
98
|
+
최대 7일(`--max-window`), 채널당 상한은 창 길이에 비례해 자동 확대(정상 500 →
|
|
99
|
+
대형 캐치업 시 최대 5000)되어 바쁜 채널도 날짜 경계까지 빠짐없이 채운다(중복은
|
|
100
|
+
UNIQUE 제약으로 스킵). 긴 갭 백필은 첫 사이클이 수 분 걸릴 수 있고, 그동안 조회
|
|
101
|
+
도구는 "수집 중"을 안내한다.
|
|
102
|
+
- **상태**: `telegram_status` 의 `collector` 필드. 로그: `~/.telegramlens/daemon.log`.
|
|
103
|
+
- DB는 WAL 모드 — 수집(write)이 도는 중에도 Claude 조회(read)가 막히지 않는다.
|
|
104
|
+
|
|
105
|
+
> 디버그·옵트인용으로 포그라운드 수동 실행도 가능: `telegramlens-daemon`
|
|
106
|
+
> (콘솔 창에서 직접 실행). 자동 기동 데몬과 PID 락을 공유해 중복 실행은 막힌다.
|
|
107
|
+
> 자동시작(부팅) 등록 기능은 없다.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## MCP 툴
|
|
112
|
+
|
|
113
|
+
**조회**
|
|
114
|
+
| 툴 | 용도 |
|
|
115
|
+
|---|---|
|
|
116
|
+
| `telegram_sync(minutes)` | 최근 메시지 수집·구조화 (먼저 실행) |
|
|
117
|
+
| `telegram_trending(hours, top)` | 기간 내 언급량 상위 종목 |
|
|
118
|
+
| `telegram_momentum(hours, baseline_hours)` | 언급 급증 종목 — 새 내러티브 포착 |
|
|
119
|
+
| `telegram_stock_buzz(query, hours)` | 특정 종목 언급 요약 + 원문 샘플 |
|
|
120
|
+
| `telegram_messages(channel, hours)` | 원문 메시지 drill-down (채널·시간) |
|
|
121
|
+
| `telegram_search(query, hours, channel)` | 원문 키워드 전문검색 — 종목 언급 없는 거시·산업·테마 글까지 |
|
|
122
|
+
| `telegram_channels()` | 수집된 채널 목록 |
|
|
123
|
+
| `telegram_status()` | 로그인·수집 상태 |
|
|
124
|
+
|
|
125
|
+
> 수집 대상은 **가입된 모든 브로드캐스트 채널**이다. 새로 가입한 채널은 다음 사이클부터 자동 포함된다(별도 등록 불필요).
|
|
126
|
+
|
|
127
|
+
**채널 진단**
|
|
128
|
+
| 툴 | 용도 |
|
|
129
|
+
|---|---|
|
|
130
|
+
| `telegram_classify_channels(threshold)` | 채널별 종목 언급 밀도 리포트(어느 채널이 종목 위주인지 진단 — 수집을 제한하진 않음) |
|
|
131
|
+
|
|
132
|
+
**사전 관리 (오탐·별칭 루프)**
|
|
133
|
+
| 툴 | 용도 |
|
|
134
|
+
|---|---|
|
|
135
|
+
| `telegram_fp_candidates(days)` | 오탐 후보(일반명사 충돌 의심) 리뷰 리스트 |
|
|
136
|
+
| `telegram_alias_candidates(days)` | 누락 별칭 후보(`이름(코드)` 표기 기반, 고정밀) |
|
|
137
|
+
| `telegram_block_name(code)` | 모호어 차단(이름단독 매칭 차단, 코드 동반 시만 인정) |
|
|
138
|
+
| `telegram_add_alias(alias, code)` | 별칭 등록 (즉시 반영) |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 추출 품질 2층
|
|
143
|
+
|
|
144
|
+
| 층 | 역할 | 데이터 |
|
|
145
|
+
|---|---|---|
|
|
146
|
+
| 코드 검증 | 6자리 코드는 KRX 사전에 있는 것만 채택 | KRX 2700+ |
|
|
147
|
+
| 별칭 (recall↑) | 통용어/약어 → 코드 (`현대차→005380`) | `data/aliases.json` + 사용자 override |
|
|
148
|
+
| 블록리스트 (precision↑) | 일반명사 충돌 종목은 코드 동반 시만 (`대상`, `TP`) | `data/ambiguous_codes.json` + override |
|
|
149
|
+
|
|
150
|
+
사용자 사전은 `~/.telegramlens/aliases.json`, `~/.telegramlens/ambiguous_codes.json` 로 확장(번들 위에 병합).
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 알려진 한계 (MVP)
|
|
155
|
+
|
|
156
|
+
- **오탐 판별**: `telegram_fp_candidates` 는 후보를 좁혀줄 뿐, "대형주를 약칭으로 부른 것"과 "일반명사 충돌"을 자동 구분하진 못한다. 최종 판단은 사람.
|
|
157
|
+
- **별칭 재현율**: 코드 없이 쓰인 별칭(`현대차` 단독)은 누군가 `현대차(005380)` 형태로 쓸 때 비로소 후보로 잡힌다. 볼륨 누적형.
|
|
158
|
+
- **수집 트리거**: 현재 `telegram_sync` 수동 호출. 백그라운드 주기 sync 는 추후.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 종목 사전 갱신
|
|
163
|
+
|
|
164
|
+
```powershell
|
|
165
|
+
telegramlens-refresh-stocks # KRX 상장종목 최신화
|
|
166
|
+
```
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# TelegramLens
|
|
2
|
+
|
|
3
|
+
텔레그램 채널의 **종목 언급·내러티브 흐름을 구조화**해 AI(Claude)에게 전달하는 로컬 MCP 서버.
|
|
4
|
+
|
|
5
|
+
> AI는 이미 퍼져 있는 정보를 정리할 뿐, 아직 구조화되지 않은 내러티브 흐름은 못 잡는다.
|
|
6
|
+
> 텔레그램에서 도는 찌라시·모멘텀·테마를 구조화해 던져주면 그 갭을 메운다.
|
|
7
|
+
|
|
8
|
+
**비공개·판매용 (Proprietary).** 공개 배포하지 않는다.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 구조
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
사용자 Telegram 계정 (Telethon 세션, 로컬)
|
|
16
|
+
→ 가입한 채널 메시지 수집
|
|
17
|
+
→ 종목 언급 추출 (KRX 2700+ 종목 사전 검증)
|
|
18
|
+
→ 로컬 SQLite (히스토리 보존 → 모멘텀 감지)
|
|
19
|
+
→ MCP 툴로 Claude에 구조화 요약 제공
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
데이터는 전부 사용자 PC(`~/.telegramlens/`)에만 저장된다. 서버로 보내지 않는다.
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 설치 & 로그인
|
|
27
|
+
|
|
28
|
+
```powershell
|
|
29
|
+
pip install -e .
|
|
30
|
+
|
|
31
|
+
# 1) Telegram API 자격증명 발급: https://my.telegram.org → API development tools
|
|
32
|
+
# 2) 로그인 (전화번호 인증 — 1회만)
|
|
33
|
+
telegramlens-login
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
로그인하면 세션 파일·DB·종목 사전(KRX)이 `~/.telegramlens/` 에 준비된다.
|
|
37
|
+
|
|
38
|
+
## Claude 등록
|
|
39
|
+
|
|
40
|
+
```powershell
|
|
41
|
+
telegramlens-setup # Claude Desktop/Code 자동 등록
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
또는 수동으로 `claude_desktop_config.json`:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{ "mcpServers": { "telegramlens": { "command": "telegramlens" } } }
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## 백그라운드 자동 수집 (별도 자식 데몬)
|
|
51
|
+
|
|
52
|
+
수동 `telegram_sync` 를 매번 부르지 않아도, **Claude 가 이 MCP 서버를 켜둔 동안**
|
|
53
|
+
수집 데몬이 10분 주기로 백그라운드 수집한다. 삭제되기 전 찌라시를 박제하고
|
|
54
|
+
momentum 히스토리를 쌓는 게 목적. 데몬이 DB를 미리 채워두므로 **조회 도구는 즉시
|
|
55
|
+
응답**한다(질문할 때 텔레그램 접속을 기다리지 않는다).
|
|
56
|
+
|
|
57
|
+
**왜 '별도 자식 프로세스'인가.** 두 함정을 동시에 피하려는 설계다:
|
|
58
|
+
|
|
59
|
+
1. **백신(persistence)** — 데몬을 창 없이 *detach* 하거나 부팅 자동시작(Run키/예약작업)을
|
|
60
|
+
걸면, 행위가 멀웨어의 persistence/defense-evasion 패턴과 같아 행위 엔진(예: AhnLab
|
|
61
|
+
V3 `Persistence/MDP.Event`)에 잡힌다.
|
|
62
|
+
2. **stdio 오염·멈춤** — 반대로 수집을 MCP 서버 *안*에서 돌리면, Telethon 로그가
|
|
63
|
+
stdout(= Claude 와의 JSON-RPC 채널)을 오염시키고 무거운 수집이 이벤트 루프를 막아
|
|
64
|
+
"응답 멈춤/용량" 에러가 난다.
|
|
65
|
+
|
|
66
|
+
그래서 데몬을 **평범한 자식 프로세스**로 띄운다 — detach·breakaway·자동시작
|
|
67
|
+
레지스트리가 전혀 없고(= persistence 아님), `stdout/stderr` 는 DEVNULL 로 막아(= stdio
|
|
68
|
+
오염 없음), 별도 프로세스라 서버 이벤트 루프를 막지 않는다(= 멈춤 없음). Claude(부모
|
|
69
|
+
MCP 서버)가 종료되면 함께 정리된다.
|
|
70
|
+
|
|
71
|
+
- **동작**: 서버 기동 시 데몬 자식 1개 spawn → 데몬이 즉시 1회(백필) 후 10분 주기.
|
|
72
|
+
데몬이 떠 있는 동안 `telegram_sync` 는 세션을 데몬에 양보하고 DB 신선도만 보고한다.
|
|
73
|
+
- **공백 처리(정합성)**: Claude 를 닫으면 데몬도 종료. 다시 열면 데몬이 꺼져 있던
|
|
74
|
+
구간을 **DB 최신 메시지 시각(watermark)부터 지금까지** 자동 백필한다 — 시간 상한
|
|
75
|
+
최대 7일(`--max-window`), 채널당 상한은 창 길이에 비례해 자동 확대(정상 500 →
|
|
76
|
+
대형 캐치업 시 최대 5000)되어 바쁜 채널도 날짜 경계까지 빠짐없이 채운다(중복은
|
|
77
|
+
UNIQUE 제약으로 스킵). 긴 갭 백필은 첫 사이클이 수 분 걸릴 수 있고, 그동안 조회
|
|
78
|
+
도구는 "수집 중"을 안내한다.
|
|
79
|
+
- **상태**: `telegram_status` 의 `collector` 필드. 로그: `~/.telegramlens/daemon.log`.
|
|
80
|
+
- DB는 WAL 모드 — 수집(write)이 도는 중에도 Claude 조회(read)가 막히지 않는다.
|
|
81
|
+
|
|
82
|
+
> 디버그·옵트인용으로 포그라운드 수동 실행도 가능: `telegramlens-daemon`
|
|
83
|
+
> (콘솔 창에서 직접 실행). 자동 기동 데몬과 PID 락을 공유해 중복 실행은 막힌다.
|
|
84
|
+
> 자동시작(부팅) 등록 기능은 없다.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## MCP 툴
|
|
89
|
+
|
|
90
|
+
**조회**
|
|
91
|
+
| 툴 | 용도 |
|
|
92
|
+
|---|---|
|
|
93
|
+
| `telegram_sync(minutes)` | 최근 메시지 수집·구조화 (먼저 실행) |
|
|
94
|
+
| `telegram_trending(hours, top)` | 기간 내 언급량 상위 종목 |
|
|
95
|
+
| `telegram_momentum(hours, baseline_hours)` | 언급 급증 종목 — 새 내러티브 포착 |
|
|
96
|
+
| `telegram_stock_buzz(query, hours)` | 특정 종목 언급 요약 + 원문 샘플 |
|
|
97
|
+
| `telegram_messages(channel, hours)` | 원문 메시지 drill-down (채널·시간) |
|
|
98
|
+
| `telegram_search(query, hours, channel)` | 원문 키워드 전문검색 — 종목 언급 없는 거시·산업·테마 글까지 |
|
|
99
|
+
| `telegram_channels()` | 수집된 채널 목록 |
|
|
100
|
+
| `telegram_status()` | 로그인·수집 상태 |
|
|
101
|
+
|
|
102
|
+
> 수집 대상은 **가입된 모든 브로드캐스트 채널**이다. 새로 가입한 채널은 다음 사이클부터 자동 포함된다(별도 등록 불필요).
|
|
103
|
+
|
|
104
|
+
**채널 진단**
|
|
105
|
+
| 툴 | 용도 |
|
|
106
|
+
|---|---|
|
|
107
|
+
| `telegram_classify_channels(threshold)` | 채널별 종목 언급 밀도 리포트(어느 채널이 종목 위주인지 진단 — 수집을 제한하진 않음) |
|
|
108
|
+
|
|
109
|
+
**사전 관리 (오탐·별칭 루프)**
|
|
110
|
+
| 툴 | 용도 |
|
|
111
|
+
|---|---|
|
|
112
|
+
| `telegram_fp_candidates(days)` | 오탐 후보(일반명사 충돌 의심) 리뷰 리스트 |
|
|
113
|
+
| `telegram_alias_candidates(days)` | 누락 별칭 후보(`이름(코드)` 표기 기반, 고정밀) |
|
|
114
|
+
| `telegram_block_name(code)` | 모호어 차단(이름단독 매칭 차단, 코드 동반 시만 인정) |
|
|
115
|
+
| `telegram_add_alias(alias, code)` | 별칭 등록 (즉시 반영) |
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 추출 품질 2층
|
|
120
|
+
|
|
121
|
+
| 층 | 역할 | 데이터 |
|
|
122
|
+
|---|---|---|
|
|
123
|
+
| 코드 검증 | 6자리 코드는 KRX 사전에 있는 것만 채택 | KRX 2700+ |
|
|
124
|
+
| 별칭 (recall↑) | 통용어/약어 → 코드 (`현대차→005380`) | `data/aliases.json` + 사용자 override |
|
|
125
|
+
| 블록리스트 (precision↑) | 일반명사 충돌 종목은 코드 동반 시만 (`대상`, `TP`) | `data/ambiguous_codes.json` + override |
|
|
126
|
+
|
|
127
|
+
사용자 사전은 `~/.telegramlens/aliases.json`, `~/.telegramlens/ambiguous_codes.json` 로 확장(번들 위에 병합).
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## 알려진 한계 (MVP)
|
|
132
|
+
|
|
133
|
+
- **오탐 판별**: `telegram_fp_candidates` 는 후보를 좁혀줄 뿐, "대형주를 약칭으로 부른 것"과 "일반명사 충돌"을 자동 구분하진 못한다. 최종 판단은 사람.
|
|
134
|
+
- **별칭 재현율**: 코드 없이 쓰인 별칭(`현대차` 단독)은 누군가 `현대차(005380)` 형태로 쓸 때 비로소 후보로 잡힌다. 볼륨 누적형.
|
|
135
|
+
- **수집 트리거**: 현재 `telegram_sync` 수동 호출. 백그라운드 주기 sync 는 추후.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 종목 사전 갱신
|
|
140
|
+
|
|
141
|
+
```powershell
|
|
142
|
+
telegramlens-refresh-stocks # KRX 상장종목 최신화
|
|
143
|
+
```
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
title,username,link,subscribers,density,is_stock
|
|
2
|
+
버틀러 - 증권사 리포트 요약,butler_works,https://t.me/butler_works,9881,1.0,1
|
|
3
|
+
AWAKE - 실시간 주식 공시 정리채널,darthacking,https://t.me/darthacking,62223,0.9875,1
|
|
4
|
+
주붕이의 리포트읽기 🔕,jubung,https://t.me/jubung,2003,0.9875,1
|
|
5
|
+
[ IT는 SK ],skitteam,https://t.me/skitteam,10538,0.9855,1
|
|
6
|
+
이대리의 치트키,LeetKey_Labotory,https://t.me/LeetKey_Labotory,8,0.963,1
|
|
7
|
+
[키움 전기전자/디스플레이 김소원],kiwoomdisplay,https://t.me/kiwoomdisplay,2095,0.9538,1
|
|
8
|
+
매경 자이앤트| MK,mk_giant,https://t.me/mk_giant,3406,0.918,1
|
|
9
|
+
[미래 임희석] 인터넷/SW/게임,mirae_internet,https://t.me/mirae_internet,7728,0.9178,1
|
|
10
|
+
[신한 리서치본부] 제약/바이오,bio_shinhan,https://t.me/bio_shinhan,21243,0.9077,1
|
|
11
|
+
[노다지IR노트] 컨콜/탐방/주담통화,irnote_ystreet,https://t.me/irnote_ystreet,6147,0.8657,1
|
|
12
|
+
[미래에셋증권 전기전자/IT하드웨어 박준서],miraeelec,https://t.me/miraeelec,3837,0.8529,1
|
|
13
|
+
건설/조선/리츠 | 강경태 | 한국투자증권,enc210406,https://t.me/enc210406,8973,0.8462,1
|
|
14
|
+
"DB증권 Tech 서승연, 조현지",DBsecTech,https://t.me/DBsecTech,4619,0.8413,1
|
|
15
|
+
YIG,yigreport,https://t.me/yigreport,4507,0.8182,1
|
|
16
|
+
[한투 테크팀] 채민숙/남채민/황준태/김정찬/김연준,KISemicon,https://t.me/KISemicon,13276,0.8077,1
|
|
17
|
+
DAOL 조선/기계/방산 | 최광식,HI_GS,https://t.me/HI_GS,16316,0.7397,1
|
|
18
|
+
디일렉(THEELEC),theelec,https://t.me/theelec,10345,0.7125,1
|
|
19
|
+
시장 이야기 by 제이슨,bumgore,https://t.me/bumgore,34040,0.7021,1
|
|
20
|
+
스몰인사이트리서치,smallinsightresearch,https://t.me/smallinsightresearch,4295,0.6986,1
|
|
21
|
+
한양증권 제약/바이오 오병용,bdragon0808,https://t.me/bdragon0808,13062,0.6883,1
|
|
22
|
+
"[메리츠 Tech 김선우, 양승수, 김동관]",merITz_tech,https://t.me/merITz_tech,18473,0.6818,1
|
|
23
|
+
하나증권 IT 전기전자/부품 김민경,hanaitmk,https://t.me/hanaitmk,1414,0.675,1
|
|
24
|
+
메리츠증권 리서치,meritz_research,https://t.me/meritz_research,25396,0.6596,1
|
|
25
|
+
SK증권 조선/방산 한승한,SKSCyclical,https://t.me/SKSCyclical,4442,0.6538,1
|
|
26
|
+
빠르고 정확한 주식정보방,fastest_info1,https://t.me/fastest_info1,11826,0.6508,1
|
|
27
|
+
딘스티커 Dean's Ticker,d_ticker,https://t.me/d_ticker,12793,0.6125,1
|
|
28
|
+
탐방왕,tambangwang,https://t.me/tambangwang,10039,0.5844,1
|
|
29
|
+
쩜상리서치,upper_limit_price,https://t.me/upper_limit_price,7854,0.5811,1
|
|
30
|
+
타점 읽어주는 여자(타자),tazastock,https://t.me/tazastock,37047,0.5733,1
|
|
31
|
+
주식창고X투자버튼,JCxTB,https://t.me/JCxTB,5397,0.5696,1
|
|
32
|
+
우주방산AI로봇 아카이브,defence_24,https://t.me/defence_24,9134,0.557,1
|
|
33
|
+
[미래에셋 글로벌/한국 ETF] 윤재홍,qooowooo,https://t.me/qooowooo,6545,0.5397,1
|
|
34
|
+
[찌라시!] 가장 빠른 찌라시,stockinfojji,https://t.me/stockinfojji,3531,0.5375,1
|
|
35
|
+
퀀텀 알고리즘,quantum_ALGO,https://t.me/quantum_ALGO,7223,0.5224,1
|
|
36
|
+
고려대학교 가치투자 동아리 KUVIC,ku_kuvic,https://t.me/ku_kuvic,3704,0.5116,1
|
|
37
|
+
에테르의 일본&미국 리서치,aetherjapanresearch,https://t.me/aetherjapanresearch,28562,0.4697,1
|
|
38
|
+
뺀지뤼의 SKLab.(스크랩),bbanjil,https://t.me/bbanjil,10657,0.4595,1
|
|
39
|
+
석학들의 마켓 (인)사이트,getfeed,https://t.me/getfeed,7939,0.4521,1
|
|
40
|
+
주식과 부동산,slowstockT,https://t.me/slowstockT,3596,0.4487,1
|
|
41
|
+
범송공자 X 29PER,bumsong2,https://t.me/bumsong2,12728,0.4359,1
|
|
42
|
+
루팡,bornlupin,https://t.me/bornlupin,41187,0.4286,1
|
|
43
|
+
트리플 아이 - Insight Information Indepth,triple_stock,https://t.me/triple_stock,11990,0.4286,1
|
|
44
|
+
Yeouido Lab_여의도 톺아보기,Yeouido_Lab,https://t.me/Yeouido_Lab,41431,0.4156,1
|
|
45
|
+
호그니엘,hogniel,https://t.me/hogniel,13840,0.411,1
|
|
46
|
+
강해령의 테크앤더시티,technthecity,https://t.me/technthecity,7465,0.4107,1
|
|
47
|
+
야자반 - Y.Z. stock,yaza_stock,https://t.me/yaza_stock,12399,0.4091,1
|
|
48
|
+
김찰저의 관심과 생각 저장소,kimcharger,https://t.me/kimcharger,23534,0.4,1
|
|
49
|
+
카이에 de market,cahier_de_market,https://t.me/cahier_de_market,17683,0.4,1
|
|
50
|
+
BUYagra,psychotherapy101,https://t.me/psychotherapy101,5892,0.3947,1
|
|
51
|
+
GIVME INVEST🤑,givme23,https://t.me/givme23,3061,0.3836,1
|
|
52
|
+
받/돌았슈,speedjjirasi,https://t.me/speedjjirasi,9844,0.3788,1
|
|
53
|
+
습관이 부자를 만든다. 🧘,habit4117,https://t.me/habit4117,24296,0.375,1
|
|
54
|
+
세상의 (부)족한 것들에 대해서,runoutof,https://t.me/runoutof,1068,0.375,1
|
|
55
|
+
너쟁이의 성실한 추추생활,nje2e,https://t.me/nje2e,8192,0.3714,1
|
|
56
|
+
"投資, 아레테",mstaryun,https://t.me/mstaryun,17353,0.3667,1
|
|
57
|
+
레드버드 기업분석,redbirdstock,https://t.me/redbirdstock,9487,0.3571,1
|
|
58
|
+
Stock Trip,stocktrip,https://t.me/stocktrip,7093,0.3571,1
|
|
59
|
+
한국투자증권/기관영업부/이민근,mk81_koreainvestment,https://t.me/mk81_koreainvestment,14482,0.35,1
|
|
60
|
+
돼지바,bbong_tta,https://t.me/bbong_tta,11908,0.3467,1
|
|
61
|
+
프리라이프,free_life59,https://t.me/free_life59,9603,0.3433,1
|
|
62
|
+
노랑오리 재테크 텔레그램,yellowducktele,https://t.me/yellowducktele,4421,0.325,1
|
|
63
|
+
Pluto Research,hedgehara,https://t.me/hedgehara,16720,0.3247,1
|
|
64
|
+
묻따방 🐕,mootda,https://t.me/mootda,18719,0.3067,1
|
|
65
|
+
인상주의 투자 인생 업그레이드노트,insangnism,https://t.me/insangnism,10802,0.2895,1
|
|
66
|
+
인포마켓 infomarket,infomarketopen,https://t.me/infomarketopen,8381,0.2879,1
|
|
67
|
+
TRENDSETTER GLOBAL,TRENDSETTERVERSION2,https://t.me/TRENDSETTERVERSION2,3991,0.2794,1
|
|
68
|
+
투자의 빅 픽처를 위한 퍼즐 한 조각,investment_puzzle,https://t.me/investment_puzzle,13745,0.2759,1
|
|
69
|
+
MagazinE.,koreancapitalist,https://t.me/koreancapitalist,4732,0.2754,1
|
|
70
|
+
1년에 1랩업,fordouble,https://t.me/fordouble,2676,0.2754,1
|
|
71
|
+
회색인간의 매크로 + 투자,mistergray_11,https://t.me/mistergray_11,18136,0.2676,1
|
|
72
|
+
지식 책꽂이 (이대호 기자),knowledge_to_wealth,https://t.me/knowledge_to_wealth,12502,0.25,1
|
|
73
|
+
올바른,allbareun,https://t.me/allbareun,12100,0.2459,1
|
|
74
|
+
서화백의 그림놀이 🚀,easobi,https://t.me/easobi,23804,0.2388,1
|
|
75
|
+
리포트 갤러리,report_figure_by_offset,https://t.me/report_figure_by_offset,18466,0.2308,1
|
|
76
|
+
MZ실버만 빡겜모드 ON,silverman_sachs,https://t.me/silverman_sachs,7737,0.2286,1
|
|
77
|
+
재야의 고수들,gaoshoukorea,https://t.me/gaoshoukorea,39191,0.2167,1
|
|
78
|
+
반붐온? 방붐온?,banboomon,https://t.me/banboomon,5185,0.2162,1
|
|
79
|
+
서초동 투자머신,twomachine,https://t.me/twomachine,5222,0.2152,1
|
|
80
|
+
드리머의 잃지 않는 투자,orangeboard,https://t.me/orangeboard,4900,0.1972,1
|
|
81
|
+
KK Kontemporaries,kkkontemp,https://t.me/kkkontemp,13010,0.1897,1
|
|
82
|
+
64비트사령부⚡️ 🇰🇷🇺🇸,BTCpentagon,https://t.me/BTCpentagon,3807,0.1842,1
|
|
83
|
+
IH Research,ihresearch,https://t.me/ihresearch,7083,0.1772,1
|
|
84
|
+
한화 철강 권지우,cheolkangtracking,https://t.me/cheolkangtracking,577,0.1644,1
|
|
85
|
+
주식돋보기,SeeBullReal,https://t.me/SeeBullReal,9404,0.1392,1
|
|
86
|
+
기술적 분석으로 보는 주식시장 (by 소라게아빠),hermitcrab41,https://t.me/hermitcrab41,18992,0.137,1
|
|
87
|
+
상상인 철강/건설 김진범,PipeBeom,https://t.me/PipeBeom,1921,0.127,1
|
|
88
|
+
급등일보 미국주식🇺🇸 속보·매크로·리서치,FastStockNewsUSA,https://t.me/FastStockNewsUSA,38676,0.1233,1
|
|
89
|
+
한투증권 중국/신흥국 정정영,EMchina,https://t.me/EMchina,14399,0.1154,1
|
|
90
|
+
하나 중국/신흥국 전략 김경환,HANAchina,https://t.me/HANAchina,33181,0.1067,1
|
|
91
|
+
KB전략 이그전 (이은택의 그림 전략),egzion,https://t.me/egzion,14446,0.1026,1
|
|
92
|
+
Rafiki research,rafikiresearch,https://t.me/rafikiresearch,19580,0.0959,1
|
|
93
|
+
💯똥밭에 굴러도 주식판,daegurr,https://t.me/daegurr,21985,0.0921,1
|
|
94
|
+
글로벌 Watch 🌎,awake_globalwatch,https://t.me/awake_globalwatch,2923,0.075,1
|
|
95
|
+
기화가거 투자 인사이트,vrally55,https://t.me/vrally55,949,0.0625,1
|
|
96
|
+
양파농장,Onionfarmer,https://t.me/Onionfarmer,15271,0.0526,1
|
|
97
|
+
[한투증권 이동연] 글로벌 기업(IT S/W),chinaitev,https://t.me/chinaitev,4540,0.0476,0
|
|
98
|
+
가치투자클럽,corevalue,https://t.me/corevalue,66352,,
|
|
99
|
+
그로쓰리서치(Growth Research) [독립리서치],growthresearch,https://t.me/growthresearch,38558,,
|
|
100
|
+
제약/바이오/미용 원리버 Oneriver,pharmbiohana,https://t.me/pharmbiohana,29041,,
|
|
101
|
+
Buff,bufkr,https://t.me/bufkr,24083,,
|
|
102
|
+
TNBfolio,TNBfolio,https://t.me/TNBfolio,23429,,
|
|
103
|
+
도PB의 생존투자,survival_DoPB,https://t.me/survival_DoPB,22055,,
|
|
104
|
+
선수촌,athletes_village,https://t.me/athletes_village,20332,,
|
|
105
|
+
YIELD & SPREAD,yieldnspread,https://t.me/yieldnspread,20281,,
|
|
106
|
+
[하나 Global ETF] 박승진,globaletfi,https://t.me/globaletfi,18573,,
|
|
107
|
+
재간둥이 송선생,songjongsik,https://t.me/songjongsik,18290,,
|
|
108
|
+
잠실개미&10X’s N.E.R.D.S,jake8lee,https://t.me/jake8lee,15738,,
|
|
109
|
+
[DAOL퀀트 김경훈] 탑다운 전략,toptownquant,https://t.me/toptownquant,15185,,
|
|
110
|
+
미국주식과 투자이야기,itechkorea,https://t.me/itechkorea,13194,,
|
|
111
|
+
한화투자증권 경제 임혜윤,lim_econ,https://t.me/lim_econ,12833,,
|
|
112
|
+
한국경제,hankyung_fin,https://t.me/hankyung_fin,12329,,
|
|
113
|
+
[채권/금리 김상훈] 후니본(Bond),hanabondview,https://t.me/hanabondview,12290,,
|
|
114
|
+
[충간지의 글로벌 의료기기/디지털 헬스 연구소],globalmedtech,https://t.me/globalmedtech,12115,,
|
|
115
|
+
미국 제약-바이오 주식/약장수,yakjangsu,https://t.me/yakjangsu,11393,,
|
|
116
|
+
Harvey's Macro Story,harveyspecterMike,https://t.me/harveyspecterMike,11169,,
|
|
117
|
+
소형주 투자자 | Small Cap Research,small_stock,https://t.me/small_stock,10303,,
|
|
118
|
+
실전매매전략 : 마켓타이밍,stockgrandmaster,https://t.me/stockgrandmaster,10291,,
|
|
119
|
+
투자자문 와이즈리서치 경제공부방,econostudy,https://t.me/econostudy,8739,,
|
|
120
|
+
글로벌바이오아저씨,choaz1,https://t.me/choaz1,7263,,
|
|
121
|
+
CTT Research,CTTResearch,https://t.me/CTTResearch,7025,,
|
|
122
|
+
유진투자증권 산업분석실 테크/인프라팀,eugene2team,https://t.me/eugene2team,6415,,
|
|
123
|
+
[하나증권 해외채권] 허성우,deandatbond,https://t.me/deandatbond,6002,,
|
|
124
|
+
지휘통제실,Fire_Direction_Center,https://t.me/Fire_Direction_Center,5976,,
|
|
125
|
+
아트합시다.,Korea_value,https://t.me/Korea_value,5481,,
|
|
126
|
+
CTRINE,teamctrine,https://t.me/teamctrine,5471,,
|
|
127
|
+
Macrotrader - 금융치료,slsyphus,https://t.me/slsyphus,4228,,
|
|
128
|
+
대신증권 원자재 최진영,akacommodity,https://t.me/akacommodity,4047,0.0,0
|
|
129
|
+
한화 유통/의류/지주 이진협,jinhyeoblee,https://t.me/jinhyeoblee,4024,,
|
|
130
|
+
안지영- 소비재 이슈 점검,QLzGUdrUDTsZo6jA,https://t.me/QLzGUdrUDTsZo6jA,2900,,
|
|
131
|
+
[대신증권 유통/의류 유정현],retail_analyst,https://t.me/retail_analyst,2331,,
|
|
132
|
+
유진투자증권 법인영업팀 aka 달리기 좋은날!,gooday2drive,https://t.me/gooday2drive,1907,,
|