首页龙虾技能列表 › Vercel — Vercel工具

Vercel — Vercel工具

v1.0.0

[AI辅助] Vercel API integration with managed OAuth. Manage projects, deployments, domains, teams, and environment variables. Use this skill when users want to interac...

0· 92·0 当前·0 累计
by @byungkyu·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/29
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
This skill is internally consistent: it proxies Vercel API calls through Maton (gateway.maton.ai/ctrl.maton.ai) and only asks for a single Maton API key to operate.
评估建议
This skill appears coherent and only needs your MATON_API_KEY to let Maton proxy Vercel API calls. Before installing, confirm you trust maton.ai (they will see and act on Vercel resources when you use the gateway), store the API key securely (avoid placing it in shared/system-wide envs), and use least-privilege/rotatable tokens if possible. If you prefer direct Vercel API access without a third-party proxy, look for a skill that calls api.vercel.com directly or manage OAuth yourself.
详细分析 ▾
用途与能力
The name/description (Vercel API integration) matches the instructions which call a Maton gateway that proxies to api.vercel.com. Required environment access is a single MATON_API_KEY which is appropriate for a managed-OAuth gateway.
指令范围
All runtime examples call Maton endpoints (gateway.maton.ai, ctrl.maton.ai, connect.maton.ai) rather than api.vercel.com directly — this is consistent with the 'managed OAuth' description but means requests and OAuth tokens are routed through Maton. Instructions do not reference unrelated files, system paths, or additional environment variables.
安装机制
This is instruction-only (no install spec, no code files to execute), so nothing is written to disk or downloaded during install.
凭证需求
Only a single required environment variable (MATON_API_KEY) is declared and used in examples. That is proportionate to a gateway-based integration; no unrelated credentials or config paths are requested.
持久化与权限
always is false and the skill doesn't request system-wide or other-skills configuration changes. It can be invoked autonomously (default), which is normal for skills and not in itself a red flag.
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/29

- Initial release of the Vercel API integration skill with managed OAuth via Maton. - Enables management of Vercel projects, deployments, domains, teams, and environment variables. - Includes comprehensive connection management for Vercel OAuth through Maton Control Panel. - Provides sample Python code for common API operations such as listing projects and creating connections. - API gateway automatically handles authentication and token injection. - Full documentation and endpoint references included for quick start and advanced usage.

● 无害

安装命令 点击复制

官方npx clawhub@latest install vercel-api
镜像加速npx clawhub@latest install vercel-api --registry https://cn.clawhub-mirror.com

技能文档

Access the Vercel API with managed OAuth authentication. Manage projects, deployments, domains, teams, and environment variables.

Quick 开始

# List projects
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/vercel/v9/projects?limit=10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Base URL

https://gateway.maton.ai/vercel/{native-api-path}

Replace {native-api-path} with the actual Vercel API endpoint path (e.g., v9/projects, v6/deployments). The gateway proxies requests to api.vercel.com and automatically injects your OAuth token.

Authentication

All requests require the Maton API key in the Authorization header:

Authorization: Bearer $MATON_API_KEY

Environment 变量: 设置 API 键 作为 MATON_API_KEY:

export MATON_API_KEY="YOUR_API_KEY"

Getting API 键

连接 Management

Manage your Vercel OAuth connections at https://ctrl.maton.ai.

列表 Connections

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=vercel&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

创建 连接

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'vercel'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

获取 连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

响应:

{
  "connection": {
    "connection_id": "cf5e9c78-dff3-495f-a1d4-e0c6eeeafa9a",
    "status": "ACTIVE",
    "creation_time": "2025-12-08T07:20:53.488460Z",
    "last_updated_time": "2026-01-31T20:03:32.593153Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "vercel",
    "metadata": {}
  }
}

Open the returned url in a browser to complete OAuth authorization.

删除 连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Specifying 连接

If you have multiple Vercel connections, specify which one to use with the Maton-Connection header:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/vercel/v9/projects')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', 'cf5e9c78-dff3-495f-a1d4-e0c6eeeafa9a')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

If omitted, the gateway uses the default (oldest) active connection.

API Reference

用户

获取 Current 用户

GET /vercel/v2/user

响应:

