mcpField
N
notion-automation

notion-automation

github.com/davepoon生产力3.7k122 次安装2 天前更新
代码仓库

关于 notion-automation

notion-automation 是通过 Rube MCP 调用 Composio Notion 工具包的自动化技能,适用于管理 Notion 内容的用户,涵盖页面、数据库及工作区操作。

主要功能

  1. 01创建、更新和归档页面
  2. 02查询数据库并管理记录
  3. 03读取和编辑页面内容块
  4. 04创建数据库并修改结构
  5. 05管理用户和页面评论

适用场景

  1. 01在 Notion 工作区添加或修改页面
  2. 02筛选数据库记录并插入行
  3. 03追加或替换页面内容
  4. 04查看评论或列出工作区用户

MCP 相关

通过 Rube MCP 使用 Composio 的 Notion 工具包。工作流要求先查询可用工具,并建立有效的 Notion 连接。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davepoon/buildwithclaude --skill notion-automation

安装后在 Claude Code 中输入/notion-automation确认已加载。

详细介绍

通过 Rube MCP 自动化 Notion

通过 Rube MCP 使用 Composio 的 Notion 工具包自动执行 Notion 操作。

工具包文档:composio.dev/toolkits/notion

前置条件

  • 必须已连接 Rube MCP(可使用 RUBE_SEARCH_TOOLS)
  • 通过 RUBE_MANAGE_CONNECTIONS 建立有效的 Notion 连接,并使用工具包 notion
  • 始终先调用 RUBE_SEARCH_TOOLS,以获取当前工具架构

设置

获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务。无需 API 密钥,只需添加端点即可使用。

  1. 确认 RUBE_SEARCH_TOOLS 能够响应,以验证 Rube MCP 是否可用
  2. 使用工具包 notion 调用 RUBE_MANAGE_CONNECTIONS
  3. 如果连接状态不是 ACTIVE,请通过返回的身份验证链接完成 Notion OAuth
  4. 确认连接状态显示为 ACTIVE 后,再运行任何工作流

核心工作流

1. 创建和管理页面

适用场景:用户想要创建、更新或归档 Notion 页面

工具调用顺序:

  1. NOTION_SEARCH_NOTION_PAGE - 查找父页面或现有页面 [前置条件]
  2. NOTION_CREATE_NOTION_PAGE - 在父页面下创建新页面 [可选]
  3. NOTION_RETRIEVE_PAGE - 获取页面元数据/属性 [可选]
  4. NOTION_UPDATE_PAGE - 更新页面属性、标题、图标、封面 [可选]
  5. NOTION_ARCHIVE_NOTION_PAGE - 软删除(归档)页面 [可选]

关键参数:

  • query:用于 SEARCH_NOTION_PAGE 的搜索文本
  • parent_id:父页面或数据库 ID
  • page_id:用于检索/更新/归档的页面 ID
  • properties:符合父级架构的页面属性值

注意事项:

  • RETRIEVE_PAGE 仅返回元数据/属性,不返回正文内容;如需页面正文,请使用 FETCH_BLOCK_CONTENTS
  • ARCHIVE_NOTION_PAGE 执行的是软删除(设置 archived=true),并非永久删除
  • 如果未完整分页处理 has_more/next_cursor,范围较广的搜索结果可能看起来不完整
2. 查询和管理数据库

适用场景:用户想要查询数据库行、插入条目或更新记录

工具调用顺序:

  1. NOTION_SEARCH_NOTION_PAGE - 按名称查找数据库 [前置条件]
  2. NOTION_FETCH_DATABASE - 检查架构和属性 [前置条件]
  3. NOTION_QUERY_DATABASE / NOTION_QUERY_DATABASE_WITH_FILTER - 查询行 [必需]
  4. NOTION_INSERT_ROW_DATABASE - 添加新条目 [可选]
  5. NOTION_UPDATE_ROW_DATABASE - 更新现有条目 [可选]

关键参数:

  • database_id:数据库 ID(来自搜索结果或 URL)
  • filter:符合 Notion 筛选语法的筛选对象
  • sorts:排序对象数组
  • start_cursor:上一条响应中的分页游标
  • properties:插入/更新时符合数据库架构的属性值

注意事项:

  • 404 object_not_found 通常表示 database_id 错误,或该数据库未与集成共享
  • 结果采用分页方式;忽略 has_more/next_cursor 会导致读取结果被静默截断
  • 架构不匹配或缺少必需属性会导致 400 validation_error
  • 不能通过 INSERT_ROW_DATABASE 设置公式字段和只读字段
  • 筛选器中的属性名称必须与架构完全一致(区分大小写)
3. 管理区块和页面内容

使用场景:用户想要读取、追加或修改页面中的内容区块

工具调用顺序:

  1. NOTION_FETCH_BLOCK_CONTENTS - 读取页面的子区块 [必需]
  2. NOTION_ADD_MULTIPLE_PAGE_CONTENT - 向页面追加区块 [可选]
  3. NOTION_APPEND_TEXT_BLOCKS - 追加纯文本区块 [可选]
  4. NOTION_REPLACE_PAGE_CONTENT - 替换页面的全部内容 [可选]
  5. NOTION_DELETE_BLOCK - 移除指定区块 [可选]

