# 二娃聚合群API文档

飞书群聊总结｜CA地址查询｜链上数据分析

---

## 概述

这是一个聚合API服务，提供：
1. 飞书群组AI聊天记录总结查询
2. CA（合约地址）反向查询群组来源
3. 链上代币基础数据查询（DexScreener、GMGN、Binance）

**Base URL**: `http://88.222.241.169`

---

## 认证方式

所有数据接口使用Bearer Token认证：

```
Authorization: Bearer <your-access-token>
```

**示例Token**: `联系管理员微信：erwaNFT 获取Token)`
- 每日限制：100次请求
- 过期时间：2026-04-05

---


### 快速查询示例（按天）

```
# crazySen群
GET /api/v1/summaries?group_name=senCrazy群&date=2026-03-07

# leng
GET /api/v1/summaries?group_name=leng聊天&date=2026-03-07

# 三马群
GET /api/v1/summaries?group_name=三马合约&date=2026-03-07
GET /api/v1/summaries?group_name=三马现货&date=2026-03-07
```

---

## 核心接口

### 1. 根据CA查群组 [核心功能]

输入CA地址，返回所有发过该CA的群组名称列表。

**Endpoint**: `GET /api/v1/group_ca/by-ca/{ca_address}`

**Headers**:
```
Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)
```

**Path Parameters**:
- `ca_address` (string, required): 完整的合约地址

**Response**:
```json
{
  "ca": "7m3HtU4RDiXWpAt546HHC7Lho3Qzvz6tx2MiAmLiHpLn",
  "total_groups": 3,
  "groups": ["crazySen聊天", "孙哥聊天", "测试群组"]
}
```

**Example**:
```bash
curl "http://88.222.241.169/api/v1/group_ca/by-ca/7m3HtU4RDiXWpAt546HHC7Lho3Qzvz6tx2MiAmLiHpLn" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"
```

**Use Case**: 
- 看到一个CA地址，想知道哪些群组在讨论
- 追踪代币的传播路径
- 发现热门代币的源头群组

---

### 2. 获取Group CA列表

获取所有CA记录，支持筛选和分页。

**Endpoint**: `GET /api/v1/group_ca`

**Headers**:
```
Authorization: Bearer <token>
```

**Query Parameters**:
- `ca` (string, optional): CA地址模糊搜索
- `http` (string, optional): HTTP链接模糊搜索
- `username` (string, optional): 用户名筛选（群友名字）
- `group_name` (string, optional): 群组名称筛选
- `limit` (int, optional): 返回数量，默认20，最大1000
- `skip` (int, optional): 跳过记录数，默认0
- `date` (date, optional): 按日期筛选（create_time日期，YYYY-MM-DD）
- `only_http` (boolean, optional): 仅返回HTTP链接；未传date默认今天；不返回CA数据

**Response**:
```json
[
  {
    "id": 78146,
    "ca": "0x6106c7d92308bbe4204667a59f9b570288954444",
    "username": "白菜",
    "group_name": "区块日记群",
    "create_time": "2026-03-13T11:34:24",
    "http": null,
    "symbol": "代币符号",
    "chain": "bsc",
    "token_name": "代币名字",
    "market_cap": "6.4K",
    "age": 7,
    "total_mentions": 5,
    "twitter": "https://twitter.com/token123",
    "telegram": "https://t.me/token123",
    "website": "https://token123.io",
    "summary": "这是一个meme代币，社区活跃...",
    "m5_buys": 10,
    "h1_buys": 50,
    "h6_buys": 200,
    "h24_buys": 500,
    "mc_change": {
      "first_mc": "2.1K",
      "current_mc": "6.4K",
      "change_pct": 204.76
    }
  }
]
```

**字段说明**:
- `id`: 记录ID
- `ca`: 合约地址
- `username`: 群友名字（CA提及人）
- `group_name`: 群组名字
- `http`: 群里发的HTTP链接（大概率会是聊的项目），默认null
- `symbol`: 代币符号
- `chain`: 公链（bsc/sol/base/eth）
- `token_name`: 代币名字
- `market_cap`: 市值（当前提到时的市值），格式：>=1000用K，>=1000K用M，>=1000M用B
- `age`: 年龄（从创建时间到提及的时间）
- `total_mentions`: 48h内提及次数
- `twitter`: 推文或推特链接
- `telegram`: 电报频道
- `website`: 网站
- `summary`: 代币叙事
- `m5_buys`: 5分钟买入次数
- `h1_buys`: 1小时买入次数
- `h6_buys`: 6小时买入次数
- `h24_buys`: 24小时买入次数
- `mc_change`: 首次提及 vs 当前市值变化（仅当total_mentions>1时返回）
  - `first_mc`: 第一次提及时的市值
  - `current_mc`: 当前市值
  - `change_pct`: 涨跌幅百分比

**展示建议**:
- 展示时可按 `total_mentions` 提及次数排序
- 询问"今日金狗"可按 `mc_change.change_pct` 变化最大的排序

