mcpField
N
namecheap-domains

namecheap-domains

github.com/clasenクラウド・DevOps4069 回インストール33 週間前に更新
リポジトリ

namecheap-domains について

namecheap-domains は、Namecheap API でアカウント内のドメインを管理するスキルです。登録、DNS とネームサーバーの設定、移管を扱い、認証情報や操作上の注意点も説明します。

主な機能

  1. 01ドメインの空き確認と登録
  2. 02ドメイン連絡先の確認と更新
  3. 03DNS レコードとメール転送の設定
  4. 04ネームサーバーの管理
  5. 05ドメイン移管の開始と追跡

活用シーン

  1. 01ドメインの空きを確認して登録
  2. 02DNS レコードやネームサーバーを更新
  3. 03ドメインを Namecheap に移管
  4. 04アカウント内のドメインと移管状況を確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/clasen/skills --skill namecheap-domains

インストール後、Claude Code で/namecheap-domainsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
api-dns.md
api-domains.md
api-nameservers.md
api-transfers.md

詳細

Namecheap ドメイン

Namecheap API を通じてドメインを管理するためのスキルです。ドメイン登録、DNS 設定、ネームサーバー管理、ドメイン移管に対応しています。

これらのメソッドは、Namecheap で登録され、ユーザーのアカウントに存在するドメインにのみ使用できます。

前提条件

ユーザーは、次の認証情報を環境変数として設定する必要があります。

変数説明
NAMECHEAP_API_USERAPI ユーザー名
NAMECHEAP_API_KEYNamecheap アカウントの API キー
NAMECHEAP_USERNAMENamecheap アカウントのユーザー名(通常は API ユーザーと同じです)
NAMECHEAP_CLIENT_IPAPI アクセス用の許可リストに登録された IP アドレス

不足しているものがあれば、ユーザーに設定を依頼してください。API アクセスは Namecheap アカウントのダッシュボードで有効にし、クライアント IP を許可リストに登録する必要があります。

API の基本

ベース URL: https://api.namecheap.com/xml.response サンドボックス URL: https://api.sandbox.namecheap.com/xml.response

すべてのリクエストには、次の共通パラメーターが必要です。

パラメーター説明
ApiUserAPI へのアクセスに必要なユーザー名
ApiKeyAPI キー
UserNameアカウントのユーザー名(自身のアカウントを管理する場合は ApiUser を使用します)
ClientIp許可リストに登録された IP アドレス
Command実行する API コマンド(例:namecheap.domains.getList)
リクエストの送信

読み取り操作には HTTP GET を、書き込み操作には HTTP POST を使用します(特にパラメーターが多い domains.create)。

# GET example — list domains
curl -s "https://api.namecheap.com/xml.response?\
ApiUser=${NAMECHEAP_API_USER}&\
ApiKey=${NAMECHEAP_API_KEY}&\
UserName=${NAMECHEAP_USERNAME}&\
ClientIp=${NAMECHEAP_CLIENT_IP}&\
Command=namecheap.domains.getList"
# POST example — create domain
curl -s -X POST "https://api.namecheap.com/xml.response" \
  -d "ApiUser=${NAMECHEAP_API_USER}" \
  -d "ApiKey=${NAMECHEAP_API_KEY}" \
  -d "UserName=${NAMECHEAP_USERNAME}" \
  -d "ClientIp=${NAMECHEAP_CLIENT_IP}" \
  -d "Command=namecheap.domains.create" \
  -d "DomainName=example.com" \
  -d "Years=1" \
  # ... additional parameters
XML レスポンスの解析

すべてのレスポンスは XML です。ApiResponse の Status 属性を確認してください。

<ApiResponse Status="OK">    
<ApiResponse Status="ERROR"> 

xmllint を使用して値を抽出します。

# Check response status
echo "$response" | xmllint --xpath "string(//ApiResponse/@Status)" -

