{
  "schemaVersion": "1.0",
  "item": {
    "slug": "porkbun-skill",
    "name": "Porkbun",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/wmantly/porkbun-skill",
    "canonicalUrl": "https://clawhub.ai/wmantly/porkbun-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/porkbun-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=porkbun-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CHANGELOG.md",
      "SKILL.md",
      "package.json",
      "references/dns-record-types.md",
      "scripts/porkbun-dns.js"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/porkbun-skill"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/porkbun-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/porkbun-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/porkbun-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/porkbun-skill/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Porkbun DNS Management",
        "body": "Manage DNS records and domains on Porkbun via their REST API v3."
      },
      {
        "title": "Set up API credentials",
        "body": "Generate API keys: https://porkbun.com/account/api\nSave credentials to config file: ~/.config/porkbun/config.json\n\n{\n  \"apiKey\": \"your-api-key\",\n  \"secretApiKey\": \"your-secret-api-key\"\n}\n\nOr set environment variables:\n\nexport PORKBUN_API_KEY=\"your-api-key\"\nexport PORKBUN_SECRET_API_KEY=\"your-secret-api-key\"\n\nEnable API access for each domain: Domain Management → Details → API Access → Enable"
      },
      {
        "title": "Test connection",
        "body": "node ~/.openclaw/workspace/skills/public/porkbun/scripts/porkbun-dns.js ping"
      },
      {
        "title": "Using the CLI Tool",
        "body": "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."
      },
      {
        "title": "Common Operations",
        "body": "List domains\n\nnode scripts/porkbun-dns.js list\n\nList DNS records\n\nnode scripts/porkbun-dns.js records example.com\n\nCreate records\n\n# A record\nnode scripts/porkbun-dns.js create example.com type=A name=www content=1.1.1.1 ttl=600\n\n# CNAME\nnode scripts/porkbun-dns.js create example.com type=CNAME name=docs content=example.com\n\n# MX record\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"mail.example.com\" prio=10\n\n# TXT record ( SPF for email)\nnode scripts/porkbun-dns.js create example.com type=TXT name= content=\"v=spf1 include:_spf.google.com ~all\"\n\nEdit records\n\n# By ID (get ID from records command)\nnode scripts/porkbun-dns.js edit example.com 123456 content=2.2.2.2\n\n# By type and subdomain (updates all matching records)\nnode scripts/porkbun-dns.js edit-by example.com A www content=2.2.2.2\n\nDelete records\n\n# By ID\nnode scripts/porkbun-dns.js delete example.com 123456\n\n# By type and subdomain\nnode scripts/porkbun-dns.js delete-by example.com A www\n\nGet specific records\n\n# All records\nnode scripts/porkbun-dns.js get example.com\n\n# Filter by type\nnode scripts/porkbun-dns.js get example.com A\n\n# Filter by type and subdomain\nnode scripts/porkbun-dns.js get example.com A www"
      },
      {
        "title": "Record Types",
        "body": "Supported record types: A, AAAA, CNAME, ALIAS, TXT, NS, MX, SRV, TLSA, CAA, HTTPS, SVCB, SSHFP\n\nFor detailed field requirements and examples, see references/dns-record-types.md."
      },
      {
        "title": "Website Setup",
        "body": "Create root A record and www CNAME:\n\nnode scripts/porkbun-dns.js create example.com type=A name= content=192.0.2.1\nnode scripts/porkbun-dns.js create example.com type=CNAME name=www content=example.com"
      },
      {
        "title": "Email Configuration",
        "body": "Set up MX records for Google Workspace:\n\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"aspmx.l.google.com\" prio=1\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"alt1.aspmx.l.google.com\" prio=5\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"alt2.aspmx.l.google.com\" prio=5\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"alt3.aspmx.l.google.com\" prio=10\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"alt4.aspmx.l.google.com\" prio=10\n\nAdd SPF record:\n\nnode scripts/porkbun-dns.js create example.com type=TXT name= content=\"v=spf1 include:_spf.google.com ~all\""
      },
      {
        "title": "Dynamic DNS",
        "body": "Update home IP address (can be scripted/automated):\n\nHOME_IP=$(curl -s ifconfig.me)\nnode scripts/porkbun-dns.js edit-by example.com A home content=$HOME_IP"
      },
      {
        "title": "Wildcard DNS",
        "body": "Create a wildcard record pointing to root:\n\nnode scripts/porkbun-dns.js create example.com type=A name=* content=192.0.2.1"
      },
      {
        "title": "Reference Documentation",
        "body": "references/dns-record-types.md - Detailed reference for all DNS record types and field requirements\nhttps://porkbun.com/api/json/v3/documentation - Full API documentation"
      },
      {
        "title": "\"API key not found\"",
        "body": "Verify config file exists at ~/.config/porkbun/config.json\nCheck environment variables: echo $PORKBUN_API_KEY\nEnsure API access is enabled for the specific domain"
      },
      {
        "title": "\"Invalid type passed\"",
        "body": "Record types must be uppercase (e.g., A, not a)\nSee supported types list above"
      },
      {
        "title": "HTTP errors",
        "body": "Verify API keys are valid at https://porkbun.com/account/api\nCheck network connectivity\nConfirm API endpoint is api.porkbun.com (not porkbun.com)"
      },
      {
        "title": "TTL errors",
        "body": "Minimum TTL is 600 seconds (10 minutes)\nDefault TTL is 600 seconds\nCommon values: 300 (dynamic), 3600 (standard), 86400 (stable)"
      },
      {
        "title": "Notes",
        "body": "TTL minimum is 600 seconds\nUse \"@\" for root domain records\nUse \"*\" for wildcard records\nTXT records with spaces need quotes\nMultiple MX records allowed with different priorities\nAPI v3 current hostname: api.porkbun.com"
      }
    ],
    "body": "Porkbun DNS Management\n\nManage DNS records and domains on Porkbun via their REST API v3.\n\nQuick Start\nSet up API credentials\nGenerate API keys: https://porkbun.com/account/api\nSave credentials to config file: ~/.config/porkbun/config.json\n{\n  \"apiKey\": \"your-api-key\",\n  \"secretApiKey\": \"your-secret-api-key\"\n}\n\n\nOr set environment variables:\n\nexport PORKBUN_API_KEY=\"your-api-key\"\nexport PORKBUN_SECRET_API_KEY=\"your-secret-api-key\"\n\nEnable API access for each domain: Domain Management → Details → API Access → Enable\nTest connection\nnode ~/.openclaw/workspace/skills/public/porkbun/scripts/porkbun-dns.js ping\n\nUsing the CLI Tool\n\nThe 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.\n\nCommon Operations\nList domains\nnode scripts/porkbun-dns.js list\n\nList DNS records\nnode scripts/porkbun-dns.js records example.com\n\nCreate records\n# A record\nnode scripts/porkbun-dns.js create example.com type=A name=www content=1.1.1.1 ttl=600\n\n# CNAME\nnode scripts/porkbun-dns.js create example.com type=CNAME name=docs content=example.com\n\n# MX record\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"mail.example.com\" prio=10\n\n# TXT record ( SPF for email)\nnode scripts/porkbun-dns.js create example.com type=TXT name= content=\"v=spf1 include:_spf.google.com ~all\"\n\nEdit records\n# By ID (get ID from records command)\nnode scripts/porkbun-dns.js edit example.com 123456 content=2.2.2.2\n\n# By type and subdomain (updates all matching records)\nnode scripts/porkbun-dns.js edit-by example.com A www content=2.2.2.2\n\nDelete records\n# By ID\nnode scripts/porkbun-dns.js delete example.com 123456\n\n# By type and subdomain\nnode scripts/porkbun-dns.js delete-by example.com A www\n\nGet specific records\n# All records\nnode scripts/porkbun-dns.js get example.com\n\n# Filter by type\nnode scripts/porkbun-dns.js get example.com A\n\n# Filter by type and subdomain\nnode scripts/porkbun-dns.js get example.com A www\n\nRecord Types\n\nSupported record types: A, AAAA, CNAME, ALIAS, TXT, NS, MX, SRV, TLSA, CAA, HTTPS, SVCB, SSHFP\n\nFor detailed field requirements and examples, see references/dns-record-types.md.\n\nCommon Patterns\nWebsite Setup\n\nCreate root A record and www CNAME:\n\nnode scripts/porkbun-dns.js create example.com type=A name= content=192.0.2.1\nnode scripts/porkbun-dns.js create example.com type=CNAME name=www content=example.com\n\nEmail Configuration\n\nSet up MX records for Google Workspace:\n\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"aspmx.l.google.com\" prio=1\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"alt1.aspmx.l.google.com\" prio=5\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"alt2.aspmx.l.google.com\" prio=5\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"alt3.aspmx.l.google.com\" prio=10\nnode scripts/porkbun-dns.js create example.com type=MX name= content=\"alt4.aspmx.l.google.com\" prio=10\n\n\nAdd SPF record:\n\nnode scripts/porkbun-dns.js create example.com type=TXT name= content=\"v=spf1 include:_spf.google.com ~all\"\n\nDynamic DNS\n\nUpdate home IP address (can be scripted/automated):\n\nHOME_IP=$(curl -s ifconfig.me)\nnode scripts/porkbun-dns.js edit-by example.com A home content=$HOME_IP\n\nWildcard DNS\n\nCreate a wildcard record pointing to root:\n\nnode scripts/porkbun-dns.js create example.com type=A name=* content=192.0.2.1\n\nReference Documentation\nreferences/dns-record-types.md - Detailed reference for all DNS record types and field requirements\nhttps://porkbun.com/api/json/v3/documentation - Full API documentation\nTroubleshooting\n\"API key not found\"\nVerify config file exists at ~/.config/porkbun/config.json\nCheck environment variables: echo $PORKBUN_API_KEY\nEnsure API access is enabled for the specific domain\n\"Invalid type passed\"\nRecord types must be uppercase (e.g., A, not a)\nSee supported types list above\nHTTP errors\nVerify API keys are valid at https://porkbun.com/account/api\nCheck network connectivity\nConfirm API endpoint is api.porkbun.com (not porkbun.com)\nTTL errors\nMinimum TTL is 600 seconds (10 minutes)\nDefault TTL is 600 seconds\nCommon values: 300 (dynamic), 3600 (standard), 86400 (stable)\nNotes\nTTL minimum is 600 seconds\nUse \"@\" for root domain records\nUse \"*\" for wildcard records\nTXT records with spaces need quotes\nMultiple MX records allowed with different priorities\nAPI v3 current hostname: api.porkbun.com"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/wmantly/porkbun-skill",
    "publisherUrl": "https://clawhub.ai/wmantly/porkbun-skill",
    "owner": "wmantly",
    "version": "0.1.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/porkbun-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/porkbun-skill",
    "agentUrl": "https://openagent3.xyz/skills/porkbun-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/porkbun-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/porkbun-skill/agent.md"
  }
}