Notion Skill - Database & Page Access
Read and query Notion databases and pages. Supports multiple workspaces. Useful for data migration and export.
First-Time Setup (~3 minutes per workspace)
1. Create an Internal Integration (per workspace)
- •Go to Notion Integrations
- •Click + New integration
- •Name it (e.g., "Claude Assistant")
- •Select the workspace you want to access
- •Under Capabilities, ensure "Read content" is enabled
- •Click Submit
- •Copy the Internal Integration Secret (starts with
ntn_orsecret_)
Note: Each Notion workspace requires its own integration. Create one integration per workspace.
2. Share Pages/Databases with the Integration
Important: Notion integrations can only access pages explicitly shared with them.
- •Open any database or page you want to access
- •Click ... (menu) in the top right
- •Click Add connections
- •Search for your integration name and select it
- •Repeat for all databases/pages you need
3. Configure Accounts
Create ~/.claude/skills/notion-skill/config.json:
{
"default_account": "personal",
"accounts": {
"personal": {
"email": "you@gmail.com",
"workspace": "Personal",
"token": "ntn_..."
},
"work": {
"email": "you@company.com",
"workspace": "Company",
"token": "ntn_..."
}
}
}
Commands
List Accounts
python3 ~/.claude/skills/notion-skill/notion_skill.py accounts
List Databases
python3 ~/.claude/skills/notion-skill/notion_skill.py databases [-a ACCOUNT]
Lists all databases shared with the integration.
Examples:
# Use default account python3 ~/.claude/skills/notion-skill/notion_skill.py databases # Use specific account python3 ~/.claude/skills/notion-skill/notion_skill.py databases -a epoch
Query Database
python3 ~/.claude/skills/notion-skill/notion_skill.py query DATABASE_ID [-a ACCOUNT] [--limit N] [--filter PROPERTY:VALUE]
Arguments:
- •
DATABASE_ID- The database ID (from URL or databases command) - •
-a/--account- Account/workspace to use - •
--limit/-l- Number of results (default: 100) - •
--filter/-f- Filter by property (e.g.,--filter "Status:Active")
Example:
python3 ~/.claude/skills/notion-skill/notion_skill.py query abc123 -a personal --limit 50
Get Page
python3 ~/.claude/skills/notion-skill/notion_skill.py page PAGE_ID [-a ACCOUNT]
Gets a page's properties and content.
Search
python3 ~/.claude/skills/notion-skill/notion_skill.py search "query" [-a ACCOUNT] [--type database|page]
Arguments:
- •
query- Search term - •
-a/--account- Account/workspace to use - •
--type/-t- Filter by type:databaseorpage
Export Database to JSON
python3 ~/.claude/skills/notion-skill/notion_skill.py export DATABASE_ID [-a ACCOUNT] [--output FILE]
Exports all entries from a database to JSON for migration.
Arguments:
- •
DATABASE_ID- The database to export - •
-a/--account- Account/workspace to use - •
--output/-o- Output file (default: stdout)
Migration Workflow
1. List Accounts
python3 ~/.claude/skills/notion-skill/notion_skill.py accounts
2. Find Your Databases
python3 ~/.claude/skills/notion-skill/notion_skill.py databases -a personal python3 ~/.claude/skills/notion-skill/notion_skill.py databases -a epoch
3. Preview Data Structure
python3 ~/.claude/skills/notion-skill/notion_skill.py query DATABASE_ID -a personal --limit 5
4. Export Full Database
python3 ~/.claude/skills/notion-skill/notion_skill.py export DATABASE_ID -a personal --output people.json
5. Migrate to Obsidian
Use the exported JSON to create pages in the vault.
Output Format
All commands output JSON. Database entries include:
- •
id- Page ID - •
url- Notion URL - •
created_time- Creation timestamp - •
last_edited_time- Last edit timestamp - •
properties- All database properties with values
Property Types
The skill handles these Notion property types:
- •
title- Page title - •
rich_text- Text content - •
number- Numeric values - •
select- Single select - •
multi_select- Multiple selections - •
status- Status field - •
date- Date/date range - •
people- Notion users - •
email- Email addresses - •
phone_number- Phone numbers - •
url- URLs - •
checkbox- Boolean - •
relation- Links to other databases - •
rollup- Computed values - •
formula- Formula results - •
files- File attachments - •
created_time/last_edited_time- Timestamps - •
created_by/last_edited_by- Users
Finding Database IDs
Database IDs can be found in the URL:
https://www.notion.so/workspace/DATABASE_ID?v=VIEW_ID
^^^^^^^^^^^^^^^^
Or use the databases command to list all accessible databases with their IDs.
Requirements
No external dependencies - uses Python standard library only.
Security Notes
- •Integration tokens don't expire but can be revoked
- •Token stored locally in
~/.claude/skills/notion-skill/config.json - •Config file is gitignored (contains secrets)
- •Revoke access: Notion Integrations > Delete integration