PythonClaw notion
Notion API for creating and managing pages, databases, and blocks. Use when: user asks to create a Notion page, query a database, search notes, add content to Notion, or manage Notion workspace items. NOT for: local file editing (use read_file/write_file), Obsidian vaults (use obsidian skill), or real-time collaboration.
install
source · Clone the upstream repo
git clone https://github.com/ericwang915/PythonClaw
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ericwang915/PythonClaw "$T" && mkdir -p ~/.claude/skills && cp -r "$T/pythonclaw/templates/skills/productivity/notion" ~/.claude/skills/ericwang915-pythonclaw-notion && rm -rf "$T"
manifest:
pythonclaw/templates/skills/productivity/notion/SKILL.mdsource content
Notion
Use the Notion API to create, read, and update pages, databases, and blocks.
When to Use
- "Create a Notion page with my meeting notes"
- "Search my Notion for project plans"
- "Add an item to my Notion database"
- "Query my Notion task tracker"
- "Update the status of this Notion page"
When NOT to Use
- Local Markdown files: use read_file / write_file directly
- Obsidian vaults: use obsidian skill
- Trello boards: use trello skill
- Google Docs: use google_workspace skill
Setup
- Create an integration at https://notion.so/my-integrations
- Copy the API key (starts with ntn_ or secret_)
- Configure in pythonclaw.json:
"skills": { "notion": { "token": "ntn_your_key_here" } }
- Share target pages/databases with your integration
Commands
Search pages
python {skill_path}/notion_api.py search "query text"
Get a page
python {skill_path}/notion_api.py get-page <page_id>
Get page content (blocks)
python {skill_path}/notion_api.py get-blocks <page_id>
Create a page in a database
python {skill_path}/notion_api.py create-page --database <db_id> --title "New Item" --props '{"Status": "Todo"}'
Query a database
python {skill_path}/notion_api.py query-db <database_id>
Update page properties
python {skill_path}/notion_api.py update-page <page_id> --props '{"Status": "Done"}'
Append blocks to a page
python {skill_path}/notion_api.py append-blocks <page_id> --text "New paragraph content"
Notes
- Page/database IDs are UUIDs (with or without dashes)
- The API cannot set database view filters (UI-only)
- Rate limit: ~3 requests/second average
- The Notion-Version header is required for direct API calls
Resources
| File | Description |
|---|---|
| Notion REST API client |