**Example**:
```bash
curl "http://88.222.241.169/api/v1/group_ca?limit=10" \
  -H "Authorization: Bearer <token>"

# 按CA搜索
curl "http://88.222.241.169/api/v1/group_ca?ca=0x6106c7d9&limit=10" \
  -H "Authorization: Bearer <token>"

# 按用户名搜索
curl "http://88.222.241.169/api/v1/group_ca?username=白菜&limit=10" \
  -H "Authorization: Bearer <token>"

# 按群组名称搜索
curl "http://88.222.241.169/api/v1/group_ca?group_name=区块日记&limit=10" \
  -H "Authorization: Bearer <token>"

# 仅返回今天的HTTP链接
curl "http://88.222.241.169/api/v1/group_ca?only_http=true&limit=10" \
  -H "Authorization: Bearer <token>"
```

---

### 3. 根据用户名查CA列表
### 3.1 热门CA统计（按天）

**Endpoint**: `GET /api/v1/group_ca/popular`

**Headers**:
```
Authorization: Bearer <token>
```

**Query Parameters**:
- `date` (date, optional): 统计日期，默认为当天（YYYY-MM-DD）
- `min_count` (int, optional): 最小提及次数阈值，默认10
- `group_name` (string, optional): 群组名称筛选
- `limit` (int, optional): 返回数量，默认100，最大1000
- `skip` (int, optional): 跳过记录数，默认0

**Response**:
```json
[
  {
    "id": 85701,
    "ca": "0xa6814d22e8b9f60c5e57451dd5fbfbe3b03d4444",
    "username": "链上kris",
    "group_name": "3z群",
    "create_time": "2026-03-20T23:59:03",
    "http": null,
    "symbol": "D战",
    "chain": "bsc",
    "token_name": "币安唯一赞助广告的电影",
    "market_cap": "5.3K",
    "age": 873,
    "total_mentions": 3,
    "twitter": "https://twitter.com/token123",
    "telegram": "https://t.me/token123",
    "website": "https://token123.io",
    "summary": "这是一个meme代币...",
    "m5_buys": 10,
    "h1_buys": 50,
    "h6_buys": 200,
    "h24_buys": 500,
    "mc_change": {
      "first_mc": "10.3K",
      "current_mc": "5.3K",
      "change_pct": -48.73
    },
    "count": 23
  }
]
```

**Example**:
```bash
# 默认当天（>=10次）
curl "http://88.222.241.169/api/v1/group_ca/popular" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"

# 昨日（macOS）
curl "http://88.222.241.169/api/v1/group_ca/popular?date=$(date -v-1d +%F)" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"

# 昨日（Linux）
curl "http://88.222.241.169/api/v1/group_ca/popular?date=$(date -d 'yesterday' +%F)" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"

# 自定义阈值（例如>=20）
curl "http://88.222.241.169/api/v1/group_ca/popular?date=2026-03-06&min_count=20" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"
```

---

### 3.2 获取每日叙事

获取提及CA次数最多的前10条的summary（代币叙事）字段。

**Endpoint**: `GET /api/v1/summaries/narratives`

**Headers**:
```
Authorization: Bearer <token>
```

**Query Parameters**:
- `date` (date, optional): 按日期筛选（格式YYYY-MM-DD），不传则默认查询最新300条
- `group_name` (string, optional): 按群组名称筛选
- `limit` (int, optional): 返回记录数限制，默认10，最大100

**Response**:
```json
[
  {
    "ca": "7m3HtU4RDiXWpAt546HHC7Lho3Qzvz6tx2MiAmLiHpLn",
    "summary": "这是一个基于Solana的meme代币，社区活跃度较高..."
  },
  {
    "ca": "8abc...xyz",
    "summary": "新上线的质押项目，预期收益较高..."
  }
]
```

**Example**:
```bash
# 获取当日前10条热门CA的叙事（不传date，默认最新300条中统计）
curl "http://88.222.241.169/api/v1/summaries/narratives" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"

# 获取指定日期的热门CA叙事
curl "http://88.222.241.169/api/v1/summaries/narratives?date=2026-03-06" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"

# 查询特定群组的每日叙事
curl "http://88.222.241.169/api/v1/summaries/narratives?date=2026-03-06&group_name=crazySen群" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"
```

**Use Case**:
- 了解当天最热门的代币叙事
- 追踪社区讨论的热点话题
- 发现潜在的投资机会

---

### 2.2 获取最新CA记录

按id倒序查询，获取最新的CA记录（id最大的在最前面）。

**过滤条件**：
- 只返回 `ca` 字段**不为 null** 的记录
- 只返回 `http` 字段**为 null** 的记录

**Endpoint**: `GET /api/v1/group_ca/latest`

**Headers**:
```
Authorization: Bearer <token>
```

**Query Parameters**:
- `limit` (int, optional): 返回最新CA的数量，默认1条，最大100条

