Token导航 LogoToken导航TokenDH.com
开发敏感数据clawhub未标认证来源可访问clear审计通过

netlify-apinetlify API 部署

Agent Skill

用于辅助 API 设计、接口文档、请求响应结构和服务集成说明。它适合让 Agent 梳理 endpoint、生成 OpenAPI 草稿、检查字段命名、整理错误码或辅助前后端联调。使用时需要确认真实业务语义、鉴权方式、分页和错误处理规则;涉及生成接口文档时,应避免凭空补字段,最好从现有代码、schema 或接口样例中提取事实。

总安装

39,960

周安装

1,699

GitHub Stars

2

下载量

14,363
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:netlify-api(netlify API 部署)
来源仓库:https://github.com/byungkyu/netlify-api
安装命令:
openclaw skills install netlify-api
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install netlify-api

简介

Netlify API 与托管 OAuth 集成。部署站点、管理构建、配置 DNS 和处理环境变量。

  • 当用户想要管理 Netlify 站点、部署、构建设置或 DNS 配置时,请使用此技能。
  • 对于其他第三方应用程序,请使用 api-gateway 技能 (https://clawhub.ai/byungkyu/api-gateway)。
  • 需要网络访问和有效的 Maton API 密钥。

SKILL.md

name
netlify
description
|
metadata
author
maton
version
1.0
clawdbot
emoji
🧠
homepage
https://maton.ai
requires
env

Netlify

Access the Netlify API with managed OAuth authentication. View sites, deploys, builds, DNS zones, environment variables, and webhooks. Administrative write operations require explicit approval.

Quick Start

# List all sites
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/netlify/api/v1/sites')
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://api.maton.ai/netlify/{native-api-path}

The gateway proxies requests to api.netlify.com and automatically injects your OAuth token. Only the endpoints documented in this skill are supported — always use specific endpoint paths from the API Reference section below rather than constructing arbitrary paths.

Authentication

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

Authorization: Bearer $MATON_API_KEY

Environment Variable: Set your API key as MATON_API_KEY:

export MATON_API_KEY="YOUR_API_KEY"

Getting Your API Key

  1. Sign in or create an account at maton.ai
  2. Go to maton.ai/settings
  3. Copy your API key

Connection Management

Manage your Netlify OAuth connections at https://api.maton.ai.

List Connections

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections?app=netlify&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

Create Connection

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'netlify'}).encode()
req = urllib.request.Request('https://api.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

Get Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.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

Response:

{
  "connection": {
    "connection_id": "{connection_id}",
    "status": "ACTIVE",
    "creation_time": "2026-02-12T11:15:33.183756Z",
    "last_updated_time": "2026-02-12T11:15:51.556556Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "netlify",
    "metadata": {}
  }
}

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

Delete Connection

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.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 Connection

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

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

If you have multiple connections, always include this header to ensure requests go to the intended account.

Security & Permissions

  • Access is scoped to sites, deploys, forms, submissions, and DNS within the connected Netlify account. Only install if you need Netlify administration. Prefer least-privilege OAuth access where available and review scopes before authorizing.
  • Default to read-only operations. Always start by listing or retrieving resources to confirm account, site, and resource identifiers before proposing any changes.
  • All write operations require explicit user approval with specific identifiers. Before executing any create, update, or delete call:

1. Retrieve and display the target resource (site name/ID, deploy ID, DNS zone, env var key) so the user can verify. 2. Clearly describe the intended effect (e.g., "This will delete site 'my-production-app' (site_id: abc123) and all its deploys"). 3. Wait for explicit user confirmation before proceeding.

  • High-impact operations require extra caution. Deleting sites, modifying DNS zones/records, changing environment variables, and triggering production builds can affect live websites. These actions must include a summary of consequences and require confirmation.
  • Prefer reversible actions. Use deploy locking over deletion, and rollback (restore deploy) over redeploying. Always confirm destructive operations like site deletion or DNS zone removal.

API Reference

User & Accounts

Get Current User

GET /netlify/api/v1/user

List Accounts

GET /netlify/api/v1/accounts

Get Account

GET /netlify/api/v1/accounts/{account_id}

Sites

List Sites

GET /netlify/api/v1/sites

With filtering:

GET /netlify/api/v1/sites?filter=all&page=1&per_page=100

Get Site

GET /netlify/api/v1/sites/{site_id}

Create Site

POST /netlify/api/v1/{account_slug}/sites
Content-Type: application/json

{
  "name": "my-new-site"
}

Update Site

PUT /netlify/api/v1/sites/{site_id}
Content-Type: application/json

{
  "name": "updated-site-name"
}

Delete Site

DELETE /netlify/api/v1/sites/{site_id}

Deploys

List Deploys

GET /netlify/api/v1/sites/{site_id}/deploys

Get Deploy

GET /netlify/api/v1/deploys/{deploy_id}

Create Deploy

POST /netlify/api/v1/sites/{site_id}/deploys
Content-Type: application/json

{
  "title": "Deploy from API"
}

Lock Deploy

POST /netlify/api/v1/deploys/{deploy_id}/lock

Unlock Deploy

POST /netlify/api/v1/deploys/{deploy_id}/unlock

Restore Deploy (Rollback)

PUT /netlify/api/v1/deploys/{deploy_id}

Builds

List Builds

GET /netlify/api/v1/sites/{site_id}/builds

Get Build

GET /netlify/api/v1/builds/{build_id}

Trigger Build

POST /netlify/api/v1/sites/{site_id}/builds

Environment Variables

Environment variables are managed at the account level with optional site scope.

List Environment Variables

GET /netlify/api/v1/accounts/{account_id}/env?site_id={site_id}

Create Environment Variables

POST /netlify/api/v1/accounts/{account_id}/env?site_id={site_id}
Content-Type: application/json

[
  {
    "key": "MY_VAR",
    "values": [
      {"value": "my_value", "context": "all"}
    ]
  }
]

Context values: all, production, deploy-preview, branch-deploy, dev

Update Environment Variable

PUT /netlify/api/v1/accounts/{account_id}/env/{key}?site_id={site_id}
Content-Type: application/json

{
  "key": "MY_VAR",
  "values": [
    {"value": "updated_value", "context": "all"}
  ]
}

Delete Environment Variable

DELETE /netlify/api/v1/accounts/{account_id}/env/{key}?site_id={site_id}

DNS Zones

List DNS Zones

GET /netlify/api/v1/dns_zones

Create DNS Zone

POST /netlify/api/v1/dns_zones
Content-Type: application/json

{
  "name": "example.com",
  "account_slug": "my-account"
}

Get DNS Zone

GET /netlify/api/v1/dns_zones/{zone_id}

Delete DNS Zone

DELETE /netlify/api/v1/dns_zones/{zone_id}

DNS Records

List DNS Records

GET /netlify/api/v1/dns_zones/{zone_id}/dns_records

Create DNS Record

POST /netlify/api/v1/dns_zones/{zone_id}/dns_records
Content-Type: application/json

{
  "type": "A",
  "hostname": "www",
  "value": "192.0.2.1",
  "ttl": 3600
}

Delete DNS Record

DELETE /netlify/api/v1/dns_zones/{zone_id}/dns_records/{record_id}

Build Hooks

List Build Hooks

GET /netlify/api/v1/sites/{site_id}/build_hooks

Create Build Hook

POST /netlify/api/v1/sites/{site_id}/build_hooks
Content-Type: application/json

{
  "title": "My Build Hook",
  "branch": "main"
}

Response includes a url that can be POSTed to trigger a build.

Delete Build Hook

DELETE /netlify/api/v1/sites/{site_id}/build_hooks/{hook_id}

Webhooks

List Webhooks

GET /netlify/api/v1/hooks?site_id={site_id}

Create Webhook

POST /netlify/api/v1/hooks?site_id={site_id}
Content-Type: application/json

{
  "type": "url",
  "event": "deploy_created",
  "data": {
    "url": "https://example.com/webhook"
  }
}

Events: deploy_created, deploy_building, deploy_failed, deploy_succeeded, form_submission

Delete Webhook

DELETE /netlify/api/v1/hooks/{hook_id}

Forms

List Forms

GET /netlify/api/v1/sites/{site_id}/forms

List Form Submissions

GET /netlify/api/v1/sites/{site_id}/submissions

Delete Form

DELETE /netlify/api/v1/sites/{site_id}/forms/{form_id}

Functions

List Functions

GET /netlify/api/v1/sites/{site_id}/functions

Services/Add-ons

List Available Services

GET /netlify/api/v1/services

Get Service Details

GET /netlify/api/v1/services/{service_id}

Pagination

Use page and per_page query parameters:

GET /netlify/api/v1/sites?page=1&per_page=100

Default per_page varies by endpoint. Check response headers for pagination info.

Code Examples

JavaScript

const response = await fetch(
  'https://api.maton.ai/netlify/api/v1/sites',
  {
    headers: {
      'Authorization': `Bearer ${process.env.MATON_API_KEY}`
    }
  }
);
const sites = await response.json();

Python

import os
import requests

response = requests.get(
    'https://api.maton.ai/netlify/api/v1/sites',
    headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}
)
sites = response.json()

