想要在应用里接入中国古诗词?诗泉是开源高性能古诗词 API 服务,Go 语言编写,支持 REST 和 GraphQL 双接口、近40万首诗词、简繁切换、Docker 一键部署。诗词背诵 App、古风游戏、语文学习工具的背后数据源,2,155 Stars 社区验证。

🎤 引言

做一个诗词背诵 App,或者古风游戏,需要大量古诗词数据支撑——自己爬、自己整理不仅费时,数据的准确性和版权问题也让人头疼。

诗泉(chinese-poetry-api)是一个开源的中国古诗词 API 服务,基于 Go 语言高性能实现,提供 REST 和 GraphQL 双接口,数据库收录了唐诗、宋词、元曲等近 40 万首诗词,支持简繁体中文切换、Docker 一键部署。开发者拿来接自己的项目,数据层面基本不用操心。2,155 Stars 的社区认可度说明这条路走得通。


⭐ 核心功能

📚 近40万首诗词

收录了唐诗、宋词、元曲、诗经、乐府等经典体裁,数据库直接用 Git Submodules 管理,官方建议 git clone --recurse-submodules 完整拉取。数据更新跟着官方诗词库走,不用担心版本落后。

⚡ 高性能 Go 实现

Go 语言编写,性能优化到位——简繁转换约 300ns/次,单次查询延迟极低。适合需要高并发的场景,比如在线诗词接龙、飞花令等小游戏,多用户同时访问也不容易卡。

🌏 简繁体双语支持

所有接口通过 ?lang= 参数无缝切换:

参数值说明
zh-Hans简体中文(默认)
zh-Hant繁体中文

两岸三地的用户看到的诗词文本可以完全适配,不用自己做简繁转换。

🔍 强大搜索能力

  • 全文搜索/poems/search?q=静夜思
  • 按作者随机/poems/random?author=李白
  • 按体裁随机/poems/random?type=五言绝句
  • 飞花令专用(单字查询):/poems/random?char=春
  • 组合过滤:同时指定朝代 + 作者 + 体裁

📡 REST + GraphQL 双接口

同一个数据库同时提供 REST API 和 GraphQL 接口,开发者可以根据自己的技术栈选合适的:

# REST 风格
curl "http://localhost:1279/api/v1/poems/random?author=李白&type=五言绝句"

# REST 搜索
curl "http://localhost:1279/api/v1/poems/search?q=床前明月光"

REST 接口覆盖健康检查、统计、作者列表、朝代、体裁等常见需求,GraphQL 接口则适合需要灵活字段选择的场景。

🚀 Docker 一键部署

docker run -d -p 1279:1279 palemoky/chinese-poetry-api:latest

一条命令跑起来,支持 amd64 和 arm64 架构,树莓派也能跑。自建服务完全免费,不依赖任何第三方付费 API。

⏱️ 限流保护

内置 IP 限流机制,防止个别用户频繁请求影响服务稳定,适合公开 API 场景。如果自己部署,可以根据需求调整限流阈值。


📥 快速上手

在线体验(无需部署)

本地部署(Docker Compose)

# 克隆仓库
git clone --recurse-submodules --depth=1 \
  https://github.com/palemoky/chinese-poetry-api.git

cd chinese-poetry-api

# 启动服务
docker compose up -d

# 服务地址
# REST: http://localhost:1279/api/v1/

常用 API 示例

# 健康检查
curl "http://localhost:1279/api/v1/health"

# 随机一首诗
curl "http://localhost:1279/api/v1/poems/random"

# 李白·五言绝句
curl "http://localhost:1279/api/v1/poems/random?author=李白&type=五言绝句"

# 搜索含"月"的诗
curl "http://localhost:1279/api/v1/poems/search?q=月"

# 繁体模式
curl "http://localhost:1279/api/v1/poems/random?lang=zh-Hant"

# 作者列表
curl "http://localhost:1279/api/v1/authors?page=1&page_size=20"

# 朝代列表
curl "http://localhost:1279/api/v1/dynasties"

# 诗词体裁列表
curl "http://localhost:1279/api/v1/types"

🎯 适用场景

1. 诗词背诵 App / 小程序开发

随机抽查背诵、错题本、进度统计——这些功能背后都需要一个诗词数据库支撑。直接调诗泉 API,比自己爬数据省事得多,而且数据质量有保障。

2. 古风游戏(飞花令、诗词接龙)

飞花令要求快速根据一个字找到所有含该字的诗句,诗泉的 ?char= 参数专门为此设计。诗词接龙的随机推送也很简单,/poems/random 即可。

3. 语文学习工具

按朝代、作者、体裁筛选,适合做诗词学习路线图。比如"唐诗三百首精选"、"苏轼词全集"等专题,用户可以按维度自主学习。

4. 古风内容创作(文案、自媒体)

写古风文案时需要引用经典诗句,随机 API 可以当"诗句生成器"用,给创作找灵感。


🔍 对比 / 替代方案

方案类型数据量接口性能部署备注
诗泉开源 API~40万首REST + GraphQL~300ns/简繁转换Docker 一键2,155 Stars
古诗词·中文联盟在线 API~10万首REST一般需申请老牌,数据权威
github.com/chinese-poetry数据集~26万首无(直接下数据)数据集,非 API
自建爬虫自建不确定自定义耗时数据质量不稳定

对比要点

  • vs 古诗词·中文联盟:联盟是老牌权威数据源,但部分接口需要申请;诗泉开源免费,自建更灵活。
  • vs GitHub 数据集:chinese-poetry 是纯数据仓库,没有 API,需要自己写解析代码;诗泉直接提供 HTTP 接口。
  • vs 自建爬虫:自己爬取数据耗时、数据更新维护成本高;诗泉开箱即用,有社区维护数据质量。

⚠️ 注意事项

  1. IP 限流:公开部署时注意限流配置,高并发场景建议加一层 API Gateway(如 Nginx 限流)。
  2. 数据版权:诗词本身属于公共领域,但整理的版本可能有版权,商用前建议确认所用数据源的具体协议。
  3. Docker 多架构支持:amd64 和 arm64 都支持,但如果在树莓派或 Mac M 系列上运行,建议确认 arm64 镜像可用性。
  4. Submodules 克隆:数据通过 Git Submodules 管理,克隆时记得加 --recurse-submodules,否则数据目录是空的。
  5. GraphQL vs REST:GraphQL 更灵活但配置略复杂,如果只是简单查询 REST 就够了,不用强行上 GraphQL。
  6. 无用户认证:当前版本没有用户级别认证,适合内部项目或加了一层 Gateway 的场景。

✅ 总结

诗泉是目前最值得关注的开源中国古诗词 API 方案——Go 高性能 + Docker 一键部署 + REST/GraphQL 双接口 + 简繁切换,几乎涵盖了一个诗词类应用需要的所有基础设施。

优点:高性能、数据量大、简繁双语、Docker 零成本部署、开源免费
缺点:无原生用户认证、GraphQL 文档较少
适合:诗词背诵 App、飞花令游戏、古风内容创作、语文学习工具

给古风项目找一个可靠的数据后端,诗泉是目前最省心的开源选择。

⭐ GitHub Stars:2,155(截至 2026-07)
📦 技术栈:Go + REST + GraphQL + Docker
🌐 在线体验:poetry.palemoky.com
🔗 GitHub:github.com/palemoky/chinese-poetry-api