DailyHotApi 的 Go 语言高性能重构版本,提供多平台热榜/资讯聚合 API 服务(当前已接入 60+ 渠道)。
🙏 致谢
本项目是在 imsyy/DailyHotApi 基础上的 Go 语言重构版本。原项目由 @imsyy 使用 TypeScript 精心打造,功能完善、更新及时。
如果本项目对你有帮助,强烈推荐前往原仓库为作者点个 Star、提交 Issue 或 PR 支持原项目的持续发展。
同时也欢迎大家关注原项目的部署文档、工具生态,以便获得更完整的使用体验。
- 🚀 极致性能: 基于 Go + Fiber 框架,QPS 可达 100,000+
 - 💾 智能缓存: BigCache + Redis 双层缓存,L1 零 GC 设计
 - 🔒 类型安全: 完整的类型定义,编译期错误检查
 - 🌏 覆盖广泛: 覆盖国内外资讯/社区/科技等 60+ 热点源
 - 📦 容器化: Docker 一键部署,镜像仅 20MB
 - 🎯 标准化: 统一的 API 响应格式,易于集成
 - 📊 可观测: 结构化日志 + 性能监控接口
 
- 基于 Go + Fiber,配合 BigCache/Redis 双层缓存,在 8C16G 服务器上可稳定提供 ~15k QPS(缓存命中率 >95%)。
 - 冷启动场景下通过异步预热热门路由,平均响应保持在 <20ms;非缓存请求通常 <200ms,具体取决于上游源站。
 - 服务常驻内存约 35MB(启用缓存);不启用 Redis 时仍可通过 BigCache 提供快速 L1 缓存。
 - 官方示例部署地址: https://apinews.geekaso.com/ (仅供演示,请勿滥用)。
 
| 组件 | 技术选型 | 说明 | 
|---|---|---|
| Web 框架 | Fiber v2 | Express 风格,性能极致 | 
| HTTP 客户端 | Resty | 链式调用,自动重试 | 
| 内存缓存 | BigCache | 零 GC,亿级数据 | 
| 分布式缓存 | Redis | 可选,支持集群 | 
| JSON 解析 | encoding/json | 标准库,稳定可靠 | 
| RSS/Atom 解析 | gofeed | 统一解析多种订阅格式 | 
| 日志系统 | Zap + Lumberjack | 结构化日志 & 按天轮转 | 
| 配置管理 | Viper | 支持多格式&环境变量 | 
| 缓存 | BigCache + go-redis/v9 | 内存+分布式双层缓存 | 
DailyHotApi-Go/
├── cmd/                    # 程序入口
│   └── api/
│       └── main.go         # 主程序
├── internal/               # 内部模块(不对外暴露)
│   ├── cache/              # 缓存系统
│   ├── config/             # 配置管理
│   ├── http/               # HTTP 客户端
│   ├── logger/             # 日志系统
│   ├── models/             # 数据模型
│   ├── routes/             # 路由处理器
│   │   ├── router.go       # 路由注册表 & 公共接口
│   │   ├── *.go            # 各平台路由处理器
│   └── service/            # 业务服务层
├── pkg/                    # 公共工具库
│   └── utils/              # 平台工具(WBI、时间解析等)
├── config.yaml             # 默认配置
├── docker-compose.yml      # 一键启动(可选 redis)
├── docker-compose.redis.yml# 启动 redis 示例
├── Dockerfile              # 构建镜像
├── logs/                   # 默认日志目录
├── README.md               # 英文/中文主文档
├── 快速上手.md              # Docker 推送与部署指南
└── 镜像发布指南.md          # 镜像发布说明
# 1. 克隆项目
git clone <repository-url>
cd DailyHotApi-Go
# 2. 一键启动(包含 Redis)
docker-compose up -d
# 3. 查看日志
docker-compose logs -f api
# 4. 验证示例
curl https://apinews.geekaso.com/bilibili# 1. 安装依赖
go mod download
# 2. 运行程序
go run cmd/api/main.go
# 3. 验证示例
curl https://apinews.geekaso.com/bilibili# 1. 编译
go build -o dailyhot-api cmd/api/main.go
# 2. 运行
./dailyhot-api编辑 config.yaml:
server:
  port: 6688              # 服务端口
  host: "0.0.0.0"         # 监听地址
  prefork: false          # 多进程模式
cache:
  enabled: true           # 启用内存缓存
  default_expire: 5m      # 缓存时间
  max_entries: 10000      # 最大条目数
redis:
  enabled: false          # 启用 Redis(可选)
  host: "localhost"
  port: 6379
log:
  level: "info"           # 日志级别
  format: "console"       # 输出格式也可以通过环境变量覆盖配置:
