← Back to Skills Marketplace
qfish

notion-test

by qfish · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
275
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install notion-test
Description
Notion API for creating and managing pages, databases, and blocks.
README (SKILL.md)

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:
mkdir -p ~/.config/notion
echo "ntn_your_key_here" > ~/.config/notion/api_key
  1. Share target pages/databases with your integration (click "..." → "Connect to" → your integration name)

API Basics

All requests need:

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:

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:

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

Get page content (blocks):

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:

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):

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):

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:

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:

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": "[email protected]"}
  • 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
Usage Guidance
This skill is an instruction-only Notion API guide and appears coherent with its purpose, but consider the following before installing/using: - The instructions expect a Notion integration key; create an integration with the minimum scopes needed and share only the pages/databases necessary. - The SKILL.md suggests storing the key in ~/.config/notion/api_key using echo; prefer creating the file with restrictive permissions (chmod 600) or use a secrets manager or environment variable to avoid leaving plaintext credentials accessible to other users/processes. - The skill metadata does not declare the required credential (primaryEnv), so treat the missing declaration as a small quality issue rather than a security exploit; verify you understand where your token is stored and how the agent will access it. - Because it's instruction-only, there is no downloaded code, but the agent (or a user following the guide) will read the local key and send it to api.notion.com — ensure you trust the environment and the agent's permissions before enabling autonomous actions. - Rotate the token if you stop using the integration or suspect misuse.
Capability Analysis
Type: OpenClaw Skill Name: notion-test Version: 1.0.0 The skill bundle provides standard instructions and curl commands for interacting with the Notion API. It includes setup steps for storing an API key in ~/.config/notion/api_key and demonstrates common operations like searching, creating, and updating pages or databases (referred to as 'data sources' in the provided documentation). No malicious behavior, data exfiltration, or obfuscation was detected in SKILL.md or _meta.json.
Capability Assessment
Purpose & Capability
Name/description match the instructions: the skill shows how to call the Notion API to create/read/update pages, data sources, and blocks. The actions and endpoints in the instructions are consistent with a Notion integration and the stated purpose.
Instruction Scope
Instructions tell the agent/user to store a Notion API key at ~/.config/notion/api_key and to read it into NOTION_KEY for curl calls. This is expected for a Notion integration, but the guide suggests writing the key to a plain file via echo without mentioning file permissions — a minor operational/security caveat. The instructions do not reference other system files, unrelated credentials, or external endpoints besides api.notion.com.
Install Mechanism
No install spec and no code files (instruction-only). This is lowest-risk: nothing is downloaded or written by an installer step.
Credentials
The skill requires a Notion API token in practice, but the registry metadata lists no required env vars or primary credential. The only credential used is the Notion integration key (ntn_/secret_), which is appropriate for the functionality and there are no unrelated credential requests.
Persistence & Privilege
always is false, no install steps, and the skill does not request persistent or elevated privileges. It does instruct use of a local API key file (its own config area), which is normal for this kind of skill.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install notion-test
  3. After installation, invoke the skill by name or use /notion-test
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
v1.0.0
Metadata
Slug notion-test
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is notion-test?

Notion API for creating and managing pages, databases, and blocks. It is an AI Agent Skill for Claude Code / OpenClaw, with 275 downloads so far.

How do I install notion-test?

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

Is notion-test free?

Yes, notion-test is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does notion-test support?

notion-test is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created notion-test?

It is built and maintained by qfish (@qfish); the current version is v1.0.0.

💬 Comments