LitRadar 是面向学术期刊的自托管检索与订阅平台。它从 Crossref、OpenAlex、Semantic Scholar 和 CNKI 获取元数据,构建本地 SQLite 全文索引,通过 Web 界面提供检索、收藏、每周更新、文献追踪和期刊征稿追踪。
- 多源索引:英文期刊使用 Scholarly 流程,中文期刊使用 CNKI 流程。
- 本地检索:基于 FTS5,支持中文短语检索。
- 用户工作区:账号、邀请码、访问令牌、收藏夹和引用导出。
- 文献追踪:通过 OpenAI 兼容模型筛选文章,再发送 PushPlus 通知或写入追踪文件夹。
- 征稿追踪:查看期刊征稿信息,并通过命令导入或刷新来源记录。
- 管理与接入:运行配置、定时任务、服务状态、公告,以及 REST API、OpenAPI 和 Streamable HTTP MCP。
应用入口是唯一的 litradar 可执行文件。litradar serve 同时承载静态 Web、REST、Swagger/OpenAPI、MCP 和持久化调度;任务需要隔离时,由它启动短生命周期的同名子命令。Next.js 前端和 CSP 清单在发布构建时编入 Go 二进制,部署时不需要外部 web/ 或 Node.js 服务。Simple 分词器同样静态链接,索引和检索不需要 Simple DLL/SO;Obscura、Poppler 和期刊元数据目录仍是独立的部署输入。模块边界和数据流见系统架构。
以下步骤用于首次本机部署,在仓库根目录的 Bash 中执行,需要 Docker Engine 或 Docker Desktop、Docker Compose、OpenSSL 和 curl。Windows 用户可使用 WSL Bash;不要直接把 Bash 的续行和输入语法粘贴到 PowerShell。已有数据的升级或 HTTPS 接入请使用 Docker 部署中的对应流程。
仅在尚无部署密钥时生成新文件;已有数据库必须继续使用与它匹配的密钥。
mkdir -p data secrets
if [ ! -e secrets/litradar.key ]; then
(umask 077; openssl rand -out secrets/litradar.key 32)
fiLinux 原生 Docker Engine 需要让容器账号 10001:10001 读写数据目录、读取密钥。下面命令针对本次专用部署目录:
sudo chown -R 10001:10001 data
sudo chown 10001:10001 secrets/litradar.key
sudo chmod 600 secrets/litradar.keyDocker Desktop 通常由虚拟化层处理挂载权限,不照搬上述 chown。密钥必须恰好为 32 个原始字节,与数据库备份分开保管。已有明文集成凭据的部署先按安全说明迁移。
docker compose pull
docker compose up -d --remove-orphans
docker compose psCompose 运行一个 litradar 服务,本机示例使用 ghcr.io/qianfuv/litradar:latest。从当前源码构建时,改用 docker compose up -d --build --remove-orphans。镜像自带官方期刊目录,首次运行会准备 data/meta/,后续升级保留自定义文件;完整规则见 Meta 与持久卷。
公开注册不能创建首个管理员。在交互式 Bash 中读取密码后,通过 stdin 传给命令:
IFS= read -r -s -p 'Admin password: ' ADMIN_PASSWORD
printf '\n'
printf '%s\n' "$ADMIN_PASSWORD" |
docker compose run --rm -T litradar admin bootstrap \
--username admin \
--password-stdin
unset ADMIN_PASSWORD密码至少需要 12 个 Unicode 字符,不把实际值写入参数、Compose 文件或命令历史。命令只在用户表为空时成功。
CNKI 元数据索引不需要 Scholarly API key,可先运行:
docker compose run --rm litradar index \
--secret-key-file /run/secrets/litradar_key \
--file chinese_journals.csv \
--update--update 执行增量更新并发布每周更新所需的变更清单;首次运行或没有可复用的成功边界时会完整扫描。遇到验证码时,按 CNKI 数据源说明配置验证码服务。
索引 english_journals.csv 或 ccf_computer_journals.csv 前,先登录管理后台,在运行配置中填写 Crossref 联系邮箱、OpenAlex 和 Semantic Scholar API key。全量核对、中断恢复与并发参数见 CLI 参考,配额与默认值见运行配置参考。
curl --fail http://localhost:8000/health/ready
curl --fail --output /dev/null http://localhost:8000/两个请求都应成功。打开 http://localhost:8000/ 登录,选择已完成索引的数据库并检索一篇已知文章。接口入口为 /api,Swagger UI 为 /docs/,OpenAPI JSON 为 /openapi.json,MCP 为 /mcp;MCP 客户端需要会话或访问令牌。
项目使用 Go 1.27.3(启用 CGO)、Node.js 26.11.1 和 pnpm 12.10.1;构建静态 Simple 还需要与 Go 目标匹配的 C/C++14 编译器、CMake、curl 和 tar,Windows 另需 MinGW 和 Ninja。环境准备、原生分词器和开发命令见开发指南,前端内部结构见前端说明。
普通推送只运行质量检查;发布时修改根目录 VERSION(例如 0.1.0 → 0.1.1),提交并推送到 main。检查通过后自动发布 GitHub Release 二进制包及 ghcr.io/qianfuv/litradar:v0.1.1、latest 镜像,无需手动打标签。二进制包支持 Linux amd64 和 Windows x64,内嵌 Web 资源并附带原生辅助程序;容器镜像只提供 linux/amd64。Actions 的 CI 负责检查,也可手动运行并填写当前 VERSION 重试发布;Release 是由 CI 调用的可复用发布流程。版本规则、安装依赖和失败重试见版本发布说明。
从文档中心选择阅读路径:
本项目使用 MIT License。