mcpField
A
apple-notes

apple-notes

github.com/acedatacloud生産性1781 回インストール今日更新
リポジトリ

apple-notes について

apple-notesは、AppleScriptを使ってユーザーのNotes.appをローカルで管理するmacOS専用スキルです。Python標準ライブラリのみのスクリプトで、ノートの閲覧、検索、書き出し、編集に対応し、書き込みは事前確認を経て実行します。

主な機能

  1. 01フォルダーとノートの一覧表示
  2. 02ノートのタイトルと本文の検索
  3. 03ノートの表示と書き出し
  4. 04ノートの作成、追記、移動、削除
  5. 05確定前の書き込みプレビュー

活用シーン

  1. 01テキストやフォルダーからノートを検索
  2. 02ノートをMarkdown、HTML、テキストで書き出し
  3. 03プレビュー後にノートを作成または更新
  4. 04Notes内でノートやフォルダーを移動

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/acedatacloud/skills --skill apple-notes

インストール後、Claude Code で/apple-notesを入力して読み込まれたか確認します。

同梱ファイルscripts/notes.py

詳細

apple-notes — AppleScript を使用して Apple Notes をローカルで管理

macOS 上の Notes.app を介して、ユーザーの実際の Apple Notes を操作します。Apple は Notes 用のクラウド API を提供していないため、OAuth 認証やトークンの注入は不要です。このスキルはユーザー自身の Mac 上で動作し、AppleScript(osascript)を使用して Notes.app と通信します。macOS 上でエージェントが動作する環境であれば、AceDataCloud desktop app(ユーザーの Mac 上でローカルツール/ローカル MCP を実行します)、macOS 上の Claude Code、またはユーザーの Mac 上の CodingBridge ノードで利用できます。

frontmatter の surfaces: [mac] は、このスキルがmacOS デスクトップ専用であることを示します。Web/iOS/Android/Windows のサーフェスでは実行できません(そこにはローカルの Notes.app がありません)。スキル/コネクターのディレクトリ UI はこれを読み取り、カードに「macOS desktop」と表示して、macOS デスクトップアプリからインストールするよう案内します。surfaces が指定されていない場合、スキルはどこでも利用可能と見なされます。

このスキルには scripts/notes.py が含まれています。Python の標準ライブラリのみで完結しており、osascript を呼び出します。pip install も brew も不要です。動的な値は環境変数として渡され、AppleScript のソースに直接埋め込まれることはありません。そのため、ノートの内容によってスクリプトが壊れたり、コマンドが注入されたりすることはありません。

要件

  • Notes アプリを搭載した macOS。python3(システムの Python で問題ありません)。
  • オートメーションの許可。 最初の呼び出し時に、macOS の確認ダイアログ 「Terminal が Notes の制御を求めています」 が表示されます。許可するか、システム設定 › プライバシーとセキュリティ › オートメーション ›(使用するターミナル/エージェント)› Notes で有効にしてください。認証エラーが発生すると、CLI はユーザーにこの手順を正確に案内します。再試行を繰り返さないでください。
  • Notes を参照すると、アプリはバックグラウンドで起動します(ウィンドウが強制的に開かれることはありません)。
NOTES="${SKILL_DIR:-.}/scripts/notes.py"   # run from this skill's directory
python3 "$NOTES" folders                    # smoke-test the connection

コマンド

コマンド読み取り/書き込み目的
folders読み取りフォルダーとノートの件数を一覧表示
list [--folder F] [--limit N]読み取りノートを新しい順に一覧表示:ID、タイトル、フォルダー、日付
search QUERY [--folder F] [--limit N]読み取りタイトルと本文を対象に、大文字と小文字を区別しない部分一致検索
view NOTE_ID [--format json|text|html]読み取り1 件のノートを表示(メタデータ+本文)
export NOTE_ID [--format md|html|text] [-o FILE]読み取り1 件のノートを Markdown/HTML/テキストにエクスポート
create --title T [--body B | --body-file F] [--folder F]書き込みノートを作成
append NOTE_ID [--body B | --body-file F]書き込み既存のノートにテキストを追加
move NOTE_ID --folder F書き込みノートを別のフォルダーに移動
new-folder NAME書き込みフォルダーを作成
delete NOTE_ID書き込みノートを最近削除した項目に移動(復元可能)

ほとんどのコマンドは JSON を出力します(エラーも常に JSON:{"error": ...})。例外として、view --format text|html と -o を指定しない export は、ノートの内容をそのまま stdout に出力します。NOTE_ID は list/search が返す不透明な x-coredata://… ID です。必ず最初に最新の ID を取得してください。推測で指定しないでください。

読み取りの例

python3 "$NOTES" folders
python3 "$NOTES" list --limit 20
python3 "$NOTES" list --folder "Work" --limit 50
python3 "$NOTES" search "invoice" --limit 20
python3 "$NOTES" view "x-coredata://…/p42"
python3 "$NOTES" export "x-coredata://…/p42" --format md -o note.md

書き込みには確認が必要です(末尾に --confirm がなければドライラン)

create、append、move、new-folder、delete は、ユーザーの実際のノートを変更します。末尾に --confirm がない場合はドライランを実行し、実行予定の内容を出力します。--confirm が有効になるのは、最後の引数として指定された場合のみです。必ずドライランを表示し、明示的な「はい」を得てから、末尾に --confirm を追加して再実行してください。

# Create — dry-run, then confirm
python3 "$NOTES" create --title "Groceries" --body "milk\neggs"                # preview
python3 "$NOTES" create --title "Groceries" --body "milk\neggs" --confirm      # writes

# Create in a folder, body from a file
python3 "$NOTES" create --title "Spec" --body-file draft.md --folder "Work" --confirm

# Append to an existing note
python3 "$NOTES" append "x-coredata://…/p42" --body "one more line" --confirm

# Move / organize
python3 "$NOTES" new-folder "Archive" --confirm
python3 "$NOTES" move "x-coredata://…/p42" --folder "Archive" --confirm

# Delete → goes to Recently Deleted (recoverable ~30 days)
python3 "$NOTES" delete "x-coredata://…/p42" --confirm

内容はプレーンテキストとして扱われます(各行が段落になり、--title はノートの先頭行となり、Notes ではタイトルとして表示されます)。入力内の HTML はエスケープされるため、マークアップを注入することはできません。--body で改行するには \n を使うか、--body-file でファイルを指定してください。

注意事項

  • これはユーザーの実際の Notes アカウントです。 書き込みを行う前に必ず確認してください。
  • list はライブラリ全体をスキャンします。大規模なアカウントでは数秒かかることがあります。--folder で対象を絞り、--limit で上限を設定してください(デフォルトは 50)。search は Notes 内を検索するため、より高速です。
  • 添付ファイル/画像: 画像や添付ファイルを含むメモはテキストとして読み取り、エクスポートできますが、append では埋め込み添付ファイルが保持されない場合があります。この方法で添付ファイル付きのメモを編集するのは避け、Notes で開いてください。
  • エクスポート → Markdown では、Notes の一般的な書式(見出し、太字/斜体、リスト、リンク、改行)が変換されます。リッチオブジェクト(表、描画、スキャンした書類)はプレーンテキストに劣化します。
  • move で移動できるのは同一アカウント内のみです(例:iCloud)。アカウントをまたぐ移動は失敗します。
  • NOTE_ID を決めつけないでください。ID はストアごとに異なるため、必ず先に list / search で取得してください。
  • 認証エラーが継続する場合は、Automation の権限がありません。ユーザーに権限を付与するよう伝え(「Requirements」を参照)、処理を中止してください。ループして再試行しないでください。

コメント