← Back to Skills Marketplace
ionepub

Openclaw Notion Api

by ionepub · GitHub ↗ · v0.1.0
cross-platform ⚠ suspicious
377
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install openclaw-notion-api
Description
Notion API 用于创建和管理页面、数据库和块。包含正确的图片、文件上传功能
README (SKILL.md)

openclaw-notion-api

使用 Notion API 创建/读取/更新页面、数据源(数据库)和块。

Setup(设置)

  1. https://www.notion.so/profile/integrations/internal 创建内部集成
  2. 复制 API 密钥(以 ntn_secret_ 开头)
  3. 存储密钥:
mkdir -p ~/.config/notion
echo "ntn_your_key_here" > ~/.config/notion/api_key
  1. 将目标页面/数据库与集成共享(点击 "..." → "Connect to" → 你的集成名称)

API Basics(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 header 是必需的。本技能使用 2025-09-03(最新版本)。在此版本中,数据库在 API 中称为"数据源"。

Common Operations(常用操作)

搜索页面和数据源:

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": "xxxxxx"},
    "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": [
      {"type": "paragraph", "paragraph": {"rich_text": [{"text": {"content": "Hello"}}]}}
    ]
  }'

Property Types(属性类型)

数据库项的常用属性格式:

  • 标题(Title): {"title": [{"text": {"content": "..."}}]}
  • 富文本(Rich text): {"rich_text": [{"text": {"content": "..."}}]}
  • 选择(Select): {"select": {"name": "Option"}}
  • 多选(Multi-select): {"multi_select": [{"name": "A"}, {"name": "B"}]}
  • 日期(Date): {"date": {"start": "2024-01-15", "end": "2024-01-16"}}
  • 复选框(Checkbox): {"checkbox": true}
  • 数字(Number): {"number": 42}
  • URL: {"url": "https://..."}
  • 邮箱(Email): {"email": "[email protected]"}
  • 关联(Relation): {"relation": [{"id": "page_id"}]}

Key Differences in 2025-09-03(2025-09-03 版本的关键差异)

  • 数据库 → 数据源: 使用 /data_sources/ 端点进行查询和检索
  • 双 ID: 每个数据库现在同时拥有 database_iddata_source_id
    • 创建页面时使用 database_idparent: {"database_id": "..."}
    • 查询时使用 data_source_idPOST /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}

File Upload(文件上传)

使用 Direct Upload 方法上传图片或文件到 Notion(文件大小不超过 20MB)。两者的步骤完全相同,仅在 Step 3 的块类型上有区别。

Step 1: Create File Upload Object(创建文件上传对象)

创建上传对象以获取上传 URL:

curl --request POST \
  --url 'https://api.notion.com/v1/file_uploads' \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Notion-Version: 2025-09-03' \
  --data '{}'

响应包含:

  • id:文件上传 ID(在步骤 3 中使用)
  • upload_url:上传文件内容的 URL

Step 2: Upload File Content(上传文件内容)

使用 multipart/form-data 上传实际的文件:

curl --request POST \
  --url 'https://api.notion.com/v1/file_uploads/{file_upload_id}/send' \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H 'Notion-Version: 2025-09-03' \
  -H 'Content-Type: multipart/form-data' \
  -F "file=@/path/to/file.png"

重要:

  • 使用 POST 方法(不是 PUT)
  • 包含 AuthorizationNotion-Version headers
  • 使用 -F 进行 multipart/form-data
  • 文件大小必须 ≤ 20MB

Step 3: Insert into Page(插入到页面)

将上传的文件作为块添加。根据文件类型选择不同的块类型:

上传图片:

curl --request PATCH \
  --url "https://api.notion.com/v1/blocks/{page_id}/children" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Notion-Version: 2025-09-03' \
  --data '{
    "children": [
      {
        "type": "image",
        "image": {
          "type": "file_upload",
          "file_upload": {
            "id": "{file_upload_id}"
          }
        }
      }
    ]
  }'

上传文件:

curl --request PATCH \
  --url "https://api.notion.com/v1/blocks/{page_id}/children" \
  -H "Authorization: Bearer $NOTION_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Notion-Version: 2025-09-03' \
  --data '{
    "children": [
      {
        "type": "file",
        "file": {
          "type": "file_upload",
          "file_upload": {
            "id": "{file_upload_id}"
          }
        }
      }
    ]
  }'

