From apple-notes-pack
Migrates notes between Apple Notes, Obsidian, Notion, and other platforms using AppleScript/JXA and bash. Trigger: 'apple notes migration'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/apple-notes-pack:apple-notes-migration-deep-diveThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
| From | To | Method |
| From | To | Method |
|---|---|---|
| Apple Notes | Obsidian | Export HTML → convert to Markdown → copy to vault |
| Apple Notes | Notion | Export JSON → Notion API import |
| Obsidian | Apple Notes | Read .md → convert to HTML → JXA create |
| Evernote | Apple Notes | File > Import from Evernote (built-in) |
#!/bin/bash
# Export all Apple Notes to Obsidian vault
VAULT_DIR="$HOME/obsidian-vault/Apple Notes Import"
mkdir -p "$VAULT_DIR"
osascript -l JavaScript -e "
const Notes = Application(\"Notes\");
Notes.defaultAccount.notes().map(n => JSON.stringify({
title: n.name(),
body: n.body(),
folder: n.container().name(),
created: n.creationDate().toISOString(),
})).join(\"\\n---SEP---\\n\");
" | while IFS= read -r line; do
[ "$line" = "---SEP---" ] && continue
title=$(echo "$line" | jq -r ".title" 2>/dev/null || continue)
body=$(echo "$line" | jq -r ".body" 2>/dev/null)
folder=$(echo "$line" | jq -r ".folder" 2>/dev/null)
created=$(echo "$line" | jq -r ".created" 2>/dev/null)
# Convert HTML to Markdown (basic)
md=$(echo "$body" | sed "s/<h1>/# /g; s/<\/h1>//g; s/<h2>/## /g; s/<\/h2>//g; s/<br>/\\n/g; s/<[^>]*>//g")
safe_title=$(echo "$title" | tr "/:*?\"<>|" "-" | head -c 100)
mkdir -p "$VAULT_DIR/$folder"
echo -e "---\ncreated: $created\nsource: apple-notes\n---\n\n# $title\n\n$md" > "$VAULT_DIR/$folder/$safe_title.md"
done
echo "Migration complete: $VAULT_DIR"
#!/bin/bash
for md_file in "$VAULT_DIR"/*.md; do
title=$(head -1 "$md_file" | sed "s/^#\s*//")
body=$(cat "$md_file" | sed "s/^# /<h1>/;s/$/<\/h1>/" | sed "s/\n/<br>/g")
osascript -l JavaScript -e "
const Notes = Application(\"Notes\");
const note = Notes.Note({name: \"$title\", body: \"$body\"});
Notes.defaultAccount.folders[0].notes.push(note);
"
sleep 1
done
npx claudepluginhub kriptoburak/jeremylongshore-claude-code-plugins-plus-skills --plugin apple-notes-pack2plugins reuse this skill
First indexed Jul 17, 2026
Migrates notes between Apple Notes, Obsidian, Notion and other platforms using JXA/osascript scripts. Includes backup and conversion steps. Triggers on 'apple notes migration'.
Migrates notes from Notion, Evernote, Roam Research, Bear, and Apple Notes into Obsidian with attachment relocation, wikilink conversion, and frontmatter generation.
Manages Apple Notes on macOS: create, search, read, update, delete, organize notes and folders. Uses MCP tools for safe formatting.