ドメイン空き状況の確認
概要
プロジェクト名の決定に通常影響する3つの要素(ドメインTLD、npmパッケージ名、GitHubユーザー名/組織名)について、name が空いているかどうかを確認します。各チェックは個別の無料・キー不要のAPI呼び出しです。ユーザーが何かの名前を決めている場合はまとめて実行し、ドメインだけを尋ねられた場合はドメインチェックのみを実行します。
ドメインAPI
GET https://domainee.dev/api/v1/tools/domain-availability-checker?name=<name>&tlds=<tld>&tlds=<tld>...
name(必須) — TLDを含まないドメイン名(例:mybrand)。tlds(オプション、繰り返し可能) — 例:?tlds=com&tlds=io。省略した場合のデフォルト:com, io, dev, app, co, net, org, me, ai, xyz。- 認証不要。常にホスト
domainee.dev/api/...を使用してください。api.domainee.devではありません — ドキュメントページにはそのホストが記載されていますが、401エラー(「Missing Bearer token」)が返ります。CORS対応の動作するエンドポイントはdomainee.dev/api配下の同一オリジンです。
レート制限:IPあたり30回/分、500回/日。残りクォータはレスポンスヘッダ x-ratelimit-remaining-minute / x-ratelimit-remaining-day に含まれます。429エラーの場合、Retry-After ヘッダが含まれます — これをユーザーに表示し、黙ってリトライしないでください。
成功時:
{"ok":true,"data":{"name":"google","results":[
{"tld":"com","fqdn":"google.com","available":false,"registrarHint":null},
{"tld":"io","fqdn":"google.io","available":true,"registrarHint":null}
]}}
エラー時(例:name 未指定):
{"ok":false,"error":{"code":"missing_param","message":"Query parameter `name` is required (e.g. ?name=mybrand)"}}
認識されないTLDはエラーではありません — 単に空の results 配列が返ります。
TLDごとのレジストリ検索がタイムアウトすることもあります。その場合、該当TLDのエントリは "available":null となり、registrarHint に理由が示されます(例:"The operation was aborted due to timeout")。ok は true のままで、同じレスポンス内の他のTLDには影響しません。null は「利用可能」とも「取得済み」ともみなさず、「不明」として扱い、「確認できませんでした」という行として表示し、推測はしないでください。レスポンス内のすべてのTLDが同時に null になった場合、それは10個の偶然のタイムアウトではなく、リクエスト全体の一時的な問題です — ユーザーに全不明の結果を報告する前に、1回だけ呼び出しを再試行してください。
npmパッケージ名API
GET https://registry.npmjs.org/<name>
認証不要で、実際にレート制限ヘッダを気にする必要はありません。200 = 名前は取得済み(実際のパッケージが存在)、404 = 空き。スコープ付き名前(@scope/name)の場合、スラッシュをURLエンコードします:https://registry.npmjs.org/@scope%2Fname。
GitHubユーザー名/組織API
GET https://api.github.com/users/<name>
認証不要。200 = 取得済み、404 = 空き。未認証のリクエストはIPあたり60回/時に制限されています(x-ratelimit-remaining ヘッダ) — 数回のチェックには問題ありませんが、大量の候補名に対してループさせないでください。
ワークフロー
- ユーザーがすでに入力したTLDを取り除き、ベアの
nameを取得します。 - ユーザーが単にドメインについて尋ねている場合は、ドメインAPIのみを呼び出します。プロジェクト/スタートアップ/パッケージ/ツールの名前を付けている場合は、その1つの
nameについて3つのチェック(ドメイン、npm、GitHub)すべてを実行します — この組み合わせがこのスキルの実際の目的であり、単独のドメイン確認ではありません。 - ドメインAPIを呼び出します。ユーザーが特定のTLDを指定しなかった場合は、
tldsを省略してデフォルトの10拡張セットを取得します。 - 1つの統合サマリーを表示します:TLDテーブル(利用可能 ✅ / 取得済み ❌ / 不明・タイムアウト ⚠️、
registrarHintから情報を表示)と、npmおよびGitHubの各行(✅/❌)。 - 追加のTLDを確認するかどうかを1回だけ尋ねます(まだカバーされていないものをいくつか提案:例:
.ai、.so、ccTLD) — ユーザーが再度話題にしない限り、同じ名前について再度尋ねないでください。 - さらにTLDを指定された場合は、それらの
tldsのみでドメイン呼び出しを繰り返し、新しい結果を表示します。
ソーシャルハンドル(X、Instagramなど)は意図的に含まれていません — これらのプラットフォームは無料で認証不要の空き確認を公開していません。プロフィールページのスクレイピングは信頼性が低く、ほとんどの利用規約に違反します。尋ねられた場合は、スクレイピングから推測するのではなく、その旨を伝えてください。
例
curl -s "https://domainee.dev/api/v1/tools/domain-availability-checker?name=mybrand&tlds=com&tlds=io&tlds=ai"
curl -s -o /dev/null -w "%{http_code}" "https://registry.npmjs.org/mybrand"
curl -s -o /dev/null -w "%{http_code}" "https://api.github.com/users/mybrand"
よくある間違い
api.domainee.devを使用する — 間違ったホストで、401エラーが返ります。domainee.dev/api/...を使用してください。- 空の
results配列をエラーとみなす — そのTLDが認識されなかったことを意味し、エラーではありません。 - 429エラー後にすぐにリトライする —
Retry-Afterを尊重し、ユーザーに通知してください。ループさせないでください。 - 単なる「このドメインは空いていますか?」という質問に対してnpm/GitHubを確認する — ユーザーが実際に何かの名前を決めている場合にのみこれらを取得し、すべてのドメイン検索に対して行わないでください。
- ソーシャルハンドルをチェックできると主張する — 信頼できる無料APIはありません。範囲外であることを伝えてください。