Skip to main content
Glama
ccBilly-aipm

getnote-web-mcp

by ccBilly-aipm
README.md
# getnote-web-mcp

> MCP Server · Dedao Brain (formerly Get Notes / biji.com) · 免费账号 · AI 总结 · 原始逐字稿 · 音频附件 · CLI

**得到大脑(原 Get笔记)网页版 API 的 MCP Server + CLI** —— 让 Claude Desktop、Cursor、Trae CLI 等任何支持 MCP 的 AI 工具,直接读取你得到大脑里的笔记内容;**免费账号即可,无需会员**。

> [English version](README_EN.md)

## 这个 MCP 能帮你做什么

你在得到大脑 App 里记的每一条语音、链接、截图、会议录音,背后都有三层内容:AI 智能总结、未润色的原始逐字稿、原始音频文件。官方 MCP 只开放给会员(开放平台 API),本项目走网页会话,**免费账号三层全可读**。

接入后,你可以直接在 AI 对话里这样用:

- 「找一下我笔记里关于**定价**的内容」→ 列表响应自带 AI 总结全文,AI 可直接翻页全文检索
- 「我上次录的那条 75 分钟的直播,**原话**是怎么说的?」→ 调出原始逐字稿(非 AI 润色版)
- 「把这条录音的**总结**整理成一封邮件」→ 读取 AI 智能总结后写作
- 「这条录音的音频文件在哪?」→ 返回 OSS 直链,或直接下载 mp3
- 离开 AI 工具也能用:`getnote_cli.py` 一行命令导出任意笔记的总结/逐字稿/音频

## ⚠️ 免责声明

本项目**非官方**,通过逆向得到大脑(biji.com,得到团队)网页版内部接口实现,属于灰色地带:

- 可能违反得到《用户协议》,存在账号风控/封禁风险,请自行评估;
- 接口随时可能改版失效(前端更新后需重新逆向);
- 仅建议个人自用(读自己的数据),请勿用于批量抓取或商业用途;
- 仓库不包含任何凭证,登录态只保存在你自己机器的浏览器 profile 里。

## 背景:为什么做这个

