🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

Notion Workspace

by @mrnsmh

Manage Notion workspace — search pages, read content, create pages in databases, append blocks, and list databases. Uses Notion REST API directly via urllib/...

Versionv0.1.0
Downloads1,011
TERMINAL
clawhub install openclaw-skill-notion-workspace

📖 About This Skill


name: notion-workspace description: Manage Notion workspace — search pages, read content, create pages in databases, append blocks, and list databases. Uses Notion REST API directly via urllib/requests. license: MIT metadata: author: Jack2 version: 1.0.0 tags: notion, productivity, notes, database env: NOTION_TOKEN

notion-workspace Skill

Manage your Notion workspace from the CLI or as an importable Python module.

Setup

Set your Notion integration token:

export NOTION_TOKEN=ntn_...

Or the default token embedded in the script will be used.

Make sure your Notion integration has access to the pages/databases you want to use. In Notion: open a page → Share → Invite your integration.

Usage

Search

python3 scripts/notion.py search "project notes"
python3 scripts/notion.py search "budget" --type database

Read a Page

# Metadata only
python3 scripts/notion.py read PAGE_ID

With block content

python3 scripts/notion.py read PAGE_ID --blocks

Create a Page in a Database

python3 scripts/notion.py create DATABASE_ID --title "New Page Title"

With extra properties

python3 scripts/notion.py create DATABASE_ID --title "Task" --props '{"Status": {"select": {"name": "In Progress"}}}'

Append Text to a Page

python3 scripts/notion.py append PAGE_ID --text "New paragraph content"

List Databases

python3 scripts/notion.py databases

As a Python Module

from scripts.notion import search, read_page_content, create_page, append_blocks, list_databases

Search

results = search("meeting notes") for item in results["results"]: print(item["id"], item["object"])

Read page + blocks

data = read_page_content("PAGE_ID") print(data["page"]) print(data["blocks"])

Create page

page = create_page("DATABASE_ID", "My New Page") print(page["url"])

Append text

append_blocks("PAGE_ID", "This is a new paragraph.")

List databases

dbs = list_databases()

Files

| File | Purpose | |------|---------| | scripts/notion.py | CLI + importable module | | references/notion-api.md | Notion API quick reference |

Notes

  • Uses urllib (stdlib only, no SDK needed)
  • Notion API version: 2022-06-28
  • Rate limit: ~3 req/sec
  • Page IDs can be with or without dashes (both work)
  • 💡 Examples

    Search

    python3 scripts/notion.py search "project notes"
    python3 scripts/notion.py search "budget" --type database
    

    Read a Page

    # Metadata only
    python3 scripts/notion.py read PAGE_ID

    With block content

    python3 scripts/notion.py read PAGE_ID --blocks

    Create a Page in a Database

    python3 scripts/notion.py create DATABASE_ID --title "New Page Title"

    With extra properties

    python3 scripts/notion.py create DATABASE_ID --title "Task" --props '{"Status": {"select": {"name": "In Progress"}}}'

    Append Text to a Page

    python3 scripts/notion.py append PAGE_ID --text "New paragraph content"
    

    List Databases

    python3 scripts/notion.py databases
    

    ⚙️ Configuration

    Set your Notion integration token:

    export NOTION_TOKEN=ntn_...
    

    Or the default token embedded in the script will be used.

    Make sure your Notion integration has access to the pages/databases you want to use. In Notion: open a page → Share → Invite your integration.

    📋 Tips & Best Practices

  • Uses urllib (stdlib only, no SDK needed)
  • Notion API version: 2022-06-28
  • Rate limit: ~3 req/sec
  • Page IDs can be with or without dashes (both work)