porkbun-skill

Web & Frontend Development
v0.1.2
Benign

Manage Porkbun DNS records and domains via API v3.

885 downloads885 installsby @wmantly

Setup & Installation

Install command

clawhub install wmantly/porkbun-skill

If the CLI is not installed:

Install command

npx clawhub@latest install wmantly/porkbun-skill

Or install with OpenClaw CLI:

Install command

openclaw skills install wmantly/porkbun-skill

or paste the repo link into your assistant's chat

Install command

https://github.com/openclaw/skills/tree/main/skills/wmantly/porkbun-skill

What This Skill Does

Manages DNS records and domains on Porkbun via their REST API v3. A CLI tool at scripts/porkbun-dns.js handles create, read, update, and delete operations for all common record types including A, AAAA, CNAME, MX, TXT, and more.

The bundled CLI tool executes DNS operations deterministically, removing the need to write custom API request code for routine record management.

When to Use It

  • Pointing a newly registered domain to a server IP address
  • Configuring Google Workspace MX records for business email
  • Automating dynamic DNS updates when a home IP address changes
  • Adding SPF and TXT records for email deliverability
  • Creating wildcard subdomains for staging or preview environments
View original SKILL.md file
# Porkbun DNS Management

Manage DNS records and domains on Porkbun via their REST API v3.

## Quick Start

### Set up API credentials

1. Generate API keys: https://porkbun.com/account/api
2. Save credentials to config file: `~/.config/porkbun/config.json`
```json
{
  "apiKey": "your-api-key",
  "secretApiKey": "your-secret-api-key"
}
```

Or set environment variables:
```bash
export PORKBUN_API_KEY="your-api-key"
export PORKBUN_SECRET_API_KEY="your-secret-api-key"
```

3. Enable API access for each domain: Domain Management → Details → API Access → Enable

### Test connection

```bash
node ~/.openclaw/workspace/skills/public/porkbun/scripts/porkbun-dns.js ping
```

## Using the CLI Tool

The `scripts/porkbun-dns.js` script provides a reliable, deterministic way to execute DNS operations. Use it directly for common tasks instead of writing custom code.

### Common Operations

#### List domains
```bash
node scripts/porkbun-dns.js list
```

#### List DNS records
```bash
node scripts/porkbun-dns.js records example.com
```

#### Create records
```bash
# A record
node scripts/porkbun-dns.js create example.com type=A name=www content=1.1.1.1 ttl=600

# CNAME
node scripts/porkbun-dns.js create example.com type=CNAME name=docs content=example.com

# MX record
node scripts/porkbun-dns.js create example.com type=MX name= content="mail.example.com" prio=10

# TXT record ( SPF for email)
node scripts/porkbun-dns.js create example.com type=TXT name= content="v=spf1 include:_spf.google.com ~all"
```

#### Edit records
```bash
# By ID (get ID from records command)
node scripts/porkbun-dns.js edit example.com 123456 content=2.2.2.2

# By type and subdomain (updates all matching records)
node scripts/porkbun-dns.js edit-by example.com A www content=2.2.2.2
```

#### Delete records
```bash
# By ID
node scripts/porkbun-dns.js delete example.com 123456

# By type and subdomain
node scripts/porkbun-dns.js delete-by example.com A www
```

#### Get specific records
```bash
# All records
node scripts/porkbun-dns.js get example.com

# Filter by type
node scripts/porkbun-dns.js get example.com A

# Filter by type and subdomain
node scripts/porkbun-dns.js get example.com A www
```

## Record Types

Supported record types: A, AAAA, CNAME, ALIAS, TXT, NS, MX, SRV, TLSA, CAA, HTTPS, SVCB, SSHFP

For detailed field requirements and examples, see [references/dns-record-types.md](references/dns-record-types.md).

## Common Patterns

### Website Setup

Create root A record and www CNAME:
```bash
node scripts/porkbun-dns.js create example.com type=A name= content=192.0.2.1
node scripts/porkbun-dns.js create example.com type=CNAME name=www content=example.com
```

### Email Configuration

Set up MX records for Google Workspace:
```bash
node scripts/porkbun-dns.js create example.com type=MX name= content="aspmx.l.google.com" prio=1
node scripts/porkbun-dns.js create example.com type=MX name= content="alt1.aspmx.l.google.com" prio=5
node scripts/porkbun-dns.js create example.com type=MX name= content="alt2.aspmx.l.google.com" prio=5
node scripts/porkbun-dns.js create example.com type=MX name= content="alt3.aspmx.l.google.com" prio=10
node scripts/porkbun-dns.js create example.com type=MX name= content="alt4.aspmx.l.google.com" prio=10
```

Add SPF record:
```bash
node scripts/porkbun-dns.js create example.com type=TXT name= content="v=spf1 include:_spf.google.com ~all"
```

### Dynamic DNS

Update home IP address (can be scripted/automated):
```bash
HOME_IP=$(curl -s ifconfig.me)
node scripts/porkbun-dns.js edit-by example.com A home content=$HOME_IP
```

### Wildcard DNS

Create a wildcard record pointing to root:
```bash
node scripts/porkbun-dns.js create example.com type=A name=* content=192.0.2.1
```

## Reference Documentation

- **[references/dns-record-types.md](references/dns-record-types.md)** - Detailed reference for all DNS record types and field requirements
- **[https://porkbun.com/api/json/v3/documentation](https://porkbun.com/api/json/v3/documentation)** - Full API documentation

## Troubleshooting

### "API key not found"
- Verify config file exists at `~/.config/porkbun/config.json`
- Check environment variables: `echo $PORKBUN_API_KEY`
- Ensure API access is enabled for the specific domain

### "Invalid type passed"
- Record types must be uppercase (e.g., `A`, not `a`)
- See supported types list above

### HTTP errors
- Verify API keys are valid at https://porkbun.com/account/api
- Check network connectivity
- Confirm API endpoint is `api.porkbun.com` (not `porkbun.com`)

### TTL errors
- Minimum TTL is 600 seconds (10 minutes)
- Default TTL is 600 seconds
- Common values: 300 (dynamic), 3600 (standard), 86400 (stable)

## Notes

- TTL minimum is 600 seconds
- Use "@" for root domain records
- Use "*" for wildcard records
- TXT records with spaces need quotes
- Multiple MX records allowed with different priorities
- API v3 current hostname: `api.porkbun.com`

Example Workflow

Here's how your AI assistant might use this skill in practice.

INPUT

User asks: Pointing a newly registered domain to a server IP address

AGENT
  1. 1Pointing a newly registered domain to a server IP address
  2. 2Configuring Google Workspace MX records for business email
  3. 3Automating dynamic DNS updates when a home IP address changes
  4. 4Adding SPF and TXT records for email deliverability
  5. 5Creating wildcard subdomains for staging or preview environments
OUTPUT
Manage Porkbun DNS records and domains via API v3.

Share this skill

Security Audits

VirusTotalBenign
OpenClawBenign
View full report

These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.

Details

LanguageMarkdown
Last updatedFeb 25, 2026