clash-linux commited on
Commit
1de8fd4
·
verified ·
1 Parent(s): 9b0bfeb

Upload README.md

Browse files
Files changed (1) hide show
  1. README.md +127 -206
README.md CHANGED
@@ -1,207 +1,128 @@
1
- # Notion API 轻量级客户端
2
-
3
- 这个项目提供了一个轻量级的 Notion API 客户端,可以在资源受限的环境(如 Termux)中运行,无需完整的浏览器环境。
4
-
5
- ## 特点
6
-
7
- - 使用 `node-fetch` 代替 Playwright 浏览器自动化
8
- - 轻量级设计,适合在移动设备和资源受限环境中运行
9
- - 支持 Notion AI 的流式响应
10
- - 兼容 OpenAI API 格式的请求和响应
11
-
12
- ## 安装
13
-
14
- ### 依赖项
15
-
16
- 确保安装以下依赖:
17
-
18
- ```bash
19
- npm install
20
- ```
21
-
22
- ### 环境变量
23
-
24
- 创建 `.env` 文件,设置以下环境变量:
25
-
26
- ```
27
- NOTION_COOKIE=your_notion_cookie_here
28
- NOTION_SPACE_ID=optional_space_id
29
- NOTION_ACTIVE_USER_HEADER=optional_user_id
30
- PROXY_URL=optional_proxy_url
31
- PROXY_AUTH_TOKEN=your_auth_token
32
- PORT=7860
33
- ```
34
-
35
- ## 使用方法
36
-
37
- ### 启动服务
38
-
39
- 运行轻量级服务器:
40
-
41
- ```bash
42
- npm start
43
- ```
44
-
45
- 服务器将在指定端口(默认 7860)启动。
46
-
47
- 如果需要使用原始的基于 Playwright 的版本(不推荐在 Termux 中使用):
48
-
49
- ```bash
50
- npm run original
51
- ```
52
-
53
- ### API 端点
54
-
55
- - `GET /v1/models` - 获取可用模型列表
56
- - `POST /v1/chat/completions` - 聊天完成端点
57
- - `GET /health` - 健康检查
58
-
59
- ### Termux 中运行
60
-
61
- 1. 安装 Termux 和 Node.js:
62
- ```bash
63
- pkg update
64
- pkg install nodejs
65
- ```
66
-
67
- 2. 克隆项目并安装依赖:
68
- ```bash
69
- git clone https://github.com/yourusername/notion2api-nodejs.git
70
- cd notion2api-nodejs
71
- npm install
72
- ```
73
-
74
- 3. 设置环境变量并运行:
75
- ```bash
76
- npm start
77
- ```
78
-
79
- ## 作为模块集成
80
-
81
- 你也可以将轻量级客户端作为模块导入到你自己的项目中:
82
-
83
- ```javascript
84
- import {
85
- initialize,
86
- streamNotionResponse,
87
- buildNotionRequest,
88
- FETCHED_IDS_SUCCESSFULLY
89
- } from './lightweight-client.js';
90
-
91
- // 初始化客户端
92
- await initialize();
93
-
94
- // 检查是否成功获取 Notion IDs
95
- if (FETCHED_IDS_SUCCESSFULLY) {
96
- // 构建请求
97
- const requestData = {
98
- notion_model: "openai-gpt-4.1",
99
- messages: [
100
- { role: "user", content: "你好,请介绍一下自己" }
101
- ]
102
- };
103
-
104
- const notionRequestBody = buildNotionRequest(requestData);
105
-
106
- // 获取响应流
107
- const stream = await streamNotionResponse(notionRequestBody);
108
-
109
- // 处理响应
110
- stream.on('data', chunk => {
111
- console.log(chunk.toString());
112
- });
113
- }
114
- ```
115
-
116
- ## 故障排除
117
-
118
- - 如果无法获取 Notion IDs,请确保提供了有效的 NOTION_COOKIE
119
- - 对于网络问题,可以尝试设置 PROXY_URL
120
- - 查看日志输出以获取详细的错误信息
121
-
122
- ## 依赖说明
123
-
124
- - `node-fetch`: 用于发送 HTTP 请求
125
- - `jsdom`: 提供 DOM API 的轻量级模拟
126
- - `dotenv`: 加载环境变量
127
- - `express`: Web 服务器框架
128
- - `https-proxy-agent`: 支持 HTTPS 代理
129
-
130
- ## Cookie管理功能
131
-
132
- 本项目新增了Cookie管理功能,可以更方便地管理多个Notion Cookie,避免在.env文件中手动编辑长字符串。
133
-
134
- ### 使用方法
135
-
136
- #### 1. 通过文件管理Cookie
137
-
138
- 在项目根目录创建一个`cookies.txt`文件,每行一个完整的Cookie字符串:
139
-
140
- ```
141
- cookie1_string_here
142
- cookie2_string_here
143
- cookie3_string_here
144
- ```
145
-
146
- 然后在`.env`文件中设置:
147
-
148
- ```
149
- COOKIE_FILE=cookies.txt
150
- ```
151
-
152
- 系统启动时会自动从该文件加载Cookie。
153
-
154
- #### 2. 使用Cookie管理工具
155
-
156
- 项目提供了一个命令行工具来管理Cookie:
157
-
158
- ```bash
159
- # 使用npm脚本运行
160
- npm run cookie
161
-
162
- # 或者全局安装后运行
163
- npm link
164
- notion-cookie
165
- ```
166
-
167
- 命令行工具支持以下功能:
168
-
169
- - `help`: 显示帮助信息
170
- - `list`: 列出所有已加载的Cookie
171
- - `add`: 添加新的Cookie
172
- - `validate`: 验证所有Cookie的有效性
173
- - `remove`: 删除指定的Cookie
174
- - `save`: 保存Cookie到文件
175
- - `load`: 从文件加载Cookie
176
- - `exit`: 退出程序
177
-
178
- ### Cookie轮询机制
179
-
180
- 系统会自动轮询使用所有有效的Cookie,当一个Cookie返回401错误(未授权)时,会自动将其标记为无效并切换到下一个Cookie。这样可以提高系统的可靠性和可用性。
181
-
182
- ### 文件格式支持
183
-
184
- Cookie管理器支持两种文件格式:
185
-
186
- 1. 文本格式(.txt):每行一个Cookie
187
- 2. JSON格式(.json):包含Cookie数组的JSON文件
188
-
189
- ```json
190
- {
191
- "cookies": [
192
- "cookie1_string_here",
193
- "cookie2_string_here"
194
- ],
195
- "updatedAt": "2023-08-01T12:00:00.000Z",
196
- "count": 2
197
- }
198
- ```
199
-
200
- 或者简单的数组:
201
-
202
- ```json
203
- [
204
- "cookie1_string_here",
205
- "cookie2_string_here"
206
- ]
207
  ```
 