# Extract error messages
echo "$response" | xmllint --xpath "//Errors/Error/text()" - 2>/dev/null

# Extract specific attributes
echo "$response" | xmllint --xpath "string(//DomainCreateResult/@Registered)" -

xmllint が利用できない場合は、基本的な抽出に grep と sed を使用するか、Python の xml.etree.ElementTree を使用してください。

API クイックリファレンス

domains.*
コマンド説明
namecheap.domains.getListアカウント内のドメイン一覧を取得
namecheap.domains.getContactsドメインの連絡先情報を取得
namecheap.domains.create新しいドメインを登録
namecheap.domains.getTldList利用可能な TLD の一覧を取得
namecheap.domains.setContactsドメインの連絡先情報を更新
namecheap.domains.checkドメインの利用可能状況を確認
namecheap.domains.reactivate期限切れのドメインを再有効化
namecheap.domains.renew期限が近いドメインを更新
namecheap.domains.getRegistrarLockロック状態を取得
namecheap.domains.setRegistrarLockロック状態を設定
namecheap.domains.getInfoドメインの詳細を取得

パラメーターの詳細については、references/api-domains.md を参照してください。

domains.dns.*
コマンド説明
namecheap.domains.dns.setDefaultNamecheap のデフォルト DNS サーバーを使用
namecheap.domains.dns.setCustomカスタム DNS サーバーを使用
namecheap.domains.dns.getListドメインの DNS サーバーを取得
namecheap.domains.dns.getHostsDNS ホストレコードを取得
namecheap.domains.dns.getEmailForwardingメール転送設定を取得
namecheap.domains.dns.setEmailForwardingメール転送を設定
namecheap.domains.dns.setHostsDNS ホストレコードを設定

パラメーターの詳細については、references/api-dns.md を参照してください。

domains.ns.*
コマンド説明
namecheap.domains.ns.createネームサーバーを作成
namecheap.domains.ns.deleteネームサーバーを削除
namecheap.domains.ns.getInfoネームサーバー情報を取得
namecheap.domains.ns.updateネームサーバーの IP を更新

パラメーターの詳細については、references/api-nameservers.md を参照してください。

domains.transfer.*
コマンド説明
namecheap.domains.transfer.createドメインをNamecheapに移管します
namecheap.domains.transfer.getStatus移管状況を確認します
namecheap.domains.transfer.updateStatus移管状況を更新/再申請します
namecheap.domains.transfer.getListドメイン移管の一覧を取得します

パラメーターの詳細は、references/api-transfers.md を参照してください。

一般的なワークフロー

1. 空き状況を確認してドメインを登録する
# Step 1: Check availability
curl -s "https://api.namecheap.com/xml.response?\
ApiUser=${NAMECHEAP_API_USER}&ApiKey=${NAMECHEAP_API_KEY}&\
UserName=${NAMECHEAP_USERNAME}&ClientIp=${NAMECHEAP_CLIENT_IP}&\
Command=namecheap.domains.check&DomainList=example.com,example.net"

# Look for: <DomainCheckResult Domain="example.com" Available="true" />