**Response**:
```json
[
  {
    "id": 78146,
    "ca": "0x6106c7d92308bbe4204667a59f9b570288954444",
    "username": "白菜",
    "group_name": "区块日记群",
    "create_time": "2026-03-13T11:34:24",
    "http": null,
    "symbol": "代币符号",
    "chain": "bsc",
    "token_name": "代币名字",
    "market_cap": "6.4K",
    "age": 7,
    "total_mentions": 5,
    "twitter": "https://twitter.com/token123",
    "telegram": "https://t.me/token123",
    "website": "https://token123.io",
    "summary": "这是一个meme代币，社区活跃...",
    "m5_buys": 10,
    "h1_buys": 50,
    "h6_buys": 200,
    "h24_buys": 500,
    "mc_change": {
      "first_mc": "2.1K",
      "current_mc": "6.4K",
      "change_pct": 204.76
    }
  }
]

**Example**:
```bash
curl "http://88.222.241.169/api/v1/group_ca/latest?limit=20" \
  -H "Authorization: Bearer <token>"
```
```

---

获取指定用户发送的CA记录（最多50条）。

**Endpoint**: `GET /api/v1/group_ca/by-username/{username}`


**Headers**:
```
Authorization: Bearer <token>
```

**Path Parameters**:
- `username` (string, required): 用户名

**Query Parameters**:
- `limit` (int, optional): 返回数量，默认50，最大50

**Response**:
```json
{
  "username": "user123",
  "total_cas": 15,
  "cas": [
    {
      "ca": "7m3HtU4RDiXWpAt546HHC7Lho3Qzvz6tx2MiAmLiHpLn",
      "group_name": "crazySen聊天",
      "create_time": "2026-03-06T10:30:00"
    }
  ]
}
```

**Example**:
```bash
curl "http://88.222.241.169/api/v1/group_ca/by-username/user123" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"
```

**Use Case**:
- 追踪特定用户的CA推荐记录
- 分析用户的发币历史
- 发现活跃用户的发币行为模式

---

### 3.3 查询Token使用次数

查询当前API Token的今日调用次数使用情况。

**Endpoint**: `GET /api/v1/token/usage`

**Headers**:
```
Authorization: Bearer <token>
```

**Response**:
```json
{
  "token": "aaa3b7ad****b1c",
  "token_name": "API Token 500次/年",
  "daily_limit": 500,
  "used_today": 45,
  "remaining_today": 455,
  "reset_time": "2026-03-09 00:00:00"
}
```

**字段说明**:
- `token`: Token脱敏显示（前8位+****+后4位）
- `token_name`: Token名称
- `daily_limit`: 每日调用限制次数
- `used_today`: 今日已使用次数
- `remaining_today`: 今日剩余可用次数
- `reset_time`: 次数重置时间（次日0点）

**Example**:
```bash
curl "http://88.222.241.169/api/v1/token/usage" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"
```

---

### 4. 获取今日快讯消息

获取今天的快讯消息（newsflash表），按时间倒序排列。

**Endpoint**: `GET /api/v1/newsflash/today`

**Headers**:
```
Authorization: Bearer <token>
```

**Query Parameters**:
- `limit` (int, optional): 返回数量，默认100，最大1000
- `skip` (int, optional): 跳过数量，默认0

**Response**:
```json
[
  {
    "add_time": 1741252800,
    "title": "比特币突破新高",
    "content": "比特币价格突破10万美元大关，创历史新高...",
    "url": "https://example.com/news/12345"
  },
  {
    "add_time": 1741249200,
    "title": "以太坊升级完成",
    "content": "以太坊网络成功完成Dencun升级，Layer2费用大幅降低...",
    "url": "https://example.com/news/12344"
  }
]
```

**Example**:
```bash
# 获取今天的快讯消息
curl "http://88.222.241.169/api/v1/newsflash/today" \
  -H "Authorization: Bearer <token>"

# 获取前20条
curl "http://88.222.241.169/api/v1/newsflash/today?limit=20" \
  -H "Authorization: Bearer <token>"
```

---

### 4.1 获取指定日期快讯

**Endpoint**: `GET /api/v1/newsflash/date/{date}`

**Headers**:
```
Authorization: Bearer <token>
```

**Path Parameters**:
- `date` (string, required): 日期格式 YYYY-MM-DD

**Example**:
```bash
# 获取2026年3月1日的快讯
curl "http://88.222.241.169/api/v1/newsflash/date/2026-03-01" \
  -H "Authorization: Bearer <token>"
```

---

### 4.2 获取最新快讯

**Endpoint**: `GET /api/v1/newsflash/latest`

**Headers**:
```
Authorization: Bearer <token>
```

**Query Parameters**:
- `limit` (int, optional): 返回数量，默认20，最大100

**Example**:
```bash
# 获取最新50条快讯
curl "http://88.222.241.169/api/v1/newsflash/latest?limit=50" \
  -H "Authorization: Bearer <token>"
```

---

### 4.3 二级KOL输出数据

获取二级KOL的输出数据，支持按token、KOL名称、时间筛选。默认按发送时间倒序排列。

**注意**：
- 自动过滤包含屏蔽词（如：bitget）的内容
- @everyone 并不是代币 ONE

