flowchart LR
N["Apple メモ<br>(アイデア・議事録・スクラップ)"] --> E["抽出<br>AppleScript/JXA 中心"]
E --> G["ガード<br>専用フォルダ + 機密スキャン"]
G --> S["stamp-okf<br>OKF バンドル化"]
S --> V["validate-okf<br>リンターで健康診断"]
V --> P["育てて公開<br>HTML + 機械用バンドル"]
4. Apple Notes をもっと育てる
macOS ユーザー向け。Apple「メモ」を OKF バンドルへ育てる手法の提案(実験的)。安全に扱うための必須ガードつき
Apple Notes をもっと育てる
macOS ユーザーなら誰でも、Apple「メモ」という苗箱を持っています。日々のアイデア、読書メモ、議事録、スクラップ — そこには「種」がたくさん眠っています。
このページは、その種を okf-seedling の苗箱へ移植して OKF バンドルとして育てる提案です。
位置づけ(重要)
- 実験的・手法紹介です。コア機能ではありません。実装する場合は必ず下記の「必須ガード」を守ってください
- このツール(demo サイト・テンプレート)には importer は同梱していません。仕組みの提案として読んでください
- 想定読者: macOS を使っていて、Apple メモを「知識バンドル」に育てたい人
なぜ「育てる」のか
育苗箱の思想(→ Vision)では、知識は放置せず育てるものです。Apple メモはまさに:
- 「種」: メモ1 件 = 1 つのアイデア/知識の芽
- 「育つ」: OKF バンドル化 → frontmatter で飾りつけ → 検証 → 公開(RAG・エージェントへ渡せる)
抽出の方法(macOS)
主経路: AppleScript / JXA(推奨)
権限なしで全ノートにアクセスできます(本機の調査で 8,255 ノート の name/body/日付/フォルダ/id 取得を確認)。body は HTML タグ混じりのため、プレーンテキストへ整形が必要です。
// 例: JXA でメモを列挙する(概念)
const Notes = Application("Notes");
const items = Notes.notes().map((n) => ({
name: n.name(),
folder: n.container().name(),
html: n.body(),
modified: n.modificationDate(),
}));
JSON.stringify(items);副経路: SQLite(高速だが best-effort)
~/Library/Group Containers/group.com.apple.notes/ の SQLite は高速ですが:
- Full Disk Access 未付与だと読めない(Operation not permitted)
- 本文(
ZICNOTEDATA.ZBODY)は NSKeyedArchiver バイナリのため、素直なテキスト抽出は困難
→ 「高速だが不確実」な副経路として扱い、本文の信頼抽出は JXA を主にします。
| 経路 | 速度 | 本文の信頼性 | 権限 |
|---|---|---|---|
| AppleScript / JXA | 中 | 高い(整形が必要) | 不要 |
| SQLite 直読み | 速い | 低(ZBODY バイナリ) | Full Disk Access 必要 |
必須ガード(これを外したらやらない)
Apple メモには秘密情報(API トークン、パスワード等)が混入します。これは実際に確認済みの事実です。バンドル→コミット経路で機密が git に乗るリスクがあります。必ず次を行ってください。
- 専用フォルダのみ抽出: 全ノートを抽出しない。たとえば
OKF 苗箱フォルダの中だけを対象にする - 機密スキャン必須: 抽出した本文をトークン/キー/API らしき文字列で検査し、検出されたらスキップ or 停止(コミット前に必ず実施)
- コミット対象の警告: importer 実行前に「この内容は git に載ります」と表示する
- 型は明示指定: OKF の 6 型は汎用メモ向けではないため、デフォルト
Playbook、--typeで明示指定する(無理に当てはめない) - 差分ノイズに注意: メモは頻繁に変わります。バンドル hash が毎回更新されるため、Playwright 学習パイプラインの差分ノイズになりがち
育て方の実際(提案手順)
# 概念手順(実装する場合は importer がこの流れを担う)
# 1) 専用フォルダ内のメモを JXA で列挙
# 2) 機密スキャン -> 検出時はスキップ
# 3) <okf-seedling の雛形> に frontmatter(type: Playbook)を付与
# 4) okf/concepts/ に配置 -> validate-okf で検証- 専用フォルダを決める(例:
OKF 苗箱フォルダ) - JXA 抽出 → 本文を Markdown に整形
- 機密スキャン → OKF frontmatter(type: Playbook)付与
quarto renderでバンドル生成 →node tools/validate-okf.mjsで検証- 育てたバンドルをデプロイ or 学習パイプラインへ
この提案の限界
- 秘密情報リスクが最大の課題です。ガードを厳格にしても、人間のミスはゼロにできません。「育てる」のは自分専用の閉じた知識にとどめ、公開する場合は自分で再確認してください
- 本文抽出(JXA の HTML 整形)は macOS バージョンにより多少挙動が変わります
- 型の相性(OKF 6 型 vs 汎用メモ)は、
typeの明示指定で折り合いをつける設計です
まとめ
Apple メモ = あなたの苗箱。okf-seedling = それを育てるもう一つの苗箱。
「専用フォルダに絞り、機密をスキャンし、type を明示する」 — この 3 つを守れば、散らかったメモが検証済みの知識バンドルとして育ちます。
続きは 1. Create a Bundle から始めて、[4] の育苗箱で育てた苗を移植してください。