- Productivity
- v1.0.0
- notion
- wiki
- databases
- knowledge-base
Notion
Create and manage Notion pages, databases, and wikis. Search content, update properties, and organize knowledge bases.
SKILL.md
Notion Skill
Create and manage Notion workspaces, pages, databases, and content blocks. Search your knowledge base, organize wikis, and maintain structured databases with properties and filters.
Dashboard Connection Required This skill requires Notion to be connected via the MyClawBots dashboard. You'll need a Notion integration token configured in the proxy. All requests use
${PROXY_URL}and$PROXY_API_KEYfrom your environment.
Prerequisites
- Notion workspace access (free or paid plan)
- Notion integration created and connected via dashboard
${PROXY_URL}and$PROXY_API_KEYenvironment variables configured- Appropriate page/database permissions in Notion
Dependencies
| Dependency | Required? | Why |
|---|---|---|
| Notion workspace connected via dashboard | Yes | Enables access to Notion pages and databases |
${PROXY_URL} and $PROXY_API_KEY |
Yes | Required for proxy authentication |
Pre-flight checks:
- Verify Notion workspace is configured in the MyClawBots dashboard with an integration token
- Confirm
${PROXY_URL}and$PROXY_API_KEYenvironment variables are set - Ensure appropriate permissions are granted to the Notion integration for target pages/databases
How It Works
This skill provides agent-friendly access to Notion's core operations through a REST API proxy. Authentication is handled automatically โ you simply use curl with the proxy endpoint and API key.
The skill supports:
- Search: Find pages and databases by keyword
- Page Management: Create, read, update, and archive pages
- Content Blocks: Work with text, headings, lists, code, tables, and more
- Database Operations: Query databases, add/update rows, manage properties
- Organization: Use icons and covers to structure your workspace
Available Tools
1. Search Pages and Databases
Search across your Notion workspace for pages and databases by keyword.
curl -X GET "${PROXY_URL}/notion/search?query=meeting%20notes&limit=10" \
-H "Authorization: Bearer $PROXY_API_KEY"
Parameters:
query: Search term (required)limit: Maximum results, default 10 (optional)
Returns: List of matching pages and databases with IDs, titles, and types.
2. Get Page Content
Retrieve the content blocks from a specific page.
curl -X GET "${PROXY_URL}/notion/pages/page_id" \
-H "Authorization: Bearer $PROXY_API_KEY"
Parameters:
page_id: Notion page ID (required)
Returns: Page metadata (title, icon, cover) and all content blocks with types and properties.
3. Create Page
Create a new page in Notion with optional content blocks, icon, and cover image.
curl -X POST "${PROXY_URL}/notion/pages" \
-H "Authorization: Bearer $PROXY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"parent_id": "workspace_id_or_page_id",
"title": "Project Kickoff Meeting",
"icon": "๐",
"cover": "https://example.com/cover.jpg",
"content_blocks": [
{
"type": "heading_1",
"text": "Project Overview"
},
{
"type": "paragraph",
"text": "This project aims to..."
},
{
"type": "bulleted_list_item",
"text": "Goal 1"
},
{
"type": "bulleted_list_item",
"text": "Goal 2"
}
]
}'
Request Body:
parent_id: Notion page or workspace ID (required)title: Page title (required)content_blocks: Array of block objects (optional)icon: Emoji or URL (optional)cover: Cover image URL (optional)
Returns: Created page ID and metadata.
4. Update Page
Modify page properties, title, icon, cover, and content blocks.
curl -X PUT "${PROXY_URL}/notion/pages/page_id" \
-H "Authorization: Bearer $PROXY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Updated Title",
"icon": "๐",
"properties": {
"Status": "In Progress",
"Owner": "John Doe"
},
"content_blocks": [
{
"type": "paragraph",
"text": "Updated content"
}
]
}'
Request Body:
- Any combination of:
title,icon,properties,content_blocks
Returns: Updated page metadata.
5. Archive Page
Archive (soft-delete) a page. Use before destructive operations.
curl -X DELETE "${PROXY_URL}/notion/pages/page_id" \
-H "Authorization: Bearer $PROXY_API_KEY"
Parameters:
page_id: Notion page ID (required)
Returns: Confirmation of archival.
6. Query Database
Retrieve rows from a database with optional filtering, sorting, and limits.
curl -X GET "${PROXY_URL}/notion/databases/database_id/query" \
-H "Authorization: Bearer $PROXY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"filter": {
"property": "Status",
"select": {
"equals": "Open"
}
},
"sorts": [
{
"property": "Due Date",
"direction": "ascending"
}
],
"limit": 25
}'
Request Body:
filter: Property filter object (optional)sorts: Array of sort specs with property and direction (optional)limit: Max rows to return, default 100 (optional)
Returns: Array of database rows with all properties.
7. Add Database Row
Insert a new row into a Notion database with property values.
curl -X POST "${PROXY_URL}/notion/databases/database_id/rows" \
-H "Authorization: Bearer $PROXY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"Name": "Q2 Planning",
"Status": "In Progress",
"Owner": "Sarah Chen",
"Due Date": "2026-06-30",
"Priority": "High"
}
}'
Request Body:
properties: Object with property names as keys and values (required)
Returns: Created row with ID and properties.
8. Update Database Row
Modify an existing database row's properties.
curl -X PUT "${PROXY_URL}/notion/databases/database_id/rows/row_id" \
-H "Authorization: Bearer $PROXY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"properties": {
"Status": "Completed",
"Owner": "Alex Park"
}
}'
Request Body:
properties: Object with properties to update (required)
Returns: Updated row metadata.
9. List Databases
Get all databases in the connected Notion workspace.
curl -X GET "${PROXY_URL}/notion/databases" \
-H "Authorization: Bearer $PROXY_API_KEY"
Returns: Array of database IDs, titles, and property schemas.
10. Append Blocks to Page
Add content blocks to the end of an existing page.
curl -X POST "${PROXY_URL}/notion/blocks/page_id/children" \
-H "Authorization: Bearer $PROXY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"blocks": [
{
"type": "heading_2",
"text": "New Section"
},
{
"type": "paragraph",
"text": "Content here"
},
{
"type": "code",
"text": "const x = 42;",
"language": "javascript"
},
{
"type": "quote",
"text": "Great things ahead"
}
]
}'
Request Body:
blocks: Array of block objects (required)
Returns: Created block IDs and positions.
Content Block Types
Use these type values when creating or updating blocks:
| Type | Description | Extra Fields |
|---|---|---|
paragraph |
Regular text paragraph | text |
heading_1 |
Top-level heading (H1) | text |
heading_2 |
Second-level heading (H2) | text |
heading_3 |
Third-level heading (H3) | text |
bulleted_list_item |
Bullet point | text |
numbered_list_item |
Numbered item | text |
to_do |
Checkbox task | text, checked (boolean) |
toggle |
Expandable toggle | text, children (block array) |
code |
Code block | text, language |
quote |
Block quote | text |
callout |
Highlighted callout | text, icon, color |
divider |
Horizontal line | (none) |
table |
Data table | cells (array of arrays) |
Important Rules
-
Search Before Creating: Always search for existing pages/databases before creating duplicates. Use the search tool first.
-
Use Appropriate Block Types: Choose the right block type for your content (headings for structure, lists for enumerations, code for code samples).
-
Confirm Before Archiving: Always confirm archival of pages. Archived pages can be restored but it's disruptive.
-
Structure with Headings: Use
heading_1,heading_2, andheading_3to organize page content logically. -
Property Consistency: When updating database rows, use property names that exactly match the database schema.
-
Icon and Cover Use: Use icons and covers to make pages visually distinct and easier to scan in workspace.
-
Batch Updates: Group related block updates in a single append operation when possible.
-
Archive Over Delete: Use archival rather than permanent deletion to maintain workspace history.