**Endpoint**: `GET /api/v1/second_kol`

**Headers**:
```
Authorization: Bearer <token>
```

**Query Parameters**:
- `kol_name` (string, optional): KOL名称筛选
- `token` (string, optional): Token筛选（查询参数名也是token）
- `start_date` (date, optional): 开始日期 YYYY-MM-DD
- `end_date` (date, optional): 结束日期 YYYY-MM-DD
- `limit` (int, optional): 返回数量，默认50，最大500
- `skip` (int, optional): 跳过数量，默认0

**Response**:
```json
[
  {
    "kol_name": "KOL张三",
    "content": "这是一个关于某代币的分析...",
    "token": "ABC123",
    "image_urls": ["https://example.com/img1.png", "https://example.com/img2.png"],
    "sent_at": "2026-03-08T15:30:00"
  }
]
```

**Example**:
```bash
# 获取最新KOL数据（默认50条，自动过滤屏蔽词）
curl "http://88.222.241.169/api/v1/second_kol" \
  -H "Authorization: Bearer <token>"

# 按KOL名称查询
curl "http://88.222.241.169/api/v1/second_kol?kol_name=KOL张三" \
  -H "Authorization: Bearer <token>"

# 按token查询
curl "http://88.222.241.169/api/v1/second_kol?token=ABC123" \
  -H "Authorization: Bearer <token>"

# 查询指定日期范围
curl "http://88.222.241.169/api/v1/second_kol?start_date=2026-03-01&end_date=2026-03-08" \
  -H "Authorization: Bearer <token>"
```

---

### 4.4 获取最新KOL数据

获取最新的二级KOL数据，按sent_at倒序。自动过滤包含屏蔽词的内容。

**Endpoint**: `GET /api/v1/second_kol/latest`

**Headers**:
```
Authorization: Bearer <token>
```

**Query Parameters**:
- `limit` (int, optional): 返回数量，默认10，最大100

**Example**:
```bash
# 获取最新20条KOL数据（自动过滤屏蔽词）
curl "http://88.222.241.169/api/v1/second_kol/latest?limit=20" \
  -H "Authorization: Bearer <token>"
```

---

### 4.5 获取指定KOL数据

获取指定KOL名称的所有输出数据。自动过滤包含屏蔽词的内容。

**Endpoint**: `GET /api/v1/second_kol/kol/{kol_name}`

**Headers**:
```
Authorization: Bearer <token>
```

**Path Parameters**:
- `kol_name` (string, required): KOL名称

**Example**:
```bash
# 获取指定KOL的数据（自动过滤屏蔽词）
curl "http://88.222.241.169/api/v1/second_kol/kol/KOL张三" \
  -H "Authorization: Bearer <token>"
```

---

### 4.6 获取KOL名称列表

获取所有KOL名称列表及其消息数量。

**Endpoint**: `GET /api/v1/second_kol/kol_names`

**Headers**:
```
Authorization: Bearer <token>
```

**Response**:
```json
[
  {
    "kol_name": "KOL张三",
    "count": 156
  },
  {
    "kol_name": "KOL李四",
    "count": 89
  }
]
```

**Example**:
```bash
# 获取所有KOL名称列表
curl "http://88.222.241.169/api/v1/second_kol/kol_names" \
  -H "Authorization: Bearer <token>"
```

---

### 5. 获取AI群聊总结

获取飞书群组的AI总结内容。必须提供日期参数，如不传则默认为今天。

**Endpoint**: `GET /api/v1/summaries`

**Headers**:
```
Authorization: Bearer <token>
```

**Query Parameters**:
- `group_name` (string, optional): 群组名称筛选，支持模糊匹配
- `date` (date,optional): 按日期筛选(create_at的日期部分)，格式YYYY-MM-DD，**默认为今天**
- `hour` (int, optional): 配合date使用，筛选该日某小时（0-23）
- `start_date` (datetime, optional): 开始日期 (ISO 8601格式)
- `end_date` (datetime, optional): 结束日期
- `limit` (int, optional): 返回数量，默认100

**群组类型映射**（根据需求查询对应群组）：

| 群组类型 | 对应群组名称 |
|---------|-------------|
| **Meme群 / 土狗群** | cryptoD群｜0xSun群｜GDC群｜James群｜金蛙群｜985群｜镭射猫群｜crazySen群｜0xAA群｜AD群｜区块日记群 |
| **空投群** | leng群｜P总群｜小鑫群｜十一地主群｜十一空投群｜3D群群 |
| **打新群** | 中国万岁群｜AKAKAY群｜Meta群 |

**Response**:
```json
[
  {
    "id": 1,
    "group_name": "crazySen聊天",
    "content": "讨论多个pump.fun代币地址...",
    "create_at": "2026-03-04T10:30:12"
  }
]
```

**Example**:
```bash
# 查询今天的总结（date默认为今天）
curl "http://88.222.241.169/api/v1/summaries" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"

# 查询指定日期的总结
curl "http://88.222.241.169/api/v1/summaries?date=2026-03-07" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"

# 查询指定日期某小时的总结
curl "http://88.222.241.169/api/v1/summaries?date=2026-03-07&hour=15" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"

# 按群组名称查询今天的总结
curl "http://88.222.241.169/api/v1/summaries?group_name=crazySen群" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"
```


