- README/README_JP: fix X bookmark schedule "22:00" → "every 4 hours" - README: standardize skill name /auto-min → /auto-mins - sync-x-bookmarks.sh: fix subshell variable scope (NEW_COUNT always 0) Use process substitution instead of pipe to preserve counter - CLAUDE.md: add missing frontmatter (violated own schema rules) - clips/_index.md: replace personal test data with clean template - on-file-change.sh: replace bare except with specific exceptions - on-session-end.sh: use context managers for file handles Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
24 KiB
Exbrain — 自律成長する外付けのAI脳
記憶し、整理し、振り返り、自ら進化するAIナレッジシステム
Claude Code × Obsidian × SOUL/MEMORY/DREAMS
🇺🇸 English · Karpathy's LLM Wiki にインスパイア
Exbrainとは?
Claude Codeの中に隠れている記憶(Memory)、設定ファイル(CLAUDE.md)、スキル(Skills)をObsidianで可視化。Dreamingレイヤーが自動で毎日振り返り、パターンを検出し、成長の軌跡を記録する。
PCを閉じても動く。iPhoneでも見える。人間はObsidianを開いて読むだけ。
はじめに — 全体像を理解する
Claude CodeやObsidianに馴染みがない方のために、全体像を図で解説します。
┌──────────────────────────────────────────────────────────────┐
│ あなた(人間) │
│ │
│ Claude Codeで作業 Xでブックマーク SlackにURL送信 │
│ ↓ ↓ ↓ │
└─────────┬──────────────────────┬──────────────────┬──────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌───────────────────┐ ┌──────────────────┐
│ Claude Code │ │ Cronジョブ(自動) │ │ 常駐エージェント │
│ (ローカルCLI) │ │ 4時間おき │ │ (例: OpenClaw) │
│ │ │ │ │ │
│ • /clip スキル │ │ • Xブックマーク │ │ • Slack監視 │
│ • Hooks(自動) │ │ • xurl API │ │ • URL検知 │
│ • セッション記録│ │ │ │ • firecrawl │
└────────┬────────┘ └────────┬──────────┘ └────────┬─────────┘
│ │ │
└────────────────────┼──────────────────────┘
│
▼
┌──────────────────────┐
│ ~/vault/ (Git) │
│ │
│ SOUL.md MEMORY.md │
│ DREAMS.md │
│ daily/ clips/ │
│ clients/ insights/ │
└──────────┬───────────┘
│
┌────────┼────────┐
│ │ │
▼ ▼ ▼
GitHub iCloud Obsidian
(バックアップ) (同期) (Mac+iPhone)
各コンポーネントの役割
| コンポーネント | 何か | Exbrainでの役割 |
|---|---|---|
| Claude Code | AnthropicのAIコーディングCLI (公式) | メインのAIアシスタント。/clip等のスキル実行、vault書き込み、Hook管理 |
| Obsidian | 無料のMarkdownノートアプリ (obsidian.md) | 全てを読む場所。vault = .mdファイルのフォルダ。Mac/iPhone/Android対応 |
| 常駐エージェント | バックグラウンドAI (例: OpenClaw) | Slack/Discordを24時間監視。Claude Codeを閉じてもcronジョブ実行 |
| Cloud Scheduled Tasks | Claude Code内蔵のスケジューラ (公式) | PC不要で朝夕のDreamingを実行。MEMORY.mdとDREAMS.mdを自動更新 |
| xurl | X API CLIツール | Xのツイートやブックマークを取得 |
| Firecrawl | Webスクレイピング CLI | URLをクリーンなMarkdownに変換 |
| iCloud | Apple のクラウド同期 | MacとiPhone間でvaultを自動同期 |
| GitHub | コードホスティング | vaultのバックアップ + バージョン管理 |
データフロー:クリップの仕組み
面白い記事を見つけた!
│
▼
┌─ 方法を選ぶ ────────────────────────────────────────┐
│ │
│ A) /clip URL B) Slack DMに C) Xで │
│ Claude Codeで URL送信 ブクマ │
│ │ │ するだけ │
│ ▼ ▼ │ │
│ Claude Code エージェントが (4時間後) │
│ 即座に実行 リアルタイム検知 │ │
└──────┬───────────────────┬───────────────────┬──────┘
│ │ │
└───────────────────┼───────────────────┘
│
▼
┌─────────────────┐
│ AI が処理 │
│ │
│ 1. 内容を取得 │
│ 2. 要約を生成 │
│ 3. タグ付け │
│ 4. .md保存 │
└────────┬────────┘
│
▼
vault/clips/x/2026-04-08_slug.md
│
┌─────────┼─────────┐
│ │ │
▼ ▼ ▼
_index.md daily note git push
更新 更新 GitHubへ
│
▼
iCloud 同期
│
▼
📱 iPhoneで読める
システム相関図
┌─────────────────────────────────────────────────────────┐
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Claude Code │────────▶│ ~/vault/ │◀──────┐ │
│ │ (CLIエージェント)│ 書込 │ (Obsidian) │ │ │
│ │ │ │ │ 書込 │ │
│ │ スキル: │ │ SOUL.md │ │ │
│ │ /clip │ │ MEMORY.md │ ┌────┴────┐ │
│ │ /auto-min │ │ DREAMS.md │ │ Cloud │ │
│ │ 30+個 │ │ daily/ │ │Schedule │ │
│ └──────────────┘ │ clips/ │ │ Tasks │ │
│ │ clients/ │ │ │ │
│ ┌──────────────┐ │ meetings/ │ │ 朝 07:00│ │
│ │ 常駐エージェント│────────▶│ insights/ │ │ 夕 18:30│ │
│ │ (OpenClaw) │ 書込 │ │ └─────────┘ │
│ │ │ └──────┬───────┘ │
│ │ Cronジョブ: │ git push/pull │
│ │ Xブクマ同期 │ │ │
│ │ Slack DM │ ┌──────▼───────┐ │
│ │ 日次レポート│ │ GitHub │ │
│ └──────────────┘ │ (private) │ │
│ └──────────────┘ │
│ │
│ ─── 全て ~/vault/ で繋がっている ─── │
│ │
└─────────────────────────────────────────────────────────┘
SOUL / MEMORY / DREAMS
Exbrainの核心は、Vault直下の3つのファイル:
~/vault/
├── SOUL.md ← 自分は誰か(アイデンティティ・価値観・境界線)
├── MEMORY.md ← 何を経験したか(決定・パターン・学び)
└── DREAMS.md ← どこに向かうか(洞察・成長・未解決の問い)
SOUL.md — アイデンティティ
自分が誰で、AIにどう振る舞ってほしいかを定義。Claude CodeのCLAUDE.mdと外部エージェントの性格設定を統合。
## Identity
- 名前、役割、会社
## Values
- 「完璧主義より実験主義」
- 「APIファースト、手作業は排除」
## Boundaries(絶対遵守)
- 「メール送信禁止 — 下書きのみ」
- 「Slack確認なしで送信禁止」
MEMORY.md — 経験の蓄積
AIが学んだこと全てのダイジェスト。Claude Codeの Memory(.claude/projects/*/memory/)を自動同期 + Cloud Scheduled Tasksが朝夕に追記。
## Recent
- [2026-04-07] Obsidian Vault構築、SOUL/MEMORY/DREAMS実装
## Patterns
- 金曜は会議密度が高い(3週連続)
- メール返信が午後に集中
## CC Memory サマリー(35件)
- feedback/21件: 「メール送信禁止」「GAS編集後は毎回commit」
- reference/7件: API情報、ツール設定
DREAMS.md — 内省と成長
Dreaming(朝夕+週次)が自動更新。時間とともに浮かび上がるパターンを記録。
## Current Insights
- 月曜は会議10件超が常態化(3週連続)
## Emerging Patterns
| パターン | 回数 | 傾向 |
|---------|------|------|
| ツール→スキル→自動化サイクル | 10+ | 一貫 |
## Growth Trajectory
- Q1: スキル26個構築、cronジョブ32本稼働
Clips — ナレッジクリッピング
ツイートや記事を自動でvaultに蓄積。Karpathyの「知識が複利で増える」パターンで、読んだもの全てがObsidianで検索可能に。
3つの取り込み方法
| 方法 | トリガー | 最適な場面 |
|---|---|---|
/clip スキル |
Claude Codeで /clip <URL> |
デスクワーク中、高品質な要約 |
| Slack DM | エージェントのDMにURL投稿 | 外出先(スマホ)、即座にキャプチャ |
| Xブックマーク自動同期 | 4時間おきに自動 | パッシブ — Xでブックマークするだけ |
1. /clip — Claude Codeで手動クリップ
/clip https://x.com/karpathy/status/1234567890
/clip https://example.com/great-article
/clip https://url1.com https://url2.com # 複数URL対応
X tweet vs 記事を自動判定。内容取得→要約・タグ生成→clips/保存→daily note追記→git push。
2. Slack DM — スマホからクリップ
エージェントのSlack DMにURLを送るだけ:
https://example.com/interesting-article
エージェントがURLを検知→スクレイピング→要約→clips/保存→スレッド返信:
📎 クリップしました!
📄 LLMが全てを変える方法
🏷️ #ai #llm #future
📁 vault/clips/articles/2026-04-08_llm-change-everything.md
セットアップ: 常時稼働エージェント(OpenClaw等)+ Slack Socket Modeが必要。詳細はSlack Clipセットアップ参照。
3. Xブックマーク自動同期
普段どおりXでツイートをブックマークするだけ。cronジョブが自動でvaultに同期。
デフォルトスケジュール: 4時間おき(8:00, 12:00, 16:00, 20:00)
必要なもの: xurl CLI + OAuth2認証
# 手動テスト
xurl bookmarks -n 5 --auth oauth2
クリップファイルのフォーマット
---
date: 2026-04-08
type: clip
source: x | article
url: https://...
author: "@username"
tags: [ai, claude-code, agent]
via: slack | cli | cron
---
## 要約
(3-5行の日本語要約)
## キーポイント
- ポイント1
- ポイント2
## 原文メモ
> 重要な引用
## 関連
[[insights/...]] | [[clips/...]]
daily noteへの自動連携
クリップするたびに、その日のdaily noteに自動追記:
## Clips
- [[clips/x/2026-04-08_sam-altman-social-contract]] — Sam Altmanのsocial contract
- [[clips/articles/2026-04-08_karpathy-llm-wiki]] — Karpathy LLM Wikiパターン
Dataviewクエリ
Obsidianでタグ別にクリップを閲覧:
TABLE rows.date, rows.source, rows.author
FROM "clips"
WHERE type = "clip"
FLATTEN tags as tag
GROUP BY tag
SORT rows.date DESC
Slack Clipセットアップ
Slack DM → clip を有効にする手順:
- スキルファイル作成 — エージェントのワークスペースに:
workspace/skills/slack-clip/
├── SKILL.md ← スキル概要
├── BEHAVIOR.md ← 検知ルール + 処理フロー
└── processed-clips.json ← 重複防止トラッキング
- 自動アクション追加 — エージェントの設定(
AGENTS.md等)に:
### URL投稿 → Vaultクリップ
DMにURLを含むメッセージが来たら自動でvault/clips/に保存。
検知: https:// を含む(転送メッセージ・Slack内部URL・画像直リンクは除外)
処理: URL判定 → 取得 → 要約・タグ → vault保存 → git push → スレッド返信
- ツール確認 — エージェントが以下にアクセスできること:
xurl(X API CLI)+ OAuth2認証firecrawl(Webスクレイピング CLI)- vault リポジトリへのgitアクセス
Xブックマークcronセットアップ
エージェントスケジューラにcronジョブを追加:
{
"name": "clip-x-bookmarks",
"schedule": "0 8-23/4 * * *",
"message": "xurl bookmarks -n 20 --auth oauth2 でブックマーク取得、vault/clips/x/ と重複チェック、新規を要約して保存、_index.md更新、git push"
}
アーキテクチャ
┌─ Layer 1: Cloud Scheduled Tasks(PC不要)────────────────┐
│ │
│ 07:00 vault-daily-morning │
│ ├── SOUL.md を読む(ユーザー理解) │
│ ├── MEMORY.md を読む(直近の文脈) │
│ ├── Google Calendar → 今日の予定 │
│ ├── Slack → 昨夜のハイライト │
│ ├── Gmail → 重要な未読メール │
│ ├── Morning Dreaming(昨日の振り返り→今日の注目) │
│ ├── MEMORY.md の Recent を更新 │
│ └── git push │
│ │
│ 18:30 vault-daily-evening │
│ ├── SOUL.md + MEMORY.md + DREAMS.md を読む │
│ ├── Evening Dreaming(今日+7日間→パターン検出) │
│ ├── MEMORY.md + DREAMS.md を更新 │
│ ├── 日曜: 週次Dreaming + Lint + Slack通知 │
│ └── git push │
│ │
└────────────────────────┬──────────────────────────────────┘
│ push
▼
┌─ GitHub(private repo)──────────────────────────────────┐
│ vault/の全ファイル │
└────────────────────────┬──────────────────────────────────┘
│ pull(launchd 毎時)
▼
┌─ Layer 2: ローカル自動化 ────────────────────────────────┐
│ │
│ Claude Code Hooks (async: true) │
│ ├── PostToolUse → ファイル変更をログ記録 │
│ └── Stop → セッション終了をdaily note + MEMORY.mdに記録 │
│ │
│ 外部エージェント Cron(PCオン時の追加データ) │
│ ├── Salesforce/Stripe/HERP等の専門データ追記 │
│ └── PCオフ時はスキップ(Layer 1だけで完結) │
│ │
└────────────────────────┬──────────────────────────────────┘
│ iCloud同期
▼
Obsidian(Mac + iPhone)
ハイブリッド設計 — 3つの性格
vault/
├── system/, skills/, memory/
│ → 静的ミラー(ダッシュボード)
│ → Claude Codeの中身を自動同期、読むだけ
│ → <!-- SYNCED: DO NOT EDIT --> ヘッダー付き
│
├── daily/
│ → 自動ログ + 手書き日記
│ → Calendar + Slack + Gmail + AI Analysis + Dreaming
│ → PC閉じてても Cloud Scheduled Tasks が動く
│
└── meetings/, clients/, insights/
→ Karpathyパターン(知識が複利で増える)
→ 議事録を処理するたびに顧客ページに自動蓄積
→ 12回の議事録を読み返す必要がない
Vault構造
~/vault/
├── SOUL.md ← アイデンティティ・価値観・境界線
├── MEMORY.md ← 経験のダイジェスト(CC Memoryミラー)
├── DREAMS.md ← Dreaming蓄積(自動更新)
├── CLAUDE.md ← Schema(LLM向けルール定義)
│
├── daily/ ← デイリーノート(朝夕自動生成)
├── system/ ← Claude Codeシステムミラー(SYNCED)
├── skills/ ← スキル一覧+個別ページ(SYNCED)
├── memory/ ← CC Memory個別ファイルミラー(SYNCED)
├── clips/ ← ツイート・記事のクリッピング(自動+手動)
│ ├── x/ Xブックマーク(4時間おき自動同期)
│ ├── articles/ Web記事(/clip or Slack経由)
│ ├── _index.md クリップ一覧(自動更新)
│ └── tags.md タグ別分類(Dataview対応)
│
├── clients/ ← 顧客ナレッジ蓄積(Karpathyパターン)
├── meetings/ ← 議事録要点
├── decisions/ ← 経営判断ログ
├── insights/ ← 学び・パターン + 週次Dreaming
├── templates/ ← テンプレート
└── scripts/ ← hookスクリプト + 同期スクリプト
セットアップ
前提条件
- Claude Code(Pro or Max)
- Obsidian(無料)
- GitHubアカウント
- (オプション)Slack / Google Calendar / Gmail の Connector
Step 1: Vault作成
mkdir -p ~/vault/{daily,system,skills,memory/{feedback,reference,project,user},clients,meetings,decisions,insights,templates,scripts}
# iCloud同期(iPhone対応する場合)
mv ~/vault ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/exbrain
ln -s ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents/exbrain ~/vault
Step 2: テンプレートをコピー
git clone https://github.com/YOUR_USERNAME/exbrain.git /tmp/exbrain
cp -r /tmp/exbrain/vault-template/* ~/vault/
Step 3: Hooks設定
~/.claude/settings.json に追加:
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [{
"type": "command",
"command": "bash ~/vault/scripts/on-file-change.sh",
"async": true
}]
}],
"Stop": [{
"hooks": [{
"type": "command",
"command": "bash ~/vault/scripts/on-session-end.sh",
"async": true
}]
}]
}
}
Step 4: 初回同期
Claude Codeで:
~/.claude/skills/ の全スキル、~/.claude/projects/*/memory/ の全記憶ファイルを
~/vault/ に同期してください。SOUL.md にアイデンティティを、MEMORY.md に記憶の
ダイジェストを作成してください。
Step 5: GitHubバックアップ
cd ~/vault
git init && git add -A && git commit -m "Initial vault"
gh repo create my-vault --private --source=. --push
Step 6: Cloud Scheduled Tasks(PC不要にする場合)
- vault-daily-morning(毎朝07:00): SOUL.md読み→Calendar+Slack+Gmail→daily note + Morning Dreaming
- vault-daily-evening(毎夕18:30): SOUL.md+MEMORY.md+DREAMS.md読み→Evening Dreaming+パターン検出
含まれるスクリプト
| スクリプト | 用途 |
|---|---|
on-session-end.sh |
Stop hook: daily note + MEMORY.mdにセッション記録 |
on-file-change.sh |
PostToolUse hook: CLAUDE.md/memory/skill変更をログ |
weekly-sync.sh |
週次Lint: 壊れたリンク・孤立ページ・古いページ検出 |
git-pull-sync.sh |
毎時git pull(stash対応) |
sync-agent-to-vault.sh |
外部エージェントのJSONデータでdaily note充実化 |
sync-x-bookmarks.sh |
Xブックマーク自動取得+クリップ(4時間おき) |
全スクリプトmacOS互換(GNU拡張なし)、セキュリティレビュー済み(PIDロック、インジェクション対策)。
参考
- Karpathy's LLM Wiki — 設計思想の原点
- Claude Code Hooks — async hookの公式ドキュメント
- Cloud Scheduled Tasks — PC不要の自動化
- QMD — Markdownセマンティック検索(100ページ超で導入検討)
ライセンス
MIT