MMK Notion — Page Commands
Prerequisite: Read
../mmk-shared/SKILL.mdfor auth, global flags, and error handling. Parent:mmk-notion
Always use -o json when parsing results or composing with other commands.
invite — Invite a user to a page
mmk notion page invite --email <email> --role <role> --block-id <page-id-or-url> -o json
Required: --email, --role, --block-id
Available roles:
| Role | Access Level | Works With |
|---|---|---|
editor |
Full access — edit structure, content, manage permissions | Pages & Databases |
read_and_write |
Can edit — modify content | Pages & Databases |
content_only_editor |
Can edit content — edit rows but not DB structure | Databases only |
comment_only |
Can comment — view and add comments only | Pages & Databases |
reader |
Can view — read-only | Pages & Databases |
revoke — Revoke a user's access to a page
mmk notion page revoke --email <email> --block-id <page-id-or-url> -o json
Required: --email, --block-id
publish — Publish a page to the web
mmk notion page publish --block-id <page-id-or-url> -o json
Required: --block-id
Returns public URL on success. Returns 409 if already published (not an error — returns existing public URL).
unpublish — Unpublish a page from the web
mmk notion page unpublish --block-id <page-id-or-url> -o json
Required: --block-id
Returns 409 if already private (not an error).
config — Configure page display settings
mmk notion page config --block-id <page-id> --full-width -o json
mmk notion page config --block-id id1 --block-id id2 --small-text=false -o json
Required: --block-id (string slice — supports multiple pages)
At least one of: --full-width (bool), --small-text (bool)
publish-settings — Update publish settings for a published page
mmk notion page publish-settings --block-id <id> --allow-duplicate=false -o json
mmk notion page publish-settings --block-id <id> --seo-title "Title" --slug "my-page" -o json
Required: --block-id
At least one of: --allow-duplicate (bool), --search-engine-index (bool), --seo-title, --seo-description, --social-image, --slug
duplicate — Duplicate a page into a parent page
mmk notion page duplicate --source-id <page-id> --parent-id <parent-id> -o json
Required: --source-id, --parent-id
list-published — List all published pages in the workspace
mmk notion page list-published -o json
mmk notion page list-published --type forms -o json
Optional: --type — sites (default), forms, or links
markdown — Verb-based sub-commands (get, create, append, replace, update)
markdown is a sub-command group. All verbs accept --markdown (inline string), --file (read from file), or stdin.
markdown get — Retrieve a Notion page as markdown
mmk notion page markdown get <page_id> -o json
mmk notion page markdown get <page_id> --include-transcript -o json
Required: <page_id> (positional)
Optional: --include-transcript — include meeting note transcripts
markdown create — Create a new Notion page from markdown
mmk notion page markdown create --parent <page_id> --title "Sprint planning" --file ./plan.md -o json
mmk notion page markdown create --parent <db_id> --title "Task X" --markdown "..." --set Status=InProgress --set Priority=High -o json
cat notes.md | mmk notion page markdown create --parent <page_id> --title "Notes" -o json
Required: --parent (page id, database id, or Notion URL)
Optional:
| Flag | Description |
|---|---|
--title |
Page title (page parent: optional, derived from first H1; database parent: required) |
--markdown |
Inline markdown body |
--file |
Read markdown from a file |
--set |
Extra database properties: Key=Value (repeatable; database parent only) |
--icon-emoji |
Page icon (emoji) |
--cover-url |
Page cover image (https URL) |
For a database parent, --title becomes the title-property value and --set Key=Value populates additional schema properties.
markdown append — Append markdown to an existing Notion page
mmk notion page markdown append <page_id> --markdown "## Notes" -o json
echo "## Notes" | mmk notion page markdown append <page_id> -o json
mmk notion page markdown append <page_id> --file ./notes.md --after "start text...end text" -o json
Required: <page_id> (positional), one of --markdown, --file, or piped stdin
Optional:
| Flag | Description |
|---|---|
--after |
Ellipsis selector 'start text...end text' — insert after this location (omit to append at end) |
--file |
Read markdown from a file |
markdown replace — Overwrite an existing Notion page with new markdown
mmk notion page markdown replace <page_id> --markdown "# Fresh start" -o json
mmk notion page markdown replace <page_id> --file ./new.md --yes -o json
Required: <page_id> (positional), one of --markdown, --file, or piped stdin
Optional:
| Flag | Description |
|---|---|
--file |
Read markdown from a file |
--allow-deleting-content |
Permit removal of child pages/databases |
-y, --yes |
Skip the destructive-overwrite confirmation prompt |
DESTRUCTIVE — replaces entire page content. Prompts for confirmation when running interactively (pass --yes or pipe stdin to skip).
markdown update — Edit a Notion page via search-and-replace
mmk notion page markdown update <page_id> --from "Draft" --to "Final" -o json
mmk notion page markdown update <page_id> --from "TODO" --to "DONE" --from "Draft" --to "Final" -o json
mmk notion page markdown update <page_id> --data '[{"old_str":"x","new_str":"y","replace_all_matches":true}]' -o json
Required: <page_id> (positional), one of --from/--to pairs or --data
Optional:
| Flag | Description |
|---|---|
--from |
Old text to find (paired with --to; repeatable) |
--to |
New text to substitute (paired with --from; repeatable) |
--all |
Set replace_all_matches=true on every operation |
--allow-deleting-content |
Permit removal of child pages/databases |
--data |
Raw JSON array of {old_str, new_str, replace_all_matches} for power users |
Matching is case-sensitive and whitespace-sensitive. Each old_str must match exactly one location unless --all is set.
Optional:
| Flag | Description |
|---|---|
--markdown |
Inline markdown to append |
--file |
Read markdown from a file |
--after |
Ellipsis selector 'start text...end text' — insert after this anchor (omit to append at end) |
markdown replace — Overwrite an existing Notion page with new markdown
mmk notion page markdown replace <page_id> --markdown "# Fresh start" -o json
mmk notion page markdown replace <page_id> --file ./new.md --yes -o json
Required: <page_id> (positional)
Optional:
| Flag | Description |
|---|---|
--markdown |
Inline markdown body |
--file |
Read markdown from a file |
-y, --yes |
Skip the destructive-overwrite confirmation prompt |
--allow-deleting-content |
Permit removal of child pages/databases |
DESTRUCTIVE — replaces all page content. Prompts for confirmation when run interactively (use --yes or pipe stdin to suppress).
markdown update — Edit a page in place via search-and-replace
mmk notion page markdown update <page_id> --from "Draft" --to "Final" -o json
mmk notion page markdown update <page_id> --from "TODO" --to "DONE" --from "Draft" --to "Final" -o json
mmk notion page markdown update <page_id> --data '[{"old_str":"x","new_str":"y","replace_all_matches":true}]' -o json
Required: <page_id> (positional), --from + --to (paired), or --data
Optional:
| Flag | Description |
|---|---|
--from |
Old text to find (repeatable, paired with --to) |
--to |
New text to substitute (repeatable, paired with --from) |
--all |
Set replace_all_matches=true on every operation |
--data |
Raw JSON array of {old_str, new_str, replace_all_matches} |
--allow-deleting-content |
Permit removal of child pages/databases |
Matching is case-sensitive and whitespace-sensitive.
get — Get a page by ID
mmk notion page get <page_id> -o json
Required: <page_id> (positional — accepts UUID or full Notion URL)
transcript — Get meeting note transcript, summary, and notes from a page
mmk notion page transcript <page_id> -o json
mmk notion page transcript <page_id> --include summary,notes -o json
Required: <page_id> (positional)
Optional: --include — sections to include: summary, notes, transcript (comma-separated, default: all)
update — Update a Notion page (archive, trash, lock, erase content)
mmk notion page update <page_id> --archive -o json
mmk notion page update <page_id> --lock -o json
mmk notion page update <page_id> --erase-content --yes -o json
mmk notion page update <page_id> --data '{"properties": {...}}' -o json
Required: <page_id> (positional)
Optional flags:
| Flag | Description |
|---|---|
--archive |
Archive the page |
--unarchive |
Unarchive the page |
--trash |
Move page to trash |
--restore |
Restore page from trash |
--lock |
Lock page editing |
--unlock |
Unlock page editing |
--erase-content |
Erase all page content (DESTRUCTIVE, cannot be undone) |
--data |
Raw JSON request body (Notion API format) |
-y, --yes |
Skip confirmation for destructive operations |
WARNING: --erase-content permanently deletes all page content and cannot be undone via API.
update-markdown — [DEPRECATED] Update a page's content using markdown
Deprecated: Use the verb-based
markdownsub-commands instead:
--markdown/--replace→mmk notion page markdown replace <page_id>--append→mmk notion page markdown append <page_id>
mmk notion page update-markdown <page_id> --markdown "# New Content" -o json
mmk notion page update-markdown <page_id> --append "## Appended Section" -o json
mmk notion page update-markdown <page_id> --replace "# Replaced Content" --timezone "Asia/Seoul" -o json
Required: <page_id> (positional), one of --markdown, --append, or --replace
Optional flags:
| Flag | Description |
|---|---|
--markdown |
Full markdown content (replaces all existing content) |
--append |
Markdown to append to existing content |
--replace |
Markdown to replace all content (uses replace_content operation) |
--timezone |
Timezone for date-related content (e.g. Asia/Seoul) |
Tips
--block-idaccepts both raw UUIDs and full Notion URLs — the CLI extracts the ID automatically- For bulk operations, run commands sequentially and check each result
- Page invite errors for non-Notion users indicate the email is not associated with a Notion account — consider using the
mmk-notion-onboardskill for automatic email fallback
See Also
- mmk-shared — Auth, global flags, error handling
- mmk-notion — All Notion commands overview
- mmk-notion-workspace — Workspace invite and remove
- mmk-notion-people — List members, guest page access