1
+ ---
2
+ title: Notion
3
+ emoji: 📝
4
+ colorFrom: indigo
5
+ colorTo: blue
6
+ sdk: docker
7
+ app_port: 7860
8
+ ---
9
+
10
+ # Notion API 轻量级客户端 (Hugging Face Space)
11
+
12
+ 这个项目提供了一个轻量级的 Notion API 客户端,可以作为 Web 服务部署在 Hugging Face Spaces 上。它兼容 OpenAI API 格式,让你可以将 Notion AI 作为后端集成到各种应用中。
13
+
14
+ ## 🚀 在 Hugging Face Spaces 上部署
15
+
16
+ 1. **创建 Space**: 在 Hugging Face 上创建一个新的 Space。
17
+ 2. **选择 Docker SDK**: 在 "Choose an SDK" 步骤中,选择 "Docker"。
18
+ 3. **上传文件**: 将此项目的所有文件(包括 `Dockerfile`)上传到你的 Space Git 仓库中。
19
+ 4. **设置 Secrets**: 这是最重要的一步。你的 Notion 凭证和其他配置需要作为 Secrets 添加到 Space 中。进入你的 Space "Settings" 页面,找到 "Repository secrets" 部分,然后点击 "New secret" 添加以下变量:
20
+
21
+ * **必需**:
22
+ * `NOTION_COOKIE`: 你的 Notion Cookie。你可以通过浏览器开发者工具获取。
23
+ * **可选**:
24
+ * `NOTION_SPACE_ID`: 你的 Notion Space ID。
25
+ * `NOTION_ACTIVE_USER_HEADER`: 你的 Notion 用户 ID。
26
+ * `PROXY_URL`: 如果你需要通过代理访问 Notion,请设置此项 (例如 `http://user:pass@host:port`)。
27
+ * `PROXY_AUTH_TOKEN`: 如果你的代理需要单独的认证令牌,请设置此项。
28
+ * `COOKIE_FILE`: 如果你使用文件管理多个 Cookie,请设置为文件名 (例如 `cookies.txt`)。请确保该文件也已上传到仓库中。
29
+
30
+ **注意**: `PORT` 环境变量由 Hugging Face 自动处理,你无需设置。
31
+
32
+ 5. **等待部署**: 添加完 Secrets 后,Hugging Face 会自动构建 Docker 镜像并部署你的应用。你可以在 "Logs" 标签页查看部署进度和应用日志。部署成功后,你的 API 端点即可使用。
33
+
34
+ ## 📖 API 使用说明
35
+
36
+ 服务启动后,你可以通过你的 Space URL 访问 API。
37
+
38
+ **基础 URL**: `https://<your-space-name>.hf.space`
39
+
40
+ ### API 端点
41
+
42
+ - `GET /v1/models` - 获取可用模型列表 (主要是为了兼容 OpenAI 客户端)
43
+ - `POST /v1/chat/completions` - 核心的聊天完成端点
44
+ - `GET /health` - 健康检查端点
45
+
46
+ ### 示例: 使用 cURL 调用
47
+
48
+ ```bash
49
+ curl -X POST https://<your-space-name>.hf.space/v1/chat/completions \
50
+ -H "Content-Type: application/json" \
51
+ -d '{
52
+ "model": "openai-gpt-4.1",
53
+ "messages": [
54
+ {"role": "user", "content": "你好,请介绍一下你自己"}
55
+ ],
56
+ "stream": true
57
+ }'
58
+ ```
59
+ *请将 `<your-space-name>` 替换为你的 Space 名称。*
60
+
61
+ ## 🍪 Cookie 管理
62
+
63
+ 为了提高服务的稳定性,你可以提供多个 Notion Cookie。
64
+
65
+ ### 通过文件管理 Cookie
66
+
67
+ 1. 在项目根目录创建一个 `cookies.txt` 或 `cookies.json` 文件。
68
+ 2. 将文件上传到你的 Space 仓库。
69
+ 3. 在 Space Secrets 中设置 `COOKIE_FILE` 为你的文件名 (例如 `cookies.txt`)。
70
+
71
+ 系统启动时会自动从该文件加载Cookie。
72
+
73
+ **`cookies.txt` 示例:** (每行一个Cookie)
74
+ ```
75
+ cookie1_string_here
76
+ cookie2_string_here
77
+ ```
78
+
79
+ **`cookies.json` 示例:**
80
+ ```json
81
+ {
82
+ "cookies": [
83
+ "cookie1_string_here",
84
+ "cookie2_string_here"
85
+ ]
86
+ }
87
+ ```
88
+
89
+ ### Cookie 轮询机制
90
+
91
+ 系统会自动轮询使用所有有效的Cookie。当一个Cookie失效时(例如返回401错误),会自动切换到下一个有效的Cookie,确保服务不中断。
92
+
93
+ ---
94
+
95
+ ## 本地开发参考
96
+
97
+ 以下信息用于在本地计算机上运行和开发。
98
+
99
+ ### 依赖项
100
+ ```bash
101
+ npm install
102
+ ```
103
+
104
+ ### 环境变量
105
+ 创建 `.env` 文件,设置以下环境变量:
106
+ ```
107
+ NOTION_COOKIE=your_notion_cookie_here
108
+ NOTION_SPACE_ID=optional_space_id
109
+ NOTION_ACTIVE_USER_HEADER=optional_user_id
110
+ PROXY_URL=optional_proxy_url
111
+ PROXY_AUTH_TOKEN=your_auth_token
112
+ PORT=7860
113
+ ```
114
+
115
+ ### 启动服务
116
+ ```bash
117
+ npm start
118
+ ```
119
+
120
+ ### Cookie 管理命令行工具
121
+ 项目提供了一个命令行工具来方便地管理 `cookies.json` 文件。
122
+ ```bash
123
+ # 运行命令行工具
124
+ npm run cookie
125
+
126
+ # 支持的命令
127
+ help, list, add, validate, remove, save, load, exit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  ```