💻 システム開発

SCALE_Base_X_Pilot_開発依頼書

最終更新 2026年05月03日 / 31_システム開発部/SCALE_Base_X_Pilot/SCALE_Base_X_Pilot_開発依頼書.md

SCALE Base X Pilot 開発依頼書

「Vault と Slack から、毎日5本の X ドラフトを生み出す」
SCALE Base 内に X 発信専用の Pilot を新設。Vault(Daily / Slack writing_hand / 思考メモ)を統合し、Claude API で 10ポスト型 に分類した X ドラフトを自動生成。大串はレビュー+手直しで投稿する「人間味確保 × 毎日発信」の導線。


30秒で全体像

観点 一言
核心 大串の毎日のObsidian/Slack記録を「事業挑戦×ストーリー型」のXドラフトに自動変換
キーワード Cron + Claude API + Vault Cache + Slack writing_hand + X API + 10ポスト型
使う人 大串(個人運用)/ マーケ部(パートナーアカウント運用)
読了目安 10分

1. 概要

SCALE Base 内に新セクション 「X Pilot」(既存 /x を拡張)を構築。
Cron で定期起動するワーカーが Vault / Slack / X API / Base 内データを統合し、Claude API で 10ポスト型 に分類した X ドラフトを生成。以下を毎日 / 必要に応じて自動化する:

  1. Xドラフト自動生成(朝7時・5本/日)
  2. 既存ポスト分析(インプ・エンゲージ・ベスト/ワースト判定)
  3. 競合・ベンチマーク分析(中野/迫/三上等7人の最新ポスト自動スキャン)
  4. リプ案生成(伸びそうなポスト検知時)
  5. アカウント切替(@scale_ceo + パートナー垢など複数対応)

コンセプト: 事業挑戦×ストーリー型(2026-04-29 確定)
- bio: ㍿SCALE代表|23歳|営業支援 / HP / システム開発 / オンラインサロン(AI・営業)|6年後に年商100億の記録|ものづくりに、妥協なし|良いものが、めぐる世の中へ。|事業挑戦のリアルを発信
- ヘッダーキャッチ: 業界の新しい標準を、つくり続ける会社に。
- ベンチマーク7人: 中野(BUDDICA)/ 迫 / Kくん / 安藤(令和の虎)/ ゆーへい / 駒居 / 三上(アドネス)


2. スコープ

含むもの

機能 内容
Xドラフト自動生成 朝7時 Cron、10ポスト型に分類して 5本/日
ドラフト管理 編集・承認・コピペ用フォーマット
既存ポスト分析 X API で自分のポスト取得 → インプ・エンゲージ集計
ベスト/ワースト判定 過去N日のベスト3・ワースト3、傾向分析
競合・ベンチマーク分析 7人の最新ポストを毎日スキャン、参考化
リプ案生成 伸びそうな他ポスト検知 → リプ短/中/長6本案
アカウント切替 @scale_ceo + パートナー垢(複数アカウント対応)
プロフィール管理 bio / ヘッダー / ピン留めの履歴管理
投稿予約(Phase 4) X API直接投稿(外部連携は使わない)
マルチアカウント設計 Phase 1 から account_id ベースで全テーブル設計、Phase 4 でパートナー垢を追加運用

含まないもの(別案で対応)

機能 対応案
自動投稿 やらない(人間味確保のため大串が必ずレビュー)
画像生成 別ツール(Gemini Image Tool / Canva)
DM管理 X公式UIで対応
スレッド設計 Phase 5 以降で検討

3. アーキテクチャ

スタック

