核心用法
vibe-notionbot 是一款基于 TypeScript 的 CLI 工具,封装了 Notion 官方 API,使 AI Agent 和人类用户能够以标准化方式与 Notion 工作区交互。与兄弟工具 vibe-notion(使用非官方私有 API)不同,此 CLI 采用官方版本化 API,稳定性更高,但需要手动配置 Integration Token。
主要能力矩阵:
- 页面管理:创建、更新、归档、属性查询,支持 Markdown 文件直接导入(含本地图片自动上传)
- 数据库操作:Schema 查询、条件过滤、排序、分页查询,以及数据库创建与属性更新
- 区块编辑:层级化区块追加(支持
--before/--after精准定位)、Markdown 嵌套列表解析、文件上传为 image/file 区块 - 批量操作:
batch命令支持单次调用执行最多 11 类写操作(页面/区块/数据库/评论的增删改),通过--file处理大规模 JSON 指令集,内置多阶段批处理策略解决跨引用依赖 - 搜索与协作:全工作区搜索(按类型过滤)、用户列表、评论线程管理
关键设计约束:
- 零脚本原则:明确禁止编写任何语言(Python/TS/Bash)的循环脚本调用 API,所有批量场景必须通过
batch命令完成 - CLI 唯一入口:禁止直接调用 Notion HTTP API 或使用
@notionhq/client,以规避凭证泄露和滥用检测风险
显著优点
1. 官方 API 背书:基于 2022-06-28 版本 API,享受 Notion 的版本稳定性承诺,不会因私有接口变更而失效
2. Markdown 原生支持:可直接将 .md 文件连同本地图片批量导入为 Notion 页面,保留层级结构,大幅降低内容迁移成本
3. 批量原子化:batch 命令将多次写操作合并为单次 CLI 调用,显著降低 Token 消耗和 API 调用次数;失败时提供精确索引便于断点续传
4. 多阶段引用解析:通过"先创建、后关联"的两阶段批处理,解决新建页面/数据库间的交叉引用问题,无需编写脚本
5. 精准区块插入:支持 --before 和 --after 参数在任意位置插入区块,突破 Notion API 仅支持尾部追加的限制
潜在缺点与局限性
- 功能取舍:相比
vibe-notion,不支持视图管理(View CRUD)、工作区列表查询,需根据场景在两者间选择 - OAuth 缺失:仅支持 Integration Token,无法支持 OAuth 流程,对多用户场景或临时授权不够友好
- 速率限制敏感:官方 API 存在请求频率上限,大规模批量操作(30+)需手动拆分为 ~25 规模的 chunk,增加调用复杂度
- 属性更新简化:命令行更新页面属性仅支持简单键值对,复杂结构化数据需使用原始 JSON
- 手动凭证配置:需用户主动在 Notion Developer Portal 创建 Integration 并分享页面权限,入门门槛高于自动提取
token_v2的方案
适合人群
- 需要稳定集成的开发者:对 API 稳定性要求高,不愿承担非官方接口的变更风险
- 内容自动化迁移场景:频繁需要将 Markdown 文档(尤其含图片)批量导入 Notion 的内容团队
- AI Agent 工作流构建者:希望通过标准化 CLI 而非脚本编程,实现 Notion 工作区的可编程管理
- 多阶段数据流水线:需要在一次操作中创建大量互相关联的页面/数据库,且希望避免编写复杂脚本的用户
常规风险
| 风险类别 | 具体描述 | 缓解措施 |
|---------|---------|---------|
| **凭证泄露** | `NOTION_TOKEN` 若被硬编码或日志泄露,可导致工作区数据暴露 | 严格通过环境变量注入,禁止在脚本中明文存储 |
| **误操作覆盖** | `batch` 失败后的部分成功状态若未正确处理,可能导致重复创建或遗漏 | 每次 batch 后解析 JSON 输出,利用 `index` 字段实现断点续传 |
| **速率限制中断** | 大规模操作触发 429 错误,中断批处理流程 | 主动将操作拆分为 25-30 规模的 chunk,失败后仅重试未处理部分 |
| **权限范围失控** | Integration Token 默认仅访问用户明确分享的页面,权限配置错误导致 `object_not_found` | 操作前验证 `auth status`,确保目标页面已分享给 Integration |
| **数据残留** | `page archive` 实际为软删除,敏感数据可能通过恢复机制留存 | 对极高敏感场景,需结合 Notion 企业版的数据治理策略 |
决策建议
若用户已安装 Notion 桌面应用且追求功能全面性(视图管理、零配置),优先推荐 vibe-notion;若追求稳定合规、Markdown 批量导入、或处于无桌面环境(如 CI/CD 管道),则 vibe-notionbot 为正确选择。两者可在同一项目中按需切换,但严禁混用直接 API 调用。