Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Notion API for creating and managing pages, databases, blocks, relations, rollups, and multi-workspace profiles via the notioncli CLI tool.
Notion API for creating and managing pages, databases, blocks, relations, rollups, and multi-workspace profiles via the notioncli CLI tool.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
A powerful CLI for the Notion API. Query databases, manage pages, add comments, and automate your workspace from the terminal. Built for AI agents and humans alike.
npm install -g notioncli notion init --key $NOTION_API_KEY The init command saves your API key and auto-discovers all databases shared with your integration. Each database gets an alias (a short slug derived from the database title) so you never need to type raw UUIDs. Tip: In Notion, you must share each database with your integration first: open the database โ โขโขโข menu โ Connections โ Add your integration.
When you run notion init, every shared database is automatically assigned a slug alias: Found 3 databases: โ projects โ Projects โ tasks โ Tasks โ reading-list โ Reading List You can then use projects instead of a1b2c3d4-e5f6-... everywhere. Manage aliases manually with: notion alias list # Show all aliases notion alias add mydb <db-id> # Add a custom alias notion alias rename old new # Rename an alias notion alias remove mydb # Remove an alias
notion dbs # List all databases shared with your integration notion alias list # Show configured aliases with IDs
notion query tasks # Query all rows notion query tasks --filter Status=Active # Filter by property notion query tasks --sort Date:desc # Sort results notion query tasks --filter Status=Active --limit 10 # Combine options notion query tasks --output csv # CSV output notion query tasks --output yaml # YAML output notion query tasks --output json # JSON output notion --json query tasks # JSON (shorthand) Output formats: table โ formatted ASCII table (default) csv โ header row + comma-separated values json โ full API response as JSON yaml โ simple key/value YAML format
notion add tasks --prop "Name=Buy groceries" --prop "Status=Todo" notion add projects --prop "Name=New Feature" --prop "Priority=High" --prop "Due=2026-03-01" Multiple --prop flags for multiple properties. Property names are case-insensitive and matched against the database schema.
By page ID: notion update <page-id> --prop "Status=Done" notion update <page-id> --prop "Priority=Low" --prop "Notes=Updated by CLI" By alias + filter (zero UUIDs): notion update tasks --filter "Name=Ship feature" --prop "Status=Done" notion update workouts --filter "Name=LEGS #5" --prop "Notes=Great session"
By page ID: notion get <page-id> # Page properties notion blocks <page-id> # Page content (headings, text, lists, etc.) By alias + filter: notion get tasks --filter "Name=Ship feature" notion blocks tasks --filter "Name=Ship feature"
notion delete <page-id> # By page ID notion delete tasks --filter "Name=Old task" # By alias + filter notion delete workouts --filter "Date=2026-02-09" # By alias + filter
notion relations tasks --filter "Name=Ship feature" # See linked pages with titles notion relations projects --filter "Name=Launch CLI" # Explore connections Relations are automatically resolved to page titles in get output. Rollups are parsed into numbers, dates, or arrays instead of raw JSON.
notion blocks tasks --filter "Name=Ship feature" # View page content notion blocks tasks --filter "Name=Ship feature" --ids # View with block IDs notion append tasks "New paragraph" --filter "Name=Ship feature" # Append block notion block-edit <block-id> "Updated text" # Edit a block notion block-delete <block-id> # Delete a block Use --ids to get block IDs, then target specific blocks with block-edit or block-delete.
notion append <page-id> "Meeting notes: discussed Q2 roadmap" notion append tasks "Status update: phase 1 complete" --filter "Name=Ship feature" Appends a paragraph block to the page.
notion users # List all workspace users notion user <user-id> # Get details for a specific user
notion comments <page-id> # By page ID notion comments tasks --filter "Name=Ship feature" # By alias + filter notion comment <page-id> "Looks good, shipping this!" # By page ID notion comment tasks "AI review complete โ " --filter "Name=Ship feature" # By alias + filter
notion props tasks --filter "Name=Ship feature" # Quick property dump notion me # Show bot identity and owner
notion db-create <parent-page-id> "New DB" --prop "Name:title" --prop "Status:select" notion db-update tasks --add-prop "Rating:number" # Add a column notion db-update tasks --remove-prop "Old Column" # Remove a column notion db-update tasks --title "Renamed DB" # Rename database notion templates tasks # List page templates
notion move tasks --filter "Name=Done task" --to archive # Move by alias notion move tasks --filter "Name=Done task" --to <page-id> # Move to page
notion upload tasks --filter "Name=Ship feature" ./report.pdf notion upload <page-id> ./screenshot.png Supports images, PDFs, text files, documents. MIME types auto-detected from extension.
notion search "quarterly report" # Search across all pages and databases
Add --json before any command to get the raw Notion API response: notion --json query tasks notion --json get <page-id> notion --json users notion --json comments <page-id>
notion dbs notion alias list
notion query tasks --filter Status=Active --sort Date:desc notion --json query tasks --filter Status=Active # Parse JSON programmatically notion query tasks --output csv # CSV for spreadsheet tools
notion add tasks --prop "Name=Review PR #42" --prop "Status=Todo" --prop "Priority=High"
# By alias + filter โ no page ID needed notion update tasks --filter "Name=Review PR #42" --prop "Status=Done" # Or by page ID if you already have it notion update <page-id> --prop "Status=Done"
# By alias + filter notion get tasks --filter "Name=Review PR #42" notion blocks tasks --filter "Name=Review PR #42" # Or by page ID notion get <page-id> notion blocks <page-id>
notion append tasks "Status update: completed phase 1" --filter "Name=Review PR #42" notion append <page-id> "Status update: completed phase 1"
notion comments tasks --filter "Name=Review PR #42" # Check existing notion comment tasks "AI review complete โ " --filter "Name=Review PR #42" # Add comment # Or by page ID notion comments <page-id> notion comment <page-id> "AI review complete โ "
notion delete tasks --filter "Name=Old task" notion delete workouts --filter "Date=2026-02-09"
notion db-update tasks --add-prop "Priority:select" # Add column notion db-update tasks --remove-prop "Old Field" # Remove column notion db-create <parent-page-id> "New DB" --prop "Name:title" --prop "Status:select"
notion move tasks --filter "Name=Done" --to archive notion upload tasks --filter "Name=Ship feature" ./report.pdf
notion me # Check integration identity notion props tasks --filter "Name=Ship feature" # Quick property dump notion templates tasks # List available templates
When using --prop key=value, the CLI auto-detects the property type from the database schema: TypeExample ValueNotestitleName=Hello WorldMain title propertyrich_textNotes=Some textPlain text contentnumberAmount=42.5Numeric valuesselectStatus=ActiveSingle select optionmulti_selectTags=bug,urgentComma-separated optionsdateDue=2026-03-01ISO 8601 date stringcheckboxDone=truetrue, 1, or yesurlLink=https://example.comFull URLemailContact=user@example.comEmail addressphone_numberPhone=+1234567890Phone number stringstatusStatus=In ProgressStatus property
Manage multiple Notion accounts from one CLI: notion workspace add work --key ntn_work_key # Add workspace notion workspace add personal --key ntn_personal # Add another notion workspace list # Show all notion workspace use work # Switch active notion workspace remove old # Remove one # Per-command override notion query tasks --workspace personal notion -w work add projects --prop "Name=Q2 Plan" # Init with workspace notion init --workspace work --key ntn_work_key Aliases are scoped per workspace. Old single-key configs auto-migrate to a "default" workspace.
The Notion API (2025-09-03) uses dual IDs for databases: a database_id and a data_source_id. notioncli handles this automatically โ when you run notion init or notion alias add, both IDs are discovered and stored. You never need to think about it.
"No Notion API key found" โ Run notion init --key ntn_... or export NOTION_API_KEY=ntn_... "Unknown database alias" โ Run notion alias list to see available aliases, or notion init to rediscover "Not found" errors โ Make sure the database/page is shared with your integration in Notion Filter/sort property not found โ Property names are case-insensitive; run notion --json query <alias> --limit 1 to see available properties
Workflow acceleration for inboxes, docs, calendars, planning, and execution loops.
Largest current source with strong distribution and engagement signals.