Skillshub apple-notes-migration-deep-dive
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/apple-notes-migration-deep-dive" ~/.claude/skills/comeonoliver-skillshub-apple-notes-migration-deep-dive && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/apple-notes-migration-deep-dive/SKILL.mdsource content
Apple Notes Migration Deep Dive
Migration Paths
| 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) |
Apple Notes → Obsidian Migration
#!/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"
Obsidian → Apple Notes Import
#!/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