---

## WebSocket 实时推送（Beta）

WebSocket 接口提供实时数据推送功能，适合需要实时监听新CA记录或热门CA变化场景。

**Base URL**: `ws://88.222.241.169/ws`

**Token 认证（必需）**:

WebSocket 连接必须通过 URL 参数传递有效的 API Token：

```
ws://88.222.241.169/ws/new_ca?token=YOUR_API_TOKEN
ws://88.222.241.169/ws/group_ca?token=YOUR_API_TOKEN
ws://88.222.241.169/ws/popular_ca?token=YOUR_API_TOKEN
```

- Token 必须在 `api_tokens` 表中存在且 `is_active=true`
- Token 过期后无法连接
- 无效 Token 返回错误并断开连接

### 6.1 全局新CA实时推送

连接后自动接收**所有**新CA数据推送，无需订阅条件。

**Endpoint**: `ws://88.222.241.169/ws/new_ca`

**特点**:
- 无需发送订阅消息，连接即开始接收
- 每5秒检查数据库，有新记录立即推送
- 适合需要监听全部CA数据的场景

**服务端推送**:

```json
// 新CA数据推送（实时）
{
  "type": "new_ca",
  "data": {
    "id": 79125,
    "ca": "0x1234567890abcdef...",
    "username": "用户A",
    "group_name": "区块日记群",
    "create_time": "2026-03-30T12:00:00",
    "symbol": "TOKEN",
    "chain": "bsc",
    "token_name": "Token Name",
    "market_cap": "10K",
    "age": 5,
    "total_mentions": 1
  },
  "timestamp": "2026-03-30T12:00:00"
}
```

**JavaScript 示例**:

```javascript
const token = 'YOUR_API_TOKEN'; // 从 api_tokens 表获取
const ws = new WebSocket(`ws://88.222.241.169/ws/new_ca?token=${token}`);

ws.onopen = () => {
  console.log('✅ WebSocket 连接成功');
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  
  if (data.type === 'error') {
    console.error('❌ 错误:', data.message);
    return;
  }
  
  if (data.type === 'connected') {
    console.log('✅ 已连接:', data.message);
    console.log('Token:', data.token_name);
  }
  
  if (data.type === 'new_ca') {
    console.log('🆕 新CA:', data.data.ca);
    console.log('群组:', data.data.group_name);
    console.log('用户:', data.data.username);
    console.log('市值:', data.data.market_cap);
  }
};

ws.onerror = (error) => {
  console.error('❌ WebSocket 错误:', error);
};

ws.onclose = (event) => {
  if (event.code === 1008) {
    console.error('❌ 连接被拒绝: Token 无效');
  } else {
    console.log('🔌 连接已关闭');
  }
};

ws.onopen = () => {
  console.log('全局CA监听已启动');
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log('新CA:', data.data.ca);
  console.log('群组:', data.data.group_name);
  console.log('市值:', data.data.market_cap);
};

// 心跳
setInterval(() => ws.send('ping'), 30000);
```

---

### 6.2 Group CA 实时推送

订阅特定群组或CA的实时更新，服务端会自动推送新记录。

**Endpoint**: `ws://88.222.241.169/ws/group_ca`

**客户端操作**:

```json
// 订阅群组
{
  "action": "subscribe_group",
  "group_name": "区块日记群"
}

// 订阅特定CA
{
  "action": "subscribe_ca",
  "ca": "0x6106c7d92308bbe4204667a59f9b570288954444"
}

// 订阅特定用户
{
  "action": "subscribe_username",
  "username": "白菜"
}

// 心跳检测
{
  "action": "ping"
}
```

**服务端推送**:

```json
// 新CA记录推送
{
  "type": "new_ca",
  "data": {
    "id": 78146,
    "ca": "0x6106c7d92308bbe4204667a59f9b570288954444",
    "username": "白菜",
    "group_name": "区块日记群",
    "create_time": "2026-03-13T11:34:24",
    "symbol": "代币符号",
    "chain": "bsc",
    "token_name": "代币名字",
    "market_cap": "6.4K",
    "age": 7,
    "total_mentions": 5
  },
  "timestamp": "2026-03-30T10:30:00"
}

// 订阅成功确认
{
  "type": "subscribed",
  "group_name": "区块日记群"
}

// 订阅用户确认
{
  "type": "subscribed",
  "username": "白菜"
}

// 心跳响应
{
  "type": "pong"
}
```

**JavaScript 示例**:

```javascript
const token = 'YOUR_API_TOKEN';
const ws = new WebSocket(`ws://88.222.241.169/ws/group_ca?token=${token}`);

