RedPlanetHQ / RedPlanetHQ/core

New Integration: Apple Notes

Open
#533 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement good first issue integration new-feature new-integration
Dominant language
TypeScript
Stars
2k
Forks
194
Avg merge
12m
Merged PRs (30d)
2

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

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Compare integrations/notion/, integrations/google-docs/, integrations/slack/, and integrations/github/src/index.ts to understand the integration structure. Read the proposed files under integrations/apple-notes/ and determine which Apple Notes access method can support the requested events and authentication. Done means the integration structure, access utilities, sync, activity formatting, documentation, and integrations/README.md entry are complete with platform-specific error handling.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
backend
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.