notion / README.md
clash-linux's picture
Upload 17 files
8c0c410 verified
---
title: Notion2API Node.js
emoji: 🚀
colorFrom: green
colorTo: blue
sdk: docker
app_port: 7860
pinned: false
---
# Notion API 轻量级客户端
这个项目提供了一个轻量级的 Notion API 客户端,可以在资源受限的环境(如 Termux)中运行,无需完整的浏览器环境。
## 特点
- 使用 `node-fetch` 代替 Playwright 浏览器自动化
- 轻量级设计,适合在移动设备和资源受限环境中运行
- 支持 Notion AI 的流式响应
- 兼容 OpenAI API 格式的请求和响应
## 安装
### 依赖项
确保安装以下依赖:
```bash
npm install
```
### 环境变量
创建 `.env` 文件,设置以下环境变量:
```
NOTION_COOKIE=your_notion_cookie_here
NOTION_SPACE_ID=optional_space_id
NOTION_ACTIVE_USER_HEADER=optional_user_id
PROXY_URL=optional_proxy_url
PROXY_AUTH_TOKEN=your_auth_token
PORT=7860
```
## 使用方法
### 启动服务
运行轻量级服务器:
```bash
npm start
```
服务器将在指定端口(默认 7860)启动。
如果需要使用原始的基于 Playwright 的版本(不推荐在 Termux 中使用):
```bash
npm run original
```
### API 端点
- `GET /v1/models` - 获取可用模型列表
- `POST /v1/chat/completions` - 聊天完成端点
- `GET /health` - 健康检查
### 在 Termux 中运行
1. 安装 Termux 和 Node.js:
```bash
pkg update
pkg install nodejs
```
2. 克隆项目并安装依赖:
```bash
git clone https://github.com/yourusername/notion2api-nodejs.git
cd notion2api-nodejs
npm install
```
3. 设置环境变量并运行:
```bash
npm start
```
## 作为模块集成
你也可以将轻量级客户端作为模块导入到你自己的项目中:
```javascript
import {
initialize,
streamNotionResponse,
buildNotionRequest,
FETCHED_IDS_SUCCESSFULLY
} from './lightweight-client.js';
// 初始化客户端
await initialize();
// 检查是否成功获取 Notion IDs
if (FETCHED_IDS_SUCCESSFULLY) {
// 构建请求
const requestData = {
notion_model: "openai-gpt-4.1",
messages: [
{ role: "user", content: "你好,请介绍一下自己" }
]
};
const notionRequestBody = buildNotionRequest(requestData);
// 获取响应流
const stream = await streamNotionResponse(notionRequestBody);
// 处理响应
stream.on('data', chunk => {
console.log(chunk.toString());
});
}
```
## 故障排除
- 如果无法获取 Notion IDs,请确保提供了有效的 NOTION_COOKIE
- 对于网络问题,可以尝试设置 PROXY_URL
- 查看日志输出以获取详细的错误信息
## 依赖说明
- `node-fetch`: 用于发送 HTTP 请求
- `jsdom`: 提供 DOM API 的轻量级模拟
- `dotenv`: 加载环境变量
- `express`: Web 服务器框架
- `https-proxy-agent`: 支持 HTTPS 代理
## Cookie管理功能
本项目新增了Cookie管理功能,可以更方便地管理多个Notion Cookie,避免在.env文件中手动编辑长字符串。
### 使用方法
#### 1. 通过文件管理Cookie
在项目根目录创建一个`cookies.txt`文件,每行一个完整的Cookie字符串:
```
cookie1_string_here
cookie2_string_here
cookie3_string_here
```
然后在`.env`文件中设置:
```
COOKIE_FILE=cookies.txt
```
系统启动时会自动从该文件加载Cookie。
#### 2. 使用Cookie管理工具
项目提供了一个命令行工具来管理Cookie:
```bash
# 使用npm脚本运行
npm run cookie
# 或者全局安装后运行
npm link
notion-cookie
```
命令行工具支持以下功能:
- `help`: 显示帮助信息
- `list`: 列出所有已加载的Cookie
- `add`: 添加新的Cookie
- `validate`: 验证所有Cookie的有效性
- `remove`: 删除指定的Cookie
- `save`: 保存Cookie到文件
- `load`: 从文件加载Cookie
- `exit`: 退出程序
### Cookie轮询机制
系统会自动轮询使用所有有效的Cookie,当一个Cookie返回401错误(未授权)时,会自动将其标记为无效并切换到下一个Cookie。这样可以提高系统的可靠性和可用性。
### 文件格式支持
Cookie管理器支持两种文件格式:
1. 文本格式(.txt):每行一个Cookie
2. JSON格式(.json):包含Cookie数组的JSON文件
```json
{
"cookies": [
"cookie1_string_here",
"cookie2_string_here"
],
"updatedAt": "2023-08-01T12:00:00.000Z",
"count": 2
}
```
或者简单的数组:
```json
[
"cookie1_string_here",
"cookie2_string_here"
]
```