ws.onopen = () => {
  // 订阅区块日记群的新CA
  ws.send(JSON.stringify({
    action: 'subscribe_group',
    group_name: '区块日记群'
  }));
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  console.log('收到推送:', data);
  
  if (data.type === 'new_ca') {
    console.log('新CA:', data.data.ca);
    console.log('群组:', data.data.group_name);
    console.log('市值:', data.data.market_cap);
  }
};

// 心跳保持连接
setInterval(() => {
  ws.send(JSON.stringify({ action: 'ping' }));
}, 30000);
```

---

### 6.3 特定CA深度追踪

深度追踪某个CA的所有动态，当该CA在任何群组被提及时，立即推送消息。

**Endpoint**: `ws://88.222.241.169/ws/group_ca`

> 使用与 6.2 相同的端点，通过 `action: "subscribe_ca"` 或 `action: "subscribe_username"` 指定追踪条件

**客户端操作**:

```json
// 订阅特定CA追踪
{
  "action": "subscribe_ca",
  "ca": "0x6106c7d92308bbe4204667a59f9b570288954444"
}

// 可同时订阅多个CA（多次发送subscribe_ca）
{
  "action": "subscribe_ca",
  "ca": "7m3HtU4RDiXWpAt546HHC7Lho3Qzvz6tx2MiAmLiHpLn"
}
```

**服务端推送**:

```json
// 当该CA被任何群组提及时推送
{
  "type": "new_ca",
  "data": {
    "id": 79123,
    "ca": "0x6106c7d92308bbe4204667a59f9b570288954444",
    "username": "一位不愿意透露姓名的群友",
    "group_name": "区块日记群",
    "create_time": "2026-03-26T11:34:24",
    "symbol": "XXX",
    "chain": "bsc",
    "token_name": "代币名字",
    "market_cap": "42.5K",
    "age": 1,
    "total_mentions": 3,
    "mc_change": {
      "first_mc": "19.2K",
      "current_mc": "42.5K",
      "change_pct": 121.02
    }
  },
  "timestamp": "2026-03-30T11:34:24"
}

// 订阅确认
{
  "type": "subscribed",
  "ca": "0x6106c7d92308bbe4204667a59f9b570288954444"
}
```

**用户订阅示例**:

```javascript
const token = 'YOUR_API_TOKEN';
const ws = new WebSocket(`ws://88.222.241.169/ws/group_ca?token=${token}`);

ws.onopen = () => {
  // 订阅特定用户"白菜"的发帖
  ws.send(JSON.stringify({
    action: 'subscribe_username',
    username: '白菜'
  }));
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  
  if (data.type === 'new_ca') {
    console.log('用户:', data.data.username, '发新CA了!');
    console.log('CA:', data.data.ca);
    console.log('群组:', data.data.group_name);
  }
};
```

**使用场景**:
- 关注特定KOL/高胜率用户的喊单
- 监控某个用户的所有发言记录
- 追踪特定群主的推荐

---

**JavaScript 示例 - CA追踪器**:

```javascript
const token = 'YOUR_API_TOKEN';
const ws = new WebSocket(`ws://88.222.241.169/ws/group_ca?token=${token}`);
const targetCA = '0x6106c7d92308bbe4204667a59f9b570288954444';

ws.onopen = () => {
  console.log('CA追踪器已启动，追踪:', targetCA);
  
  // 订阅特定CA
  ws.send(JSON.stringify({
    action: 'subscribe_ca',
    ca: targetCA
  }));
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  
  if (data.type === 'new_ca' && data.data.ca === targetCA) {
    console.log('🚨 CA被提及!');
    console.log('提及人:', data.data.username);
    console.log('群组:', data.data.group_name);
    console.log('当前市值:', data.data.market_cap);
    console.log('48h提及次数:', data.data.total_mentions);
    
    // 市值变化提醒
    if (data.data.mc_change) {
      const change = data.data.mc_change.change_pct;
      if (change > 100) {
        console.log('📈 大涨! 涨幅:', change + '%');
      } else if (change < -50) {
        console.log('📉 大跌! 跌幅:', change + '%');
      }
    }
  }
};
```

**使用场景**:
- 持仓追踪：实时监控自己持有的币的社区热度
- 狙击新币：监控新币的提及频率和市值变化
- 多群组监控：一个CA被多个群组同时提及时发出警报
- 市值预警：首次提及时的市值 vs 当前市值涨跌超过阈值时提醒

**最佳实践**:
1. 建议同时订阅 `subscribe_ca`、`subscribe_group`、`subscribe_username` 获得完整信息
2. 使用 `total_mentions` 判断热度趋势
3. 关注 `mc_change.change_pct` 发现潜力项目（涨幅越大越受关注）
4. 可通过订阅高胜率用户 `subscribe_username` 跟随其喊单
5. 设置心跳 `ping` 每30秒一次保持连接

---

### 6.4 热门CA实时推送

自动接收热门CA排名变化，无需手动订阅。

**Endpoint**: `ws://88.222.241.169/ws/popular_ca`

**服务端推送**:

