# 🛸 YĀBU-1 / TAMA STATION — 操作マニュアル

> **このマニュアルは、たまさんが「何も覚えていない状態」で戻ってきても、自分のチーム / システムを使い続けられるように書かれています。**
> 上から順に読めば、半日でだいたい思い出せます。困ったら検索 (Ctrl+F) で該当章にジャンプ。
>
> 最終更新: 2026-05-11 / Version: 1.0

---

## 目次

1. [まず最初に — 1 分オリエンテーション](#1-まず最初に--1-分オリエンテーション)
2. [毎日のフロー](#2-毎日のフロー)
3. [機能一覧 — 使う側から](#3-機能一覧--使う側から)
4. [会話で動かす — 合言葉とスキル](#4-会話で動かす--合言葉とスキル)
5. [裏で動いてる — 自動稼働ジョブ](#5-裏で動いてる--自動稼働ジョブ)
6. [保守 / トラブル / 監視](#6-保守--トラブル--監視)
7. [用語集](#7-用語集)
8. [緊急時の手順](#8-緊急時の手順)
9. [ファイル / ディレクトリ地図](#9-ファイル--ディレクトリ地図)

---

## 1. まず最初に — 1 分オリエンテーション

### あなたは誰
- **たまさん**、家庭医（総合診療医）、活動テーマ「学び方をデザインする」
- AI エージェントチームを個人運営、Hetzner CX23 で常時稼働
- 療養期間を経て復帰中。**好奇心は強いが「降ろす」のは苦手**、という自己認識あり

### このシステムは何
- 13 人のエージェントが朝の briefing / ラジオ / 教材 / Deep Dive / 瞑想を自動生成
- 設計原理は **closure-as-a-service**: エージェントが好奇心を完了で消化する
- 全部 Tailscale 内部 (家族や同業者は基本見えない)

### 最初の 3 操作
1. **iPad Safari か Mac Chrome で開く**: `https://agent-team.tail9617af.ts.net/dashboard/home.html`
   → ホーム画面に追加で PWA アプリ化。これが「ブリッジ」(コックピット)
2. **今朝の briefing を読む**: ブリッジから「Conductor」を開くか、`/dashboard/` 直接
3. **Spotify を開いて「たまラジ」を流す**: 5:00 配信の AI 対談ラジオ

### 何か不安になったら
- **Pocket Channel** (`/pocket-channel/`) で Claude に話しかけて状況確認
- **このマニュアル** (`/dashboard/manual.html` または GitHub の `docs/MANUAL.md`) を読み直す
- **/handoff** スキルを叩く → 前回セッションで何を喋ったか思い出せる

---

## 2. 毎日のフロー

### 🌅 朝 (起きたとき)
1. **ブリッジ** を開く → 一望
   - 状態 dot 緑なら問題なし、amber/red なら alerts banner を確認
   - 「今日の便り」に今朝の briefing / ラジオ / Secretary の最新があれば、そこから開く
2. **Conductor PWA で briefing 通読** (~30 分、聴き流すなら 5 分)
   - 気になった item に **❤️** → Deep Dive キュー積み (寝てる間に MD + 30秒音声に変換)
   - 教材化したい item に **🎓** → 教材キュー積み (寝てる間に MD 化)
   - 不要なら何も押さない、勝手に明日には次の briefing が来る
3. **Spotify でたまラジ** (~7-10 分、家事中/散歩中)

### ☀️ 昼 (時間がある時)
- **Catch-up ページ** (`/dashboard/deep-dive-catchup.html`) で溜まった Deep Dive を 3 択で仕分け
  - 🎙 もっと聴く / 📖 読む / 🛏 降ろす
  - 「もっと聴く」を選んだものは後で 5-8 分の対談音声に変換される
- **Pocket Channel** (iPhone PWA) で外出先から Claude に質問・依頼
  - quick chip で「状況」「番頭」「Secretary」「キュー処理」等を 1 タップ

### 🌙 夜 (就寝前)
- **何もしなくていい**。22:30 JST に nightly_queue_processor が自動で動く
- ❤️/🎓 キューが閾値超えなら自動消化 (limit 制で予算 cap)
- 翌朝 04:30 にまた briefing が降ってくる

### 📖 月曜朝
- **Secretary** が 07:00 JST に週次トリアージを実行
- `data/secretary/weekly_views/2026-WXX.md` に「今週の景色」が生成される
- 🛏 マーカーで「今週は降ろしてよい」項目を明示してくれる

---

## 3. 機能一覧 — 使う側から

### 🛸 ブリッジ (`/dashboard/home.html`)
**何**: 全機能の入口、現状一望のコックピット
**いつ使う**: 朝の確認、何か始める前、「何が動いてる?」と思った時
**主な内容**:
- TOP BAR: 時刻 / STARDATE / 全体状態 (緑/amber/赤)
- ALERTS: BLOCKERS や 24h 内 warn/error があれば朱色で警告 + DISMISS ボタン
- VITALS: 30 日の briefings / radio / education / deep_dive 件数
- COMMAND DECK (操作卓): 4 ボタン
  - **▶ BRIEFING NOW** (12 分、確認 dialog) — 今すぐ朝の pipeline を再実行
  - **▶ SECRETARY NOW** (15 分、確認 dialog) — 週次トリアージを今すぐ
  - **↻ REBUILD INDEXES** — archive / console 状態を再生成
  - **⟳ REFRESH STATUS** — console-status のみ
- JOB LOG: 最近 10 ジョブの履歴と状態
- QUEUE STATUS: 🎓 / ❤️ / 🔬 の pending 数
- TODAY's DISPATCH: 今朝の briefing / ラジオ / 週次まとめへの即リンク
- RECENT ACTIVITY: engagement.jsonl の最新動き
- CHANNELS: Conductor / Catch-up / Archive / Brainstorm / Pocket への入口
- OFF-SHIP LINKS: Spotify / Discord / Portfolio / Notion
- SUBSYSTEMS: 9 サービス (cron + systemd) の status table

### 🌅 Conductor (`/dashboard/`)
**何**: 朝の briefing dashboard (元祖)
**いつ使う**: 毎朝、briefing を読む / 操作する時
**できること**: 10 item を読む、❤️ / 🎓 で push、見送り推奨 🛏 が自動で付与される

### 🔬 Deep Dive Catch-up (`/dashboard/deep-dive-catchup.html`)
**何**: 溜まった Deep Dive を 30 秒 tldr 音声で受け取って 3 択で仕分ける場所
**いつ使う**: catch-up manifest が 20+ になったら / 「あれ何だっけ」と気になった時
**3 択**:
- 🎙 **もっと聴く** → 後で 5-8 分対談音声が自動生成 (catch-up.jsonl に request_full_audio)
- 📖 **読む** → MD 本文をモーダル表示
- 🛏 **降ろす** → engagement.jsonl に dismiss 記録、以後 recall 等から除外
**「総集編 vol.1」**: 全件まとめて 10 分音声、Spotify private 配信 (`📚 Deep Dive 総集編`)
**「対談集 vol.1」**: 「もっと聴く」と判定した分まとめ 48 分 (`🎙 Deep Dive 対談集`)

### 📚 アーカイブ (`/dashboard/archive.html`)
**何**: 過去の全成果物 (192+ 件) を横断検索する内向き棚
**いつ使う**: 「あの教材どこ?」「先月の Deep Dive 何だっけ?」「ラジオ過去回探したい」
**カテゴリ**: 🌅 briefing / 🎙 radio / 🔬 deep_dive / 📚 education / ✍ content / 📖 weekly / 🧘 meditation / 🎨 3D
**検索**: タイトル / 要約 / タグ / 日付。カテゴリチップで絞り込み
**プレビュー**: カードクリックでモーダル表示 (MD 描画 / 音声プレイヤー / 画像)

### 💭 Brainstorm (`/dashboard/brainstorm/`)
**何**: KJ 法 × Question Burst の思考ツール、独立 PWA
**いつ使う**: 問いを発散して整理したい時 / 自分の考えを構造化したい時
**5 フェーズ**: 発散 → 分類 → 構造化 → 探究 → まとめ
**できること**:
- 手動ドラッグ&ドロップでカードを島へ移動
- 島の自動カラーリング + 表札 inline 編集 (contenteditable)
- 構造化フェーズで島同士を矢印接続 (因果/相互/対立/包含)
- 俯瞰ビュー (pinch + wheel + drag + ボタン)
- PNG エクスポート (まとめフェーズで持ち帰る)
- 既存セッションのリネーム/アーカイブ/ゴミ箱

### 📱 Pocket Channel (`/pocket-channel/`)
**何**: iPhone から Claude に話しかける PWA、CLAUDE.md フル context 保持
**いつ使う**: 外出中、ベッドの中、iPhone でアイデアを投げたい時
**特徴**:
- read-only mode (Read / Grep / Glob / WebFetch / WebSearch)
- Edit/Write/Bash は Mac セッションで
- Web Push 通知対応 (静音時間はキュー、起床後 push)
- flush cron 06:30 / 13:00 / 18:00 で通知配達
- **Quick chips**: タップで pre-fill (auto-send しない)
  - ❤️ DDキュー / 🎓 教材キュー / 📊 状況 / 🎩 番頭 / 📖 Secretary / 🌅 今朝のまとめ / 👋 引き継ぎ

### 🎙 たまラジ (Spotify private)
**何**: 毎朝 05:00 自動配信のポッドキャスト
**いつ聴く**: 朝の家事中 / 通勤中 / 散歩中 / 寝る前
**形式**: Analyst (ロン) × Scout (ソラ) の対談 7-10 分 (ゆる言語学ラジオ風)
**RSS feed URL**: `https://agent-team.tail9617af.ts.net/radio/HEvLAGF1nPtPN8V_uHXaYQ/rss_public.xml`
**特集**: 月 1 ペースで「総集編」「対談集」「Deep Dive 一気聞き」等が降ってくる

### 🤖 Discord Interpreter
**何**: たまてばこ DC サーバーで日英ボイス→テキスト翻訳
**いつ使う**: 英語話者と話す必要が出た時、英語のボイスチャットを理解したい時
**召喚**: Discord voice channel で `/interpret on` → Bot 参戦、`/interpret off` で退出
**自動退室 + 日次予算 $2** で暴走防止

### 📖 ポートフォリオ
**URL**: https://tama831.github.io/ai-agent-team-materials/portfolio.html
**何**: SNS 知人 / 同業者向けの公開棚
**いつ使う**: 自己紹介リンク貼る時、活動報告書く時
**更新頻度**: 月 1 (代表作の入れ替え)

### 📝 Notion
**何**: 二次保管 / ハブ / ひとりごつ日記
**主な DB**: Teach Stock (教材) / Deep Dive / Weekly Retro / Archive / Second Brain / ひとりごつ
**MCP 接続済** — エージェントから書き込み・検索可能

### 🧘 養生 (Yumori)
**何**: 瞑想パイプライン + ペース番人
**できること**: binaural / 瞑想音声生成、他課のペース過多を抑制
**トリガー**: 「湯守」「養生」「瞑想して」など

---

## 4. 会話で動かす — 合言葉とスキル

Claude Code セッションか Pocket Channel で**自然言語**で呼ぶ。`/コマンド` でも OK。

### 業務系
| 合言葉 | 何が起きるか | 所要 |
|---|---|---|
| `キュー処理` / `/process-queue [日付]` | 🎓 教材キュー消化 (Scribe → Designer → Reviewer → Drive) | ~10 分/本 |
| `❤️キュー処理` / `/process-deep-dive-queue limit=N` | ❤️ DD キュー消化 (Analyst → MD → tldr.mp3) | ~5 分/本 |
| `ブリーフィング` / `briefing` | 今すぐ朝の pipeline を回す | ~12 分 |
| `ラジオ生成` / `/broadcaster` | 今すぐラジオエピソード生成 | ~7 分 |

### 視点・管理系
| 合言葉 | 何が起きるか |
|---|---|
| `/coo` / `番頭` / `経営ダッシュボード` | 7 課の status を集約、判断待ちを 3 択化 |
| `/secretary` / `週次整理` | IDEAS/HANDOFF/BLOCKERS 整理、🛏 で降ろす |
| `/handoff` / `引き継ぎ` | HANDOFF.md に「今日やったこと」記録 |
| `/foreman` / `工場長` | 教材課 (Scribe→Designer→Reviewer→Publisher) の状況 |
| `/curator` / `学芸員` | 深掘り課 (Analyst Deep Dive + 3 つのいいね統合) の状況 |
| `/sentinel` / `門番` | 守り課 (Pentest + 自動回復5層 + BLOCKERS) の状況 |
| `/yumori` / `湯守` | 養生課の状況、ペース管理 |
| `/librarian` / `司書` | 知識課 (関心マップ + 週次レトロ) |
| `/producer` / `プロデューサー` | 発信課 (note / Twitter / 外向き) |

### 思考系
| 合言葉 | 何が起きるか |
|---|---|
| `/toishi` / `砥師` / `批評して` / `セカンドオピニオン` | 鋭く問う、5 段階で判定、改善案セット必須 |
| `/brainstorm` / `ブレスト` | KJ 法ベースの問いの発散→分類→構造化 |
| `/analyst` / `深掘り` / `{topic} を分析` | Deep Dive 1 本生成 |

### 教材・出力系
| 合言葉 | 何が起きるか |
|---|---|
| `/scribe` / `勉強会資料` / `教材作って` | 教材 MD 一式 (slides + facilitator-guide + cheatsheet) |
| `/designer` | Scribe MD → PPTX/DOCX 変換 |
| `/reviewer` | 教材レビュー (Scribe→Designer 後の QA) |
| `/diagram` / `図解` / `組織図` | Excalidraw 図 |
| `/writer` / `記事書いて` | note 記事 / Twitter 下書き |
| `/editor` / `校正` | 記事 QA (proofread + fact-check + 医療リスク確認) |
| `/publisher` / `投稿準備` | 公開 / Drive 同期 |

### アイデア受け取り
何もスキル指定せずに「これどう？」「こんなのやってみない？」と投げると **番頭代理プロトコル**が起動して decision-ready 3 択 (やる / 保留 / 降ろす) を返す。

---

## 5. 裏で動いてる — 自動稼働ジョブ

全て `crontab -l` で確認可能 (`/home/tama` ユーザ)。`grep -v '^#'` で有効分のみ:

| 時刻 (JST) | スクリプト | 役割 |
|---|---|---|
| 04:30 毎日 | `cron_briefing.sh` | 朝の briefing pipeline (Scout→Verifier→Analyst→Conductor→archive/console 再生成→broadcaster) |
| 05:15 / 05:45 | `retry_if_missing.sh` | 朝の broadcast が落ちてたらリトライ |
| 07:00 月曜 | `cron_secretary.sh` | 週次トリアージ |
| 12:00 毎日 | `morning_health_check.sh` | 当日成果物欠落検知 + 自動再実行 |
| 13:00 / 18:00 毎日 | `flush_notifications.sh` | Pocket Channel 通知配達 |
| 20:00 毎日 | `backup.sh` | リポ + データを Hetzner Storage Box へ |
| 21:00 毎日 | `cron_kernel_patch_check.sh` | カーネル CVE パッチ確認 |
| 22:00 日曜 | `rotate_broadcasts.sh` | broadcast の古いファイル整理 |
| 22:00 金曜 | `cron_weekly_material_review.sh` | 教材レビュー |
| 22:00 1 日 | `update_interest_map.py --rebalance` | 月次 Elo リバランス (8% 引き戻し) |
| **22:30 毎日** | `nightly_queue_processor.sh` | ❤️ pending > 5 / 🎓 pending > 3 で自動消化 (新規 2026-05-11) |
| 02:30 毎日 | `apt-daily-tama.sh` | apt update + upgrade + autoremove |
| 11:00 日曜 | `weekly_retro.py` | 週次レトロ |

### nightly_queue_processor の挙動 (新参者なので詳説)
- `~/logs/nightly-queue.log` に追記
- ❤️ pending が 5 件以下なら何もしない (情報過多防止)
- ❤️ > 5 なら limit=8 で「❤️キュー処理」を Claude Code headless で起動
- 🎓 pending > 3 なら直近 2 日付分の `/process-queue` を順次実行
- 04:30 briefing に被らない時間予算 (最大 60+45+45=150 分、22:30→01:00 に終わる想定)
- 環境変数で閾値・件数 override 可能 (`DD_THRESHOLD`, `DD_LIMIT`, `EDU_THRESHOLD`, `EDU_DATE_LIMIT`)

### systemd 常駐サービス
| unit | 役割 | port |
|---|---|---|
| `nginx.service` | リバースプロキシ / 静的配信 | 80/443 |
| `engagement-api.service` | dashboard 用 JSONL API + Bridge action runner + Job tracker | 3456 |
| `pocket-channel.service` | iPhone PWA backend (Claude SDK + Web Push) | 8090 |
| `discord-interpreter.service` | Discord Bot (日英翻訳) | — |
| `radio-search-api.service` | ラジオ全文検索 (SQLite FTS5) | 3457 |
| `wiki-gap.service` | wiki-gap (内向きツール) | 8766 |
| `tailscaled.service` | Tailscale ノードエージェント | — |

止め方: `sudo systemctl stop <unit>` / 起動: `sudo systemctl start <unit>` / 再起動: `sudo systemctl restart <unit>` / ログ: `journalctl -u <unit> -f`

---

## 6. 保守 / トラブル / 監視

### 4 層保守方針
1. **完全自動** (Tier 1): 触らない。cron + systemd が全部やる
2. **システムから声をかける** (Tier 2): Bridge 上の alerts banner、通知音
3. **週次の手作業** (Tier 3): 月曜朝 Secretary、catch-up 仕分け
4. **年次・イベント** (Tier 4): OAuth token rotation (2027-05-07 頃)

### 監視ポイント (週 1 で見れば十分)
- `~/logs/nightly-queue.log` の末尾
- Bridge の状態 dot (緑なら OK)
- `BLOCKERS.md` の未解決件数
- ストレージ残量: `df -h /` (Hetzner CX23 は 80GB)

### 既知の watch items
1. **TTS 暴走再発防止**: 短文 tldr で 2x ループバグあった (2026-05-11 修正済)。再発したら `scripts/broadcaster/generate_audio.py:296-345` の `bare_narration` ロジックを疑う
2. **Headless Designer 連鎖**: nightly 🎓 は Scribe MD で止まる (PPTX 出ない)。完成品が欲しい時は通常セッションで `/designer` を別途叩く
3. **Spotify feed 重複**: omnibus 再構築時に episode_number 9001 を上書き。新巻 (vol.2 等) 出す時は番号管理を明示
4. **Cron TZ 確認**: サーバー TZ 再変更時は cron の時刻欄を必ず見直す (2026-04-25 と 2026-05-11 の教訓)
5. **Claude OAuth 期限**: 2027-05-07 頃に long-lived token 期限切れ → `claude setup-token` で再発行 → `.env` に書き戻し

### 自動回復 5 層 (B+E+A+C+D, 2026-04-25 実装)
- **B**: `generate_*.py` の fallback (gemini-2.5-flash → 2.5-pro)
- **E**: `cron_briefing.sh` resume mode (当日 JSON/MD あればスキップ)
- **A**: 起動時 ListModels で全モデル実在確認
- **C**: `announce_delay.py` で「🙏遅れてます」等を notifications.jsonl に流す
- **D**: `morning_health_check.sh` 12:00 が欠落を検知して自動再実行

### よくあるエラー → 対処
| 症状 | 原因 | 対処 |
|---|---|---|
| Bridge が「console-status.json 未生成」と出る | scripts/build_console_status.py が走ってない | Bridge の `⟳ REFRESH STATUS` ボタン or 手動: `python3 scripts/build_console_status.py` |
| catch-up HTML で「保存に失敗」 | nginx の `/api/deep-dive-catchup` proxy が落ちてる | `sudo nginx -t && sudo systemctl reload nginx` |
| 朝 briefing 来てない | OAuth 切れ or cron TZ ずれ | `~/logs/briefing.log` 末尾を確認、必要なら手動で `bash scripts/cron_briefing.sh` |
| ラジオ来てない | TTS API rate limit or model 名間違い | `~/logs/broadcaster.log` 確認、`scripts/lib/check_gemini_models.py` で実在モデル名を確認 |
| Pocket Channel 通知来ない | VAPID key / subscription 切れ | iPhone で PWA リロード → 設定 → 通知を有効にする |
| TTS が変な内容を読む | 短文ナレーションで meta-instruction を読み上げ | `generate_audio.py` の `bare_narration` 分岐を確認 |

### ログの場所
- `~/logs/briefing.log` — 朝の pipeline
- `~/logs/broadcaster.log` — ラジオ生成
- `~/logs/secretary.log` — 週次トリアージ
- `~/logs/nightly-queue.log` — nightly 自動処理
- `~/logs/health_check.log` — 12:00 健康チェック
- `~/logs/yabu-jobs/{id}.log` — Bridge の Command Deck から起動したジョブ
- `journalctl -u <service> -f` — systemd サービスのリアルタイムログ

---

## 7. 用語集

| 語 | 意味 |
|---|---|
| **briefing** | 毎朝 04:30 に 10 件の話題を厳選した記事集 |
| **Deep Dive (DD)** | 特定 topic を深掘りした 1 本の MD + 30 秒 tldr 音声 |
| **catch-up** | 溜まった Deep Dive を「もっと聴く / 読む / 降ろす」で仕分けるページ |
| **Recall Engine / 再会の小窓** | briefing 冒頭の「過去 item / 教材 / セレンディピティ」3 件提示 |
| **engagement.jsonl** | ❤️ / 🎓 / 📖 / 降ろす などの操作ログ (Elo 学習源) |
| **Elo** | 関心スコア。topic ごとの興味の強さを engagement から学習 |
| **closure-as-a-service** | 「好奇心を完了で消化する」設計原理。エージェントが代わりに降ろす |
| **降ろす / 🛏** | もう気にしなくていい状態にする。Secretary が週次でやる |
| **計器 (Keiki)** | Bridge の dense console panel (Vitals/Queue/Service Table) |
| **下働き** | 旧称、現在は計器 service table に統合 |
| **砥師 (Toishi)** | 鋭く問う係。批判 + 改善案セット必須、5 段階判定 |
| **番頭 / COO** | 7 課を束ねる係、週次経営ダッシュボード |
| **Secretary** | 降ろす係、週次トリアージ + 🛏 マーカー |
| **Yumori (湯守)** | 養生課、ペース番人、瞑想パイプ |
| **YĀBU-1** | このシステムの愛称 (藪医者の学び由来) |
| **TAMA STATION** | 同上、ブリッジの呼称 |
| **STARDATE** | 表示用の日付フォーマット (年.通算日.HHMM) |

### エージェント 13 人 (役割)
1. **Conductor (タクト)** — 朝の briefing 統括
2. **Scout (ソラ)** — 情報収集、ラジオ聴き手
3. **Verifier (ミハル)** — ファクトチェック、URL 検証
4. **Analyst (ロン)** — Deep Dive 分析、ラジオ語り手
5. **Librarian (フミカ)** — 知識管理、関心マップ、週次レトロ
6. **Scribe (マナ)** — 教材生成 (MD)
7. **Designer** — PPTX/DOCX 変換
8. **Reviewer** — 教材 QA
9. **Editor (ナオ)** — 記事校正
10. **Writer** — 記事ドラフト
11. **Publisher** — 公開・配信
12. **Marketer (カイト)** — 成長分析
13. **Broadcaster** — ラジオ生成

### 課 7 つ + 並列職
- 学び課 (Conductor) / 教材課 (Foreman/工場長) / 深掘り課 (Curator/学芸員) / 発信課 (Producer) / 守り課 (Sentinel/門番) / 知識課 (Librarian/司書) / 養生課 (Yumori/湯守)
- 並列特別職: COO (番頭) / Secretary (降ろす係) / Toishi (砥師)

---

## 8. 緊急時の手順

### 課金が暴走している気がする
1. **Pocket Channel と Bridge を閉じる** (新規 trigger を止める)
2. SSH で Hetzner に入って: `pkill -f "claude -p"` — headless Claude を全停止
3. `crontab -e` で問題の cron をコメントアウト
4. Anthropic Console で usage 確認: https://console.anthropic.com/

### 全部止めたい
```bash
# systemd 常駐を全停止
sudo systemctl stop engagement-api pocket-channel discord-interpreter radio-search-api wiki-gap
# cron を一時停止
sudo systemctl stop cron
# 復旧時は逆順で start
```

### Hetzner サーバーに SSH できない
- Tailscale が落ちてる可能性 → Hetzner Cloud Console (web) → サーバー → コンソール
- 同 console から `sudo systemctl restart tailscaled` で復活

### Claude OAuth token が切れた
1. Mac か Hetzner で `claude setup-token` を実行 (ブラウザで認証)
2. 出力された token を `.env` の `CLAUDE_CODE_OAUTH_TOKEN=...` に書き戻し
3. 関連 cron スクリプトは `.env` を source するので自動で反映

### Hetzner サーバーが完全に死んだ
- Daily backup が `~/storagebox/` に取られている
- 新しいサーバー立てて、バックアップから data/ 復元 + repo を clone + `.env` 復元
- BLOCKERS.md / IDEAS.md / HANDOFF.md / docs/ も含めて GitHub にも全部 push 済

### 「アイデア過多」になった
- Pocket Channel か Claude セッションで「砥師、これ全部やる必要ある?」と聞く
- Secretary に「降ろして」と頼む
- 1 アイデアあたり 200 字超は休んでよい

---

## 9. ファイル / ディレクトリ地図

```
~/ai-agent-team/                    プロジェクト ROOT
├── CLAUDE.md                       プロジェクト方針 (最重要、ルール集)
├── BLOCKERS.md                     たまさん手作業待ち
├── HANDOFF.md                      前回セッション付箋
├── IDEAS.md                        アイデア箱 (Now/Next/Later/Hold)
├── docs/
│   ├── MANUAL.md                   ← これ
│   ├── factory-blueprint.md        工場フロー全体図
│   ├── roadmap.md                  ロードマップ
│   └── architecture/, incidents/, protocols/, specs/, superpowers/
├── data/                           ランタイムデータ (一部 git, 一部 ignore)
│   ├── briefings/YYYY-MM-DD.{json,md}
│   ├── broadcasts/YYYY-MM-DD/episode.{json,mp3}
│   ├── deep-dives/{slug}.{md,meta.json}
│   ├── deep-dives/audio/{slug}.mp3
│   ├── deep-dives/catchup-manifest.json
│   ├── deep-dive-requests.jsonl    ❤️ Phase A queue
│   ├── education-requests.jsonl    🎓 queue
│   ├── deep-dive-catchup.jsonl     仕分け結果
│   ├── engagement/engagement.jsonl Elo 学習源
│   ├── secretary/weekly_views/2026-WXX.md
│   ├── notifications/notifications.jsonl
│   └── retrospectives/
├── output/                         成果物 (大半 git push)
│   ├── education/{slug}/           教材セット (slides/guide/cheatsheet)
│   ├── content/                    記事
│   ├── 3d-models/                  OpenSCAD
│   └── meditation/                 瞑想音声
├── config/                         設定
│   ├── interest-map.json           Elo データ
│   ├── briefing-composition.json   構成・cooldown
│   ├── broadcaster/                ラジオ設定
│   └── business/                   ブランド、組織図
├── scripts/                        cron + ad-hoc
│   ├── cron_briefing.sh            朝の pipeline (04:30)
│   ├── cron_secretary.sh           週次 (月曜 07:00)
│   ├── nightly_queue_processor.sh  夜間自動消化 (22:30, 新規)
│   ├── build_archive_manifest.py   archive-manifest.json 生成
│   ├── build_console_status.py     Bridge 用 status 集約
│   ├── mark_skip_recommendations.py 見送り推奨マーカー
│   ├── process_education_queue.py  🎓 manifest emitter
│   ├── process_deep_dive_queue.py  ❤️ manifest emitter
│   ├── deep_dives/                 tldr 音声 + 対談音声生成
│   └── broadcaster/                ラジオ生成
├── dashboard/                      内向き PWA
│   ├── home.html                   ブリッジ (start_url)
│   ├── index.html                  Conductor (朝の briefing)
│   ├── archive.html                成果物棚
│   ├── deep-dive-catchup.html      DD 仕分け
│   ├── brainstorm/                 KJ法 PWA
│   ├── archive-manifest.json
│   ├── console-status.json
│   └── manifest.json               PWA manifest
├── public/                         一部公開
│   └── pocket-channel/             iPhone PWA
├── server/                         backend
│   ├── engagement-api.js           dashboard API (port 3456)
│   ├── jobs.js                     Bridge Action runner (新規)
│   ├── deep-dive-catchup-queue.js  catchup endpoint
│   └── pocket_channel/             FastAPI app
├── .claude/skills/                 30+ skill 定義
└── .env                            secrets (gitignore)
```

### nginx ルート
- `/dashboard/` → 静的 (このマニュアルが置かれてる場所)
- `/data/` → 静的 (briefing JSON / Deep Dive MD / audio など)
- `/output/education/` → 静的 (教材ファイル)
- `/api/engagement` `/api/education-request` `/api/deep-dive-request` `/api/deep-dive-catchup` → engagement-api.service
- `/api/run-action` `/api/jobs` `/api/jobs/{id}` `/api/actions` `/api/dismiss-alert` → 同上 (新規)
- `/api/whisper/*` → engagement-api (whisper feature)
- `/api/brainstorm/*` → brainstorm-server (port 8765)
- `/api/radio-search` → radio-search-api (port 3457)
- `/api/pocket/` → pocket-channel.service (port 8090)
- `/pocket-channel/` → pocket-channel-frontend (静的)
- `/radio/HEvLAGF1nPtPN8V_uHXaYQ/` → broadcasts feed_public

### 環境変数 (`.env`)
- `CLAUDE_CODE_OAUTH_TOKEN` — Claude Code headless 用 (年単位、~2027-05 まで)
- `ANTHROPIC_API_KEY` — Pocket Channel SDK 用
- `GEMINI_API_KEY` / `GOOGLE_TTS_API_KEY` — TTS (Broadcaster, 瞑想)
- `NOTION_TOKEN` — Notion MCP
- `POCKET_CHANNEL_TOKEN` — Pocket Channel Bearer auth
- VAPID key 関連 (Web Push)

---

## 付録: このマニュアル自身の維持

- 新機能を追加したら **§3 機能一覧** / **§4 合言葉** / **§5 自動稼働** に追記
- 既知の障害が解消したら **§6 watch items** から削除
- 仕様が変わったら **§9 地図** を更新
- 新しい用語が生まれたら **§7 用語集** に追加

このマニュアル自体も `docs/MANUAL.md` 1 ファイルで完結、git 履歴で「いつ何が変わったか」追える。

困った時は、まず Pocket Channel か Claude セッションで「マニュアルの〇〇章を読んで一緒に動かして」と頼めば、Claude が代読 + 操作してくれます。
