名称: notion 描述: Notion API用于创建和管理页面、数据库和块。 主页: https://developers.notion.com 元数据: { “otto”: { “表情”: “📝”, “要求”: { “环境”: [“NOTION_API_KEY”] }, “主要环境”: “NOTION_API_KEY” }, }
notion
使用Notion API来创建/读取/更新页面、数据源(数据库)和块。
设置
- 在 https://notion.so/my-integrations 创建集成
- 复制API密钥(以
ntn_或secret_开头) - 存储它:
mkdir -p ~/.config/notion
echo "ntn_your_key_here" > ~/.config/notion/api_key
- 将目标页面/数据库与您的集成分享(点击"…" → “连接到” → 您的集成名称)
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中被称为“数据源”。
常见操作
搜索页面和数据源:
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": "页面标题"}'
获取页面:
curl "https://api.notion.com/v1/pages/{页面_id}" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03"
获取页面内容(块):
curl "https://api.notion.com/v1/blocks/{页面_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": {
"名称": {"title": [{"text": {"content": "新项目"}}]},
"状态": {"select": {"name": "待办"}}
}
}'
查询数据源(数据库):
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": "状态", "select": {"equals": "活跃"}},
"sorts": [{"property": "日期", "direction": "降序"}]
}'
创建数据源(数据库):
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": "我的数据库"}}],
"properties": {
"名称": {"title": {}},
"状态": {"select": {"options": [{"name": "待办"}, {"name": "完成"}]}},
"日期": {"date": {}}
}
}'
更新页面属性:
curl -X PATCH "https://api.notion.com/v1/pages/{页面_id}" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{"properties": {"状态": {"select": {"name": "完成"}}}}'
向页面添加块:
curl -X PATCH "https://api.notion.com/v1/blocks/{页面_id}/children" \
-H "Authorization: Bearer $NOTION_KEY" \
-H "Notion-Version: 2025-09-03" \
-H "Content-Type: application/json" \
-d '{
"children": [
{"object": "block", "type": "段落", "paragraph": {"rich_text": [{"text": {"content": "你好"}}]}}
]
}'
属性类型
数据库项目的常见属性格式:
- 标题:
{"title": [{"text": {"content": "..."}}]} - 富文本:
{"rich_text": [{"text": {"content": "..."}}]} - 选择:
{"select": {"name": "选项"}} - 多选:
{"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": "页面_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.data_source_id和parent.database_id - 找到data_source_id: 搜索数据库,或调用
GET /v1/data_sources/{data_source_id}
注释
- 页面/数据库ID是UUID(带或不带破折号)
- API不能设置数据库视图过滤器 — 那是仅限UI的
- 速率限制:平均约3个请求/秒
- 创建数据源时使用
is_inline: true以嵌入到页面中