| 路线 | 会员要求 | 说明 |
| --- | --- | --- |
| 官方 MCP([@getnote/mcp](https://github.com/iswalle/getnote-mcp)) | **需要会员** | 走开放平台 `openapi.biji.com`,免费账号返回 10004 未授权 |
| 本项目(网页内部 API) | **免费可用** | 走网页自身会话 `notes-api.biji.com`,实测三层内容全部可读 |

2026-09-12 实测(免费账号,302 条笔记,含 3 条录音):AI 智能总结、原始逐字稿、原始音频直链**全部可获取**。

## 功能

**数据层**(getnote_core.py):
- 笔记列表(翻页/全量,含 AI 总结正文)
- 笔记详情(AI 智能总结 markdown、纯文本、附件信息)
- 原始逐字稿(未润色口水稿,毫秒级时间戳 sentence_list)
- 音频附件(OSS 签名直链获取 / 直接下载 mp3)
- token 管理(自动静默刷新 + 失效转交互登录)

**双壳**:
- `getnote_cli.py` —— 命令行直接用
- `getnote_mcp.py` —— MCP server(stdio),接入任意支持 MCP 的 AI 工具

## 安装

依赖:Python 3.9+、Playwright(用系统 Chrome,无需 `playwright install`)。

```bash
git clone https://github.com/ccBilly-aipm/getnote-web-mcp.git
cd getnote-web-mcp
pip3 install playwright   # 复用本机 Chrome,无需下载浏览器内核
```

## 快速开始

```bash
# 1. 登录(弹出浏览器,手动登录一次即可)
python3 getnote_cli.py login

# 2. 查看登录态
python3 getnote_cli.py status

# 3. 列出笔记
python3 getnote_cli.py notes --limit 10

# 4. 读取某条笔记的 AI 总结
python3 getnote_cli.py note NOTE_ID

# 5. 读取录音笔记的原始逐字稿
python3 getnote_cli.py transcript NOTE_ID

# 6. 获取音频直链或下载
python3 getnote_cli.py audio NOTE_ID --dest ~/Downloads/x.mp3
```

## MCP 配置

### Trae CLI(trae_cli.yaml)

```yaml
mcp_servers:
    - args:
        - /path/to/getnote-web-mcp/getnote_mcp.py
      command: /usr/bin/python3
      name: getnote
      type: stdio
```

### Claude Desktop

```json
{
  "mcpServers": {
    "getnote": {
      "command": "/usr/bin/python3",
      "args": ["/path/to/getnote-web-mcp/getnote_mcp.py"]
    }
  }
}
```

### Cursor

MCP 设置里添加:Name `getnote`,Command `/usr/bin/python3 /path/to/getnote-web-mcp/getnote_mcp.py`。

## MCP 工具列表

| 工具 | 功能 |
| --- | --- |
| `getnote_status` | 查看登录态与账号信息 |
| `getnote_login` | 弹浏览器手动登录(阻塞直到完成) |
| `getnote_notes` | 笔记列表(limit / all 全量 / note_type 过滤) |
| `getnote_note` | 笔记详情:AI 智能总结正文与附件(mode=json 返回原始结构) |
| `getnote_transcript` | 录音/会议笔记的原始逐字稿(mode=json 返回带时间戳的 sentence_list) |
| `getnote_audio` | 音频 OSS 直链(传 dest 直接下载) |

## Token 生命周期(刷新策略抄自 [AndyZhengyan/obsidian-getnote-importer](https://github.com/AndyZhengyan/obsidian-getnote-importer) 的刷新协调器)

```
浏览器登录一次(Playwright 持久化 profile)
        │
        ▼
localStorage 收割 JWT ──── 有效期约 30 分钟(实测)
        │                        │
        │  每次调用前检查,距过期 <5min 或 401
        ▼                        ▼
静默刷新:headless 重开 biji.com/note
(页面自动用 refresh_token 续签 → 重新收割)
        │                        │
        ▼                        ▼
  正常请求 ◄──────────── 刷新成功重试
                                 │ 失败(refresh_token 也过期,约 90 天)
                                 ▼
                       提示交互登录(弹浏览器)
```

凭证保存位置:`~/.getnote/credentials.json`(可用 `GETNOTE_DATA_DIR` 环境变量改路径;兼容旧路径 `~/.trae/mcps/getnote_data`)。浏览器 profile 在同级目录 `browser-profile/`,**不要提交到任何仓库**。

## 实测能力边界(2026-09-12,免费账号)

| 能力 | 结果 | 接口 |
| --- | --- | --- |
| 笔记列表(302 条全量翻页) | ✅ | `GET /voicenotes/web/notes?limit=&since_id=` |
| AI 智能总结正文 | ✅ | 列表与详情的 `content` 字段(markdown) |
| 原始逐字稿(带毫秒时间戳) | ✅ | `GET /voicenotes/web/notes/{id}/original` |
| 音频附件直链(约 30 天签名) | ✅ | 详情 `attachments[].url` |
| 开放平台 API(openapi.biji.com) | ❌ 需会员 | 10004 未授权 |

实测样例:75 分钟录音笔记 → AI 总结 5898 字 + 逐字稿 118 句 19204 字 + mp3 直链。

## 已知限制

- 列表接口**不能带 `sort` 参数**(否则报参数错误);
- 服务端 `note_type_list` 筛选的参数格式未摸清,全量过滤在客户端做;
- App 内「剪辑后成片」是否作为独立附件出现尚未验证(暂无样本);
- 部分录音逐字稿无说话人分离字段(speaker 为空)。

## 致谢

- [iswalle/getnote-mcp](https://github.com/iswalle/getnote-mcp) —— 官方 MCP(会员路线),本项目的接口发现受益于其开放平台文档;
- [AndyZhengyan/obsidian-getnote-importer](https://github.com/AndyZhengyan/obsidian-getnote-importer) —— Obsidian 同步插件,token 刷新协调器策略抄自这里;
- 得到大脑产品团队 —— 好用的产品(会员值得买,只是 API 另收费)。

## License

[MIT](LICENSE)