Skip to content

Latest commit

 

History

History
259 lines (193 loc) · 9.9 KB

File metadata and controls

259 lines (193 loc) · 9.9 KB

notion-manager

Notion AI 多账号池、Dashboard 与本地协议代理

将多个 Notion 账号集中管理,通过一个本地入口实现账号池化、额度监控、API 代理、Web 代理,并兼容 Claude Code。

Go Anthropic Messages API React Dashboard Notion Web Proxy

快速开始核心能力系统架构完整安装详细文档

English | 简体中文


Dashboard

notion-manager 是一个本地运行的 Notion AI 管理工具。构建多账号池,后台自动刷新额度与模型,对外提供三个入口:

  • Dashboard /dashboard/ — 管理账号、查看额度、切换设置
  • Reverse Proxy /ai — 本地使用完整 Notion AI 页面
  • Anthropic Messages API POST /v1/messages — 兼容 Claude Code、Cherry Studio 等

快速开始

前置要求: Go 1.25+,至少一个 Notion 账号。无需 Chrome 扩展。

# 1. 克隆并启动(配置首次运行自动生成)
git clone https://github.com/SleepingBag945/notion-manager.git
cd notion-manager
go run ./cmd/notion-manager

首次启动时控制台会打印 管理密码API Key — 请务必保存。

# 2. 打开 Dashboard
http://localhost:8081/dashboard/

添加第一个账号:

  1. 在 Chrome 打开已登录的 notion.soF12ApplicationCookies → 复制 token_v2
  2. 在 Dashboard 点击 「+ 添加账号」 → 粘贴 token_v2 → 完成

账号自动发现并热加载,无需重启。

# 3. 使用 API(Claude Code、Cherry Studio、curl 等)
export ANTHROPIC_BASE_URL=http://localhost:8081
export ANTHROPIC_API_KEY=<your-api-key>
claude  # 或任何 Anthropic 兼容客户端

也可以从 Releases 下载预编译二进制,无需 Go 工具链。


核心能力

1. 多账号池与自动故障转移

  • accounts/ 目录加载任意数量的账号 JSON
  • 按账号剩余额度优先分配请求,而不是简单随机轮询
  • 账号额度耗尽后自动跳过,付费账号在后续刷新时可恢复
  • 研究模式会单独选择更适合的账号,优先避开研究额度已紧张的账号
  • 配额和已发现模型会持久化回写到账号 JSON

2. Dashboard 管理面板

  • 内置 React Dashboard,入口为 /dashboard/
  • 支持密码登录、会话维持与登出
  • 查看账号详情、额度、计划类型、可用模型和刷新状态
  • 通过粘贴 token_v2 添加账号,自动发现用户信息与模型
  • 在账号卡片上直接删除账号,带确认提示
  • 可触发手动刷新,并在页面内切换 enable_web_searchenable_workspace_searchdebug_logging
  • 可一键打开“最佳账号”代理,或指定某个邮箱对应的账号打开代理可实现原版对话。