注意: 不要在块定义中包含 "object": "block"

Common Errors(常见错误)

  • invalid_request_url:检查是否使用了 POST 方法和正确的 URL 格式
  • unauthorized:确保步骤 2 中存在 AuthorizationNotion-Version headers
  • validation_error:必须在附加(步骤 3)之前上传文件(步骤 2)

Notes(注意事项)

  • 页面/数据库 ID 是 UUID(带或不带连字符)
  • API 无法设置数据库视图过滤器 — 这是 UI 专属功能
  • 速率限制:平均约 3 请求/秒
  • 创建数据源时使用 is_inline: true 以将其嵌入页面中
Usage Guidance
This skill appears to be a straightforward Notion API helper, but note two things before installing: (1) although the registry metadata lists no required credentials, the SKILL.md instructs you to create and read a local Notion API key (~/.config/notion/api_key). Treat that key as sensitive — prefer storing it in the platform's secret manager rather than a plaintext file, and set file permissions (chmod 600). (2) Confirm you are comfortable letting the agent read that local file (it will be used to set NOTION_KEY) and that you only share a minimal-scope Notion integration key. If you need higher assurance, ask the skill author to declare the primary credential in metadata or update the instructions to use the platform's secret store instead of encouraging plaintext files.
Capability Analysis
Type: OpenClaw Skill Name: openclaw-notion-api Version: 0.1.0 The OpenClaw Notion API skill bundle is benign. It provides legitimate instructions and `curl` examples for interacting with the official Notion API, including creating/managing pages, databases, and uploading files. The skill requires reading an API key from `~/.config/notion/api_key` and user-specified files for upload, which are necessary for its stated functionality. There is no evidence of data exfiltration to unauthorized endpoints, malicious execution, persistence mechanisms, obfuscation, or prompt injection attempts against the agent to perform actions outside its documented purpose.
Capability Assessment
Purpose & Capability
Name/description and the curl-based examples align with a Notion API integration (creating/reading/updating pages, databases/data_sources, and file uploads). The endpoints referenced (api.notion.com) and described features are consistent with the stated purpose.
Instruction Scope
The SKILL.md instructs the agent to create and read a local file at ~/.config/notion/api_key and to set NOTION_KEY by cat-ing that file before calling Notion APIs. Otherwise the instructions stay focused on Notion endpoints and do not reference unrelated system files or external endpoints. The file-read/write behavior is expected for an API helper but should be explicitly declared.
Install Mechanism
This is instruction-only (no install spec, no code files). That minimizes on-disk execution risk — nothing is downloaded or installed by the skill.
Credentials
The skill requires an API credential (Notion integration key) in practice, but the registry metadata lists no required env vars or primary credential. The SKILL.md asks the user/agent to create and read a plaintext file containing the secret; this mismatch between declared requirements and runtime behavior is an inconsistency and a potential security/privacy concern.
Persistence & Privilege
always is false, no install steps, and the skill does not request persistent platform-level privileges or modify other skills. Autonomous invocation is allowed (platform default) but not combined with other high-risk flags.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install openclaw-notion-api
  3. After installation, invoke the skill by name or use /openclaw-notion-api
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v0.1.0
Initial release of openclaw-notion-api skill. - Provides guides and sample curl commands for Notion API operations including creating, reading, and updating pages, databases (data sources), and blocks. - Documents 2025-09-03 API changes: databases are now "data sources", with new endpoints and dual IDs. - Includes detailed instructions and examples for uploading and attaching files or images (<20MB) via Notion’s new direct file upload method. - Lists common property types and demonstrates their API payload formats. - Details common error scenarios and provides setup instructions for Notion API authentication.
Metadata
Slug openclaw-notion-api
Version 0.1.0
License
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Openclaw Notion Api?

Notion API 用于创建和管理页面、数据库和块。包含正确的图片、文件上传功能. It is an AI Agent Skill for Claude Code / OpenClaw, with 377 downloads so far.

How do I install Openclaw Notion Api?

Run "/install openclaw-notion-api" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Openclaw Notion Api free?

Yes, Openclaw Notion Api is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Openclaw Notion Api support?

Openclaw Notion Api is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Openclaw Notion Api?

It is built and maintained by ionepub (@ionepub); the current version is v0.1.0.

💬 Comments