# Step 2: Register (use POST)
curl -s -X POST "https://api.namecheap.com/xml.response" \
  -d "ApiUser=${NAMECHEAP_API_USER}" \
  -d "ApiKey=${NAMECHEAP_API_KEY}" \
  -d "UserName=${NAMECHEAP_USERNAME}" \
  -d "ClientIp=${NAMECHEAP_CLIENT_IP}" \
  -d "Command=namecheap.domains.create" \
  -d "DomainName=example.com" \
  -d "Years=1" \
  -d "RegistrantFirstName=John" \
  -d "RegistrantLastName=Smith" \
  -d "RegistrantAddress1=123 Main St" \
  -d "RegistrantCity=San Francisco" \
  -d "RegistrantStateProvince=CA" \
  -d "RegistrantPostalCode=94102" \
  -d "RegistrantCountry=US" \
  -d "RegistrantPhone=+1.4155551234" \
  -d "[email protected]" \
  -d "TechFirstName=John" \
  -d "TechLastName=Smith" \
  -d "TechAddress1=123 Main St" \
  -d "TechCity=San Francisco" \
  -d "TechStateProvince=CA" \
  -d "TechPostalCode=94102" \
  -d "TechCountry=US" \
  -d "TechPhone=+1.4155551234" \
  -d "[email protected]" \
  -d "AdminFirstName=John" \
  -d "AdminLastName=Smith" \
  -d "AdminAddress1=123 Main St" \
  -d "AdminCity=San Francisco" \
  -d "AdminStateProvince=CA" \
  -d "AdminPostalCode=94102" \
  -d "AdminCountry=US" \
  -d "AdminPhone=+1.4155551234" \
  -d "[email protected]" \
  -d "AuxBillingFirstName=John" \
  -d "AuxBillingLastName=Smith" \
  -d "AuxBillingAddress1=123 Main St" \
  -d "AuxBillingCity=San Francisco" \
  -d "AuxBillingStateProvince=CA" \
  -d "AuxBillingPostalCode=94102" \
  -d "AuxBillingCountry=US" \
  -d "AuxBillingPhone=+1.4155551234" \
  -d "[email protected]" \
  -d "AddFreeWhoisguard=yes" \
  -d "WGEnabled=yes"

# Step 3: Verify
# Check response for: <DomainCreateResult Registered="true" />

ユーザーから連絡先情報が一度提供されたら、異なる連絡先を指定されない限り、4種類すべての連絡先(Registrant、Tech、Admin、AuxBilling)に同じ情報を使用します。

2. DNS レコードを設定する
# Step 1: Verify domain uses Namecheap DNS
curl -s "https://api.namecheap.com/xml.response?\
ApiUser=${NAMECHEAP_API_USER}&ApiKey=${NAMECHEAP_API_KEY}&\
UserName=${NAMECHEAP_USERNAME}&ClientIp=${NAMECHEAP_CLIENT_IP}&\
Command=namecheap.domains.dns.getList&SLD=example&TLD=com"

# If using custom nameservers, switch to default first (required for host records)
# Command=namecheap.domains.dns.setDefault&SLD=example&TLD=com

# Step 2: Get current records
curl -s "https://api.namecheap.com/xml.response?\
ApiUser=${NAMECHEAP_API_USER}&ApiKey=${NAMECHEAP_API_KEY}&\
UserName=${NAMECHEAP_USERNAME}&ClientIp=${NAMECHEAP_CLIENT_IP}&\
Command=namecheap.domains.dns.getHosts&SLD=example&TLD=com"

# Step 3: Set all records (setHosts replaces ALL records — include existing ones)
curl -s -X POST "https://api.namecheap.com/xml.response" \
  -d "ApiUser=${NAMECHEAP_API_USER}" \
  -d "ApiKey=${NAMECHEAP_API_KEY}" \
  -d "UserName=${NAMECHEAP_USERNAME}" \
  -d "ClientIp=${NAMECHEAP_CLIENT_IP}" \
  -d "Command=namecheap.domains.dns.setHosts" \
  -d "SLD=example" \
  -d "TLD=com" \
  -d "HostName1=@" \
  -d "RecordType1=A" \
  -d "Address1=1.2.3.4" \
  -d "TTL1=1800" \
  -d "HostName2=www" \
  -d "RecordType2=CNAME" \
  -d "Address2=example.com" \
  -d "TTL2=1800"

重要: setHosts は既存のレコードをすべて置き換えます。必ず最初に getHosts で現在のレコードを取得し、新しいレコードとともに setHosts の呼び出しに含めてください。既存のレコードを省略すると、削除されます。

