多账号聚合监控页 + Telegram 推送,开放协议——任何符合规范的 Polymarket 交易机器人都能接入。
- 网页统一展示多个交易机器人状态:余额、今日盈亏、持仓、胜率、策略状态、WS 健康度
- 离线优先排序、超过 10 个账号自动分页
- 一键打开所有账号管理页(新标签)
- 网页内增删账号,无需改 JSON 重启
- Telegram bot:发
/status获取总览,按钮原地刷新 - 协议开放:任何 bot 实现
/api/state?lite=1即可接入
git clone https://github.com/doge-8/polymarket-monitor.git
cd polymarket-monitor
npm install需要 Node 20+。
把 accounts.json.example 复制为 accounts.json 后编辑,或启动后在网页"⚙ 管理"面板里加:
[
{ "name": "Alice", "port": 3456 },
{ "name": "Bob", "port": 3457 }
]port 是各机器人 server 的端口。机器人运行在远程时用 SSH 隧道转发到本地端口。
npm start
# 或: ./start.sh启动后自动打开浏览器到 http://localhost:8080(mac/Win/Linux 通用)。
环境变量:
MONITOR_PORT— 改监听端口(默认 8080)MONITOR_NO_OPEN=1— 禁用自动打开浏览器
如果默认端口被占用,会自动 +1 重试(最多 20 次),命令行会打印实际监听端口。
- @BotFather 创建 bot 拿 token
- 在 TG 里找你的 bot,发
/start - 监控页右上角点 📡 TG,填 token → 点「↻ 抓取」自动获取 chat_id → 勾选启用 → 保存
- 在 TG 里发
/status即可
支持命令:
/status总览(带"🔄 刷新"按钮)/d <账号名>单账号详情/help帮助
只需实现一个 HTTP 端点:
GET /api/state?lite=1
返回带这些字段的 JSON 即可(详细字段说明见 SPEC.md):
| 字段 | 类型 | 必填 | 含义 |
|---|---|---|---|
usdc |
number | 是 | USDC 余额 |
accountName |
string | 否 | 账号显示名 |
activeMarket.displayName |
string | 推荐 | 当前市场名(如 "BTC 5m") |
pmPnl.todayPnl |
number | 推荐 | 今日盈亏 |
pmPnl.todayCount |
number | 推荐 | 今日成交笔数 |
pmPnl.todayClosedCount |
number | 推荐 | 今日已平仓数 |
pmPnl.todayWins |
number | 推荐 | 今日盈利笔数 |
wsStatus |
object | 推荐 | 上游 WS 连接状态 |
strategy.state |
string | 否 | 策略状态机 |
lastTradeAt |
number | 否 | 最近成交时间戳(ms) |
完整规范、字段定义、错误约定、示例代码:
- SPEC.md — 接入规范(人类可读)
- SPEC.ai.md — AI 工具可读版(让 Claude/Cursor 直接看懂)
┌─────────────────────────────────────────────┐
│ monitor-server.ts (本仓库) │
│ - 8080 端口提供 monitor.html │
│ - 反代 /api/proxy?port=N → localhost:N │
│ - TG bot 长轮询响应 /status /d 命令 │
│ - 维护 accounts.json + .tg-config.json │
└─────────────────────────────────────────────┘
▲ ▲
│ HTTP │ HTTP/WS
│ │
浏览器 / TG bot 各 Polymarket 机器人
(实现 /api/state?lite=1)
监控只读取,不向机器人写。每台机器各自维护交易逻辑。
Q:连不上某账号? 显示「连接已断开」= 端口 unreachable。检查机器人是否在跑、SSH 隧道是否通。
Q:怎么连远程 VPS 上的机器人?
用本仓库自带的 tunnels/ 一键脚本(autossh 自动重连,支持密钥/密码),见 tunnels/README.md。
或手动 ssh -L 3457:localhost:3456 user@vps 把远程端口转发到本地。
Q:账号配置文件在哪?
启动目录的 accounts.json。每次请求重读,无需重启。
Q:TG bot 不响应命令? 必须勾选「启用」+ 设置正确的 chat_id。陌生人发命令会被忽略。
Q:监控请求量大吗?
每个账号每 5 秒拉一次 /api/state?lite=1(lite 模式 ~5 KB),9 账号 ~45 KB / 5 秒。
MIT