mcpField
N
notion-automation

notion-automation

github.com/composiohq生产力78.3k81 次安装14 周前更新
代码仓库

关于 notion-automation

通过 Composio 的 Notion 工具包管理页面、数据库、内容块、评论和用户的工作流技能,面向使用 Rube MCP 且已连接 Notion 的 Agent。

主要功能

  1. 01创建、更新和归档页面
  2. 02查询数据库并管理记录
  3. 03读取、追加、替换和删除页面内容块
  4. 04创建数据库并更新架构
  5. 05列出用户并管理页面评论

适用场景

  1. 01维护项目页面及其内容
  2. 02查询数据库并添加或更新记录
  3. 03查看或添加页面评论

MCP 相关

通过 Rube MCP 调用 Composio 的 Notion 工具包。运行工作流前,客户端需连接 Rube MCP 并激活 Notion 连接。

安装

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

$npx skills add https://github.com/composiohq/awesome-claude-skills --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