Create Site and Set Environment Variable

import os
import requests

headers = {'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'}

# Create site
site = requests.post(
    'https://api.maton.ai/netlify/api/v1/my-account/sites',
    headers=headers,
    json={'name': 'my-new-site'}
).json()

# Add environment variable
requests.post(
    f'https://api.maton.ai/netlify/api/v1/accounts/{site["account_id"]}/env',
    headers=headers,
    params={'site_id': site['id']},
    json=[{'key': 'API_KEY', 'values': [{'value': 'secret', 'context': 'all'}]}]
)

Notes

  • Site IDs are UUIDs (e.g., d37d1ce4-5444-40f5-a4ca-a2c40a8b6835)
  • Account slugs are used for creating sites within a team (e.g., my-team-slug)
  • Deploy IDs are returned when creating deploys and can be used to track deploy status
  • Build hooks return a URL that can be POSTed to externally trigger builds
  • Environment variable contexts control where variables are available: all, production, deploy-preview, branch-deploy, dev
  • IMPORTANT: When using curl commands, use curl -g when URLs contain brackets to disable glob parsing
  • IMPORTANT: When piping curl output to jq or other commands, environment variables like $MATON_API_KEY may not expand correctly in some shell environments

Error Handling

StatusMeaning
400Missing Netlify connection
401Invalid or missing Maton API key
404Resource not found
429Rate limited
4xx/5xxPassthrough error from Netlify API

Troubleshooting: API Key Issues

  1. Check that the MATON_API_KEY environment variable is set:
echo $MATON_API_KEY
  1. Verify the API key is valid by listing connections:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

Troubleshooting: Invalid App Name

  1. Ensure your URL path starts with netlify. For example:
  • Correct: https://api.maton.ai/netlify/api/v1/sites
  • Incorrect: https://api.maton.ai/api/v1/sites

Resources

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

86.79%
按下载量换算12,466

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

未展示

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills