RedPlanetHQ/core

New Integration: Apple Notes

Open

#533 opened on Feb 24, 2026

 (1 comment) (0 reactions) (0 assignees)TypeScript (184 forks)auto 404
enhancementgood first issueintegrationnew-featurenew-integration

Repository metrics

Stars
 (1,930 stars)
PR merge metrics
 (Avg merge 3h 2m) (10 merged PRs in 30d)

Description

Description

Add Apple Notes integration to sync notes, folders, attachments, and note-taking activity into CORE.

Reference Implementations

Existing Integrations (use as templates)

  • integrations/notion/ - Similar note-taking/document system
  • integrations/google-docs/ - Document management integration
  • integrations/slack/ - For reference

Required Files Structure

integrations/apple-notes/
├── src/
│   ├── index.ts          # Main entry, auth spec
│   ├── schedule.ts       # Sync logic
│   ├── utils.ts          # Apple Notes access utilities
│   ├── account-create.ts # Auth setup
│   └── create-activity.ts # Activity formatting
├── package.json
├── tsup.config.ts
└── README.md

Apple Notes API Integration

Authentication Setup

  • Important: Apple Notes does not have an official public REST API
  • Access methods vary by platform:
    • macOS: JXA (JavaScript for Automation) / AppleScript via osascript
    • iOS/macOS: SiriKit Intents (INCreateNoteIntent, INSearchForNotebookItemsIntent)
    • iCloud: CloudKit private database access (requires Apple Developer account)
    • Local Database: Direct SQLite database access (~/Library/Group Containers/group.com.apple.notes/)

Available Access Methods

  • SiriKit Lists & Notes Domain
    • INCreateNoteIntent - Create new notes
    • INSearchForNotebookItemsIntent - Search for notes
    • INAddTasksToNotebookIntent - Add checklist items
  • JXA/AppleScript (macOS only)
    • Application('Notes') - Access Notes.app
    • .notes() - List all notes
    • .notes.byName() - Find note by name
    • .folders() - List folders
    • .make({new: 'note', ...}) - Create a note
  • CloudKit (iCloud)
    • Access notes stored in iCloud via CloudKit JS or native CloudKit framework
    • Requires Apple Developer Program membership
  • Web Share API
    • Share content to Notes from web applications via the native Share interface

Events to Track

  1. Note Activity - Notes created, modified, deleted
  2. Folder Management - Folders created, notes moved between folders
  3. Attachments - Images, files, or drawings added to notes
  4. Checklist Activity - Checklist items added, completed, or unchecked
  5. Sharing - Notes shared or collaboration started

Implementation Tasks

  • Set up basic integration structure following integrations/github/src/index.ts pattern
  • Research and implement the most viable authentication/access method in account-create.ts
  • Create API utilities in utils.ts (likely using JXA/AppleScript or CloudKit)
  • Implement sync logic in schedule.ts for notes and folders
  • Convert note events to CORE activity format
  • Add error handling and platform-specific fallbacks
  • Create integration documentation
  • Add to integrations/README.md

Technical Notes

  • No official REST API exists - This is the biggest challenge for this integration
  • On macOS, the most reliable method is JXA (JavaScript for Automation) which can access Notes.app programmatically
  • The local SQLite database is at ~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite but direct access is fragile and may break with OS updates
  • SiriKit intents are limited to iOS/iPadOS apps and Shortcuts
  • Community projects like mcp-apple-notes (GitHub: RafalWilinski/mcp-apple-notes) demonstrate RAG over Apple Notes using MCP
  • The Apple Notes Liberator project extracts Notes.app data and saves as JSON
  • Consider a hybrid approach: JXA for macOS + CloudKit for cross-platform sync

Resources

Labels

enhancement, integration, new-feature

Contributor guide