⚙️ Vault運用

SCALE_Base連携仕様

最終更新 2026年04月27日 / 90_Meta/SCALE_Base連携仕様.md

SCALE Base → Obsidian Inbox 自動連携仕様

SCALE Base(独自業務システム)の全情報を、毎朝8:30に自動でObsidian Vaultに取り込む。

SCALE Base本体: https://scale-base.pages.dev/home/
コードベース: /Users/oogushiyuuki/Library/CloudStorage/.../マイドライブ/AI/scale-base/


30秒で全体像

観点 一言
核心 毎朝8:30、scale-baseのAPIを叩いて全業務データをInboxへ取り込む
キーワード obsidian-export / D1 + KV / Bearer Token / launchd
使う人 大串(運用管理) / 開発担当
読了目安 5-7分

現在のステータス(2026-04-27時点)

項目 状態
仕様書作成 完了
ローカルスクリプト ~/Obsidian/scripts/scale_base_to_inbox.sh 作成済み
launchd 登録 com.scale.scalebase-inbox.plist 登録済み(毎朝8:30)
scale-base API実装 functions/api/obsidian-export.ts 実装済み(2026-04-27)
Cloudflare 環境変数 OBSIDIAN_EXPORT_SECRET 設定が必要
ローカルシークレット ~/.scale_base_export_token 作成が必要
scale-base デプロイ デプロイが必要

全体像

graph TB
    subgraph SCALE_Base[scale-base on Cloudflare Pages]
        D1[(D1 Database)]
        KV[(KV: scale-task-cron)]
        API[/api/obsidian-export]
    end

    SCRIPT[~/Obsidian/scripts/scale_base_to_inbox.sh]
    INBOX[00_Inbox/]
    CLAUDE[Claude Inbox整理]
    VAULT[各部署フォルダ]

    D1 --> API
    KV --> API
    API -->|Bearer Token| SCRIPT
    SCRIPT -->|Markdown化| INBOX
    INBOX -->|10/15/20時自動整理| CLAUDE
    CLAUDE --> VAULT

    style API fill:#fff3e0
    style SCRIPT fill:#e3f2fd
    style INBOX fill:#fce4ec

API 仕様(実装済み)

エンドポイント

GET https://scale-base.pages.dev/api/obsidian-export?since=2026-04-26T00:00:00Z
Authorization: Bearer <OBSIDIAN_EXPORT_SECRET>

レスポンス

{
  version: "1.0",
  generated_at: "2026-04-27T08:30:00Z",
  since: "2026-04-26T08:30:00Z",
  data: {
    crm: {
      new_leads: [...],          // stage='lead' の updated_at >= since
      deals_updated: [...],      // stage in (opportunity/negotiation/won) の updated
      recent_touches: [...],     // crm_touches 直近50件
      won_count: number,
      lost_count: number,
    },
    calendar: {
      today: [...],              // calendar_entries の today
      tomorrow: [...],           // 翌日
      past_24h: [...],           // 過去24h
    },
    goals: [...],                // status='active' の goals
    insights: [...],             // insight_results 直近30件
    tasks_kv_snapshot: {...},    // scale-task-cron Worker から取得
  }
}

認証

  • 環境変数 OBSIDIAN_EXPORT_SECRET をCloudflare Pagesに設定
  • リクエストヘッダー Authorization: Bearer <secret> で照合
  • Token不一致 → 401返却

完成までの残作業(3ステップ)

Step 1: シークレット生成

# 32バイトのランダム文字列
SECRET=$(openssl rand -hex 32)
echo "$SECRET" > ~/.scale_base_export_token
●●●●●● 600 ~/.scale_base_export_token
●●●●●● "Generated: $SECRET"

Step 2: Cloudflare Pages 環境変数設定

# scale-base ディレクトリで実行
cd ~/Library/CloudStorage/GoogleDrive-y-ogushi@scale-group.co.jp/マイドライブ/AI/scale-base
npx wrangler pages secret put OBSIDIAN_EXPORT_SECRET ●●●●●●=scale-base
# プロンプトに $SECRET を貼り付け

または Cloudflare ダッシュボードから:
- https://dash.cloudflare.com → Pages → scale-base → Settings → Environment variables
- 「Production」タブで OBSIDIAN_EXPORT_SECRET を追加

Step 3: scale-base デプロイ

cd ~/Library/CloudStorage/GoogleDrive-y-ogushi@scale-group.co.jp/マイドライブ/AI/scale-base
bash scripts/deploy.sh

動作確認

手動テスト

# シークレット読み込み
TOKEN=$(cat ~/.scale_base_export_token)

# API直叩き
curl -s -H "Authorization: Bearer $TOKEN" \
  "https://scale-base.pages.dev/api/obsidian-export?since=$(date -u -v-1d '+%Y-%m-%dT%H:%M:%SZ')" \
  | jq .

# launchdスクリプト直接実行
~/Obsidian/scripts/scale_base_to_inbox.sh

# ログ確認
tail ~/Obsidian/logs/scale_base_inbox.log

# Inbox確認
ls ~/Obsidian/SCALE-Brain/00_Inbox/

launchd 状態確認

launchctl list | grep scalebase
# → 1234    0   com.scale.scalebase-inbox 等の表示が出ればOK

期待される運用イメージ

朝 8:00  Slack writing_hand 取り込み(既存)
朝 8:30  SCALE Base 全情報取り込み(NEW)← この仕組み
朝 10:00 Claude が Inbox 整理 → 部署フォルダへ振り分け
朝 10:30 Dashboard を見ると、昨日の業務全体が部署別に整理されている

なぜこの設計?

設計判断 理由
取得側と提供側を疎結合 API経由なら片方が変わってももう片方は影響受けない
Bearer Token 認証 第三者がアクセスできない
増分取得(since) 前回以降の差分だけ取る
Inbox→Claude整理→部署配置 既存の整理パイプラインに乗せて新仕組みを足さない

関連ノート