--- 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" ] ```