Install
openclaw skills install mac-notes-agentIntegrate with the macOS Notes app (Apple Notes). Supports creating, listing, reading, updating, deleting, and searching notes via a simple Node.js CLI that bridges to AppleScript.
openclaw skills install mac-notes-agentThis skill lets the agent talk to Apple Notes on macOS using AppleScript
(via osascript). It is implemented as a small Node.js CLI:
node skills/mac-notes-agent/cli.js <command> [options]
Requires macOS with the built-in Notes app and
osascriptavailable.
All operations target the default Notes account. Optionally you can specify which folder to use.
node skills/mac-notes-agent/cli.js add \
--title "Meeting notes" \
--body "First line\nSecond line\nThird line" \
[--folder "Jarvis"]
--title (required): Note title--body (required): Note body text. Use \n for line breaks.--folder (optional): Folder name. If omitted, uses system default folder. If folder doesn't exist, it will be created.Line breaks (
\n) are converted to<br>tags internally for proper rendering in Notes.
Result (JSON):
{
"status": "ok",
"id": "Jarvis::2026-02-09T08:40:00::Meeting notes",
"title": "Meeting notes",
"folder": "Jarvis"
}
node skills/mac-notes-agent/cli.js list [--folder "Jarvis"] [--limit 50]
title, folder, creationDate, and synthetic id.# By folder + title
node skills/mac-notes-agent/cli.js get \
--folder "Jarvis" \
--title "Meeting notes"
# By synthetic id
node skills/mac-notes-agent/cli.js get --id "Jarvis::2026-02-09T08:40:00::Meeting notes"
node skills/mac-notes-agent/cli.js update \
--folder "Jarvis" \
--title "Meeting notes" \
--body "New content\nReplaces everything"
--id for identification.node skills/mac-notes-agent/cli.js append \
--folder "Jarvis" \
--title "Meeting notes" \
--body "\n---\nAdditional notes here"
node skills/mac-notes-agent/cli.js delete \
--folder "Jarvis" \
--title "Meeting notes"
node skills/mac-notes-agent/cli.js search \
--query "keyword" \
[--folder "Jarvis"] \
[--limit 20]
Apple Notes doesn't expose stable IDs. This CLI uses:
(folderName, title)folderName::creationDate::titleWhen multiple notes share the same title, the CLI operates on the most recently created one.
osascriptchild_process)