A Chrome extension that clips web articles directly to Apple Notes via a local bridge server.
- A lightweight Node.js server runs locally on your Mac
- The Chrome extension extracts article content using Mozilla Readability
- Click the extension button → article is saved to Apple Notes via AppleScript
- macOS (Apple Notes + AppleScript required)
- Any Chromium-based browser (Chrome, Arc, Brave, Edge)
- Node.js (v16+)
git clone https://github.com/bartekprzegosc/apple-notes-clipper.git
cd apple-notes-clipper
chmod +x install.sh
./install.shThis will:
- Install Node.js dependencies
- Generate a secret auth token
- Start the local server as a Launch Agent (auto-starts on login)
- Open your browser →
chrome://extensions(orarc://extensionsin Arc) - Enable Developer Mode (top right toggle)
- Click Load unpacked
- Select the
chrome-extension/folder
- Click the extension icon → ⚙️ Settings
- Paste the token printed during setup
- Click Test Connection to verify
- Click Save
- Navigate to any web page
- Click the Apple Notes Clipper extension icon
- Click 📋 Clip this page
- The article is saved to your Apple Notes folder
The local server config is stored in local-server/config.json:
- token — Secret auth token (generated by setup)
- port — Server port (default: 3333)
- notesFolder — Apple Notes folder name (default: "Media Vault")
Check if the server is running:
curl -H "Authorization: Bearer YOUR_TOKEN" http://localhost:3333/pingRestart the server:
launchctl unload ~/Library/LaunchAgents/com.bartekprzegosc.notesclipper.plist
launchctl load ~/Library/LaunchAgents/com.bartekprzegosc.notesclipper.plistOr run manually for debugging:
cd local-server && node server.jsThe extension stores the token in browser local storage. This gets wiped when you:
- Reload the extension in
chrome://extensions - Remove and re-add the extension
- The browser clears extension storage
Step 1 — find your token. The server reads its token from config.json at startup. Find it:
cat ~/apple-notes-clipper/local-server/config.jsonYou'll see something like:
{
"token": "19643baf2bb215bf2c243e4d0eb49f2a78d870f64b60579f26cbc7e669af9dbb",
"port": 3333,
"notesFolder": "Media Vault"
}Step 2 — open Settings. Click the extension icon and click ⚙️ Settings. If the Settings button doesn't respond (common in Arc), navigate directly to the options page in the address bar:
chrome-extension://YOUR_EXTENSION_ID/options.html
To find your extension ID: open chrome://extensions (or arc://extensions), enable Developer Mode, and look for Apple Notes Clipper — the ID is shown below the name.
Step 3 — paste the token into the Token field, click Save, then Test Connection.
Arc sometimes ignores chrome.runtime.openOptionsPage(). Navigate to the options page directly:
- Open
arc://extensions - Find Apple Notes Clipper, copy the extension ID
- Navigate to:
chrome-extension://EXTENSION_ID/options.html
- Open Apple Notes and check the iCloud account is active
- Verify the folder name matches in both the extension settings and
config.json - Check server logs:
tail -f ~/Library/Logs/notesclipper.log
launchctl unload ~/Library/LaunchAgents/com.bartekprzegosc.notesclipper.plist
rm ~/Library/LaunchAgents/com.bartekprzegosc.notesclipper.plist
rm local-server/config.json
./install.shThen re-enter the new token in the extension Settings.
launchctl unload ~/Library/LaunchAgents/com.bartekprzegosc.notesclipper.plist
rm ~/Library/LaunchAgents/com.bartekprzegosc.notesclipper.plistThen remove the extension from chrome://extensions.