✓ Verified 💻 Development ✓ Enhanced Data

Mac Notes Agent

Integrate with the macOS Notes app (Apple Notes)

Rating
4.9 (479 reviews)
Downloads
630 downloads
Version
1.0.0

Overview

Integrate with the macOS Notes app (Apple Notes)

Complete Documentation

View Source →

Mac Notes Agent

Overview

This skill lets the agent talk to Apple Notes on macOS using AppleScript (via osascript). It is implemented as a small Node.js CLI:

bash
node skills/mac-notes-agent/cli.js <command> [options]

Requires macOS with the built-in Notes app and osascript available.

All operations target the default Notes account. Optionally you can specify which folder to use.


Commands

1) Add a new note

bash
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
tags internally for proper rendering in Notes.

Result (JSON):

json
{
  "status": "ok",
  "id": "Jarvis::2026-02-09T08:40:00::Meeting notes",
  "title": "Meeting notes",
  "folder": "Jarvis"
}


2) List notes

bash
node skills/mac-notes-agent/cli.js list [--folder "Jarvis"] [--limit 50]
  • Lists notes in the given folder (or all folders if omitted).
  • Output is JSON array with title, folder, creationDate, and synthetic id.

3) Read a note (get)

bash
# 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"


4) Update a note (replace body)

bash
node skills/mac-notes-agent/cli.js update \
  --folder "Jarvis" \
  --title "Meeting notes" \
  --body "New content\nReplaces everything"
  • Replaces the entire body of the matching note.
  • Can also use --id for identification.

5) Append to a note

bash
node skills/mac-notes-agent/cli.js append \
  --folder "Jarvis" \
  --title "Meeting notes" \
  --body "\n---\nAdditional notes here"
  • Appends new content to the end of the existing note.

6) Delete a note

bash
node skills/mac-notes-agent/cli.js delete \
  --folder "Jarvis" \
  --title "Meeting notes"


7) Search notes

bash
node skills/mac-notes-agent/cli.js search \
  --query "keyword" \
  [--folder "Jarvis"] \
  [--limit 20]
  • Searches note titles and bodies for the keyword.

Identification Model

Apple Notes doesn't expose stable IDs. This CLI uses:

  • Primary key: (folderName, title)
  • Synthetic ID: folderName::creationDate::title
When multiple notes share the same title, the CLI operates on the most recently created one.


Environment

  • macOS only: Uses AppleScript via osascript
  • No npm dependencies: Uses only Node.js built-ins (child_process)

Installation

Terminal bash

openclaw install mac-notes-agent
    
Copied!

💻Code Examples

node skills/mac-notes-agent/cli.js <command> [options]

node-skillsmac-notes-agentclijs-command-options.txt
> Requires macOS with the built-in **Notes** app and `osascript` available.

All operations target the **default Notes account**. Optionally you can specify
which folder to use.

---

## Commands

### 1) Add a new note

[--folder "Jarvis"]

---folder-jarvis.txt
- `--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):**

}

.txt
---

### 2) List notes

node skills/mac-notes-agent/cli.js list [--folder "Jarvis"] [--limit 50]

node-skillsmac-notes-agentclijs-list---folder-jarvis---limit-50.txt
- Lists notes in the given folder (or all folders if omitted).
- Output is JSON array with `title`, `folder`, `creationDate`, and synthetic `id`.

---

### 3) Read a note (get)

node skills/mac-notes-agent/cli.js get --id "Jarvis::2026-02-09T08:40:00::Meeting notes"

node-skillsmac-notes-agentclijs-get---id-jarvis2026-02-09t084000meeting-notes.txt
---

### 4) Update a note (replace body)

--body "New content\nReplaces everything"

---body-new-contentnreplaces-everything.txt
- Replaces the entire body of the matching note.
- Can also use `--id` for identification.

---

### 5) Append to a note

--body "\n---\nAdditional notes here"

---body-n---nadditional-notes-here.txt
- Appends new content to the end of the existing note.

---

### 6) Delete a note

--title "Meeting notes"

---title-meeting-notes.txt
---

### 7) Search notes
example.sh
node skills/mac-notes-agent/cli.js add \
  --title "Meeting notes" \
  --body "First line\nSecond line\nThird line" \
  [--folder "Jarvis"]
example.json
{
  "status": "ok",
  "id": "Jarvis::2026-02-09T08:40:00::Meeting notes",
  "title": "Meeting notes",
  "folder": "Jarvis"
}

Tags

#apple_apps-and-services

Quick Info

Category Development
Model Claude 3.5
Complexity Multi-Agent
Author swancho
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install mac-notes-agent