pp-notion

Notion CLI — manage pages and blocks, sync workspace to local SQLite, detect stale pages, and track changes. Trigger phrases: `find stale notion pages`, `sync notion to local`, `use notion-pp-cli`, `run notion`, `export notion page`.

By mvanhorn · 371 installs

npx skills add mvanhorn/printing-press-library --skill pp-notion

Source repository · Upstream listing

<! GENERATED FILE — DO NOT EDIT. This file is a verbatim mirror of library/productivity/notion/SKILL.md, regenerated post merge by tools/generate skills/. Hand edits here are silently overwritten on the next regen. Edit the library/ source instead. See the repository agent guide, section "Generated artifacts: registry.json, cli skills/". Notion — Printing Press CLI Prerequisites: Install the CLI This skill drives the notion pp cli binary. You must verify the CLI is installed before invoking any command from this skill. If it is missing, install it first: 1. Install via the Printing Press installer. It defaults binaries to $HOME/.local/bin on macOS/Linux and %LOCALAPPDATA%\Programs\PrintingPress\bin on Windows: 2. Verify: notion pp cli version 3. Ensure the reported install directory is on $PATH for the agent/runtime that will invoke this skill. If the npx install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.6 or newer): If version reports "command not found" after install, the runtime cannot see the binary directory on $PATH . Do not proceed with skill commands until verification succeeds. When to Use This CLI Use notion pp cli when you need to manage Notion pages and blocks from the terminal, detect stale pages, or track what changed since a given time. Run sync once to populate the local store, then stale and changed work offline. Not a substitute for the Notion web UI for day to day editing. Unique Capabilities These capabilities aren't available in any other tool for this API. Agent native plumbing changed — Show everything in the workspace added, edited, or deleted since your last sync or a given timestamp. Use at the start of an agent session to orient on what has changed before taking action. Local state that compounds stale — List pages and records not edited in N days, filterable by database, parent, or tag. Use to identify dead pages before workspace cleanup or to flag deliverables overdue for review. Command Reference blocks — Block endpoints notion pp cli blocks delete — Delete a block notion pp cli blocks query meeting notes — Query meeting notes notion pp cli blocks get — Get a block by ID notion pp cli blocks update — Update a block notion pp cli blocks children list — List children of a block or page notion pp cli blocks children append — Append blocks to a page or block comments — Comment endpoints notion pp cli comments create a — Create a comment notion pp cli comments delete a — Delete a comment notion pp cli comments list — List comments notion pp cli comments retrieve — Retrieve a comment notion pp cli comments update a — Update a comment custom emojis — Custom emoji endpoints notion pp cli custom emojis — List custom emojis data sources — Data source endpoints notion pp cli data sources create a database — Create a data source notion pp cli data sources retrieve a — Retrieve a data source notion pp cli data sources update a — Update a data source notion pp cli data sources query post database <data source id — Query a data source. Note: the leaf command is post database , not a bare query — data sources query is an intermediate group that prints help. This differs from databases query <id , which executes directly. databases — Database endpoints notion pp cli databases query <database id — Query records in a database with optional filter/sort notion pp cli databases create — Create a database notion pp cli databases retrieve — Retrieve a database notion pp cli databases update — Update a database file uploads — File upload endpoints notion pp cli file uploads create file — Create a file upload notion pp cli file uploads list — List file uploads notion pp cli file uploads retrieve — Retrieve a file upload notion search — Manage notion search notion pp cli notion search — Search by title oauth — OAuth endpoints (basic authentication) notion pp cli oauth create a token — Exchange an authorization code for an access and refresh token notion pp cli oauth introspect token — Introspect a token notion pp cli oauth revoke token — Revoke a token pages — Page endpoints notion pp cli pages update — Update a page notion pp cli pages create — Create a page notion pp cli pages get — Get a page by ID notion pp cli pages move — Move a page notion pp cli pages markdown export — Export a page as markdown users — User endpoints notion pp cli users get — List all users notion pp cli users get self — Retrieve your token's bot user notion pp cli users get userid — Retrieve a user views — View endpoints notion pp cli views create — Create a view notion pp cli views delete — Delete a view notion pp cli views list — List views notion pp cli views retrieve a — Retrieve a view notion pp cli views update a — Update a view sync pages — Sync all pages and databases to local SQLite notion pp cli sync pages — Sync all pages and databases via search API (run before stale/changed) notion pp cli sync pages full — Full resync from scratch notion pp cli sync pages type database — Sync databases only Finding the right command When you know what you want to do but not which command does it, ask the CLI directly: which resolves a natural language capability query to the best matching command from this CLI's curated feature index. Exit code 0 means at least one match; exit code 2 means no confident match — fall back to help or use a narrower query. Recipes Morning triage: what changed overnight Show everything edited in the last 8 hours — use at session start to orient before taking action. Find stale pages before cleanup Pages untouched for 30+ days, sorted oldest first. The Notion UI has no equivalent filter across multiple workspaces. Export a page as markdown Fetches the page content as markdown via the native Notion markdown endpoint — no conversion needed. Read block children of a page List all top level blocks on a page with their types and IDs. Auth Setup Requires a Notion Internal Integration token. Create one at notion.so/my integrations, share your top level pages with it, then set NOTION BEARER AUTH (or NOTION TOKEN ) in your environment. First run setup: Run notion pp cli doctor to verify setup. Agent Mode Add agent to any command. Expands to: json compact no input no color yes . Pipeable — JSON on stdout, errors on stderr Filterable — select keeps a subset of fields. Dotted paths descend into nested structures; arrays traverse element wise. Critical for keeping context small on verbose APIs: Previewable — dry run shows the request without sending Offline friendly — sync/search commands can use the local SQLite store when available Non interactive — never prompts, every input is a flag Explicit retries — use idempotent only when an already existing create should count as success, and ignore missing only when a missing delete target should count as success Response envelope Commands that read from the local store or the API wrap output in a provenance envelope: Parse .results for data and .meta.source to know whether it's live or local. A human readable N results (live) summary is printed to stderr only when stdout is a terminal — piped/agent consumers get pure JSON on stdout. Agent Feedback When you (or the agent) notice something off about this CLI, record it: Entries are stored locally at ~/.notion pp cli/feedback.jsonl . They are never POSTed unless NOTION FEEDBACK ENDPOINT is set AND either send is passed or NOTION FEEDBACK AUTO SEND=true . Default behavior is local only. Write what surprised you, not a bug report. Short, specific, one line: that is the part that compounds. Output Delivery Every command accepts deliver <sink . The output goes to the named sink in addition to (or instead of) stdout, so agents can route command results without hand piping. Three sinks are supported: Sink Effect stdout Default; write to stdout only file:<path Atomically write output to <path (tmp + rename) webhook:<url POST the output body to the URL ( application/json or application/x ndjson when compact ) Unknown schemes are refused with a structured error naming the supported set. Webhook failures return non zero and log the URL + HTTP status on stderr. Named Profiles A profile is a saved set of flag values, reused across invocations. Use it when a scheduled agent calls the same command every run with the same configuration HeyGen's "Beacon" pattern. Explicit flags always win over profile values; profile values win over defaults. agent context lists all available profiles under available profiles so introspecting agents discover them at runtime. Exit Codes Code Meaning 0 Success 2 Usage error (wrong arguments) 3 Resource not found 4 Authentication required 5 API error (upstream issue) 7 Rate limited (wait and retry) 10 Config error Argument Parsing Parse $ARGUMENTS : 1. Empty, help , or help → show notion pp cli help output 2. Starts with install → ends with mcp → MCP installation; otherwise → see Prerequisites above 3. Anything else → Direct Use (execute as CLI command with agent ) MCP Server Installation 1. Install the MCP server: 2. Register with Claude Code: 3. Verify: claude mcp list Direct Use 1. Check if installed: which notion pp cli If not found, offer to install (see Prerequisites at the top of this skill). 2. Match the user query to the best command from the Unique Capabilities and Command Reference above. 3. Execute with the agent flag: 4. If ambiguous, drill into subcommand help. Use notion pp cli <command help agent when you need a machine readable command/flag envelope; plain help stays human readable.