はじめに
Claude Pro を契約したので、Claude Code を使って GitHub プライベートリポジトリにメモを蓄積する仕組みを作った。
Raspberry Pi 4 をバックエンドにすることで、外出先からスマホやPCのDiscordから「メモして」と話しかけるだけでGitHubに保存される環境が完成した。
システム構成

ポイントは Raspberry Pi から外向きに接続するだけで動くこと。ポート開放もVPNも不要。
必要なもの
- Raspberry Pi 4(常時稼働しているもの)
- Claude Pro アカウント
- GitHub アカウント
- Discord アカウント
手順
1. GitHub にプライベートリポジトリを作成
memo という名前でプライベートリポジトリを作成。READMEだけの状態でOK。
2. Raspberry Pi に Claude Code をインストール
curl -fsSL https://claude.ai/install.sh | bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
claude --version
3. Claude Code にログイン
claude
ブラウザで認証コードを取得して貼り付ける。Claude Pro アカウントでログインする。
4. Personal Access Token を作成
GitHub にHTTPSでアクセスするためのトークンを作成。
- GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens
- Repository access: Only select repositories →
memoを選択 - Permissions → Repository permissions → Contents: Read and write
- Generate token してトークンをコピー(一度しか表示されないので注意)
5. リポジトリをクローン
git clone https://github.com/<username>/memo.git ~/memo
cd ~/memo
ユーザー名とパスワードを聞かれたら、パスワードに先ほどのトークンを貼り付ける。
6. リポジトリ構造を整備
memo/
├── CLAUDE.md # Claudeへの指示書
├── memos/ # 個別メモ(YYYY-MM/YYYY-MM-DD-slug.md)
└── summaries/ # サマリー
CLAUDE.md にメモの保存ルール(ファイル名規則、front matter、コミットメッセージ形式など)を書いておく。
7. Bun をインストール(Channelsプラグインに必要)
curl -fsSL https://bun.sh/install | bash
source ~/.bashrc
8. SSH known_hosts の準備
ssh-keyscan github.com >> ~/.ssh/known_hosts
これがないとプラグインのマーケットプレース追加でエラーになる。
9. Discord プラグインをインストール
Claude Code 内で:
/plugin marketplace add anthropics/claude-plugins-official
/plugin install discord@claude-plugins-official
/reload-plugins
10. Discord Bot を作成
- https://discord.com/developers/applications を開く
- New Application → 名前をつける(例:
MemoBot) - Bot セクション → Reset Token → トークンをコピー
- Privileged Gateway Intents で Message Content Intent を ON
11. Discord サーバーを作成しBotを招待
- + ボタン → サーバー作成
- Developer Portal → 作成したアプリ → OAuth2 → URL Generator
- Scopes:
bot、Bot Permissions:Send Messages - 生成URLをブラウザで開いて自分のサーバーに招待
12. Bot トークンを Claude Code に設定
Claude Code 内で:
/discord:configure <Botトークン>
13. Channels モードで Claude Code を再起動
claude --channels plugin:discord@claude-plugins-official
--channels フラグつきで起動しないと Discord 連携が動かない。
14. ペアリング
Discord で自分のサーバーのメンバーリストから Bot にDMを送る → ペアリングコードが返ってくる。
Claude Code 内で:
/discord:access pair <コード>
15. allowlist モードに固定
/discord:access policy allowlist
これで毎回ペアリングを求められなくなる。
16. systemd サービスとして自動起動設定
ラズパイ再起動後も自動で起動するよう /etc/systemd/system/claude-memo.service を作成する。tmux を使って疑似ターミナルを提供するのがポイント。
[Unit]
Description=Claude Code Discord Channels
After=network-online.target
Wants=network-online.target
[Service]
Type=forking
User=naka
WorkingDirectory=/home/naka/memo
ExecStart=/usr/bin/tmux new-session -d -s claude-memo '/home/naka/.local/bin/claude --channels plugin:discord@claude-plugins-official'
ExecStop=/usr/bin/tmux kill-session -t claude-memo
Restart=on-failure
RestartSec=10
Environment=PATH=/home/naka/.bun/bin:/home/naka/.local/bin:/usr/local/bin:/usr/bin:/bin
Environment=HOME=/home/naka
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable claude-memo
sudo systemctl start claude-memo
動作確認
Discord Bot に DM で「今までのメモをリストして」と送ると、ラズパイの Claude Code が動いてGitHubのメモを読み出して返してくれる。
メモの追加・削除・サマリー作成もすべてDiscord経由でできる。
音声メモ(Whisper連携)
Discord の音声メッセージをそのまま送ると、Whisper が自動で文字起こししてメモに保存できる。
Whisper のインストール
python3 -m venv ~/.venv/whisper
~/.venv/whisper/bin/pip install openai-whisper
Raspberry Pi 4 は CPU で動かすため、tiny または base モデルが現実的。
使い方
Discord で Bot に音声メッセージを送るだけ。Claude Code が自動的に:
- 音声ファイルを受信
- Whisper で日本語文字起こし
- テキストとしてメモに保存・GitHub にコミット
Discord Web ブラウザで使える利点
Discord はWebブラウザだけで音声メッセージの送受信が完結する。アプリのインストールに制限がある職場のPCや共用端末からでも、ブラウザさえあれば音声メモが取れるのが大きなメリット。
トラブルシューティング
/discord:start が Unknown command
/discord:start というコマンドはない。/discord:configure <token> でトークンを設定し、claude --channels plugin:discord@claude-plugins-official で起動するのが正しい流れ。
返信が "channel is not allowlisted" でブロックされる
Issue #1091 の既知バグ。Bash許可などの permission prompt の後、DMチャンネルのキャッシュが再生成される際に recipientId が失われるのが原因。
回避策:
/discord:access
を実行すると即復帰する。公式の修正待ち。
systemd サービスが起動しない(stdin エラー)
Claude Code は TTY(ターミナル)が必要なため、直接 systemd から起動するとエラーになる。tmux を使って疑似ターミナルを用意することで解決する。
SSH host key verification failed
ssh-keyscan github.com >> ~/.ssh/known_hosts
良かったポイント
| ポイント | 内容 |
|---|---|
| ポート開放不要 | ラズパイからのアウトバウンド接続のみ。自宅NAT環境のままでOK |
| API課金不要 | Claude Pro 月額のままで使える |
| デバイスを問わない | スマホ・タブレット・PCのDiscordからどこでもメモできる |
| GitHub に自動保存 | すべてのメモが履歴付きで残る |
| 後からまとめられる | 「今月のメモをまとめて」で月次サマリーが自動生成 |
| 音声メモ対応 | Discord の音声メッセージを Whisper で自動文字起こしして保存 |
| ブラウザのみで完結 | Discord Web 版で動くのでアプリインストール不要。制限のある環境でも使える |
改善したいこと
- iPad の手書きや写真もメモとして取り込めるようにしたい
- 月末に自動でサマリーを生成する仕組み
- タグでの絞り込み検索の改善
まとめ
Claude Pro を契約しているなら、ラズパイ + Discord でいつでもどこでもメモが取れる環境が数千円のハードウェア(既存のもの)と無料サービスだけで作れる。
特に Channels がアウトバウンド接続だけで動くので、家庭用ネットワークのままセキュリティを犠牲にせず外部からアクセスできる。