# trendhub
**Repository Path**: cg33/trendhub
## Basic Information
- **Project Name**: trendhub
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-20
- **Last Updated**: 2025-12-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# TrendHub
🎯 看你想看的信息,把握趋势算法
一个强大的热点趋势监控和管理平台
支持多平台数据采集 · 智能关键词过滤 · 多渠道推送 · 现代化 Web 界面
在线 Demo ·
快速开始 ·
核心功能 ·
文档 ·
社区
---
## ✨ 核心功能
### 🎯 智能监控
- **多平台支持** - 11+ 热门平台数据采集
- **三种工作模式** - daily/current/incremental
- **智能过滤** - 支持必须词、过滤词、普通词
- **智能排序** - 多维度加权排序算法
- **配置热重载** - 修改配置即时生效,无需重启
### 📱 多渠道推送
- **企业通讯** - 飞书、钉钉、企业微信
- **即时通讯** - Telegram、Bark、Ntfy
- **邮件推送** - SMTP 邮件支持
- **定时推送** - 时间窗口控制
- **推送记录** - 完整的推送历史管理
### 🎨 现代化界面
- **深色模式** - 支持深色/浅色主题切换
- **响应式设计** - 完美适配各种屏幕
- **实时更新** - 自动刷新热点数据
- **可视化配置** - 表单模式/源码模式切换
- **版本检测** - 自动检测新版本并提示
### 🔧 开发友好
- **模块化设计** - 配置、爬虫、过滤、推送完全解耦
- **易于扩展** - 简单添加新平台和推送渠道
- **完整文档** - 详细的使用和开发文档
- **活跃社区** - 微信群、QQ群、Discord
- **开源协议** - MIT 许可证
---
## 📋 三种工作模式
### 🗓️ 当日汇总
**daily**
持续收集全天数据
定时推送汇总报告
*适合每日新闻总结*
### ⚡ 当前榜单
**current**
实时爬取推送
即时响应热点
*适合突发事件追踪*
### 📈 增量监控
**incremental**
智能去重推送
只推送新内容
*适合长期话题跟踪*
📖 模式快速入门 ·
📚 报告模式详解
---
## 📁 项目结构
点击展开目录结构
```
.
├── 📂 cmd/
│ └── main.go # 🚀 程序入口
│
├── 📂 config/
│ └── config.go # ⚙️ 配置管理模块
│
├── 📂 internal/ # 核心业务逻辑
│ ├── collector/ # 📊 数据收集器
│ ├── crawler/ # 🕷️ 爬虫模块
│ ├── datacache/ # 💾 数据缓存
│ ├── filter/ # 🔍 关键词过滤模块
│ ├── model/ # 📋 数据模型
│ ├── notifier/ # 📱 推送模块
│ ├── pushdb/ # 🗄️ 推送记录数据库
│ ├── rank/ # 📈 排序模块
│ └── scheduler/ # ⏰ 定时调度器
│
├── 📂 web/ # Web 服务
│ ├── server.go # 🌐 Web 服务器
│ ├── runner.go # 🏃 任务运行器
│ └── static/
│ └── index.html # 🎨 Web 界面
│
├── 📂 docs/ # 📚 文档目录
├── 📂 examples/ # 💡 示例配置
│
├── config.example.yaml # ⚙️ 配置文件示例
├── frequency_words.example.txt # 🔤 关键词文件示例
├── version # 🏷️ 版本号文件
└── go.mod # 📦 Go 模块依赖
```
**模块化设计,职责清晰,易于扩展!**
## 🚀 快速开始
### 方式一:一键运行(推荐)
```bash
# 1. 克隆项目
git clone https://github.com/gotoailab/trendhub.git
cd trendhub
# 2. 准备配置文件
cp config.example.yaml config/config.yaml
cp frequency_words.example.txt config/frequency_words.txt
# 3. 编译并运行
go mod tidy
go build -o trendhub cmd/main.go
./trendhub -web
```
**🎉 完成!** 在浏览器打开 `http://localhost:8080` 即可使用
---
### 方式二:详细配置
点击展开详细步骤
#### 1️⃣ 编译项目
```bash
go mod tidy
go build -o trendhub cmd/main.go
```
#### 2️⃣ Web 模式(推荐)
启动 Web 服务器和定时调度器:
```bash
./trendhub -web
```
指定端口和数据库路径:
```bash
./trendhub -web -addr :8080 -pushdb data/push_records.db -cachedb data/data_cache.db
```
然后在浏览器打开:`http://localhost:8080`
#### 3️⃣ 命令行模式(单次运行)
```bash
./trendhub
```
或者指定配置文件路径:
```bash
./trendhub -config /path/to/config.yaml -keywords /path/to/frequency_words.txt
```
---
### 🎨 Web 界面
#### 🏠 首页
- 实时热点数据展示
- 历史记录查看
- 日期筛选
- 自动刷新
#### ⚙️ 功能设置
- 可视化配置编辑
- 表单/源码模式切换
- 平台管理
- 关键词配置
#### 📋 推送记录
- 历史推送查询
- 执行状态追踪
- 分页浏览
- 详细日志
**界面特性:**
✅ 深色/浅色模式切换
✅ 响应式设计
✅ 实时数据更新
✅ 版本更新提示
✅ 详细的规则说明
✅ 返回顶部快捷键
---
## 📊 工作模式详解
🗓️ 当日汇总模式 (daily)
后台持续收集一天内的所有匹配新闻,定时推送汇总报告。
**适用场景:**
- 每日新闻总结
- 定时日报推送
- 全面热点回顾
**特点:**
- ✅ 自动去重
- ✅ 完整性高
- ✅ 适合定时推送
- ✅ 不漏重要信息
⚡ 当前榜单模式 (current)
实时爬取并推送当前热搜榜单。
**适用场景:**
- 实时热点监控
- 突发事件追踪
- 快速响应需求
**特点:**
- ✅ 实时性强
- ✅ 即时响应
- ✅ 简单直接
- ✅ 零延迟推送
📈 增量监控模式 (incremental)
智能记录推送历史,只推送新出现的内容。
**适用场景:**
- 长期跟踪特定话题
- 避免重复打扰
- 持续关注某个领域
**特点:**
- ✅ 智能去重
- ✅ 持续监控
- ✅ 避免重复
- ✅ 精准推送
📖 模式快速入门 ·
📚 报告模式详解
## 🌐 支持的平台
📱 **微博** `weibo`
🎓 **知乎** `zhihu`
🔍 **百度热搜** `baidu`
📰 **今日头条** `toutiao`
📺 **bilibili** `bilibili-hot-search`
🎵 **抖音** `douyin`
💬 **贴吧** `tieba`
🦅 **凤凰网** `ifeng`
💰 **财联社** `cls-hot`
📋 **澎湃新闻** `thepaper`
📈 **华尔街见闻** `wallstreetcn-hot`
💡 **持续更新中...**
---
## 📱 推送渠道
| 渠道 | 类型 | 配置文档 |
|:---:|:---:|:---:|
| 🚀 **飞书** | 企业即时通讯 | [快速开始](docs/QUICKSTART_PUSH.md) |
| 💬 **钉钉** | 企业即时通讯 | [快速开始](docs/QUICKSTART_PUSH.md) |
| 💼 **企业微信** | 企业即时通讯 | [快速开始](docs/QUICKSTART_PUSH.md) |
| ✈️ **Telegram** | 国际即时通讯 | [快速开始](docs/QUICKSTART_PUSH.md) |
| 🍎 **Bark** | iOS 推送通知 | [配置指南](docs/BARK_SETUP.md) |
| 🔔 **Ntfy** | 开源推送服务 | [快速开始](docs/QUICKSTART_PUSH.md) |
| 📧 **邮件** | SMTP 邮件推送 | [定时推送](docs/PUSH_SCHEDULE.md) |
💡 更多详细配置请参考 定时推送文档 和 快速开始指南
---
## 🎯 关键词规则
| 类型 | 前缀 | 说明 | 示例 |
|:---:|:---:|:---|:---|
| 🔍 **普通词** | 无 | 任意匹配,包含任意一个即可 | `AI`、`人工智能` |
| ✅ **必须词** | `+` | 必须包含,标题必须包含所有必须词 | `+突破`、`+发布` |
| ❌ **过滤词** | `!` | 排除规则,包含该词会被过滤 | `!广告`、`!营销` |
### 匹配逻辑
```
关键词组之间 = OR(或)关系
关键词组内部 = AND(且)关系
```
### 示例配置
```
[priority:10]
AI
人工智能
+突破
!广告
[priority:8]
华为
鸿蒙
!谣言
```
**解读:** 标题需包含"AI"或"人工智能",且必须包含"突破",但不能包含"广告"
💡 在 Web 界面的关键词配置页面可以查看更详细的规则说明
---
## 🎯 智能排序算法
**让你最想看的内容排在最前面!**
### 🏆 关键词优先级
为不同的关键词组设置优先级(1-10),重要的话题自动排前面:
```
[priority:10]
AI
人工智能
+突破
[priority:8]
华为
鸿蒙
[priority:5]
科技
互联网
```
- **优先级 10** ⭐⭐⭐
最关心的核心话题,分数翻倍
- **优先级 5** ⭐⭐
默认优先级,标准权重
- **优先级 1** ⭐
低优先级内容,分数减半
### ⚖️ 平台权重
为不同平台设置权重,提升优质平台内容的排名:
```yaml
platforms:
- id: zhihu
name: 知乎
weight: 1.2 # 优质平台,提升 20%
- id: weibo
name: 微博
weight: 0.9 # 标准平台
- id: douyin
name: 抖音
weight: 0.7 # 娱乐平台,降低权重
```
### ⚙️ 权重配置
调整各项因素的影响权重:
```yaml
weight:
rank_weight: 0.3 # 原始排名权重
frequency_weight: 0.2 # 出现频次权重
keyword_weight: 0.4 # 关键词匹配权重(核心!)
freshness_weight: 0.1 # 时效性权重
platform_weight: 1.0 # 平台权重影响系数
```
📖 排序算法优化文档 ·
🚀 排序优化迁移指南
---
## ⚡ 配置热重载
**在 Web 界面修改配置后,系统自动重载,无需重启程序!**
### 支持热重载的配置
#### ✅ 基础配置
- **推送窗口** - 启用/禁用、时间范围
- **工作模式** - daily/current/incremental
- **爬取间隔** - 动态调整收集频率
- **推送渠道** - Webhook URL 和配置
#### ✅ 高级配置
- **关键词** - 实时更新监控关键词
- **平台列表** - 添加/删除监控平台
- **排序权重** - 动态调整排序算法
- **过滤规则** - 实时更新过滤条件
### 使用方法
```
1️⃣ 在 Web 界面修改配置
↓
2️⃣ 点击"保存配置"按钮
↓
3️⃣ 系统自动应用新配置 ✓
```
### 自动响应效果
| 操作 | 系统响应 |
|:---|:---|
| 修改推送时间 | 🔄 调度器自动重启 |
| 切换到 daily 模式 | 🚀 自动启动后台收集 |
| 关闭推送窗口 | ⏸️ 自动停止调度器 |
| 修改爬取间隔 | ⚡ 收集器自动更新 |
📖 配置热重载详细文档
---
## 🔧 配置说明
📄 配置文件 (config.yaml)
```yaml
app:
show_version_update: true
version_check_url: https://raw.githubusercontent.com/gotoailab/trendhub/refs/heads/master/version
crawler:
enable_crawler: true # 启用爬虫
request_interval: 1000 # 请求间隔(毫秒)
use_proxy: false # 是否使用代理
default_proxy: http://127.0.0.1:10086
report:
mode: daily # 工作模式:daily/current/incremental
rank_threshold: 5 # 排名阈值
notification:
enable_notification: true
push_window:
enabled: true # 启用推送窗口
time_range:
start: "20:00" # 推送开始时间
end: "22:00" # 推送结束时间
once_per_day: true # 每天只推送一次
webhooks:
feishu_url: "" # 飞书 Webhook URL
dingtalk_url: "" # 钉钉 Webhook URL
# ... 其他推送渠道配置
weight:
rank_weight: 0.6 # 排名权重
frequency_weight: 0.3 # 频次权重
hotness_weight: 0.1 # 热度权重
platforms:
- id: weibo
name: 微博
weight: 1.0 # 平台权重
# ... 其他平台
```
🔤 关键词文件 (frequency_words.txt)
**格式说明:**
- 使用空行分隔不同的关键词组
- `!开头` 为过滤词(排除包含该词的结果)
- `+开头` 为必须词(必须包含该词)
- 无前缀为普通词(任意匹配即可)
- `[priority:N]` 设置优先级(1-10)
**示例:**
```
[priority:10]
AI
人工智能
+突破
!广告
[priority:8]
华为
鸿蒙
+发布
[priority:5]
科技
互联网
!营销
```
🌍 环境变量
支持使用环境变量覆盖 `config.yaml` 中的配置:
| 环境变量 | 说明 |
|:---|:---|
| `FEISHU_WEBHOOK_URL` | 飞书 Webhook URL |
| `DINGTALK_WEBHOOK_URL` | 钉钉 Webhook URL |
| `WEWORK_WEBHOOK_URL` | 企业微信 Webhook URL |
| `TELEGRAM_BOT_TOKEN` | Telegram Bot Token |
| `TELEGRAM_CHAT_ID` | Telegram Chat ID |
**使用示例:**
```bash
export FEISHU_WEBHOOK_URL="https://open.feishu.cn/..."
./trendhub -web
```
---
## 🔄 版本更新
**TrendHub 支持自动版本检测和更新提示**
### 配置步骤
```yaml
app:
show_version_update: true
version_check_url: https://raw.githubusercontent.com/gotoailab/trendhub/refs/heads/master/version
```
### 工作流程
```
Web 界面启动
↓
自动检查新版本
↓
发现新版本 → 显示更新提示
↓
用户关闭提示 → 不再重复提醒
```
**版本文件格式:** 纯文本,包含版本号(如 `1.0.0`)
---
## 🛠️ 扩展开发
### 添加新的推送渠道
1️⃣ 在 `internal/notifier` 下实现 `Notifier` 接口
```go
type Notifier interface {
Send(message string) error
}
```
2️⃣ 在 `internal/notifier/manager.go` 中注册
```go
manager.RegisterNotifier(newNotifier)
```
### 添加新的爬虫源
1️⃣ 在 `internal/crawler` 下实现 `Crawler` 接口
```go
type Crawler interface {
Fetch() ([]Item, error)
}
```
2️⃣ 在相关代码中初始化
```go
crawler := NewMyCrawler()
```
💡 欢迎提交 PR 添加更多平台和推送渠道!
---
## 📚 文档
| 分类 | 文档 | 说明 |
|:---:|:---|:---|
| 🚀 **快速开始** | [快速开始指南](docs/QUICKSTART_PUSH.md) | 5 分钟上手教程 |
| 📊 **工作模式** | [模式快速入门](docs/MODES_QUICKSTART.md) | 三种模式快速了解 |
| 📖 **工作模式** | [报告模式详解](docs/REPORT_MODES.md) | 深入理解各种模式 |
| 📱 **推送配置** | [定时推送文档](docs/PUSH_SCHEDULE.md) | 推送功能详细配置 |
| 🍎 **推送配置** | [Bark 配置指南](docs/BARK_SETUP.md) | iOS Bark 推送配置 |
| ⚡ **高级功能** | [配置热重载功能](docs/CONFIG_HOT_RELOAD.md) | 动态配置更新 |
| 🎯 **高级功能** | [排序算法优化说明](docs/RANKING_OPTIMIZATION.md) | 智能排序详解 ⭐ |
| 🚀 **高级功能** | [排序优化迁移指南](docs/RANKING_MIGRATION.md) | 排序算法迁移 ⭐ |
---
## 🤝 贡献
**我们欢迎所有形式的贡献!**
### 贡献方式
- 🐛 **报告 Bug** - 提交 Issue 描述问题
- 💡 **提出建议** - 分享你的想法和改进建议
- 📝 **完善文档** - 帮助改进文档质量
- 🔧 **提交代码** - 发送 Pull Request
- ⭐ **Star 项目** - 给项目一个 Star 支持我们
### 贡献指南
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
---
## 💬 社区
**加入我们的社区,与其他用户交流!**
### 💬 微信群
添加微信:**mongorz**
备注:**simple**
加入微信交流群
### 🐧 QQ 群
群号:**823136692**
[点击加入 QQ 群](https://qun.qq.com/universal-share/share?ac=1&authKey=C4MX6tSrUhKA2xX6M8IosY%2Bb2RyV45O15osUlidAptAwXBgA641FCsENb%2BfiVmki&busi_data=eyJncm91cENvZGUiOiI4MjMxMzY2OTIiLCJ0b2tlbiI6IjJGZmlVUzdsTGRCSytTNGNpajJkQ2F5djYyRUxMbVM1dFN5Y1RXYTRTMG1xejV5N0MrOUM5aEY3aGN4MXVCYmsiLCJ1aW4iOiIzMTc1NDI1NDgwIn0%3D&data=oAc646m4Q0_WTFE6cABXelyZYDd71nAaQ6nA91CQ3A1VNn83sDV5Z-2eXghHkbIXzG16UHCHF4szPTq3A2fhOw&svctype=4&tempid=h5_group_info)
### 💬 Discord
[点击加入 Discord](https://discord.gg/B3FwBSQq)
国际社区交流
---
## 📄 许可证
本项目采用 **MIT** 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
**⭐ 如果这个项目对你有帮助,请给它一个 Star!⭐**
Made with ❤️ by [GotoAILab](https://github.com/gotoailab)
[](https://star-history.com/#gotoailab/trendhub&Date)