Install
openclaw skills install macos-notesCreate, read, search, and manage macOS Notes via AppleScript. Use when the user asks to take a note, jot something down, save an idea, create meeting notes, read a note, search notes, or anything involving Apple Notes on macOS. Triggers on requests like "note this down", "save this as a note", "create a note about X", "show my notes", "search my notes for X", "what did I write about X". macOS only.
openclaw skills install macos-notesManage Apple Notes via $SKILL_DIR/scripts/notes.sh. Notes content is stored as HTML internally; the script accepts plain text or HTML body and returns plaintext when reading.
Always list folders first to discover accounts and folder names:
"$SKILL_DIR/scripts/notes.sh" list-folders
Output format: account → folder (one per line).
echo '<json>' | "$SKILL_DIR/scripts/notes.sh" create-note
JSON fields:
| Field | Required | Default | Description |
|---|---|---|---|
title | yes | - | Note title (becomes the first line / heading) |
body | no | "" | Note content (plain text — converted to HTML automatically) |
html | no | "" | Raw HTML body (overrides body if both provided) |
folder | no | default folder | Folder name (from list-folders) |
account | no | default account | Account name (from list-folders) |
echo '<json>' | "$SKILL_DIR/scripts/notes.sh" read-note
JSON fields:
| Field | Required | Default | Description |
|---|---|---|---|
name | yes | - | Note title (exact match) |
folder | no | all folders | Folder to search in |
account | no | default account | Account to search in |
echo '<json>' | "$SKILL_DIR/scripts/notes.sh" list-notes
JSON fields:
| Field | Required | Default | Description |
|---|---|---|---|
folder | no | default folder | Folder name |
account | no | default account | Account name |
limit | no | 20 | Max notes to return |
echo '<json>' | "$SKILL_DIR/scripts/notes.sh" search-notes
JSON fields:
| Field | Required | Default | Description |
|---|---|---|---|
query | yes | - | Text to search for in note titles |
account | no | default account | Account to search in |
limit | no | 10 | Max results to return |
Map user requests to commands:
| User says | Command | Key fields |
|---|---|---|
| "Note this down: ..." | create-note | title, body |
| "Save meeting notes" | create-note | title: "Meeting notes — <date>", body |
| "What did I write about X?" | search-notes | query: "X" |
| "Show my notes" | list-notes | (defaults) |
| "Read my note about X" | read-note | name: "X" |
| "Save this in my work notes" | create-note | Match closest account/folder from list-folders |
"Note down the API key format: prefix_xxxx"
echo '{"title":"API key format","body":"Format: prefix_xxxx"}' | "$SKILL_DIR/scripts/notes.sh" create-note
"Show my recent notes"
echo '{}' | "$SKILL_DIR/scripts/notes.sh" list-notes
"What did I write about passwords?"
echo '{"query":"password"}' | "$SKILL_DIR/scripts/notes.sh" search-notes
"Read my note about Hinge"
echo '{"name":"Hinge"}' | "$SKILL_DIR/scripts/notes.sh" read-note
"Create a meeting summary in my iCloud notes"
"$SKILL_DIR/scripts/notes.sh" list-folders
Then:
echo '{"title":"Meeting summary — 2026-02-17","body":"Discussed roadmap.\n- Q1: launch MVP\n- Q2: iterate","account":"iCloud","folder":"Notes"}' | "$SKILL_DIR/scripts/notes.sh" create-note
folder: "Notes" alone is ambiguouslogs/notes.log with timestamp, command, and note titlebody are converted to <br> automatically; use html for rich formatting