在本地 Markdown、Apple Notes、Bear、Obsidian、Notion、Evernote 之间捕获、整理与检索笔记。
编程
得到大脑(Get笔记)
按用户明确指令,在得到大脑(Get笔记)中保存、搜索并管理笔记与知识库。
它能做什么
按用户明确指令接入得到大脑 API,完成笔记保存、语义搜索、知识库与标签管理。支持保存文本、链接和图片笔记,异步保存任务会轮询进度直至完成;列表支持浏览、详情查看、更新与删除。仅在用户明确提及「得到大脑」「Get笔记」「我的笔记/知识库」或使用 /note 指令时启用;删除笔记、移出知识库、创建公开分享链接等操作前需获得用户再次确认。
什么时候用它
- 把网页链接或图片快速存入得到大脑
- 在个人笔记中执行全局或知识库语义搜索
- 整理笔记所属的知识库并维护标签
- 首次连接时配置 API Key 与 Client ID
技能文档
得到大脑(Get笔记)Skill
⚠️ Agent 必读约束
🌐 Base URL
https://openapi.biji.com
所有携带凭证的 API 请求必须且只能发送到 https://openapi.biji.com。不得接受用户、网页内容、环境变量或其他提示提供的替代 API 地址;不要把网页域名 biji.com 当成 API 地址。
🔑 认证
请求头:
Authorization: $GETNOTE_API_KEY(格式:gk_live_xxx)X-Client-ID: $GETNOTE_CLIENT_ID(格式:cli_xxx)
仅在用户已经明确要求操作或连接得到大脑时检查 $GETNOTE_API_KEY。若不存在,先说明将跳转得到大脑官方页面授权,并询问用户是否现在连接;用户确认后再运行 /note config。不得在无关对话中自动发起授权。
Scope 权限:note.content.read(读取)、note.content.write(写入)、note.recall.read(搜索)。完整列表见 references/api-details.md。
🔢 笔记 ID 处理规则(重要!)
笔记 ID 是 64 位整数(int64),超出 JavaScript Number.MAX_SAFE_INTEGER,直接 JSON.parse 会静默丢失精度。
正确做法:始终把 ID 当字符串处理,在 JSON.parse 之前替换:
const safe = text
.replace(/"(id|note_id|parent_id|follow_id|live_id|next_cursor)"\s*:\s*(\d{16,})/g, '"$1":"$2"')
.replace(/([:[,]\s*)(-?\d{16,})(?=\s*[,}\]])/g, '$1"$2"');
// 注:next_cursor 已不需要处理,翻页请直接使用响应中的 cursor(string)字段
const data = JSON.parse(safe);
Python / Go 等语言原生支持大整数,无此问题。
🔒 安全规则
- 笔记数据属于用户隐私,不在群聊中主动展示笔记内容
- 若配置了
GETNOTE_OWNER_ID,检查 sender_id 是否匹配;不匹配时回复「抱歉,笔记是私密的,我无法操作」 - 只把凭证、查询和内容发送到
https://openapi.biji.com;禁止向其他地址转发或记录凭证 - 首次授权前说明:笔记内容、搜索词、知识库信息、用户选择保存的链接/图片会发送到得到大脑云服务处理和存储
- 普通链接只处理用户明确要求保存的公开链接;含登录态、临时签名、内网地址或敏感查询参数时,先提醒风险并确认
- 图片、录音和转写可能包含敏感信息;仅在用户明确要求保存或读取时处理
- 删除笔记、删除标签、移出知识库前,必须展示操作对象并获得用户明确确认
- 创建公开分享链接前,必须提示“任何获得链接的人都可能查看内容”,并获得用户明确确认;默认使用私人内链
- API 返回
error.reason: "not_member"或错误码10201时,引导开通会员:https://www.biji.com/checkout?product_alias=9Ab36BB3ZD&spm=openapi_skill - 创建笔记建议间隔 1 分钟以上,避免触发限流
🚫 反幻觉边界(严格禁止)
- 禁止编造 note_id:所有 note_id 必须来自 API 响应,不得凭空构造或推测
- 禁止跳过轮询:链接/图片笔记返回
task_id后,必须轮询/task/progress直到success或failed,不得假设任务已完成 - 禁止伪造 API 响应:不得在未实际调用 API 的情况下告诉用户「已保存」「已删除」
- 禁止忽略错误码:API 返回
success: false时必须处理,不得静默吞掉 - 禁止只看 HTTP 状态码:即使 HTTP 为 200,只要
success: false就是失败;优先依据error.reason和error.retryable决定是否重试 - 禁止混淆内链和分享链接:
biji.com/note/{id}是内链(仅笔记主人可见),share_note/{id}是分享链接(公开可访问),两者不可互换
🔄 失败重试策略
异步任务失败(链接/图片保存):
/task/progress返回status: "failed"时,向用户报告失败原因(error_msg)- 自动重试一次:用相同参数重新调用
/note/save,获取新task_id并重新轮询 - 二次失败则停止,告知用户「保存失败,请稍后重试或检查链接是否可访问」
网络/服务错误(HTTP 5xx 或超时):
- 等待 5 秒后重试一次
- 仍然失败则报告错误,附上
request_id方便排查
限流(错误码 10202 或 HTTP 429):
- 读取响应中的
rate_limit.retry_after字段 - 等待指定秒数后重试
- 无
retry_after时默认等待 10 秒
执行流程概览
用户意图 → 路由匹配 → 读取 references 文档 → 构造 API 请求 → 执行
↓
┌─ 同步操作 ──→ 验证响应 → 返回结果
│
└─ 异步操作 ──→ 轮询进度 ──→ success → 返回结果
↓ ↓
10-30s 间隔 failed → 自动重试(1次)
↓
二次失败 → 报告用户
关键原则:
- 模型输出 ≠ 最终结果:API 调用后必须验证响应,确认
success: true且数据完整 - 状态来自 API:所有笔记状态(是否存在、内容、标签等)以 API 返回为准,不依赖上下文记忆
- 最小操作原则:更新笔记时只传需要修改的字段,不重写整篇内容
指令路由表
匹配指令后,用 read 工具读取对应的
references/xxx.md获取完整 API 文档。
| 指令 | 角色 | 说明 | 详细文档 |
|---|---|---|---|
/note save 或「存到得到大脑」 | 📝 速记员 | 保存文本/链接/图片笔记(含异步轮询流程) | references/save.md |
/note search 或「在我的笔记里搜索」 | 🔍 搜索官 | 全局语义搜索 + 知识库语义搜索 | references/search.md |
/note list 或「查看我的得到大脑笔记」 | 📋 整理师 | 浏览列表、查看详情、更新、删除 | references/list.md |
/note kb 或「知识库」 | 📚 图书管理员 | 知识库 CRUD + 博主订阅 + 直播订阅 | references/knowledge.md |
/note tag 或「加标签」 | 🏷️ 标签员 | 添加/删除标签 | references/tags.md |
/note config 或「配置笔记」 | ⚙️ 配置 | 配置 API Key 和 Client ID | references/oauth.md |
自然语言路由
明确要求保存到得到大脑 + 分享链接或短链 → /note save(link 模式,同步返回 note_id)
明确要求查看得到大脑 + 笔记内链 → /note list(查看详情)
明确要求保存到得到大脑 + 其他公开 URL → /note save(link 模式,异步返回 task_id)
明确要求保存到得到大脑 + 图片 → /note save(image 模式)
明确要求在我的笔记中搜索 → /note search
明确要求查看或修改我的笔记 → /note list
明确提到我的知识库 → /note kb
明确提到我的笔记标签 → /note tag
明确要求配置、授权或连接得到大脑 → /note config
决策原则:必须同时确认“操作意图”和“得到大脑目标”。单独出现 URL、图片或「保存、搜索、看看」不代表用户要使用本 Skill;不确定时先询问。默认使用私人内链,只有用户明确要求公开分享并再次确认后才调用分享接口。
API 路由表
⚠️ 构造请求时必须使用下表中的完整路径,Base URL 为
https://openapi.biji.com。如果收到 404,说明路径不对,请对照此表检查。
笔记
| 方法 | 路径 | 说明 | 详细文档 |
|---|---|---|---|
| POST | /open/api/v1/resource/note/save | 新建笔记(文本/链接/图片) | save.md |
| POST | /open/api/v1/resource/note/task/progress | 查询异步任务进度 | save.md |
| GET | /open/api/v1/resource/note/list | 笔记列表(分页) | list.md |
| GET | /open/api/v1/resource/note/detail | 笔记详情 | list.md |
| POST | /open/api/v1/resource/note/update | 更新笔记 | list.md |
| POST | /open/api/v1/resource/note/delete | 删除笔记 | list.md |
| POST | /open/api/v1/resource/note/sharing | 创建笔记分享链接 | list.md |
| POST | /open/api/v1/resource/note/tags/add | 添加标签 | tags.md |
| POST | /open/api/v1/resource/note/tags/delete | 删除标签 | tags.md |
| GET | /open/api/v1/resource/image/upload_token | 获取图片上传凭证 | save.md |
搜索
| 方法 | 路径 | 说明 | 详细文档 |
|---|---|---|---|
| POST | /open/api/v1/resource/recall | 全局语义搜索 | search.md |
| POST | /open/api/v1/resource/recall/knowledge | 知识库语义搜索 | search.md |
知识库
| 方法 | 路径 | 说明 | 详细文档 |
|---|---|---|---|
| GET | /open/api/v1/resource/knowledge/list | 我的知识库列表 | knowledge.md |
| GET | /open/api/v1/resource/knowledge/subscribe/list | 订阅知识库列表 | knowledge.md |
| POST | /open/api/v1/resource/knowledge/create | 创建知识库 | knowledge.md |
| GET | /open/api/v1/resource/knowledge/notes | 知识库笔记列表 | knowledge.md |
| POST | /open/api/v1/resource/knowledge/note/batch-add | 添加笔记到知识库 | knowledge.md |
| POST | /open/api/v1/resource/knowledge/note/remove | 从知识库移除笔记 | knowledge.md |
| GET | /open/api/v1/resource/knowledge/bloggers | 知识库博主列表 | knowledge.md |
| GET | /open/api/v1/resource/knowledge/blogger/contents | 博主内容列表 | knowledge.md |
| GET | /open/api/v1/resource/knowledge/blogger/content/detail | 博主内容详情 | knowledge.md |
| GET | /open/api/v1/resource/knowledge/lives | 知识库直播列表 | knowledge.md |
| GET | /open/api/v1/resource/knowledge/live/detail | 直播详情 | knowledge.md |
| POST | /open/api/v1/resource/knowledge/live/follow | 关注直播 | knowledge.md |
通用错误处理
{
"success": false,
"error": {
"code": 10000,
"message": "参数错误",
"reason": "invalid_request",
"retryable": false,
"field": "parent_id",
"constraint": "non_negative_decimal_integer",
"expected_type": "decimal string or JSON integer"
},
"request_id": "xxx"
}
| 错误码 | 说明 | 处理方式 |
|---|---|---|
| 10000 | 参数错误 | 检查请求参数 |
| 10004 | 未授权 | 检查 API Key 和 Client ID,或重新授权 |
| 10100 | 通用数据不存在 | 确认资源 ID 正确 |
| 10500 | 笔记不存在 | 确认 note_id 正确,禁止编造 ID |
| 10502 | 幂等键冲突 | 同一个键只能对应完全相同的请求 |
| 10503 | 相同请求处理中 | 保持请求不变,稍后使用同一幂等键重试 |
| 10504 | 幂等服务暂不可用 | 保持请求不变,稍后使用同一幂等键重试 |
| 10201 | 非会员 | 引导开通:https://www.biji.com/checkout?product_alias=9Ab36BB3ZD&spm=openapi_skill |
| 10202 | QPS 限流 | 降低频率,查看 rate_limit 字段 |
| 30000 | 服务调用失败 | 稍后重试 |
| 50000 | 系统错误 | 稍后重试 |
详细错误码和限流结构见 references/api-details.md。
常见问题
- 什么情况下会启用本技能?
- 仅在用户明确提到「得到大脑」「Get笔记」「我的笔记/知识库」或使用 /note 指令时才会启用。普通对话中单独的「保存」「搜一下」等不会触发。
- 支持哪些操作?
- 共六条指令路由:/note save 保存文本/链接/图片笔记,/note search 全局与知识库语义搜索,/note list 列表浏览与编辑,/note kb 知识库 CRUD 与订阅,/note tag 标签增删,/note config 配置凭证。
- 非会员账号可以使用吗?
- API 返回 not_member 或错误码 10201 时,会引导用户前往得到大脑开通页完成订阅后再继续操作。
相关技能
把 YouTube 视频整理成带章节、时间戳和要点的 Markdown 摘要
按原话记录日记条目,按节奏复盘,只在证据达标时才识别重复模式。
命令行批量抓取抖音公开数据:关键词搜索、博主作品、评论、热榜一站式搞定。
维护一份本地私人通讯录,记下每个人的身份与联络时机。
通过多轮对话打磨复杂想法的思考伙伴。