blink-backend について
blink-backendは、Blinkのバックエンドエンドポイントの構築とデプロイを支援するスキルです。Honoアプリの構成、シークレット、JWT検証、フロントエンドからの呼び出し、Webhookなどのサーバー側タスクを扱います。
主な機能
- 01Honoバックエンド構成のガイド
- 02バックエンド利用可否の確認
- 03シークレット管理のガイド
- 04JWTトークンの検証
- 05フロントエンドからの呼び出し例
- 06デプロイとエラーのトラブルシューティング
活用シーン
- 01Webhookエンドポイントの実装
- 02サードパーティコールバックの処理
- 03サーバーキーのフロントエンド露出防止
- 04Blinkバックエンドのデプロイ
MCP 対応
バックエンドの状態確認、デプロイ、ログ表示に使うMCPツールとして、`blink_backend_status`、`blink_backend_deploy`、`blink_backend_logs`が記載されています。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ blink-new/ blink-plugin --skill blink-backendインストール後、Claude Code で/blink-backendを入力して読み込まれたか確認します。
詳細
MCP ツール
blink_backend_status · blink_backend_deploy · blink_backend_logs
使用する場面
- 認証、データベース、ストレージ、AI には SDK を優先してください(約 95% のケース)
- 次の場合はバックエンドを使用してください:Webhook、サーバーサイドのシークレット、サードパーティのコールバック、負荷の高い処理
- CRUD のためだけにバックエンドを作成しないでください。代わりに
blink.dbを使用してください
はじめに
# Check backend eligibility (Pro/Max/Team)
blink backend status
# Create the entry point
mkdir -p backend
# Write backend/index.ts (see below)
# Deploy
blink backend deploy
# View logs
blink backend logs
構成
backend/
├── index.ts ← REQUIRED: export default Hono app
├── routes/
│ ├── stripe.ts
│ └── webhooks.ts
└── lib/
└── auth.ts
backend/index.ts(必須のエントリーポイント)
import { Hono } from "hono"
import { cors } from "hono/cors"
import { createClient } from "@blinkdotnew/sdk"
const app = new Hono()
app.use("*", cors())
const getBlink = (env: Record<string, string>) =>
createClient({
projectId: env.BLINK_PROJECT_ID,
secretKey: env.BLINK_SECRET_KEY, // server key, not publishableKey
})
app.get("/health", (c) => c.json({ ok: true }))
app.post("/api/example", async (c) => {
const blink = getBlink(c.env as Record<string, string>)
const body = await c.req.json()
return c.json({ success: true })
})
export default app
シークレット
自動注入(ハードコードしないでください):BLINK_PROJECT_ID、BLINK_SECRET_KEY、BLINK_PUBLISHABLE_KEY
ユーザーシークレット(サードパーティのキー):プロジェクト設定または CLI から追加し、c.env.MY_SECRET としてアクセスします。
JWT の検証
app.post("/api/protected", async (c) => {
const blink = getBlink(c.env as Record<string, string>)
const auth = await blink.auth.verifyToken(c.req.header("Authorization"))
if (!auth.valid) return c.json({ error: auth.error }, 401)
return c.json({ userId: auth.userId })
})
フロントエンドからの呼び出し
// Direct fetch
const res = await fetch("https://{projectId8}.backend.blink.new/api/example", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ key: "value" }),
})
// Via SDK
const data = await blink.functions.invoke("api/example", { body: { key: "value" } })
projectId8 = 完全なプロジェクト ID の末尾 8 文字です。
デプロイのフロー
# 1. Check eligibility
blink backend status
# 2. Write backend/index.ts
# 3. Deploy (reads all backend/ files, bundles with esbuild, deploys to CF Workers)
blink backend deploy
# 4. URL is printed: https://{projectId8}.backend.blink.new
よくあるエラー
| エラー | 原因 | 修正 |
|---|---|---|
BACKEND_REQUIRES_PRO | Free/Starter ワークスペース | Pro 以上にアップグレードする |
MISSING_ENTRYPOINT | backend/index.ts がない | export default app で作成する |
| CORS エラー | ミドルウェアがない | app.use("*", cors()) を追加する |
| blink-apis で 401 | キーが間違っている | publishableKey ではなく secretKey を使用する |
チェックリスト
backend/index.tsがdefault appをエクスポートしているapp.use("*", cors())があるcreateClientでsecretKeyを使用している(publishableKeyではない)blink backend deployでデプロイしている- すべての外部
fetch()呼び出しに AbortController のタイムアウトを設定している
コメント
Markdown 対応