notion / README.md
clash-linux's picture
Upload 14 files
0c65530 verified
metadata
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 格式的请求和响应

安装

依赖项

确保安装以下依赖:

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

使用方法

启动服务

运行轻量级服务器:

npm start

服务器将在指定端口(默认 7860)启动。

如果需要使用原始的基于 Playwright 的版本(不推荐在 Termux 中使用):

npm run original

API 端点

  • GET /v1/models - 获取可用模型列表
  • POST /v1/chat/completions - 聊天完成端点
  • GET /health - 健康检查

在 Termux 中运行

  1. 安装 Termux 和 Node.js:
pkg update
pkg install nodejs
  1. 克隆项目并安装依赖:
git clone https://github.com/yourusername/notion2api-nodejs.git
cd notion2api-nodejs
npm install
  1. 设置环境变量并运行:
npm start

作为模块集成

你也可以将轻量级客户端作为模块导入到你自己的项目中:

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 代理