3. 本地 Notion Web 反向代理

  • 入口为 /ai
  • 通过 /proxy/start 为指定账号创建会话,再进入完整的 Notion AI Web 界面
  • 自动注入账号 Cookie,不需要在代理页重新登录
  • 转发 Notion HTML、/api/*、静态资源、msgstore 和 WebSocket
  • 会动态改写 CONFIG.domainBaseUrl,并过滤分析脚本

4. Anthropic 协议兼容 API

  • 提供 POST /v1/messages
  • 同时支持 Authorization: Bearer <api_key>x-api-key: <api_key>
  • 支持流式与非流式响应
  • 支持 Anthropic tools
  • 支持图片、PDF、CSV 文件内容块,自动走 Notion 上传链路
  • 请求里未指定 model 时,自动回退到 proxy.default_model

Cherry Studio
兼容 Cherry Studio — 多模型桌面客户端

5. Claude Code 集成

兼容 Claude Code — Anthropic 官方的 Agentic 编程工具。多轮工具链调用、文件操作、Shell 命令和扩展思维链均可通过 Notion AI 正常工作,背后依赖三层兼容桥接实现。

Claude Code Demo
Claude Code 通过 notion-manager 分析项目架构 — 多轮工具链 + 会话持久化

Claude Code Thinking
扩展思维链支持 — Claude Code 的推理过程完整流式输出

配置 — 仅需两个环境变量:

export ANTHROPIC_BASE_URL=http://localhost:8081
export ANTHROPIC_API_KEY=your-api-key
claude  # 启动交互式会话

支持的能力:Shell 命令、文件读写编辑、文件搜索(Glob/Grep)、联网搜索、多轮工具链、扩展思维链、流式输出、模型选择(Opus/Sonnet/Haiku)。

工作原理:Notion AI 服务端注入的 ~27k token 系统提示词赋予模型强烈的 "我是 Notion AI" 身份,会拒绝外部工具调用。代理通过三步绕过:(1) 丢弃冲突的系统提示词,(2) 剥离 XML 控制标签,(3) 将请求伪装为代码生成任务("单元测试"framing)。__done__ 伪函数使模型始终保持 JSON 输出模式 — 永远不切换到"正常回复"模式,避免触发 Notion AI 身份回归。详见 Claude Code 集成技术细节Notion 系统提示词

已知限制:仅支持 8 个核心工具(原 18+ 个,更大的工具列表会破坏 framing),每轮延迟较高,管理工具(Agent、MCP、LSP)被过滤。

6. 研究模式与搜索控制

  • 使用 researcherfast-researcher 作为模型名即可触发研究模式
  • 研究模式会流式输出 thinking 块和最终报告文本
  • 普通模型支持联网搜索与工作区搜索
  • 搜索开关优先级为:请求头覆盖 > Dashboard / config.yaml > 默认值

7. Chrome 扩展提取账号

  • 扩展位于 chrome-extension/
  • 可从当前登录的 notion.so 会话中提取:
    • token_v2
    • full_cookie
    • user_id / space_id
    • client_version
    • 当前可用模型列表
  • 生成的 JSON 可直接放入 accounts/ 使用

系统架构

graph TD
    A[Chrome 扩展] -->|提取账号 JSON| B[accounts/*.json]
    A2[Dashboard] -->|通过 token_v2 添加| B
    B --> C[Account Pool]
    D[Dashboard /dashboard/] -->|会话登录| E[Admin API]
    E --> C
    F[API Client] -->|POST /v1/messages| G[Anthropic Handler]
    G --> C
    G --> H[文件上传 / 工具注入 / 搜索控制]
    H --> I[Notion AI API]
    J[Browser] -->|/proxy/start -> /ai| K[Reverse Proxy]
    K --> C
    K --> L[notion.so / msgstore]
Loading

完整安装参考

前置要求

  • Go 1.25+(或使用 Release 预编译二进制
  • 至少一个可用的 Notion 账号
  • Chrome / Chromium(仅扩展方式需要 —— Dashboard 方式无需扩展)

仓库已内嵌 Dashboard 前端资源,直接 go run 即可。

添加账号

Dashboard(推荐) — 在页面中粘贴 token_v2,详见快速开始。账号卡片底部的垃圾桶图标可删除账号。

Chrome 扩展 — 提取包含 full_cookie 的完整配置:

  1. chrome://extensions → 开启开发者模式 → 加载 chrome-extension/
  2. 打开已登录的 https://www.notion.so/
  3. 点击扩展 → 提取配置 → 保存到 accounts/<名字>.json

配置

首次运行时自动生成 config.yaml(包含随机 API Key 和管理密码)。自定义配置:

cp example.config.yaml config.yaml
配置项 说明
server.port 监听端口(默认 8081
server.api_key 留空则自动生成
server.admin_password 留空则自动生成;明文密码启动时自动哈希

从源码构建

go run ./cmd/notion-manager        # 直接运行
go build -o notion-manager.exe ./cmd/notion-manager  # 编译二进制

如果修改了前端源码(web/):

cd web && npm run build        # 构建前端
cp -r dist ../internal/web/    # 复制到 embed 目录
cd .. && go build -o notion-manager.exe ./cmd/notion-manager

验证

curl http://localhost:8081/health
curl http://localhost:8081/v1/messages \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sonnet-4.6",
    "max_tokens": 512,
    "messages": [
      { "role": "user", "content": "你好,介绍一下当前可用能力。" }
    ]
  }'

详细文档

许可证

本项目采用 CC BY-NC-SA 4.0 许可证,仅限非商业用途。