投稿する

EXIT研究所 by Mac-mini

Mac mini上でClaude Codeとlaunchdを連携させ、M&Aメディア運営を24時間フルオートメーション化するための自律型エージェント環境です。ニュース収集、Threadsやnoteの記事生成・投稿、さらにはDB管理まで、役割の異なる複数のAIエージェントがスケジュールに基づいて自律的に実行します。 Discordからの常駐応答に加え、SQLiteやSupabase、Google Sheetsと連携した高度なデータ処理を統合しているのが特徴です。Macの常時稼働リソースを活かし、コンテンツ制作からプラットフォーム運用までのワークフローを完全に自動化したいエンジニアやマーケターの基盤として活用できます。
zip未取得

EXIT研究所 — Mac mini 24時間自動運転システム

概要

Mac mini 上で Claude Code + launchd を組み合わせ、M&A企業価値データベースの運営に関わる各種タスクを24時間自律実行するシステム。

ポケモンをモチーフにした複数のAIエージェントが役割分担しながら稼働する。

アーキテクチャ

Mac mini ({username})
├── claude-bot(常駐)
│   └── Discord #exit-lab からのメッセージを受信・応答
│       起動: launchd KeepAlive → claude-bot-loop.sh → script(fake TTY) → claude --channels
│
└── 定時エージェント群(launchd → claude -p で独立セッション起動)
    ├── ピカチュウ   05:10  ニュース収集
    ├── ロコン       05:25  Threads投稿案生成
    ├── エーフィ     05:30  note記事ドラフト生成
    ├── エーフィ     06:30  note記事修正
    ├── ロコン       07:00  Threads投稿実行(朝)
    ├── エーフィ     12:00  note記事公開
    ├── 夕方レビュー 19:00  今日の振り返り
    └── ロコン       20:00  Threads投稿実行(夜)

エージェント一覧 & スケジュール

ジョブ名時刻エージェント役割
claude-bot常駐—Discord受信・応答(KeepAlive)
morning-todo05:00—朝のToDo整理・Discord投稿
pikachu-news05:10ピカチュウM&Aニュース収集 → SQLite保存 → Discord投稿
rokon-post05:25ロコンThreads投稿案5本生成 → Discord提示
espeon-note05:30エーフィmarket_eventsからnote記事ドラフト生成
espeon-revision06:30エーフィドラフトを推敲・改稿
rokon-publish07:00 / 20:00ロコン承認済み投稿をThreadsへ実投稿
espeon-publish12:00エーフィnote記事を公開
evening-review19:00—今日の振り返り・明日の準備
threads-token-refresh毎月1・15日 03:00—Threadsアクセストークン自動更新

データ層

  • SQLite (db/exit_lab.db): market_events(ニュース)・posts_log(Threads投稿管理)
  • Supabase: 企業データ・マルチプル時系列・レポート・イベント
  • Google Sheets: GOOGLEFINANCE関数 → GAS → Supabase同期

ディレクトリ構成(主要部分)

exit-lab/
├── .claude/
│   ├── agents/          # 各エージェントの指示書(*.md)
│   └── skills/          # 共有スキル(rokon-post, news-watch-toolkit, etc.)
├── 03_infra/mac-config/
│   ├── launchagents/    # launchd plist(全ジョブ定義)
│   └── scripts/         # 起動スクリプト(*-run.sh, claude-bot-loop.sh)
├── db/
│   ├── exit_lab.db      # SQLite本体
│   └── migrations/      # スキーマ管理
└── scripts/             # 各エージェントのrunスクリプト

運用コマンド

# 全ジョブの稼働状態確認
launchctl list | grep fall-code

# ジョブ手動起動(例: ピカチュウ)
launchctl kickstart -k gui/$(id -u)/com.fall-code.exit-lab.pikachu-news

# ログ確認
tail -f ~/.claude/logs/claude-bot.log
tail -f ~/.claude/logs/pikachu-news.log

# ジョブ再起動(例: claude-bot)
launchctl stop com.fall-code.exit-lab.claude-bot  # KeepAliveで自動再起動

セットアップ(新Mac or 再構築時)

# 1. plistをLaunchAgentsに配置
cp 03_infra/mac-config/launchagents/*.plist ~/Library/LaunchAgents/

# 2. 全ジョブをロード
for f in ~/Library/LaunchAgents/com.fall-code.exit-lab.*.plist; do
  launchctl load "$f"
done

# 3. claude-botの起動確認
launchctl list com.fall-code.exit-lab.claude-bot

ログファイル一覧

ファイル内容
~/.claude/logs/claude-bot.logclaude-botの起動・再起動履歴
~/.claude/logs/claude-bot-launchd.logclaudeプロセスの出力
~/.claude/logs/pikachu-news.logニュース収集ログ
~/.claude/logs/rokon-post.log投稿案生成ログ
~/.claude/logs/espeon-note.lognote記事生成ログ
~/.claude/logs/rokon-publish-launchd.logThreads投稿実行ログ

トラブルシューティング

claude-botがオフラインになった

launchctl stop com.fall-code.exit-lab.claude-bot
# KeepAlive設定により自動再起動。再起動しない場合:
launchctl start com.fall-code.exit-lab.claude-bot

定期タスクが動いていない

tail -50 ~/.claude/logs/{task-name}.log
rm ~/.claude/state/{task-name}.lock  # ロックファイルが残っている場合

APIレート制限に達した

rm ~/.claude/state/usage-limit-reached