{
  "user": {
    "id": "srL5ucia16R88imgFgrn9XHH",
    "email": "user@example.com",
    "username": "username",
    "name": "User Name",
    "avatar": null,
    "defaultTeamId": "team_abc123",
    "billing": {
      "plan": "hobby",
      "status": "active"
    }
  }
}

Teams

列表 Teams

GET /vercel/v2/teams

响应:

{
  "teams": [
    {
      "id": "team_1xPDNnVvmKxzxPs2x2XQRoKu",
      "slug": "my-team",
      "name": "My Team",
      "createdAt": 1732138693523,
      "membership": {
        "role": "OWNER"
      },
      "billing": {
        "plan": "hobby",
        "status": "active"
      }
    }
  ],
  "pagination": {
    "count": 1,
    "next": null,
    "prev": null
  }
}

Projects

列表 Projects

GET /vercel/v9/projects?limit=20

响应:

{
  "projects": [
    {
      "id": "prj_ET9o8o6WAQTfWbtF8NeFe4XF9uYG",
      "name": "my-project",
      "accountId": "team_abc123",
      "framework": "nextjs",
      "nodeVersion": "22.x",
      "createdAt": 1733304037737,
      "updatedAt": 1766947708146,
      "targets": {},
      "latestDeployments": []
    }
  ],
  "pagination": {
    "count": 20,
    "next": 1733304037737,
    "prev": null
  }
}

获取 Project

GET /vercel/v9/projects/{projectId}

响应:

{
  "id": "prj_ET9o8o6WAQTfWbtF8NeFe4XF9uYG",
  "name": "my-project",
  "accountId": "team_abc123",
  "framework": "nextjs",
  "nodeVersion": "22.x",
  "createdAt": 1733304037737,
  "updatedAt": 1766947708146,
  "buildCommand": null,
  "devCommand": null,
  "installCommand": null,
  "outputDirectory": null,
  "rootDirectory": null,
  "serverlessFunctionRegion": "iad1"
}

创建 Project

POST /vercel/v9/projects
Content-Type: application/json

{ "name": "my-new-project", "framework": "nextjs", "gitRepository": { "type": "github", "repo": "username/repo" } }

更新 Project

PATCH /vercel/v9/projects/{projectId}
Content-Type: application/json

{ "name": "updated-project-name", "buildCommand": "npm run build" }

删除 Project

DELETE /vercel/v9/projects/{projectId}

Deployments

列表 Deployments

GET /vercel/v6/deployments?limit=20

查询 Parameters:

  • limit - 数字 的 results (默认: 20)
  • projectId - 过滤 由 project ID
  • target - 过滤 由 target (production, 预览)
  • state - 过滤 由 state (BUILDING, 就绪, 错误, CANCELED)

响应:

{
  "deployments": [
    {
      "uid": "dpl_8gFe6M8XZsQ1ohP86VWTemcBAmZJ",
      "name": "my-project",
      "url": "my-project-abc123.vercel.app",
      "created": 1759739951209,
      "state": "READY",
      "readyState": "READY",
      "target": "production",
      "source": "git",
      "creator": {
        "uid": "srL5ucia16R88imgFgrn9XHH",
        "username": "username"
      },
      "meta": {
        "githubCommitRef": "main",
        "githubCommitSha": "6e88c2d..."
      }
    }
  ],
  "pagination": {
    "count": 20,
    "next": 1759739951209,
    "prev": null
  }
}

获取 Deployment

GET /vercel/v13/deployments/{deploymentId}

响应:

{
  "id": "dpl_8gFe6M8XZsQ1ohP86VWTemcBAmZJ",
  "name": "my-project",
  "url": "my-project-abc123.vercel.app",
  "created": 1759739951209,
  "buildingAt": 1759739952144,
  "ready": 1759740085170,
  "state": "READY",
  "readyState": "READY",
  "target": "production",
  "source": "git",
  "creator": {
    "uid": "srL5ucia16R88imgFgrn9XHH",
    "username": "username"
  }
}

获取 Deployment Build Logs

GET /vercel/v3/deployments/{deploymentId}/events

响应:

