RedPlanetHQ/core

New Integration: Apple Notes

Open

#533 opened on Feb 24, 2026

View on GitHub
 (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
 (PR metrics pending)

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