一个基于 Go 的 Notion AI OpenAI 兼容桥接服务,提供标准 API、WebUI 管理面、多账号池和本地 SQLite 持久化,方便本地部署、调试和统一接入。
- OpenAI 兼容接口:
/v1/models、/v1/chat/completions、/v1/responses - 支持流式响应
- 支持多账号池、账号切换、登录态刷新
- 支持图片、PDF、CSV 等附件请求
- 自带 WebUI 管理面:
/admin - 使用 SQLite 持久化账号、会话和运行状态
go run ./cmd/notion2api --config ./config.example.jsongo build ./cmd/notion2api先按实际环境修改 config.docker.json,再启动:
docker compose up -d --build如果使用偏生产配置:
docker compose -f docker-compose.prod.yml up -d --build本地从源码开发需 Go 1.25.0+(go.mod 已声明)。
- API:
http://127.0.0.1:8787/v1/* - Health:
http://127.0.0.1:8787/healthz - WebUI:
http://127.0.0.1:8787/admin
proxy_mode 支持:
off:关闭代理env:从环境变量读取(优先N2A_*)http:固定 HTTP 代理https:按协议拆分 HTTP/HTTPS 代理socks5:SOCKS5/SOCKS5H 代理resin_forward:Resin 粘性代理转发
HTTPS 请求优先顺序:
N2A_PROXY_HTTPS_URLN2A_UPSTREAM_PROXY_HTTPS_URLN2A_PROXY_URLN2A_UPSTREAM_PROXY_URLHTTPS_PROXY/https_proxyALL_PROXY/all_proxy
HTTP 请求优先顺序:
N2A_PROXY_HTTP_URLN2A_UPSTREAM_PROXY_HTTP_URLN2A_PROXY_URLN2A_UPSTREAM_PROXY_URLHTTP_PROXY/http_proxyALL_PROXY/all_proxy
也可以直接用环境变量覆盖配置文件中的代理字段:
N2A_PROXY_MODEN2A_PROXY_URLN2A_PROXY_HTTP_URLN2A_PROXY_HTTPS_URLN2A_RESIN_ENABLEDN2A_RESIN_URLN2A_RESIN_PLATFORMN2A_RESIN_MODE
每个账号都可以独立设置粘性身份:
accounts[].sticky_proxy_account:显式设置粘性账号名(推荐)- 未设置时会回退到邮箱派生值
当启用 resin_forward 时:
- 代理认证用户名格式:
<resin_platform>.<sticky_proxy_account> - 密码使用
resin_url中 token - 请求会附带
X-Resin-Account头
建议优先检查这些字段:
api_key:OpenAI 兼容接口密钥admin.password:WebUI 登录密码upstream_base_url/upstream_originproxy_mode/proxy_url/proxy_http_url/proxy_https_urlresin_enabled/resin_url/resin_platform/resin_modeaccounts[*].sticky_proxy_accountaccounts/active_accountstorage.sqlite_path
可直接参考:
config.example.jsonconfig.docker.json
- 首次启动后先访问
/admin,确认账号、配置和连通性是否正常 - 修改管理台前端后需执行
npm --prefix ./frontend run build:static - 调整会话延续与存储时,建议同步检查
internal/app/sqlite_store.go的 schema 与迁移兼容性
MIT License
本项目已在 LINUX DO 社区 发布,感谢社区的支持与反馈。