export DAILYHOT_SERVER_PORT=8080
export DAILYHOT_REDIS_ENABLED=true
export DAILYHOT_REDIS_HOST=redisGET /返回 API 版本和可用路由列表。
GET /health返回服务健康状态,用于监控系统。
GET /stats返回缓存性能统计数据。
下方仅列出常用/新增平台,完整列表可访问 /all 查看。
/weibo微博热搜/zhihu知乎热榜/douyin抖音热点/bilibiliB站热榜/baidu?type=realtime百度热搜(支持 realtime/novel/movie/teleplay/car/game)/github?type=dailyGitHub Trending(daily/weekly/monthly)/juejin?type=1掘金热门(分类 ID)/v2ex?type=hotV2EX(最热/最新)/52pojie吾爱破解(默认精华,无数据时自动回退热门,响应params.actualType标记实际来源)
/ithomeIT之家/36kr?type=hot36氪(人气/视频/热议/收藏)/sspai?type=热门文章少数派(多标签)/ifanr爱范儿/geekpark极客公园/huxiu虎嗅/techcrunchTechCrunch/thevergeThe Verge/engadgetEngadget/economistThe Economist 最新
/toutiao今日头条/netease网易新闻/sinanews新浪新闻/thepaper澎湃新闻/qqnews腾讯新闻/theguardianThe Guardian World News/nytimes?type=china纽约时报(中文/全球)
/smzdm什么值得买/coolapk酷安热榜/weread微信读书/miyoushe米游社/yystv游研社/earthquake中国地震台/weatheralarm中央气象台/history历史上的今天
小贴士: 大多数接口都支持
cache=false参数强制刷新源数据(默认启用缓存)。
所有接口返回统一格式:
{
  "code": 200,
  "message": "success",
  "name": "平台名称",
  "title": "平台显示名称",
  "type": "榜单类型",
  "updateTime": "2024-01-01T12:00:00Z",
  "total": 20,
  "fromCache": true,
  "data": [
    {
      "id": "唯一标识",
      "title": "标题",
      "desc": "描述",
      "cover": "封面图",
      "url": "详情链接",
      "hot": 热度值,
      "author": "作者",
      "timestamp": "时间戳"
    }
  ]
}额外扩展字段:
params.actualType: 对部分存在自动降级的来源(如/52pojie)标记当前真实使用的榜单类型。
本项目采用了多项性能优化技术:
复用 HTTP 请求对象,减少内存分配:
var httpRequestPool = sync.Pool{
    New: func() interface{} {
        return &HTTPRequest{}
    },
}限制 Goroutine 数量,防止资源耗尽:
pool, _ := ants.NewPool(10000)L1 缓存采用 BigCache,零 GC 设计,支持亿级数据:
cache, _ := bigcache.New(context.Background(), config)请求 → L1(BigCache) → L2(Redis) → 原始 API
         ↓ 命中          ↓ 命中        ↓ 请求
       <10μs          <1ms         ~100ms
- 创建路由处理器
 
在 internal/routes/ 下创建新文件,如 weibo.go:
package routes
type WeiboHandler struct {
    fetcher *service.Fetcher
}
func NewWeiboHandler(fetcher *service.Fetcher) *WeiboHandler {
    return &WeiboHandler{fetcher: fetcher}
}
func (h *WeiboHandler) GetPath() string {
    return "/weibo"
}
func (h *WeiboHandler) Handle(c *fiber.Ctx) error {
    resp, err := h.fetcher.GetData(
        c.Context(),
        "weibo_hot",
        "微博",
        "热搜榜",
        5*time.Minute,
        h.fetchWeiboHot,
    )
    if err != nil {
        return c.Status(500).JSON(models.ErrorResponseObj(500, err.Error()))
    }
    return c.JSON(resp)
}
func (h *WeiboHandler) fetchWeiboHot(ctx context.Context) ([]models.HotData, error) {
    // 实现数据获取逻辑
    // ...
}- 注册路由
 
在 cmd/api/main.go 中添加:
registry.Register(routes.NewWeiboHandler(fetcher))- 配置管理(Viper)
 - 日志系统(Zap)
 - 双层缓存(BigCache + Redis)
 - HTTP 客户端(Resty)
 - 路由管理系统
 
当前已接入 61 个平台,覆盖视频、社交、资讯、科技、游戏、电商等多个垂类。常用分类如下:
- 视频: B站、抖音、快手、AcFun、米哈游系游戏社区等
 - 社交/社区: 微博、知乎、V2EX、吾爱破解、NGA、NodeSeek、Hostloc、Linux.do…
 - 资讯: 今日头条、澎湃、腾讯新闻、The Guardian、纽约时报、The Economist…
 - 生活/电商: 什么值得买、微信读书、数字尾巴、汽车之家等
 - 工具/特殊: 历史上的今天、中央气象台预警、中国地震台、IT之家喜加一等
 - IT 资讯/科技媒体: IT之家、36氪、少数派、爱范儿、极客公园、虎嗅、TechCrunch、The Verge、Engadget、The Economist 等
 
完整列表可通过 /all 接口或 cmd/api/main.go 注册信息查看。
欢迎提交 Pull Request 添加更多平台支持!
- Fork 本仓库
 - 创建特性分支 (
git checkout -b feature/new-platform) - 提交更改 (
git commit -m 'Add: xxx平台支持') - 推送到分支 (
git push origin feature/new-platform) - 提交 Pull Request
 
MIT License
本项目基于 DailyHotApi 使用 Go 语言重构。
感谢原作者的创意和开源精神!