SuperAPI AI 工具集

notion

办公与效率

查看项目

更新于 10-15 08:01

技能介绍

用途

Notion 技能用于通过 Notion API 创建和管理页面、数据源(数据库)与区块。它适合需要以编程方式读写 Notion 内容的场景,例如自动创建页面、查询数据库条目、更新页面属性或向页面追加内容。

主要能力

该技能覆盖以下常见操作:

  • 搜索页面和数据源
  • 获取页面
  • 获取页面内容(区块)
  • 在数据源中创建页面
  • 查询数据源(数据库)
  • 创建数据源(数据库)
  • 更新页面属性
  • 向页面添加区块

资料还列出了数据库条目常用的属性格式,包括:标题、富文本、单选、多选、日期、复选框、数字、URL、邮箱、关联。

使用方式

设置

  1. 在 https://notion.so/my-integrations 创建集成。
  2. 复制 API 密钥(以 ntn_ 或 secret_ 开头)。
  3. 保存密钥:
mkdir -p ~/.config/notion
echo "ntn_your_key_here" > ~/.config/notion/api_key
  1. 将目标页面/数据库共享给你的集成(点击“...”→“Connect to”→你的集成名称)。

API 基础

所有请求都需要:

NOTION_KEY=$(cat ~/.config/notion/api_key)
curl -X GET "https://api.notion.com/v1/..." \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json"

注意:Notion-Version 头是必需的。本技能使用 2025-09-03(最新)。在此版本中,数据库在 API 里被称为“data sources”。

常见操作示例

搜索页面和数据源:

curl -X POST "https://api.notion.com/v1/search" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{"query": "page title"}'

获取页面:

curl "https://api.notion.com/v1/pages/{page_id}" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03"

获取页面内容(区块):

curl "https://api.notion.com/v1/blocks/{page_id}/children" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03"

在数据源中创建页面:

curl -X POST "https://api.notion.com/v1/pages" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "parent": {"database_id": "xxx"},
    "properties": {
      "Name": {"title": [{"text": {"content": "New Item"}}]},
      "Status": {"select": {"name": "Todo"}}
    }
  }'

查询数据源(数据库):

curl -X POST "https://api.notion.com/v1/data_sources/{data_source_id}/query" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "filter": {"property": "Status", "select": {"equals": "Active"}},
    "sorts": [{"property": "Date", "direction": "descending"}]
  }'

创建数据源(数据库):

curl -X POST "https://api.notion.com/v1/data_sources" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "parent": {"page_id": "xxx"},
    "title": [{"text": {"content": "My Database"}}],
    "properties": {
      "Name": {"title": {}},
      "Status": {"select": {"options": [{"name": "Todo"}, {"name": "Done"}]}},
      "Date": {"date": {}}
    }
  }'

更新页面属性:

curl -X PATCH "https://api.notion.com/v1/pages/{page_id}" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{"properties": {"Status": {"select": {"name": "Done"}}}}'

向页面添加区块:

curl -X PATCH "https://api.notion.com/v1/blocks/{page_id}/children" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H "Notion-Version: 2025-09-03" \
  -H "Content-Type: application/json" \
  -d '{
    "children": [
      {"object": "block", "type": "paragraph", "paragraph": {"rich_text": [{"text": {"content": "Hello"}}]}}
    ]
  }'

属性类型

数据库条目的常用属性格式:

  • 标题:{"title": [{"text": {"content": "..."}}]}
  • 富文本:{"rich_text": [{"text": {"content": "..."}}]}
  • 单选:{"select": {"name": "Option"}}
  • 多选:{"multi_select": [{"name": "A"}, {"name": "B"}]}
  • 日期:{"date": {"start": "2024-01-15", "end": "2024-01-16"}}
  • 复选框:{"checkbox": true}
  • 数字:{"number": 42}
  • URL:{"url": "https://..."}
  • 邮箱:{"email": "a@b.com"}
  • 关联:{"relation": [{"id": "page_id"}]}

2025-09-03 版本的关键差异

  • 数据库 → 数据源:查询和检索使用 /data_sources/ 端点。
  • 两个 ID:每个数据库现在同时拥有 database_id 和 data_source_id。
    • 创建页面时使用 database_id(parent: {"database_id": "..."})。
    • 查询时使用 data_source_id(POST /v1/data_sources/{id}/query)。
  • 搜索结果:数据库以 "object": "data_source" 返回,并带有其 data_source_id。
  • 响应中的 parent:页面会同时显示 parent.data_source_id 和 parent.database_id。
  • 查找 data_source_id:搜索该数据库,或调用 GET /v1/data_sources/{data_source_id}。

适用场景

适合需要以脚本或程序方式操作 Notion 内容的场景,例如批量创建页面、按条件查询数据库条目、更新任务状态、向页面追加文本区块等。

限制与注意事项

  • 页面/数据库 ID 是 UUID(可带或不带连字符)。
  • API 无法设置数据库视图过滤器——这只能在 UI 中完成。
  • 速率限制:平均约每秒 3 次请求。
  • 创建数据源时使用 is_inline: true 可将其嵌入页面。