```json
// 热门CA更新（每30秒推送一次）
{
  "type": "popular_ca_update",
  "data": [
    {"ca": "0x123...", "count": 25, "rank": 1},
    {"ca": "0x456...", "count": 18, "rank": 2},
    {"ca": "0x789...", "count": 15, "rank": 3}
  ],
  "timestamp": "2026-03-30T10:30:00"
}
```

**使用场景**:
- 实时展示今日热门CA排行榜
- 监控哪些CA被提及次数突然增加
- 发现"今日金狗"潜力项目

**展示建议**:
- 按 `count` 提及次数排序展示
- 高亮显示 `rank` 排名变化
- 点击CA可跳转到详情页面

### 6.5 新HTTP链接实时推送

连接即开始接收所有新HTTP链接，无需订阅。每5秒检查数据库。

**Endpoint**: `ws://88.222.241.169/ws/new_http`

**Token 认证**: 通过 URL 参数传递
```
ws://88.222.241.169/ws/new_http?token=YOUR_API_TOKEN
```

**JavaScript 示例**:
```javascript
const token = 'YOUR_API_TOKEN';
const ws = new WebSocket(`ws://88.222.241.169/ws/new_http?token=${token}`);

ws.onopen = () => {
  console.log('✅ HTTP链接监听已启动');
};

ws.onmessage = (event) => {
  const data = JSON.parse(event.data);
  
  if (data.type === 'error') {
    console.error('❌ 错误:', data.message);
    return;
  }
  
  if (data.type === 'connected') {
    console.log('✅ 已连接:', data.message);
    console.log('Token:', data.token_name);
  }
  
  if (data.type === 'new_http') {
    console.log('🆕 新HTTP链接:', data.data.http);
    console.log('群组:', data.data.group_name);
    console.log('用户:', data.data.username);
  }
};

ws.onerror = (error) => {
  console.error('❌ WebSocket 错误:', error);
};

ws.onclose = (event) => {
  if (event.code === 1008) {
    console.error('❌ 连接被拒绝: Token 无效');
  } else {
    console.log('🔌 连接已关闭');
  }
};

// 心跳保持连接
setInterval(() => {
  if (ws.readyState === WebSocket.OPEN) {
    ws.send('ping');
  }
}, 30000);
```

**推送消息格式**:
```json
{
  "type": "new_http",
  "data": {
    "id": 12345,
    "username": "白菜",
    "group_name": "区块日记群",
    "create_time": "2026-05-18T21:45:18",
    "http": "https://example.com",
    "user_content": "这个链接有意思",
    "summary": null,
    "liquidity": null,
    "volume_24h": null
  },
  "timestamp": "2026-05-18T21:45:18"
}
```

> **注意**: 只推送 `http` 不为空且 `ca` 为空的记录。

**使用场景**:
- 实时抓取群组中分享的链接
- 监控热门网站、工具、文章在群中的传播
- 自动收录有价值的资源链接

---

## 链上数据分析工具

以下工具可通过HTTP直接访问，无需Token认证。

### 访问受限提示

若直接访问外部网页出现空白或被阻断，可在URL前添加 `https://r.jina.ai/` 作为只读代理。例如：

```
https://r.jina.ai/http://gmgn.ai/sol/token/{CA}
```

### 7. DexScreener - 链上基础数据

**URL**: `https://dexscreener.com/search?q={CA}`

**用途**: 
- 确认代币所在链
- 查看市值、流动性、持有者数量
- 查看K线图表

**链识别规则**:
- `0x` 开头 → EVM链 (ETH/BSC/Base/Arb)，需DexScreener确认具体链
- 其他格式 → 通常是Solana

**Example**:
```
https://dexscreener.com/search?q=7m3HtU4RDiXWpAt546HHC7Lho3Qzvz6tx2MiAmLiHpLn
```

**Data Available**:
- Market Cap (市值)
- Liquidity (流动性)
- Holders (持有者数)
- Price Chart (K线)
- Trading Pairs (交易对)

---

### 8. GMGN.ai - 安全审计

**URL**: `https://r.jina.ai/http://gmgn.ai/{chain}/token/{CA}`

**Chain参数**:
- `sol` - Solana
- `bsc` - BSC
- `base` - Base
- `eth` - Ethereum

**用途**:
- 合约安全审计
- 检测Bundler/Phishing标记
- 查看持仓分布

**Example**:
```
https://r.jina.ai/http://gmgn.ai/sol/token/7m3HtU4RDiXWpAt546HHC7Lho3Qzvz6tx2MiAmLiHpLn
```

---

### 9. Binance Web3 - CA叙事查询

**URL**: `https://web3.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/token/ai/narrative/query?chainId={binance_chain_id}&contractAddress={ca}`

**Binance Chain ID Mapping**:
```json
{
  "solana": "CT_501",
  "bsc": "56",
  "base": "8453"
}
```

**用途**:
- 获取代币的AI叙事分析
- 了解项目背景故事
- 获取标签分类

**Example**:
```
https://web3.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/token/ai/narrative/query?chainId=CT_501&contractAddress=7m3HtU4RDiXWpAt546HHC7Lho3Qzvz6tx2MiAmLiHpLn
```

