|
4 | 4 |
|
5 | 5 | # banini-tracker |
6 | 6 |
|
7 | | -追蹤「反指標女神」巴逆逆(8zz)的 Threads / Facebook 貼文,用 AI 進行反指標分析,推送結果到 Telegram 頻道。 |
8 | | - |
9 | | -## 它做什麼 |
10 | | - |
11 | | -1. 透過 Apify 抓取巴逆逆的最新社群貼文(Threads + Facebook) |
12 | | -2. 自動去重,只處理新貼文 |
13 | | -3. 用 LLM 進行「反指標 + 總經連鎖」分析 |
14 | | -4. 將分析結果推送到 Telegram 頻道 |
15 | | -5. 內建排程:盤中即時追蹤 + 盤後完整分析 |
16 | | - |
17 | | -## 反指標邏輯 |
18 | | - |
19 | | -巴逆逆被稱為「股海冥燈」——買什麼跌什麼,賣什麼漲什麼。AI 分析會: |
| 7 | +追蹤「股海冥燈」巴逆逆(8zz)的 Threads / Facebook 社群貼文,透過 Apify 抓取、AI 反指標分析、Telegram 即時推送。 |
20 | 8 |
|
21 | 9 | - 辨識她提到的標的(個股、ETF、原物料) |
22 | 10 | - 判斷她的操作(買入 / 被套 / 停損) |
23 | 11 | - 反轉推導(她停損 → 可能反彈、她買入 → 可能下跌) |
24 | 12 | - 推導連鎖效應(油價跌 → 製造業利多 → 電子股受惠) |
25 | 13 |
|
26 | | -## 環境需求 |
| 14 | +> **Claude Code 使用者?** 直接把 [`skill/SKILL.md`](skill/SKILL.md) 加到你的 `.claude/skills/` 就能用。Claude 自己當分析引擎,不需要額外 LLM。 |
27 | 15 |
|
28 | | -- Node.js 20+ |
29 | | -- [Apify](https://apify.com/) 帳號(免費額度即可) |
30 | | -- 任何 OpenAI 相容的 LLM API(預設 DeepInfra) |
31 | | -- Telegram Bot + 頻道(選用) |
| 16 | +支援兩種使用模式: |
| 17 | +- **常駐排程**:Docker 部署,自動盤中/盤後排程 + LLM 分析 + Telegram 推送 |
| 18 | +- **CLI 工具**:`npx @cablate/banini-tracker`,搭配 Claude Code 等 AI 手動執行分析 |
32 | 19 |
|
33 | | -## 安裝 |
| 20 | +## 快速開始(常駐排程) |
34 | 21 |
|
35 | 22 | ```bash |
36 | | -git clone https://github.com/CabLate/banini-tracker.git |
37 | | -cd banini-tracker |
38 | | -npm install |
| 23 | +# 1. 複製設定 |
39 | 24 | cp .env.example .env |
| 25 | +# 填入 APIFY_TOKEN, LLM_BASE_URL, LLM_API_KEY, LLM_MODEL, TG_BOT_TOKEN, TG_CHANNEL_ID |
| 26 | + |
| 27 | +# 2. Docker 部署 |
| 28 | +docker build -t banini-tracker . |
| 29 | +docker run -d --name banini --env-file .env banini-tracker |
| 30 | + |
| 31 | +# 3. 或本地直接跑 |
| 32 | +npm install && npm run start |
40 | 33 | ``` |
41 | 34 |
|
42 | | -編輯 `.env` 填入你的 API keys: |
| 35 | +### 排程規則 |
| 36 | + |
| 37 | +- **盤中**(週一~五 09:00-13:30):每 30 分鐘,FB only 抓 1 篇 |
| 38 | +- **盤後**(每天 23:00):Threads + FB 各 3 篇 |
43 | 39 |
|
44 | | -```env |
45 | | -APIFY_TOKEN=your_apify_token |
| 40 | +### npm scripts |
| 41 | + |
| 42 | +| 指令 | 說明 | |
| 43 | +|------|------| |
| 44 | +| `npm run start` | 常駐排程模式(盤中 + 盤後自動跑) | |
| 45 | +| `npm run dev` | 單次執行(Threads + FB 各 3 篇) | |
| 46 | +| `npm run dry` | 只抓取,不呼叫 LLM | |
| 47 | +| `npm run market` | 盤中模式(FB only, 1 篇) | |
| 48 | +| `npm run evening` | 盤後模式(各 3 篇) | |
| 49 | + |
| 50 | +### .env 設定 |
| 51 | + |
| 52 | +``` |
| 53 | +APIFY_TOKEN=apify_api_... |
46 | 54 | LLM_BASE_URL=https://api.deepinfra.com/v1/openai |
47 | | -LLM_API_KEY=your_api_key |
| 55 | +LLM_API_KEY=... |
48 | 56 | LLM_MODEL=MiniMaxAI/MiniMax-M2.5 |
49 | | -TG_BOT_TOKEN=your_telegram_bot_token |
50 | | -TG_CHANNEL_ID=your_telegram_channel_id |
| 57 | +TG_BOT_TOKEN=... |
| 58 | +TG_CHANNEL_ID=-100... |
51 | 59 | ``` |
52 | 60 |
|
53 | | -## 使用 |
| 61 | +## CLI 工具模式 |
54 | 62 |
|
55 | | -### 手動執行 |
| 63 | +不需 clone repo,任何環境直接用: |
56 | 64 |
|
57 | 65 | ```bash |
58 | | -npm run dev # Threads + FB 各 3 篇,AI 分析 + 通知 |
59 | | -npm run dry # 只抓取,不呼叫 LLM(測試用) |
60 | | -npm run market # 盤中模式:FB only, 1 篇 |
61 | | -npm run evening # 盤後模式:Threads + FB, 各 3 篇 |
62 | | -``` |
| 66 | +# 初始化設定 |
| 67 | +npx @cablate/banini-tracker init \ |
| 68 | + --apify-token YOUR_APIFY_TOKEN \ |
| 69 | + --tg-bot-token YOUR_TG_BOT_TOKEN \ |
| 70 | + --tg-channel-id YOUR_TG_CHANNEL_ID |
63 | 71 |
|
64 | | -### 常駐排程(部署用) |
| 72 | +# 抓取 Facebook 最新 3 篇 |
| 73 | +npx @cablate/banini-tracker fetch -s fb -n 3 --mark-seen |
65 | 74 |
|
66 | | -```bash |
67 | | -npm run build # TypeScript 編譯 |
68 | | -npm run start # 啟動常駐排程 |
| 75 | +# 推送結果到 Telegram |
| 76 | +npx @cablate/banini-tracker push -m "分析結果..." |
69 | 77 | ``` |
70 | 78 |
|
71 | | -排程時間(台北時間): |
| 79 | +### CLI 指令 |
72 | 80 |
|
73 | | -| 排程 | 時間 | 來源 | 篇數 | |
74 | | -|------|------|------|------| |
75 | | -| 盤中 | 週一~五 09:07-13:07 每 30 分 | Facebook | 1 篇 | |
76 | | -| 盤後 | 每天 23:03 | Threads + Facebook | 各 3 篇 | |
| 81 | +| 指令 | 說明 | |
| 82 | +|------|------| |
| 83 | +| `init` | 初始化設定檔(`~/.banini-tracker.json`) | |
| 84 | +| `config` | 顯示目前設定 | |
| 85 | +| `fetch` | 抓取貼文,輸出 JSON 到 stdout | |
| 86 | +| `push` | 推送訊息到 Telegram | |
| 87 | +| `seen list` | 列出已讀貼文 ID | |
| 88 | +| `seen mark <id...>` | 標記貼文為已讀 | |
| 89 | +| `seen clear` | 清空已讀紀錄 | |
77 | 90 |
|
78 | | -盤中只用 Facebook($0.02/次),盤後加 Threads(~$0.15/次),日成本約 $0.37。 |
| 91 | +### fetch 選項 |
79 | 92 |
|
80 | | -## 費用估算 |
81 | | - |
82 | | -| 服務 | 單次費用 | 月估算 | |
83 | | -|------|---------|--------| |
84 | | -| Apify FB Scraper | $0.02/次 | ~$6(盤中 10 次/天 × 30 天) | |
85 | | -| Apify Threads Scraper | ~$0.15/次 | ~$4.5(盤後 1 次/天 × 30 天) | |
86 | | -| DeepInfra LLM | ~$0.001/次 | < $1 | |
87 | | -| **合計** | | **~$11/月** | |
| 93 | +``` |
| 94 | +-s, --source <source> 來源:threads / fb / both(預設 fb) |
| 95 | +-n, --limit <n> 每個來源抓幾篇(預設 3) |
| 96 | +--no-dedup 不去重 |
| 97 | +--mark-seen 輸出後自動標記已讀 |
| 98 | +``` |
88 | 99 |
|
89 | | -## 專案結構 |
| 100 | +### push 選項 |
90 | 101 |
|
91 | 102 | ``` |
92 | | -src/ |
93 | | - index.ts # 主程式 + 排程邏輯 |
94 | | - threads.ts # Apify Threads Scraper 封裝 |
95 | | - facebook.ts # Apify Facebook Scraper 封裝 |
96 | | - analyze.ts # LLM 反指標分析(prompt + 呼叫) |
97 | | - telegram.ts # Telegram Bot 通知 |
98 | | -data/ # 執行資料(gitignore) |
99 | | - seen.json # 已處理貼文 ID(去重用) |
100 | | - report-*.json # 每次分析結果存檔 |
| 103 | +-m, --message <text> 直接帶訊息 |
| 104 | +-f, --file <path> 從檔案讀取 |
| 105 | +--parse-mode <mode> HTML / Markdown / none(預設 HTML) |
101 | 106 | ``` |
102 | 107 |
|
| 108 | +不帶 `-m` 或 `-f` 時從 stdin 讀取。 |
| 109 | + |
| 110 | +### 搭配 Claude Code 使用 |
| 111 | + |
| 112 | +在 Claude Code 的 skill 中,Claude 自己就是分析引擎: |
| 113 | + |
| 114 | +1. `fetch` 抓貼文 → Claude 讀 JSON |
| 115 | +2. Claude 分析 + WebSearch 查最新走勢 |
| 116 | +3. Claude 組報告 → `push` 推送 Telegram |
| 117 | + |
| 118 | +詳見 [`skill/SKILL.md`](skill/SKILL.md)。 |
| 119 | + |
| 120 | +## 費用 |
| 121 | + |
| 122 | +| 來源 | 每次費用 | 說明 | |
| 123 | +|------|---------|------| |
| 124 | +| Facebook | ~$0.02 | CU 計費,便宜 | |
| 125 | +| Threads | ~$0.15 | Pay-per-event,較貴 | |
| 126 | + |
103 | 127 | ## 免責聲明 |
104 | 128 |
|
105 | 129 | 本專案僅供娛樂參考,不構成任何投資建議。 |
| 130 | + |
| 131 | +## License |
| 132 | + |
| 133 | +MIT |
0 commit comments