namecheap-domains について
namecheap-domains は、Namecheap API でアカウント内のドメインを管理するスキルです。登録、DNS とネームサーバーの設定、移管を扱い、認証情報や操作上の注意点も説明します。
主な機能
- 01ドメインの空き確認と登録
- 02ドメイン連絡先の確認と更新
- 03DNS レコードとメール転送の設定
- 04ネームサーバーの管理
- 05ドメイン移管の開始と追跡
活用シーン
- 01ドメインの空きを確認して登録
- 02DNS レコードやネームサーバーを更新
- 03ドメインを Namecheap に移管
- 04アカウント内のドメインと移管状況を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ clasen/ skills --skill namecheap-domainsインストール後、Claude Code で/namecheap-domainsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api-dns.mdapi-domains.mdapi-nameservers.mdapi-transfers.md詳細
Namecheap ドメイン
Namecheap API を通じてドメインを管理するためのスキルです。ドメイン登録、DNS 設定、ネームサーバー管理、ドメイン移管に対応しています。
これらのメソッドは、Namecheap で登録され、ユーザーのアカウントに存在するドメインにのみ使用できます。
前提条件
ユーザーは、次の認証情報を環境変数として設定する必要があります。
| 変数 | 説明 |
|---|---|
NAMECHEAP_API_USER | API ユーザー名 |
NAMECHEAP_API_KEY | Namecheap アカウントの API キー |
NAMECHEAP_USERNAME | Namecheap アカウントのユーザー名(通常は API ユーザーと同じです) |
NAMECHEAP_CLIENT_IP | API アクセス用の許可リストに登録された IP アドレス |
不足しているものがあれば、ユーザーに設定を依頼してください。API アクセスは Namecheap アカウントのダッシュボードで有効にし、クライアント IP を許可リストに登録する必要があります。
API の基本
ベース URL: https://api.namecheap.com/xml.response
サンドボックス URL: https://api.sandbox.namecheap.com/xml.response
すべてのリクエストには、次の共通パラメーターが必要です。
| パラメーター | 説明 |
|---|---|
ApiUser | API へのアクセスに必要なユーザー名 |
ApiKey | API キー |
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.setDefault | Namecheap のデフォルト DNS サーバーを使用 |
namecheap.domains.dns.setCustom | カスタム DNS サーバーを使用 |
namecheap.domains.dns.getList | ドメインの DNS サーバーを取得 |
namecheap.domains.dns.getHosts | DNS ホストレコードを取得 |
namecheap.domains.dns.getEmailForwarding | メール転送設定を取得 |
namecheap.domains.dns.setEmailForwarding | メール転送を設定 |
namecheap.domains.dns.setHosts | DNS ホストレコードを設定 |
パラメーターの詳細については、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" の場合:
- エラー番号とメッセージを抽出します
- 該当するリファレンスファイルに記載されたエラーコードを確認します
- よくある問題:
- 認証エラー: 認証情報と許可リストに登録された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のデフォルトネームサーバーを使用している場合にのみ機能します。