Loading...
Loading...
Compare original and translation side by side
Plan mode: If you are planning work, this entire skill is ONE plan step: "Invoke /vibes:cloudflare". Do not decompose the steps below into separate plan tasks.
计划模式:如果你正在规划工作,整个技能作为一个计划步骤:「调用 /vibes:cloudflare」。不要将以下步骤拆分为单独的计划任务。
npm install -g wranglernpm install -g wranglercd skills/cloudflare/worker
npm install
wrangler deploycd skills/cloudflare/worker
npm install
wrangler deploycd skills/cloudflare/worker
npx wrangler secret put CLERK_PEM_PUBLIC_KEY
npx wrangler secret put CLERK_WEBHOOK_SECRETcd skills/cloudflare/worker
npx wrangler secret put CLERK_PEM_PUBLIC_KEY
npx wrangler secret put CLERK_WEBHOOK_SECRETnode scripts/deploy-cloudflare.js --name myapp --file index.html --clerk-key "pk_test_xxx"--clerk-keyCLERK_PEM_PUBLIC_KEY/claimnode scripts/deploy-cloudflare.js --name myapp --file index.html --clerk-key "pk_test_xxx"--clerk-keyCLERK_PEM_PUBLIC_KEY/claim| Endpoint | Method | Description |
|---|---|---|
| GET | Public registry read |
| GET | Check subdomain availability |
| POST | Claim a subdomain (auth required) |
| POST | Clerk subscription webhooks |
| POST | AI proxy to OpenRouter (requires OPENROUTER_API_KEY) |
| 端点 | 方法 | 描述 |
|---|---|---|
| GET | 公开注册信息读取 |
| GET | 检查子域名可用性 |
| POST | 认领子域名(需要认证) |
| POST | Clerk订阅Webhook |
| POST | 指向OpenRouter的AI代理(需要OPENROUTER_API_KEY) |
registry{
"claims": { "subdomain": { "userId": "...", "claimedAt": "..." } },
"reserved": ["admin", "api", "www"],
"preallocated": {}
}registry{
"claims": { "subdomain": { "userId": "...", "claimedAt": "..." } },
"reserved": ["admin", "api", "www"],
"preallocated": {}
}tenant.myapp.username.workers.devtenant.myapp.com?subdomain=myapp.username.workers.devmyapp.username.workers.dev?subdomain=tenantmyapp.username.workers.dev?subdomain=admintenant.myapp.username.workers.devtenant.myapp.com?subdomain=myapp.username.workers.devmyapp.username.workers.dev?subdomain=tenantmyapp.username.workers.dev?subdomain=admin*<worker-name>.<username>.workers.dev*.yourdomain.com/*yourdomain.comtenant.yourdomain.comadmin.yourdomain.com*<worker-name>.<username>.workers.dev*.yourdomain.com/*yourdomain.comtenant.yourdomain.comadmin.yourdomain.com| Secret | Source | Purpose |
|---|---|---|
| Clerk JWKS endpoint | JWT signature verification |
| Your domains | JWT azp claim validation |
| Clerk dashboard | Webhook signature verification |
| OpenRouter dashboard | AI proxy for |
cd skills/cloudflare/worker
npx wrangler secret put CLERK_PEM_PUBLIC_KEY| 密钥 | 来源 | 用途 |
|---|---|---|
| Clerk JWKS端点 | JWT签名验证 |
| 你的域名 | JWT azp声明验证 |
| Clerk控制台 | Webhook签名验证 |
| OpenRouter控制台 | |
cd skills/cloudflare/worker
npx wrangler secret put CLERK_PEM_PUBLIC_KEY
**Getting CLERK_PEM_PUBLIC_KEY:**
1. Find your Clerk Frontend API URL in Clerk dashboard (e.g., `clerk.yourdomain.com`)
2. Fetch JWKS: `curl https://clerk.yourdomain.com/.well-known/jwks.json`
3. Convert JWK to PEM using Node.js:
```javascript
const crypto = require('crypto');
const jwk = { /* paste the key from jwks.json */ };
const pem = crypto.createPublicKey({ key: jwk, format: 'jwk' }).export({ type: 'spki', format: 'pem' });
console.log(pem);
**获取CLERK_PEM_PUBLIC_KEY:**
1. 在Clerk控制台中找到你的Clerk前端API URL(例如:`clerk.yourdomain.com`)
2. 获取JWKS:`curl https://clerk.yourdomain.com/.well-known/jwks.json`
3. 使用Node.js将JWK转换为PEM:
```javascript
const crypto = require('crypto');
const jwk = { /* 粘贴jwks.json中的密钥 */ };
const pem = crypto.createPublicKey({ key: jwk, format: 'jwk' }).export({ type: 'spki', format: 'pem' });
console.log(pem);--namenode scripts/deploy-cloudflare.js --name myapp --file index.html--namevibes-registry--namenode scripts/deploy-cloudflare.js --name myapp --file index.html--namevibes-registryuseAI()/api/ai/chatnode scripts/deploy-cloudflare.js --name myapp --file index.html --clerk-key "pk_test_xxx" --ai-key "sk-or-v1-your-key"--ai-keyOPENROUTER_API_KEY/api/ai/chat{"error": "AI not configured"}npx wrangler secret put OPENROUTER_API_KEY --name myappuseAI()/api/ai/chatnode scripts/deploy-cloudflare.js --name myapp --file index.html --clerk-key "pk_test_xxx" --ai-key "sk-or-v1-your-key"--ai-keyOPENROUTER_API_KEY/api/ai/chat{"error": "AI not configured"}npx wrangler secret put OPENROUTER_API_KEY --name myappundefinedundefined