원클릭으로
notion
Use when the user asks to create, read, update, append to, archive, restore, move, or otherwise manage Notion pages via the Notion API.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when the user asks to create, read, update, append to, archive, restore, move, or otherwise manage Notion pages via the Notion API.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when a human is interactively creating or revising a specification and implementation plan for a Patchmill issue; not for unattended or automated runs.
Use when requesting feedback or review from a subscription-backed interactive Claude Code session through Zellij, including prompt delivery, terminal-output capture, blocked Claude UI, timeouts, and temporary-session cleanup.
Use when a project uses Tilt and kubectl with git worktrees, subagents, parallel test loops, non-default Tilt ports, Kubernetes namespaces, .env files, Makefile, Taskfile, or Justfile wrappers.
Use when a visual proof screenshot is needed for a PR, issue, QA handoff, dashboard/UI change, browser-visible bug fix, staging check, or Forgejo/Gitea review evidence.
Manage Linear issues via the local streamlinear-cli wrapper. Use when the user asks to search Linear issues, inspect a ticket, change status, priority, or assignee, add comments, create issues, list teams and workflow states, or run GraphQL queries against Linear.
Use when editing Nix or Home Manager config, especially Pi packages, git sources, npm packages, flakes, jailed agents, or new files referenced by Nix expressions
| name | notion |
| description | Use when the user asks to create, read, update, append to, archive, restore, move, or otherwise manage Notion pages via the Notion API. |
| compatibility | Requires the 4ier/notion-cli `notion` binary on PATH and either NOTION_TOKEN or a configured `notion auth login --with-token` profile. Notion page deletion is soft-delete/archive unless explicitly restored later. |
Use the notion CLI from 4ier/notion-cli for basic Notion page operations. Prefer precise, reversible changes, search before mutating when targets are ambiguous, and never expose Notion tokens.
command -v notion
notion auth status --format json
notion auth doctor --format json
If auth is missing, tell the user to run one of these outside chat:
notion auth login --with-token
# or
export NOTION_TOKEN=ntn_xxxxx
Do not ask the user to paste a Notion token into chat.
--format json for machine-readable operations.notion page archive, notion page trash, and notion page delete as soft-delete/archive. Use notion page restore to undo.notion api for normal CRUD.Use search when the user gives a title, topic, or vague description instead of an exact ID/URL:
notion search "project roadmap" --type page --limit 10 --format json
If several pages match, present the best matches and ask the user to choose before mutating.
List pages when browsing is more appropriate than keyword search:
notion page list --format json
notion page list <parent_page_id_or_url> --format json
View a page and its content:
notion page view <page_id_or_url> --format json
Get page properties:
notion page props <page_id_or_url> --format json
notion page props <page_id_or_url> <property_id> --format json
Fetch a single property by display name when relation/rollup values might be paginated or truncated:
notion page property <page_id_or_url> --name "References" --format json
Export full-page Markdown when the user wants readable content:
notion page markdown <page_id_or_url>
notion page markdown <page_id_or_url> --out /tmp/notion-page.md
notion page markdown <page_id_or_url> --format json
List child blocks when you need block IDs or sub-block structure:
notion block list <page_id_or_block_id_or_url> --depth 3 --format json
notion block list <page_id_or_block_id_or_url> --depth 3 --md
Create a child page under an existing page:
notion page create <parent_page_id_or_url> \
--title "New Page Title" \
--body "Initial page content" \
--format json
Create a database row/page in a database. Use --db so the CLI resolves property types from the database schema:
notion page create <database_id_or_url> \
--db \
"Name=Weekly Review" \
"Status=Todo" \
"Date=2026-03-01" \
--format json
For database-backed pages, inspect the database schema first when property names or types are unclear:
notion db view <database_id_or_url> --format json
After creation, report the page title, parent/database, URL, and ID.
Inspect current properties before changing them unless the user provides an exact page ID/URL and exact property changes:
notion page props <page_id_or_url> --format json
Set one or more properties with schema-aware key=value arguments:
notion page set <page_id_or_url> \
"Status=Done" \
"Priority=High" \
--format json
Use notion page link and notion page unlink for relation properties instead of manually constructing relation JSON:
notion page link <page_id_or_url> --prop "Related" --to <target_page_id_or_url> --format json
notion page unlink <page_id_or_url> --prop "Related" --from <target_page_id_or_url> --format json
For additive updates, prefer Markdown append:
notion page set-markdown <page_id_or_url> \
--append \
--text "\n\nNew note content" \
--format json
For longer content, write Markdown to a temp file and append it:
cat > /tmp/notion-append.md <<'EOF'
## New Section
- First point
- Second point
EOF
notion page set-markdown <page_id_or_url> \
--append \
--file /tmp/notion-append.md \
--format json
To append one simple block, block append is also appropriate:
notion block append <page_id_or_block_id_or_url> "New paragraph" --format json
notion block append <page_id_or_block_id_or_url> --type bullet "New bullet" --format json
notion block append <page_id_or_block_id_or_url> --file /tmp/notion-append.md --format json
Replacing page content is destructive. Confirm first, then use:
notion page set-markdown <page_id_or_url> \
--file /tmp/new-page.md \
--format json
Use --allow-deleting-content only when the user explicitly agrees that child pages/databases may be removed during replacement.
List blocks first so you have exact block IDs:
notion block list <page_id_or_url> --depth 3 --format json
Update one block in place:
notion block update <block_id_or_url> --text "Updated text" --format json
notion block update <block_id_or_url> --text "Updated **markdown**" --markdown --format json
Delete blocks only after confirmation:
notion block delete <block_id_or_url> --format json
Before archiving or moving, confirm the exact page title and ID/URL with the user:
notion page view <page_id_or_url> --format json
Archive/soft-delete:
notion page archive <page_id_or_url> --format json
Restore an archived page:
notion page restore <page_id_or_url> --format json
Move a page to a new parent:
notion page move <page_id_or_url> --to <new_parent_id_or_url> --format json
Tell the user that archive/delete is reversible soft-delete, not permanent deletion.
Use notion api only when a dedicated command is not available:
notion api GET /v1/users/me --format json
notion api POST /v1/search --body '{"query":"weekly planning","page_size":5}' --format json
notion api PATCH /v1/pages/<page_id> --body @/tmp/body.json --format json
Prefer dedicated commands over raw API calls for normal page CRUD.
After each operation, answer with:
notion-cli instead of notion: 4ier/notion-cli installs the notion binary.page set-markdown replacement.notion db view before creating/updating database-backed pages.