レイヤー 採用
Frontend SCALE Base 既存(Next.js 16)に統合
Backend Cloudflare Pages Functions
DB Cloudflare D1(既存 scale-base-db
AI Anthropic Claude API(Opus 4.7 / Sonnet 4.6 fallback)
Slack 連携 Slack Web API + Bot Token(既存利用)
X 連携 X API v2(OAuth PKCE、既存 /x 配下に実装済 / 未接続)
Vault 読み取り 既存 pilot_vault_cache を再利用(X Pilot 専用キャッシュ作らない)
通知 Slack DM(既存 lookupByEmail 再利用)

データフロー

[Cron 朝7時 / 必要時]
        ↓
[Cloudflare Pages Functions]
        ↓
[並行取得]
  ├── Vault Cache(pilot_vault_cache)
  │     ├ Slack writing_hand(既存・朝9時取得済)
  │     ├ Daily ノート(10_Daily/)
  │     └ Inbox(00_Inbox/、SCALE Base summary 含む)
  ├── X API(自分の直近ポスト)
  ├── X API(ベンチマーク7人の直近ポスト)
  └── Base DB(前日ドラフト・投稿済み)
        ↓
[Claude API(10型分類 + ドラフト生成)]
        ↓
[出力]
  ├── D1 保存(x_drafts テーブル)
  ├── Slack DM 通知(「今日のドラフト5本」)
  ├── /x ホームに表示
  └── 競合スキャン結果も同梱

4. データベース設計(D1)

x_drafts テーブル

カラム 説明
id uuid PK
account_id uuid x_accounts FK
post_type enum 10型(learning / failure / decision / numbers / industry_critique / mindset / knowhow / others_quote / progress / question)
draft_body text 本文
catchphrase_candidates jsonb キャッチコピー候補5案
selected_catchphrase text 採用したキャッチ
input_source jsonb どこから生成したか(vault_paths / slack_msg_ids / inbox_paths)
status enum pending / approved / edited / posted / rejected
edit_history jsonb 編集履歴(大串が手直しした差分)
posted_at timestamptz 投稿時刻
posted_url text 投稿後のXURL
generated_at timestamptz
approved_at timestamptz

x_templates テーブル

カラム 説明
id uuid PK
post_type enum 10型
name text 表示名(例: "学び型")
structure text 構成(状況→気づき→学び→教訓 等)
prompt_template text Claude プロンプトテンプレ
input_sources jsonb どこから取るか(vault_paths / slack_channels)
frequency_target text 推奨頻度(毎日 / 週2-3 等)
sample_posts jsonb サンプル3-5本
is_active boolean
created_at timestamptz
updated_at timestamptz

x_posts テーブル(X APIから取得・分析用)

カラム 説明
id text X tweet ID(PK)
account_id uuid FK
body text 本文
post_type enum 10型(推定)
posted_at timestamptz
impressions int
likes int
reposts int
replies int
bookmarks int
engagement_rate numeric (likes+reposts+replies)/impressions
evaluation enum best / good / average / poor / worst
ai_analysis text なぜ伸びた/伸びなかったかの分析
fetched_at timestamptz

x_competitors テーブル

カラム 説明
id uuid PK
account_handle text @nakano など
display_name text 中野(BUDDICA)など
category enum benchmark / competitor / inspiration
notes text 「ストーリー型実業家」等
last_scanned_at timestamptz
is_active boolean

x_competitor_posts テーブル

カラム 説明
id text X tweet ID
competitor_id uuid FK
body text
posted_at timestamptz
impressions / likes / reposts int
evaluation enum trending / good / average
usable_as_reference boolean 引用RT候補か
reply_suggestions jsonb リプ案(短2/中2/長2)
fetched_at timestamptz

x_accounts テーブル

カラム 説明
id uuid PK
handle text @scale_ceo
display_name text 大串勇輝|株式会社SCALE CEO
owner text 大串 / パートナー名
oauth_tokens jsonb 暗号化保存
current_bio text
current_header text
pinned_post_id text
concept text 事業挑戦×ストーリー型 等
is_active boolean

x_profile_history テーブル

カラム 説明
id uuid PK
account_id uuid FK
changed_field enum bio / header / pinned / name
old_value text
new_value text
reason text
changed_at timestamptz

5. API 仕様

POST /api/x/drafts/generate

手動 or Cron で X ドラフト生成。

{
  "account_id": "uuid",
  "count": 5,
  "post_types": ["learning", "progress"], // 任意指定、空なら自動配分
  "lookback_days": 1,
  "force": false
}

レスポンス: { drafts: [...5本], generated_at }

GET /api/x/drafts

ドラフト一覧。?account_id=&status=&post_type=&date=

PATCH /api/x/drafts/:id

編集(大串の手直しを保存)。

POST /api/x/drafts/:id/approve

承認 → コピペ用テキストを返す。

POST /api/x/drafts/:id/posted

投稿完了マーク(手動 or X APIで自動)。

GET /api/x/posts/analytics

自分の投稿分析。?account_id=&days=&group_by=post_type

POST /api/x/posts/sync

X API から自分の最新ポスト取得 → x_posts 更新。

POST /api/x/competitors/scan

ベンチマーク7人の最新ポストをスキャン → 分析 → リプ案生成。

GET /api/x/competitors/posts

?evaluation=trending&date= でリプ候補抽出。

GET/POST/DELETE /api/x/templates

10型テンプレ CRUD(初回 GET でデフォルト10型 seed)。

GET/POST /api/x/accounts

アカウント管理。

POST /api/x/profile/update

bio / ヘッダー / ピン留めの更新(履歴記録)。

POST /api/x/cron

外部 cron 受け口(X_PILOT_CRON_TOKEN 認証)。


6. UI / 画面設計

Base 内 /x 配下に7画面(既存拡張)

画面 パス 内容
ホーム /x 今日のドラフト5本・直近のジョブ・通知(既存拡張)
ドラフト /x/drafts 一覧・編集・承認・履歴
投稿済み /x/posts 自分の投稿一覧・分析・型別集計
分析 /x/analytics ダッシュボード(インプ・エンゲージ・型別ベスト)
競合 /x/competitors ベンチマーク7人の最新ポスト・リプ候補
プロフィール /x/profile bio / ヘッダー / ピン留め管理・履歴
設定 /x/settings テンプレ管理・アカウント管理

ホーム画面のレイアウト

┌────────────────────────────────────────────┐
│  今日のXドラフト(4/29 火・5本)   │
├────────────────────────────────────────────┤
│ 1. 学び型 → [ ドラフト本文 ] [ 編集 ][ 投稿 ]   │
│ 2. 進捗報告型 → [ ... ]                       │
│ 3. 失敗型 → [ ... ]                           │
│ 4. 他者引用型 → [ 中野さんポストへのリプ案 ]    │
│ 5. マインド型 → [ ... ]                       │
├────────────────────────────────────────────┤
│  直近7日の投稿パフォーマンス     │
│   ベスト: "23歳でBtoB事業4本作る理由" (5.2K)  │
│   ワースト: "業界批判系"(要見直し)          │
├────────────────────────────────────────────┤
│  ベンチマーク新着(リプ候補3件)      │
│   - 中野さん「結果出すまでが営業」            │
│   - 迫さん「初期顧客10社が全て」              │
│   - 三上さん「Vision主導の経営」              │
└────────────────────────────────────────────┘

7. 実装順序

Phase 1(2週間・MVP稼働)

このPhaseだけで「毎朝5本のドラフト」が手元に来て、毎日2投稿が回り始める

ID 機能
X1 D1 マイグレーション(x_drafts / x_templates / x_posts / x_competitors / x_competitor_posts / x_accounts / x_profile_history)
X2 10型テンプレ seed(learning / failure / decision / numbers / industry_critique / mindset / knowhow / others_quote / progress / question)
X3 Vault Cache 再利用(pilot_vault_cache から writing_hand / Daily / Inbox 取得)
X4 Claude プロンプト調整(10型分類 + 大串の口調反映)
X5 ドラフト生成エンジン(5本/日)
X6 Slack DM 配信(朝7時に「今日のドラフト5本」)
X7 /x ホーム画面でドラフト表示 + 編集UI
X8 ドラフト承認 → コピペ用テキスト返却
X9 Cron セットアップ(朝7時・既存 pilot_cron.sh と同パターン)
X10 受け入れテスト(朝Slack届く・10型分類されてる・コピペで投稿できる)

Phase 2(追加1週間・既存ポスト分析)

ID 機能
A1 X API OAuth 認証・トークン管理(既存 /x の OAuth PKCE 活用)
A2 自分の直近ポスト取得(毎晩23時 Cron)
A3 インプ・エンゲージ集計 + DB保存
A4 ベスト/ワースト判定(過去30日 Top3 / Bottom3)
A5 型別パフォーマンス集計(学び型 vs ノウハウ型 等)
A6 /x/analytics 画面
A7 次回ドラフトプロンプトに「ベスト傾向」をフィードバック

Phase 3(追加1週間・競合 / リプ)

ID 機能
C1 x_competitors 7人 seed(中野/迫/Kくん/安藤/ゆーへい/駒居/三上)
C2 7人の最新ポスト取得(毎朝6時 Cron、X API)
C3 エンゲージ閾値超え検知(フォロワー数 ÷ N で動的閾値)
C4 リプ案生成(短2 / 中2 / 長2、既存ルール準拠)
C5 /x/competitors 画面で候補一覧
C6 リプ実行記録(D1保存)

Phase 4(追加1週間・予約・アカウント・プロフ)

ID 機能
R1 予約投稿(X API直接 or Buffer連携)
R2 アカウント切替(@scale_ceo + パートナー垢)
R3 bio / ヘッダー / ピン留め管理画面
R4 プロフィール変更履歴
R5 パートナー用ドラフト生成(別concept・別ターゲット)

8. 機能一覧(IDマップ・全機能)

X. ドラフト生成

  • X1: D1マイグレーション
  • X2: 10型テンプレseed
  • X3: Vault Cache再利用
  • X4: Claudeプロンプト
  • X5: ドラフト生成エンジン
  • X6: Slack DM配信
  • X7: ホーム画面UI
  • X8: 承認 → コピペ
  • X9: Cron
  • X10: 受け入れテスト

A. 既存ポスト分析

  • A1: X API OAuth
  • A2: 自分のポスト取得
  • A3: 集計・DB保存
  • A4: ベスト/ワースト判定
  • A5: 型別パフォーマンス
  • A6: /x/analytics 画面
  • A7: フィードバックループ

C. 競合・リプ

  • C1: ベンチマーク7人seed
  • C2: 7人ポスト取得
  • C3: 閾値超え検知
  • C4: リプ案生成
  • C5: /x/competitors 画面
  • C6: リプ実行記録

R. 予約・アカウント・プロフ

  • R1: 予約投稿
  • R2: アカウント切替
  • R3: プロフィール管理
  • R4: 変更履歴
  • R5: パートナー用ドラフト

9. 評価基準(受け入れ条件)

Phase 1 完了条件

  • [ ] /x 画面が Base から開ける
  • [ ] 朝7時に Slack DM で「今日のドラフト5本」が届く
  • [ ] 10型のうち最低5型が日替わりで生成される
  • [ ] ドラフトが「人間味あり、AIっぽくない」(大串判定)
  • [ ] 文末「。」、「〜だ」「〜である」「〜ですよね」禁止ルール厳守
  • [ ] キャッチコピー候補5案が各ドラフトに付随
  • [ ] 大串がドラフト→編集→コピペで投稿できる
  • [ ] 投稿後 /x/draftsposted 状態に更新できる

Phase 2-4 完了条件

  • 各ID単位で「動作する + UI で確認できる + DB反映される」

全体の品質基準

  • 生成ドラフトが「大串が手直しなしで投稿できる」レベル(Phase 1 で 60%、最終で 90%)
  • 大串の語尾・温度・癖を反映(Slack writing_hand を学習データ化)
  • ベンチマーク7人路線(中野・迫・三上等)からの逸脱がない
  • AIっぽさ・チャラさ・薄さ・胡散臭さ ZERO(NG軸厳守)

10. 完了状況チェックリスト

Phase 1

  • [ ] X1: D1マイグレーション
  • [ ] X2: 10型テンプレseed
  • [ ] X3: Vault Cache再利用
  • [ ] X4: Claudeプロンプト調整
  • [ ] X5: ドラフト生成エンジン
  • [ ] X6: Slack DM配信
  • [ ] X7: ホーム画面UI
  • [ ] X8: 承認 → コピペ
  • [ ] X9: Cron セットアップ
  • [ ] X10: 受け入れテスト

Phase 2

  • [ ] A1: X API OAuth
  • [ ] A2: 自分のポスト取得
  • [ ] A3: 集計・DB保存
  • [ ] A4: ベスト/ワースト判定
  • [ ] A5: 型別パフォーマンス
  • [ ] A6: /x/analytics 画面
  • [ ] A7: フィードバックループ

Phase 3

  • [ ] C1: ベンチマーク7人seed
  • [ ] C2: 7人ポスト取得
  • [ ] C3: 閾値超え検知
  • [ ] C4: リプ案生成
  • [ ] C5: /x/competitors 画面
  • [ ] C6: リプ実行記録

Phase 4

  • [ ] R1: 予約投稿
  • [ ] R2: アカウント切替
  • [ ] R3: プロフィール管理
  • [ ] R4: 変更履歴
  • [ ] R5: パートナー用ドラフト

11. 特殊要件・プロンプトテンプレ

共通システムプロンプト(全ポスト型に適用)

あなたは株式会社SCALE代表 大串勇輝(23歳)のXポストドラフトを作るAIです。

【絶対厳守ルール】
- 文末は必ず「。」(箇条書き「・」、番号「①②③」のみ例外)
- 禁止表現: 「〜だ。」「〜である。」「〜ですよね」
- 一人称は必須ではない
- 売り込み臭NG
- ノウハウ単体NG(感情・判断・思考・哲学が主役)
- 断定するが、断定口調で終わらせない
- AIっぽさ・チャラさ・薄さ・胡散臭さ ZERO

【コンセプト】
事業挑戦×ストーリー型。23歳で BtoB 事業を4本作り続けてる経営者。
ターゲット: BtoB商材の経営者・決裁権者。

【ベンチマーク7人路線】
中野(BUDDICA)/ 迫 / Kくん / 安藤(令和の虎)/ ゆーへい / 駒居 / 三上(アドネス)
共通項: 実業家 × 叩き上げ × ノウハウ × 数字 × ストーリー × 本音 × 人間味

【出力フォーマット】
{
  "catchphrase_candidates": [5案],
  "selected_catchphrase": "最も刺さる1案",
  "body": "本文(X 280文字以内)",
  "input_source": "どのVault/Slack記録から生成したか"
}

各10型のプロンプトテンプレ

1. 学び型(毎日)

入力: Slack writing_hand / Daily ノート
構成: 状況 → 気づき → 学び → 自分への教訓
温度: 落ち着いた発見、押し付けない
NG: ためになる系の押し付け、「みなさんも〜」

2. 失敗型(週2-3)

入力: Daily / 振り返りメモ
構成: 失敗の事実 → 原因分析 → 学び → 次回どうするか
温度: 自虐すぎず、痛みを残す
NG: 失敗を美化、結局成功談に着地

3. 判断型(週2-3)

入力: Slack / Daily
構成: 判断の背景 → 選択肢 → 決断理由 → 結果
温度: 経営者の生々しい判断
NG: 後出し、結果論

4. 数字型(月次)

入力: SCALE Base API(KPI / 事業数字)
構成: 今月の数字 → 比較(前月・業界平均)→ 所感
温度: 派手すぎず、地味の積み重ねを伝える
NG: 数字を盛る、煽る

5. 業界批判型(週1-2)

入力: Vault知見・業界経験
構成: 業界の常識 → なぜそれが間違いか → 真実
温度: 批判的だが、攻撃的じゃない
NG: 個別企業攻撃、悪口

6. マインド型(週2-3)

入力: Slack writing_hand
構成: 感情・葛藤 → 気づき → 哲学
温度: 人間味、本音、迷い
NG: 自己啓発口調、「みなさん」

7. ノウハウ型(週1-2)

入力: Vault知見
構成: 問題 → ステップ → なぜそれが効くか
温度: 実務的、具体的
NG: 抽象論、ためになる系

8. 他者引用型(週2-3)

入力: ベンチマーク7人の最新ポスト(x_competitor_posts)
構成: 相手引用 → 自解釈 → 自社事例
温度: 共感×独自視点
NG: ヨイショ、丸パクリ

9. 進捗報告型(毎日)

入力: Slack / Daily / SCALE Base
構成: 今日やったこと → 気づき → 次やること
温度: 等身大、地味、リアル
NG: 派手な実績、フォロワー欲しい感

10. 問いかけ型(週1)

入力: Vault
構成: 問題提起 → 自分の仮説 → 読者への問い
温度: 知的、対話的
NG: 答えのない問い、議論誘発のための問い

サンプル出力(学び型)

{
  "catchphrase_candidates": [
    "結果より、結果を出す順番が大事だった。",
    "営業は順番が9割。",
    "順番を間違えると、永遠に成果が出ない。",
    "営業の9割は、順番で決まる。",
    "成果が出る人は、何を最初にやってるか。"
  ],
  "selected_catchphrase": "結果より、結果を出す順番が大事だった。",
  "body": "結果より、結果を出す順番が大事だった。\n\n中野さんの「結果出すまでが営業じゃなく、結果出すから営業」が刺さった。\n\n弊社の SCALE CRM でも同じ。リスト作りに営業の8割を使う。地味だけど、これが順番の最初。\n\n順番を間違えると、永遠に成果が出ない。",
  "input_source": "Slack writing_hand 2026-04-28 + Daily 2026-04-28"
}

12. 守るべきこと

観点 内容
退化禁止 既存 /x セクション(27ページ・OAuth実装済)を削除せず、X Pilot として拡張
changelog scale-base の lib/changelog.ts 最上段に毎回追記
バックアップ 編集前に tar.gz、デプロイ前後で必ず
関数grep 既存関数を消す前に必ず参照確認(特に既存/x 配下)
本番URL確認 デプロイ後 https://scale-base.pages.dev/x/ で動作確認
AIコスト Claude API 呼び出しはキャッシュ戦略必須(system prompt 5分 ephemeral)
Vault 重複 既存 pilot_vault_cache を再利用(X Pilot 専用キャッシュは作らない)
機密情報 パートナー比率・SCALE利益率はドラフトに含めない(既存 Pilot ルールと同等)
自動投稿NG 大串のレビューを必ず通す(人間味確保)
NG軸厳守 AIっぽい / チャラい / 薄い / 胡散臭い / 人間味ない を絶対避ける
マルチアカウント前提 全テーブルに account_id 付与、Phase 1 は @scale_ceo のみだが、Phase 4 でパートナー垢追加が容易な設計
投稿方式固定 X API直接投稿(Buffer等の外部連携は使わない・OAuth Tokens は x_accounts.oauth_tokens に暗号化保存)

13. 関連ノート

Vault内

グローバル

  • /Users/oogushiyuuki/.claude/CLAUDE.md — グローバル指示書
  • /Users/oogushiyuuki/株式会社SCALE/scale-company/marketing/x_posting_rules.md — X投稿制作ルール
  • /Users/oogushiyuuki/株式会社SCALE/scale-company/marketing/x_strategy.md — X戦略

Memory

  • project_scale_base_x.md — 既存 /x セクション概要(27ページ・OAuth未接続)

14. 完了報告フロー

各Phase完了時、Slack で報告:

cd /Users/oogushiyuuki/株式会社SCALE/scale-company/
./slack_post.sh shirei "SCALE Base X Pilot Phase 1 完了。/x で毎朝5本のドラフト自動生成稼働中。"

15. 更新履歴

日付 内容
2026-04-29 初版作成(X発信導線設計、新コンセプト「事業挑戦×ストーリー型」確定後)

確定事項(2026-04-29 大串確認済)

# 項目 確定内容
1 既存 /x との統合 既存 /x セクションを拡張(27ページ・OAuth資産活用、別path新設しない)
2 D1テーブル prefix x_* プレフィックス(x_drafts / x_templates / x_posts / x_competitors / x_competitor_posts / x_accounts / x_profile_history)
3 アカウント数 Phase 1 は @scale_ceo のみ。ただしPhase 1から account_id ベースで全テーブル設計、後からパートナー垢追加が容易な構造にする
4 ベンチマーク7人 OK。Phase 3 着手時にハンドル確定(Kくん/安藤/ゆーへい/駒居 の正確なハンドルは大串に都度確認)。三上=@mikami_01 は確定済
5 投稿方式 X API直接投稿(Buffer等の外部連携は使わない)
6 着手タイミング 即着手OK(SCALE Base Pilot Phase 4 完了済、リソース空き)