[
  {
    "created": 1759739951860,
    "deploymentId": "dpl_8gFe6M8XZsQ1ohP86VWTemcBAmZJ",
    "text": "Running build in Washington, D.C., USA (East) – iad1",
    "type": "stdout",
    "info": {
      "type": "build",
      "name": "bld_b3go7zd2k"
    }
  }
]

取消 Deployment

PATCH /vercel/v12/deployments/{deploymentId}/cancel

Environment Variables

列表 Environment Variables

GET /vercel/v10/projects/{projectId}/env

响应:

{
  "envs": [
    {
      "id": "6EwQRCd32PVNHORP",
      "key": "API_KEY",
      "value": "...",
      "type": "encrypted",
      "target": ["production", "preview", "development"],
      "createdAt": 1732148489672,
      "updatedAt": 1745542152381
    }
  ]
}

创建 Environment 变量

POST /vercel/v10/projects/{projectId}/env
Content-Type: application/json

{ "key": "MY_ENV_VAR", "value": "my-value", "type": "encrypted", "target": ["production", "preview"] }

更新 Environment 变量

PATCH /vercel/v10/projects/{projectId}/env/{envId}
Content-Type: application/json

{ "value": "updated-value" }

删除 Environment 变量

DELETE /vercel/v10/projects/{projectId}/env/{envId}

Domains

列表 Domains

GET /vercel/v5/domains

响应:

{
  "domains": [
    {
      "name": "example.com",
      "apexName": "example.com",
      "projectId": "prj_abc123",
      "verified": true,
      "createdAt": 1732138693523
    }
  ],
  "pagination": {
    "count": 10,
    "next": null,
    "prev": null
  }
}

获取 Domain

GET /vercel/v5/domains/{domain}

添加 Domain

POST /vercel/v5/domains
Content-Type: application/json

{ "name": "example.com" }

移除 Domain

DELETE /vercel/v6/domains/{domain}

Artifacts (Remote Caching)

获取 Artifacts Status

GET /vercel/v8/artifacts/status

响应:

{
  "status": "enabled"
}

分页

Vercel uses cursor-based pagination with next and prev cursors:

GET /vercel/v9/projects?limit=20&until=1733304037737

Parameters:

  • limit - Results per page (varies 由 endpoint, typically max 100)
  • until - Cursor 对于 下一个 page (使用 下一个 从 响应)
  • since - Cursor 对于 上一个 page (使用 prev 从 响应)

响应 includes:

{
  "pagination": {
    "count": 20,
    "next": 1733304037737,
    "prev": 1759739951209
  }
}

Code Examples

JavaScript

const response = await fetch(
  'https://gateway.maton.ai/vercel/v9/projects?limit=10',
  {
    headers: {
      'Authorization': Bearer ${process.env.MATON_API_KEY}
    }
  }
);
const data = await response.json();

Python

import os
import requests

response = requests.get( 'https://gateway.maton.ai/vercel/v9/projects', headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}, params={'limit': 10} ) data = response.json()

列表 Deployments 对于 Project

import os
import requests

project_id = 'prj_abc123' response = requests.get( 'https://gateway.maton.ai/vercel/v6/deployments', headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}, params={'projectId': project_id, 'limit': 10} ) deployments = response.json()['deployments']

Notes

  • API versions vary 由 endpoint (v2, v5, v6, v9, v10, v13, etc.)
  • Timestamps 在...中 milliseconds since Unix epoch
  • Project IDs 开始 带有 prj_, deployment IDs 开始 带有 dpl_, team IDs 开始 带有 team_
  • Deployment states: BUILDING, 就绪, 错误, CANCELED, QUEUED
  • Environment 变量 types: plain, encrypted, secret, sensitive
  • Environment targets: production, 预览, development
  • IMPORTANT: 当...时 使用 curl commands, 使用 curl -g 当...时 URLs contain brackets 到 disable glob parsing
  • IMPORTANT: 当...时 piping curl 输出 到 jq, environment variables 可能 不 expand correctly 在...中 一些 shells

错误 Handling

StatusMeaning
400Missing Vercel connection or invalid request
401Invalid or missing Maton API key
403Insufficient permissions
404Resource not found
429Rate limited
4xx/5xxPassthrough error from Vercel API

Resources

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务