793 字
2 分钟
OneHitokoto API
2026/05/17 11:33:00

OneHitokoto-API#

支持多平台部署的一言API服务,使用 hitokoto-osc/sentences-bundle 作为句子源。

功能特性#

  • 随机获取一言,支持按分类筛选
  • 支持多种返回格式:JSON、纯文本、JS变量、JSONP
  • 支持按句子长度过滤
  • 提供分类列表接口
  • 全CORS支持,跨域友好
  • 边缘缓存加速 + 内存预加载
  • 多源镜像自动切换,数据获取更稳定
  • 支持多平台部署:EdgeOne Pages、阿里云 ESA

在线演示#

首页: https://hitokoto.api.sylv.top/

API 接口: https://hitokoto.api.sylv.top/api

API 文档#

获取随机一言#

GET /api

请求参数#

参数类型必填说明
cstring句子分类,如 a(动画), b(漫画), c(游戏) 等
encodestring返回格式:json(默认), text, js
callbackstringJSONP 回调函数名
min_lengthnumber最小句子长度(包含)
max_lengthnumber最大句子长度(包含)

句子分类#

分类码名称说明
a动画Anime
b漫画Comic
c游戏Game
d文学Literature
e原创Original
f网络Internet
g其他Other
h影视Movie
i诗词Poetry
j网易云Netease
k哲学Philosophy
l抖机灵Wit

响应示例 (JSON)#

{
"id": 7338,
"uuid": "75a45fd4-4f2f-45eb-80cb-6f0a7bcdfaf2",
"hitokoto": "用代码表达言语的魅力,用代码书写山河的壮丽。",
"type": "f",
"from": "一言开发者中心",
"from_who": "一言",
"creator": "DreamOne",
"creator_uid": 9209,
"length": 22,
"category_name": "网络",
"category_desc": "Internet"
}

示例请求#

# 获取随机一言(JSON格式)
curl https://hitokoto.api.sylv.top/api
# 获取动画类一言
curl https://hitokoto.api.sylv.top/api?c=a
# 获取纯文本格式
curl https://hitokoto.api.sylv.top/api?encode=text
# JSONP 回调
curl https://hitokoto.api.sylv.top/api?callback=myCallback
# 长度过滤
curl "https://hitokoto.api.sylv.top/api?min_length=10&max_length=50"

获取分类列表#

GET /api/categories.json

响应示例#

{
"code": 200,
"data": [
{ "key": "a", "name": "动画", "desc": "Anime" },
{ "key": "b", "name": "漫画", "desc": "Comic" },
...
],
"count": 12
}

部署方式#

本项目支持两种平台部署,请根据需求选择:

平台一:EdgeOne Pages(腾讯云)#

基于 EdgeOne Pages Edge Functions 部署,全球边缘节点,超低延迟。

1. 通过 EdgeOne CLI 部署#

# 安装 CLI
npm install -g @edgeone/cli
# 登录
edgeone login
# 部署
edgeone deploy

2. 通过 Git 导入部署#

  1. Fork 本仓库
  2. 登录 EdgeOne Pages 控制台
  3. 选择「导入 Git 仓库」,授权并选择本仓库
  4. 点击部署,等待构建完成

3. 通过 Pages MCP 部署#

使用支持 MCP 的编辑器(如 Cursor、Trae),配置 Pages MCP Server 后直接部署。

平台二:阿里云 ESA#

基于阿里云 ESA(Edge Security Acceleration)函数和 Pages 部署。

1. 环境准备#

2. 配置部署#

项目已包含 esa.jsonc 配置文件:

{
"name": "hitokoto-api",
"entry": "./build/api.js",
"installCommand": "",
"buildCommand": "node scripts/build.js",
"assets": {
"directory": "./dist",
"notFoundStrategy": "404Page"
}
}

3. 构建与部署#

# 安装依赖
npm install
# 构建项目(打包函数 + 静态资源)
npm run build
# 使用 ESA CLI 或控制台上传部署

构建脚本会将句子数据内联到函数中,生成 build/api.js,同时将静态资源输出到 dist/ 目录。

注意:函数包大小限制为 4MB,构建时会自动检查。

数据更新#

句子数据存储在 data/ 目录下,可通过以下方式更新:

# 手动更新
node scripts/fetch-sentences.js
# 或使用 PowerShell 脚本(Windows)
.\scripts\update-sentences.ps1
# 或使用 Bash 脚本(Linux/macOS)
./scripts/update-sentences.sh

项目已配置 GitHub Actions 自动更新工作流(.github/workflows/update-sentences.yml),每天凌晨 3 点 (UTC) 自动从远程源获取最新数据。

技术栈#

项目结构#

.
├── api/
│ └── categories.json # 分类列表静态数据
├── data/ # 句子 JSON 数据
│ ├── a.json ~ l.json # 各分类句子数据
│ └── index.json # 数据索引(统计信息)
├── edge-functions/
│ └── api.js # 一言API核心接口 (/api)
├── scripts/
│ ├── build.js # 构建脚本(打包函数 + 静态资源)
│ ├── fetch-sentences.js # 获取句子数据(多源镜像)
│ ├── update-sentences.ps1 # PowerShell 更新脚本
│ └── update-sentences.sh # Bash 更新脚本
├── .github/workflows/
│ └── update-sentences.yml # 自动更新工作流
├── edgeone.json # EdgeOne Pages 配置(缓存、CORS)
├── esa.jsonc # 阿里云 ESA 部署配置
├── index.html # 首页(API文档 + 演示)
├── package.json
└── README.md

分支说明#

  • main:主分支,默认针对 EdgeOne Pages 优化
  • aliyun-esa:阿里云 ESA 适配分支,包含 ESA 专属配置和构建脚本

两个分支的 API 功能完全一致,仅部署平台和配置文件不同。

参考文档#

开源协议#

MIT License

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

OneHitokoto API
https://blog.sylv.top/posts/20260517-onehitokoto-api/
作者
Sylvy
创建于
2026/05/17 11:33:00
许可协议
CC BY-NC-SA 4.0
修改历史

最后一次修改于 2026/05/17 11:33:00

1 次修改