---

### 8. X平台搜索

**URL**: `https://fapi.uk/api/base/apitools/search?words={ca}`

**用途**:
- 搜索该CA在X(Twitter)上的讨论热度

**Example**:
```
https://fapi.uk/api/base/apitools/search?words=7m3HtU4RDiXWpAt546HHC7Lho3Qzvz6tx2MiAmLiHpLn
```

---

### 9. DexScreener CA详情

**URL**: `https://api.dexscreener.com/latest/dex/tokens/{ca}`

**Response**:
```json
{
  "pairs": [ { "...": "交易对信息" } ]
}
```

**Example**:
```bash
curl "https://api.dexscreener.com/latest/dex/tokens/7m3HtU4RDiXWpAt546HHC7Lho3Qzvz6tx2MiAmLiHpLn"
```

---

## 完整工作流程示例

### 场景：看到一个CA，想了解其背景和讨论群组

**Step 1**: 查有哪些群组在讨论这个CA
```bash
curl "http://88.222.241.169/api/v1/group_ca/by-ca/{CA}" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"
```

**Step 2**: 查看链上基础数据（DexScreener）
```
https://dexscreener.com/search?q={CA}
```

**Step 3**: X平台搜索
```
https://fapi.uk/api/base/apitools/search?words={CA}
```

**Step 4**: 获取AI叙事（Binance）
```
https://web3.binance.com/bapi/defi/v1/public/wallet-direct/buw/wallet/token/ai/narrative/query?chainId=CT_501&contractAddress={CA}
```

**Step 5**: 查看相关群聊总结
```bash
curl "http://88.222.241.169/api/v1/summaries?group_name={group_name}&limit=5" \
  -H "Authorization: Bearer 联系管理员微信：erwaNFT 获取Token)"
```

---

## 错误处理

### HTTP Status Codes

- 所有接口的响应头均包含：`X-Admin-Contact: wechat:erwaNFT`
- 所有错误响应(detail)均附带：`如需帮助请联系管理员(微信：erwaNFT)`

| Code | Message | Description |
|------|---------|-------------|
| 401 | 缺少认证Token | 请求头缺少Authorization |
| 401 | 无效的Token | Token不存在或已删除 |
| 403 | Token已过期/被禁用 | Token失效 |
| 404 | 未找到该CA对应的群组 | CA地址无记录 |
| 429 | 已达到每日访问限制 | 今日请求已达100次上限 |

### Error Response Format
```json
{
  "detail": "错误描述信息"
}
```

---

## 数据说明

### group_ca表
- **总记录数**: 约33万条
- **更新频率**: 实时同步
- **字段说明**:
  - `id`: 记录ID
  - `ca`: 合约地址
  - `username`: 群友名字（CA提及人）
  - `group_name`: 飞书群组名称
  - `create_time`: 发送时间
  - `http`: 群里发的HTTP链接（大概率会是聊的项目）
  - `symbol`: 代币符号
  - `chain`: 公链（bsc/sol/base/eth）
  - `token_name`: 代币名字
  - `market_cap`: 市值（格式：>=1000用K，>=1000K用M，>=1000M用B）
  - `age`: 年龄（从创建时间到提及的时间）
  - `total_mentions`: 48h内提及次数
  - `twitter`: 推文或推特链接
  - `telegram`: 电报频道
  - `website`: 网站
  - `summary`: 代币叙事
  - `m5_buys`: 5分钟买入次数
  - `h1_buys`: 1小时买入次数
  - `h6_buys`: 6小时买入次数
  - `h24_buys`: 24小时买入次数
  - `mc_change`: 首次提及市值 vs 当前市值变化（仅total_mentions>1时返回）

### send_kol表
- **说明**: 二级KOL的发布消息
- **字段说明**:
  - `kol_name`: KOL名字
  - `content`: 发布内容
  - `token`: 对应的币（BTC、ETH、BNB、SOL等）
  - `image_urls`: 发布的图片链接
  - `sent_at`: 发布时间

### newsflash表
- **说明**: 快讯消息
- **字段说明**:
  - `url`: 快讯链接
  - `title`: 标题
  - `content`: 快讯内容

### ai_summary表
- **总记录数**: 约219条
- **更新频率**: 每日AI总结
- **字段说明**:
  - `group_name`: 群组名称
  - `content`: AI总结内容
  - `create_at`: 总结创建时间

---

## 使用限制

- **每日限额**: 每个Token 有次数限制
- **速率限制**: 无硬性限制，但请合理控制频率
- **数据范围**: 仅包含飞书聚合群的历史数据

---

## 更新日志

- **2026-03-06**: 
  - 新增CA反向查群组功能
  - 新增根据用户名查CA列表功能（最多50条）
  - 集成DexScreener、GMGN、Binance三个链上工具
  - 提供统一的API查询入口
  - 删除服务器代理的Binance Web3接口，改为直接调用外部API

---

## 联系方式

如有问题或需要更多Token，请联系管理员(微信：erwaNFT)。

**API服务地址**: http://88.222.241.169