3. ドメインをNamecheapに移管する
# Step 1: Initiate transfer
curl -s "https://api.namecheap.com/xml.response?\
ApiUser=${NAMECHEAP_API_USER}&ApiKey=${NAMECHEAP_API_KEY}&\
UserName=${NAMECHEAP_USERNAME}&ClientIp=${NAMECHEAP_CLIENT_IP}&\
Command=namecheap.domains.transfer.create&\
DomainName=example.com&Years=1&EPPCode=AUTH_CODE_HERE"

# Step 2: Monitor transfer status
curl -s "https://api.namecheap.com/xml.response?\
ApiUser=${NAMECHEAP_API_USER}&ApiKey=${NAMECHEAP_API_KEY}&\
UserName=${NAMECHEAP_USERNAME}&ClientIp=${NAMECHEAP_CLIENT_IP}&\
Command=namecheap.domains.transfer.getStatus&TransferID=TRANSFER_ID"

移管可能なTLD:.biz、.ca、.cc、.co、.co.uk、.com、.com.es、.com.pe、.es、.in、.info、.me、.me.uk、.mobi、.net、.net.pe、.nom.es、.org、.org.es、.org.pe、.org.uk、.pe、.tv、.us

重要な注意事項

  • SLD/TLDの分割: 多くのエンドポイントでは、SLD と TLD を個別のパラメーターとして指定する必要があります。example.com の場合、SLD=example、TLD=com です。example.co.uk の場合、SLD=example、TLD=co.uk です。
  • 電話番号の形式: 常に +NNN.NNNNNNNNNN(例:+1.4155551234)を使用してください。
  • IDNドメイン: ドメイン名はPunycode形式(例:xn--sdkhjsdhfkdh.com)で送信し、IdnCode パラメーターを含めてください。
  • プレミアムドメイン: IsPremiumDomain=True を設定し、PremiumPrice と、必要に応じて EapFee を指定してください。
  • レート制限: Namecheapによってリクエストが制限される場合があります。エラーが発生した場合は、再試行する前に待機してください。
  • サンドボックス: テストにはサンドボックスURLを使用してください。サンドボックスの認証情報は本番環境とは別です。

エラー処理

XMLレスポンスでよく見られるエラーパターン:

<ApiResponse Status="ERROR">
  <Errors>
    <Error Number="2016166">Domain is not associated with your account</Error>
  </Errors>
</ApiResponse>

結果を処理する前に、必ず Status="OK" を確認してください。Status="ERROR" の場合:

  1. エラー番号とメッセージを抽出します
  2. 該当するリファレンスファイルに記載されたエラーコードを確認します
  3. よくある問題:
    • 認証エラー: 認証情報と許可リストに登録されたIPを確認します
    • ドメインが見つかりません(2019166): ドメイン名とアカウントとの関連付けを確認します
    • 電話番号が無効です(2015182): +NNN.NNNNNNNNNN 形式を使用します
    • ドメインを利用できません(3019166/4019166): ドメインはすでに登録されています
    • TLDがサポートされていません(2030280): サポート対象のTLDを確認します

トラブルシューティング

エラー:接続拒否またはタイムアウト 原因:クライアントのIPが許可リストに登録されていないか、APIアクセスが有効になっていません。 解決策:Namecheapのダッシュボード → Profile → Tools → API Access を確認します。IPが NAMECHEAP_CLIENT_IP と一致することを確認してください。

エラー:レスポンスが空、または形式が不正です 原因:必須パラメーターが不足しています。 解決策:すべてのグローバルパラメーターが指定されていることを確認します。Command の値のスペルが正しいことを確認してください。

エラー:DNSの変更が反映されません 原因:ドメインがNamecheapのデフォルトではなく、カスタムネームサーバーを使用している可能性があります。 解決策:先に domains.dns.setDefault を呼び出してから、ホストレコードを設定します。URL転送、メール転送、ダイナミックDNSは、Namecheapのデフォルトネームサーバーを使用している場合にのみ機能します。

コメント