Bring it all together

Connect Obsidian, Apple Notes, or Notion — your notes sync into one place.

Getting started

Before setting up any sync source, make sure you have the basics ready:

  1. Clone the repo — open your terminal and run:
    git clone git@github.com:Angela-is-here/angiekim.github.io.git
    cd angiekim.github.io
  2. Install dependencies
    npm install
  3. Set your environment variables — create a .env file in the project root:
    DATABASE_URL=your_neon_database_url
    WRITE_API_KEY=your_api_key
    PUBLIC_SITE_URL=https://notes.iri-ai.com
  4. Run locally to verify everything works:
    npm run dev
    Then open http://localhost:4321 in your browser.

Once that's working, pick a sync source below to connect your notes.

Obsidian

Plugin

Live sync from your vault. Notes push automatically when you save.

Setup

  1. Run the setup wizard: npm run setup
  2. Or install manually:
    cd obsidian-plugin
    npm install && npm run build
  3. Copy main.js and manifest.json to
    .obsidian/plugins/studio-graph-sync/
  4. Enable the plugin in Obsidian settings
  5. Set your Site URL and API Key in the plugin settings

Features

  • Auto-sync on save (5s debounce)
  • Folder picker — toggle which folders to exclude
  • Gitignore-style exclude patterns
  • Vault name tagged automatically
📝

Apple Notes

CLI

Sync notes from Apple Notes on macOS via a single command.

Setup

  1. Enable in your config:
    sources: {
      appleNotes: { enabled: true }
    }
  2. Install dependencies: cd sync-scripts && npm install
  3. First run will ask for macOS permission to access Notes

Usage

npm run sync apple-notes          # sync all
npm run sync apple-notes --dry-run # preview

How it works

  • Reads notes via macOS automation (JXA)
  • Converts HTML to markdown
  • Extracts #hashtags as tags
  • Preserves folder structure

Notion

CLI

Pull pages from a Notion database into your garden.

Setup

  1. Create an integration at Notion
  2. Share your database with the integration
  3. Add to your config:
    sources: {
      notion: {
        enabled: true,
        token: 'secret_...',
        databaseId: '...',
      }
    }

Usage

npm run sync notion          # sync all
npm run sync notion --dry-run # preview

Property mapping

  • Tags (multi-select) → tags
  • Folder (select) → folder
  • Draft (checkbox) → draft
  • Date (date) → published_at

Sync everything at once

CLI

Run a single command to sync all enabled sources.

Usage

npm run sync              # all enabled sources
npm run sync --dry-run    # preview first

Or use the CLI directly

npx tsx cli/index.ts sync
npx tsx cli/index.ts sync obsidian
npx tsx cli/index.ts detect