关键参数:

  • block_id / page_id:目标页面或区块的 ID
  • content_blocks:区块对象数组(不是 child_blocks)
  • text:用于 APPEND_TEXT_BLOCKS 的纯文本内容

注意事项:

  • 使用 content_blocks 参数,而不是 child_blocks——后者会导致验证失败
  • 对已归档页面调用 ADD_MULTIPLE_PAGE_CONTENT 会失败;应先通过 UPDATE_PAGE 取消归档
  • 创建的区块位于 response.data.results 中;保存区块 ID,以便后续编辑
  • DELETE_BLOCK 执行的是归档(archived=true),而非永久删除
4. 管理数据库架构

使用场景:用户想要创建数据库或修改其结构

工具调用顺序:

  1. NOTION_FETCH_DATABASE - 检查当前架构 [前置步骤]
  2. NOTION_CREATE_DATABASE - 创建新数据库 [可选]
  3. NOTION_UPDATE_SCHEMA_DATABASE - 修改数据库属性 [可选]

关键参数:

  • parent_id:新数据库的父页面 ID
  • title:数据库标题
  • properties:包含类型和选项的属性定义
  • database_id:用于更新架构的数据库 ID

注意事项:

  • 无法通过 UPDATE_SCHEMA 更改属性类型;必须创建新属性并迁移数据
  • 公式、汇总和关联属性有复杂的配置要求
5. 管理用户和评论

使用场景:用户想要列出工作区用户或管理页面评论

工具调用顺序:

  1. NOTION_LIST_USERS - 列出所有工作区用户 [可选]
  2. NOTION_GET_ABOUT_ME - 获取当前已通过身份验证的用户 [可选]
  3. NOTION_CREATE_COMMENT - 为页面添加评论 [可选]
  4. NOTION_FETCH_COMMENTS - 列出页面评论 [可选]

关键参数:

  • page_id:评论对应的页面 ID(也称为 discussion_id)
  • rich_text:以富文本数组形式表示的评论内容

注意事项:

  • 评论关联到页面,而不是单个区块
  • people 类型属性筛选器需要使用 LIST_USERS 返回的用户 ID

常见模式

ID 解析

页面/数据库名称 -> ID:

1. Call NOTION_SEARCH_NOTION_PAGE with query=name
2. Paginate with has_more/next_cursor until found
3. Extract id from matching result

数据库架构检查:

1. Call NOTION_FETCH_DATABASE with database_id
2. Extract properties object for field names and types
3. Use exact property names in queries and inserts
分页
  • 设置 page_size 以指定每页结果数(最多 100)
  • 检查响应中的 has_more 布尔值
  • 在下一次请求中传入 start_cursor 或 next_cursor
  • 持续请求,直到 has_more 为 false
Notion 筛选语法

单个筛选条件:

{"property": "Status", "select": {"equals": "Done"}}

组合筛选条件:

{"and": [
  {"property": "Status", "select": {"equals": "In Progress"}},
  {"property": "Assignee", "people": {"contains": "user-id"}}
]}

已知注意事项

集成共享:

  • 页面和数据库必须与 Notion 集成共享,才能被访问
  • 如果项目未与集成共享,标题查询可能返回 0 条结果

属性类型:

  • 属性名称区分大小写,且必须与架构完全一致
  • Formula、rollup 和 created_time 字段为只读
  • Select/multi-select 的值必须与现有选项匹配,除非正在创建新选项

响应解析:

  • 响应数据可能嵌套在 data_preview 或 data.results 下
  • 应采用防御式解析,并为不同嵌套层级提供回退方案

Quick Reference

TaskTool SlugKey Params
Search pages/databasesNOTION_SEARCH_NOTION_PAGEquery
Create pageNOTION_CREATE_NOTION_PAGEparent_id, properties
Get page metadataNOTION_RETRIEVE_PAGEpage_id
Update pageNOTION_UPDATE_PAGEpage_id, properties
Archive pageNOTION_ARCHIVE_NOTION_PAGEpage_id
Duplicate pageNOTION_DUPLICATE_PAGEpage_id
Get page blocksNOTION_FETCH_BLOCK_CONTENTSblock_id
Append blocksNOTION_ADD_MULTIPLE_PAGE_CONTENTpage_id, content_blocks
Append textNOTION_APPEND_TEXT_BLOCKSpage_id, text
Replace contentNOTION_REPLACE_PAGE_CONTENTpage_id, content_blocks
Delete blockNOTION_DELETE_BLOCKblock_id
Query databaseNOTION_QUERY_DATABASEdatabase_id, filter, sorts
Query with filterNOTION_QUERY_DATABASE_WITH_FILTERdatabase_id, filter
Insert rowNOTION_INSERT_ROW_DATABASEdatabase_id, properties
Update rowNOTION_UPDATE_ROW_DATABASEpage_id, properties
Get database schemaNOTION_FETCH_DATABASEdatabase_id
Create databaseNOTION_CREATE_DATABASEparent_id, title, properties
Update schemaNOTION_UPDATE_SCHEMA_DATABASEdatabase_id, properties
List usersNOTION_LIST_USERS(none)
Create commentNOTION_CREATE_COMMENTpage_id, rich_text
List commentsNOTION_FETCH_COMMENTSpage_id

Powered by Composio

评论

支持 Markdown