exbrain/README_JP.md
Masahiro Chaen 2c2343e081 fix: resolve all errors from full repository audit
- 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>
2026-04-08 23:29:08 +09:00

543 lines
24 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p align="center">
<img src="assets/banner.png" alt="Exbrain Banner" width="800">
</p>
<h1 align="center">Exbrain — 自律成長する外付けのAI脳</h1>
<p align="center">
<b>記憶し、整理し、振り返り、自ら進化するAIナレッジシステム</b><br>
Claude Code × Obsidian × SOUL/MEMORY/DREAMS<br><br>
<a href="README.md">🇺🇸 English</a> · <a href="https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f">Karpathy's LLM Wiki</a> にインスパイア
</p>
## 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 ([公式](https://docs.anthropic.com/en/docs/claude-code)) | メインのAIアシスタント。`/clip`等のスキル実行、vault書き込み、Hook管理 |
| **Obsidian** | 無料のMarkdownートアプリ ([obsidian.md](https://obsidian.md)) | 全てを**読む**場所。vault = .mdファイルのフォルダ。Mac/iPhone/Android対応 |
| **常駐エージェント** | バックグラウンドAI (例: [OpenClaw](https://openclaw.com)) | Slack/Discordを24時間監視。Claude Codeを閉じてもcronジョブ実行 |
| **Cloud Scheduled Tasks** | Claude Code内蔵のスケジューラ ([公式](https://docs.anthropic.com/en/docs/claude-code/scheduled-tasks)) | 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と外部エージェントの性格設定を統合。
```markdown
## Identity
- 名前、役割、会社
## Values
- 「完璧主義より実験主義」
- 「APIファースト、手作業は排除」
## Boundaries絶対遵守
- 「メール送信禁止 — 下書きのみ」
- 「Slack確認なしで送信禁止」
```
### MEMORY.md — 経験の蓄積
AIが学んだこと全てのダイジェスト。Claude Codeの Memory`.claude/projects/*/memory/`)を自動同期 + Cloud Scheduled Tasksが朝夕に追記。
```markdown
## Recent
- [2026-04-07] Obsidian Vault構築、SOUL/MEMORY/DREAMS実装
## Patterns
- 金曜は会議密度が高い3週連続
- メール返信が午後に集中
## CC Memory サマリー35件
- feedback/21件: 「メール送信禁止」「GAS編集後は毎回commit」
- reference/7件: API情報、ツール設定
```
### DREAMS.md — 内省と成長
Dreaming朝夕+週次)が自動更新。時間とともに浮かび上がるパターンを記録。
```markdown
## 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](https://openclaw.com)等)+ Slack Socket Modeが必要。詳細は[Slack Clipセットアップ](#slack-clipセットアップ)参照。
### 3. Xブックマーク自動同期
普段どおりXでツイートをブックマークするだけ。cronジョブが自動でvaultに同期。
**デフォルトスケジュール**: 4時間おき8:00, 12:00, 16:00, 20:00
**必要なもの**: [xurl](https://github.com/twitterdev/xurl) CLI + OAuth2認証
```bash
# 手動テスト
xurl bookmarks -n 5 --auth oauth2
```
### クリップファイルのフォーマット
```markdown
---
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に自動追記:
```markdown
## 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でタグ別にクリップを閲覧:
```dataview
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 を有効にする手順:
1. **スキルファイル作成** — エージェントのワークスペースに:
```
workspace/skills/slack-clip/
├── SKILL.md ← スキル概要
├── BEHAVIOR.md ← 検知ルール + 処理フロー
└── processed-clips.json ← 重複防止トラッキング
```
2. **自動アクション追加** — エージェントの設定(`AGENTS.md`等)に:
```markdown
### URL投稿 → Vaultクリップ
DMにURLを含むメッセージが来たら自動でvault/clips/に保存。
検知: https:// を含む転送メッセージ・Slack内部URL・画像直リンクは除外
処理: URL判定 → 取得 → 要約・タグ → vault保存 → git push → スレッド返信
```
3. **ツール確認** — エージェントが以下にアクセスできること:
- `xurl`X API CLI+ OAuth2認証
- `firecrawl`Webスクレイピング CLI
- vault リポジトリへのgitアクセス
### Xブックマークcronセットアップ
エージェントスケジューラにcronジョブを追加:
```json
{
"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 TasksPC不要────────────────┐
│ │
│ 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
┌─ GitHubprivate repo──────────────────────────────────┐
│ vault/の全ファイル │
└────────────────────────┬──────────────────────────────────┘
│ pulllaunchd 毎時)
┌─ Layer 2: ローカル自動化 ────────────────────────────────┐
│ │
│ Claude Code Hooks (async: true) │
│ ├── PostToolUse → ファイル変更をログ記録 │
│ └── Stop → セッション終了をdaily note + MEMORY.mdに記録 │
│ │
│ 外部エージェント CronPCオン時の追加データ
│ ├── Salesforce/Stripe/HERP等の専門データ追記 │
│ └── PCオフ時はスキップLayer 1だけで完結
│ │
└────────────────────────┬──────────────────────────────────┘
│ iCloud同期
ObsidianMac + 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 ← SchemaLLM向けルール定義
├── 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 CodePro or Max
- Obsidian無料
- GitHubアカウント
- オプションSlack / Google Calendar / Gmail の Connector
### Step 1: Vault作成
```bash
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: テンプレートをコピー
```bash
git clone https://github.com/YOUR_USERNAME/exbrain.git /tmp/exbrain
cp -r /tmp/exbrain/vault-template/* ~/vault/
```
### Step 3: Hooks設定
`~/.claude/settings.json` に追加:
```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バックアップ
```bash
cd ~/vault
git init && git add -A && git commit -m "Initial vault"
gh repo create my-vault --private --source=. --push
```
### Step 6: Cloud Scheduled TasksPC不要にする場合
[claude.ai/code/scheduled](https://claude.ai/code/scheduled) で:
- **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 pullstash対応 |
| `sync-agent-to-vault.sh` | 外部エージェントのJSONデータでdaily note充実化 |
| `sync-x-bookmarks.sh` | Xブックマーク自動取得+クリップ4時間おき |
全スクリプトmacOS互換GNU拡張なし、セキュリティレビュー済みPIDロック、インジェクション対策
## 参考
- [Karpathy's LLM Wiki](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f) — 設計思想の原点
- [Claude Code Hooks](https://docs.anthropic.com/en/docs/claude-code/hooks) — async hookの公式ドキュメント
- [Cloud Scheduled Tasks](https://docs.anthropic.com/en/docs/claude-code/scheduled-tasks) — PC不要の自動化
- [QMD](https://github.com/tobi/qmd) — Markdownセマンティック検索100ページ超で導入検討
## ライセンス
MIT