openclaw 网盘下载
OpenClaw

技能详情(站内镜像,无评论)

首页 > 技能库 > Notion 1.0.0

Notion API for creating and managing pages, databases, and blocks.

开发与 DevOps

许可证:MIT-0

MIT-0 ·免费使用、修改和重新分发。无需归因。

版本:v1.0.0

统计:⭐ 0 · 307 · 17 current installs · 21 all-time installs

0

安装量(当前) 21

🛡 VirusTotal :良性 · OpenClaw :可疑

Package:7revor/notion-1-0-0

安全扫描(ClawHub)

  • VirusTotal :良性
  • OpenClaw :可疑

OpenClaw 评估

The skill appears to be a simple Notion API how-to, but its runtime instructions access and create a local secret file while the skill metadata does not declare any required credential — plus a small owner-id mismatch — so the package is internally inconsistent and warrants caution.

目的

The skill's name/description (Notion API client) matches the provided curl examples and operations. However, the metadata declares no required credentials while the instructions clearly require a Notion API key stored at ~/.config/notion/api_key. This mismatch is likely an oversight but is inconsistent.

说明范围

SKILL.md instructs the agent/user to create a file in ~/.config/notion and to read that file (NOTION_KEY=$(cat ~/.config/notion/api_key)). The instructions therefore access local filesystem state not declared in metadata and also instruct writing a plaintext secret file without guidance on secure file permissions. Other than the secret file and API calls to api.notion.com, instructions stay within expected Notion usage.

安装机制

No install spec and no bundled code — instruction-only skill — so nothing is written to disk by the platform installer beyond the agent following the prose. This is lowest-risk from an install perspective.

证书

The skill requires a Notion API key in practice but declares no primary credential or required env vars. The SKILL.md uses a local file containing the secret instead of declaring a secret env var or platform-managed credential. That omission reduces transparency about what credentials will be accessed and how.

持久

The skill does not request always:true and does not modify other skills. Its only persistent action implied is instructing the user to create a local config file for the API key, which is normal for API clients.

安装(复制给龙虾 AI)

将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。

请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「Notion 1.0.0」。简介:Notion API for creating and managing pages, databases, and blocks.。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/7revor/notion-1-0-0/SKILL.md
(来源:yingzhi8.cn 技能库)

SKILL.md

打开原始 SKILL.md(GitHub raw)

---
name: notion
description: Notion API for creating and managing pages, databases, and blocks.
homepage: https://developers.notion.com
metadata: {"clawdbot":{"emoji":"📝"}}
---

# notion

Use the Notion API to create/read/update pages, data sources (databases), and blocks.

## Setup

1. Create an integration at https://notion.so/my-integrations
2. Copy the API key (starts with `ntn_` or `secret_`)
3. Store it:
```bash
mkdir -p ~/.config/notion
echo "ntn_your_key_here" > ~/.config/notion/api_key
```
4. Share target pages/databases with your integration (click "..." → "Connect to" → your integration name)

## API Basics

All requests need:
```bash
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"
```

> **Note:** The `Notion-Version` header is required. This skill uses `2025-09-03` (latest). In this version, databases are called "data sources" in the API.

## Common Operations

**Search for pages and data sources:**
```bash
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"}'
```

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

**Get page content (blocks):**
```bash
curl "https://api.notion.com/v1/blocks/{page_id}/children" 
  -H "Authorization: Bearer $NOTION_KEY" 
  -H "Notion-Version: 2025-09-03"
```

**Create page in a data source:**
```bash
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"}}
    }
  }'
```

**Query a data source (database):**
```bash
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"}]
  }'
```

**Create a data source (database):**
```bash
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": {}}
    }
  }'
```

**Update page properties:**
```bash
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"}}}}'
```

**Add blocks to page:**
```bash
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"}}]}}
    ]
  }'
```

## Property Types

Common property formats for database items:
- **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": "a@b.com"}`
- **Relation:** `{"relation": [{"id": "page_id"}]}`

## Key Differences in 2025-09-03

- **Databases → Data Sources:** Use `/data_sources/` endpoints for queries and retrieval
- **Two IDs:** Each database now has both a `database_id` and a `data_source_id`
  - Use `database_id` when creating pages (`parent: {"database_id": "..."}`)
  - Use `data_source_id` when querying (`POST /v1/data_sources/{id}/query`)
- **Search results:** Databases return as `"object": "data_source"` with their `data_source_id`
- **Parent in responses:** Pages show `parent.data_source_id` alongside `parent.database_id`
- **Finding the data_source_id:** Search for the database, or call `GET /v1/data_sources/{data_source_id}`

## Notes

- Page/database IDs are UUIDs (with or without dashes)
- The API cannot set database view filters — that's UI-only
- Rate limit: ~3 requests/second average
- Use `is_inline: true` when creating data sources to embed them in pages