以前の n8n 試作 から、Cursor SDK 直結 に寄せました。OpenAI の従量 API は使いません。
フロー
Slack: /fix mist トップの文言を短く
↓
site-bot (:3102) — 署名検証、fix-inbox に依頼保存
↓
fix:watch — キュー監視
↓
Cursor SDK (Agent.prompt) — apps/web / content/ を編集
↓
localhost で確認 → git push → Vercel
主要コンポーネント
| パス | 役割 |
|---|---|
apps/site-bot | Slack /fix, /fix-list |
fix-inbox/*.md | エージェントへの指示書(gitignore) |
scripts/fix-watch.mjs | 未処理を SDK に自動渡し |
scripts/cursor-handoff.mjs | @cursor/sdk ラッパー |
最小セットアップ
cd multisite
cp apps/site-bot/.env.example apps/site-bot/.env.local
# CURSOR_API_KEY, SLACK_SIGNING_SECRET, FIX_BACKEND=cursor
npm install
npm run dev:mist # プレビュー :3106
npm run slack:daemon # bot + fix:watch + ngrok
Slack なしテスト:
npm run fix:simulate -- mist フッターの年を2026に
FIX_BACKEND
| 値 | 動作 |
|---|---|
handoff | キュー保存のみ(手動 Cursor 可) |
cursor | SDK 自動編集(推奨) |
openai | 有料 API + GitHub commit(今回は使わない) |
依存でつまずいた点
@cursor/sdk 単体では足りず、@connectrpc/connect-node を明示 install する必要がありました。
npm i @connectrpc/connect-node @connectrpc/connect -D
編集される範囲
content/sites/{SITE_ID}/site.json- テンプレ別
HomePage.tsx globals.css, Header, Footer など(site-bot のgetEditablePaths参照)