cloudflare-dns

TotalClaw 作者 totalclaw

通过 Cloudflare API 管理 DNS 记录。创建、列出、更新和删除 DNS 记录(A、AAAA、CNAME、TXT、MX、SPF、DKIM)。当代理需要添加或修改 DNS 记录、设置电子邮件身份验证 (SPF/DKIM/DMARC)、验证域或管理 Cloudflare 托管域上的任何 DNS 配置时使用。与 mailtarget-email 配合使用,可实现完全自主的发送域设置。

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~masasdani-spf-dkim-setup
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~masasdani-spf-dkim-setup/file -o masasdani-spf-dkim-setup.md
## 概述(中文)

通过 Cloudflare API 管理 DNS 记录。创建、列出、更新和删除 DNS 记录(A、AAAA、CNAME、TXT、MX、SPF、DKIM)。当代理需要添加或修改 DNS 记录、设置电子邮件身份验证 (SPF/DKIM/DMARC)、验证域或管理 Cloudflare 托管域上的任何 DNS 配置时使用。与 mailtarget-email 配合使用,可实现完全自主的发送域设置。

## 原文

# Cloudflare DNS

Manage DNS records on Cloudflare-hosted domains via the [Cloudflare API](https://developers.cloudflare.com/api/).

## Setup

Set these environment variables:

- `CLOUDFLARE_API_TOKEN` — API token with **DNS Write** permission ([create one](https://dash.cloudflare.com/profile/api-tokens))
- `CLOUDFLARE_ZONE_ID` — Zone ID of the domain (found on the domain overview page in Cloudflare dashboard)

## API Basics

Base URL: `https://api.cloudflare.com/client/v4`

Auth header: `Authorization: Bearer $CLOUDFLARE_API_TOKEN`

All responses follow: `{"success": true, "result": {...}, "errors": [], "messages": []}`

## Common Operations

### List DNS records

```bash
curl -s "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/dns_records" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" | jq '.result[] | {id, type, name, content}'
```

Filter by type or name:
```bash
# TXT records only
curl -s "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/dns_records?type=TXT" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

# By name
curl -s "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/dns_records?name=example.com" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
```

### Create a DNS record

```bash
curl -X POST "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/dns_records" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "TXT",
    "name": "example.com",
    "content": "v=spf1 include:_spf.mailtarget.co ~all",
    "ttl": 3600
  }'
```

### Update a DNS record

```bash
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/dns_records/$RECORD_ID" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content": "new-value"}'
```

### Delete a DNS record

```bash
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/dns_records/$RECORD_ID" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
```

## Email Authentication Setup

### SPF record (TXT)

```json
{"type": "TXT", "name": "example.com", "content": "v=spf1 include:_spf.mailtarget.co ~all", "ttl": 3600}
```

If an SPF record already exists, merge the `include:` directive into the existing value.

### DKIM record (TXT)

Use the hostname and value from your email provider:

```json
{"type": "TXT", "name": "selector._domainkey.example.com", "content": "v=DKIM1; k=rsa; p=MIGf...", "ttl": 3600}
```

### DMARC record (TXT)

```json
{"type": "TXT", "name": "_dmarc.example.com", "content": "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com", "ttl": 3600}
```

### CNAME record (for tracking domains)

```json
{"type": "CNAME", "name": "track.example.com", "content": "tracking.mailtarget.co", "ttl": 3600, "proxied": false}
```

**Important:** Set `proxied: false` for email-related CNAME records (DKIM, tracking) — Cloudflare proxy breaks email authentication.

## Mailtarget Integration Workflow

When used together with `mailtarget-email`, the agent can do end-to-end domain setup:

1. **Create sending domain** in Mailtarget → `POST /domain/sending`
2. **Read required DNS records** → `GET /domain/sending/{id}` returns SPF, DKIM, CNAME values
3. **Add DNS records** in Cloudflare using this skill
4. **Verify domain** in Mailtarget → `PUT /domain/sending/{id}/verify-txt`
5. **Confirm** all records are verified

Zero manual DNS editing required.

## Reference

See [references/api.md](references/api.md) for full endpoint documentation.