Überprüfung der Domain-Verfügbarkeit
Übersicht
Überprüft, ob ein name auf drei Ebenen frei ist, von denen eine Projektbenennungsentscheidung normalerweise abhängt: Domain-TLDs, npm-Paketname und GitHub-Benutzername/Organisation. Jede Prüfung erfolgt über einen separaten, kostenlosen und schlüssellosen API-Aufruf – führen Sie diese gemeinsam aus, wenn der Benutzer etwas benennt, oder nur die Domainprüfung, wenn genau das angefragt wurde.
Domain-API
GET https://domainee.dev/api/v1/tools/domain-availability-checker?name=<name>&tlds=<tld>&tlds=<tld>...
name(erforderlich) – Domainname ohne TLD, z.B.mybrand.tlds(optional, wiederholbar) – z.B.?tlds=com&tlds=io. Weggelassen → Standardwerte:com, io, dev, app, co, net, org, me, ai, xyz.- Keine Authentifizierung erforderlich. Verwenden Sie immer den Host
domainee.dev/api/..., nichtapi.domainee.dev– die Dokumentationsseite erwähnt diesen Host, aber er gibt 401 („Missing Bearer token“) zurück; der funktionierende, CORS-fähige Endpunkt ist same-origin unterdomainee.dev/api.
Ratenbegrenzung: 30 Anfragen/Minute, 500 Anfragen/Tag pro IP. Das verbleibende Kontingent steht in den Antwort-Headern x-ratelimit-remaining-minute / x-ratelimit-remaining-day. Ein 429-Status enthält Retry-After – zeigen Sie dies dem Benutzer an, anstatt stillschweigend zu wiederholen.
Erfolg:
{"ok":true,"data":{"name":"google","results":[
{"tld":"com","fqdn":"google.com","available":false,"registrarHint":null},
{"tld":"io","fqdn":"google.io","available":true,"registrarHint":null}
]}}
Fehler (z.B. fehlendes name):
{"ok":false,"error":{"code":"missing_param","message":"Query parameter `name` is required (e.g. ?name=mybrand)"}}
Eine nicht erkannte TLD ist kein Fehler – sie wird lediglich mit einem leeren results-Array zurückgegeben.
Eine Registry-Abfrage pro TLD kann auch zeitlich auslaufen. Der Eintrag dieser TLD hat dann "available":null und eine registrarHint-Erklärung (z.B. "The operation was aborted due to timeout"), während ok true bleibt und die anderen TLDs in derselben Antwort unbeeinflusst sind. Behandeln Sie null als unbekannt, nicht als verfügbar oder belegt – zeigen Sie es als separate Zeile „Konnte nicht überprüft werden“ an, anstatt zu raten. Wenn jede TLD in der Antwort gleichzeitig null zurückgibt, handelt es sich um einen vorübergehenden Fehler der gesamten Anfrage, nicht um 10 zufällige Timeouts – wiederholen Sie den Aufruf einmal, bevor Sie dem Benutzer ein vollständig unbekanntes Ergebnis melden.
npm-Paketnamen-API
GET https://registry.npmjs.org/<name>
Keine Authentifizierung, keine praxisrelevanten Ratenbegrenzungs-Header. 200 = Name vergeben (ein echtes Paket existiert), 404 = frei. Bei bereichsbezogenen Namen (@scope/name) codieren Sie den Schrägstrich URL: https://registry.npmjs.org/@scope%2Fname.
GitHub-Benutzernamen-/Organisations-API
GET https://api.github.com/users/<name>
Keine Authentifizierung erforderlich. 200 = vergeben, 404 = frei. Nicht authentifizierte Anfragen sind auf 60/Stunde pro IP begrenzt (x-ratelimit-remaining-Header) – ausreichend für einige wenige Prüfungen, aber nicht für eine Schleife über eine große Liste von Kandidatennamen.
Arbeitsablauf
- Entfernen Sie alle TLDs, die der Benutzer bereits eingegeben hat, um den nackten
namezu erhalten. - Wenn der Benutzer nur nach einer Domain fragt, rufen Sie nur die Domain-API auf. Wenn der Benutzer ein Projekt/Startup/Paket/Werkzeug benennt, führen Sie alle drei Prüfungen (Domain, npm, GitHub) für diesen einen
namedurch – diese Kombination ist der eigentliche Zweck des Skills, nicht isolierte Domainprüfungen. - Rufen Sie die Domain-API auf. Wenn der Benutzer keine spezifischen TLDs genannt hat, lassen Sie
tldsweg, um den 10-Extension-Standardsatz zu erhalten. - Zeigen Sie eine kombinierte Zusammenfassung: eine TLD-Tabelle (verfügbar ✅ / belegt ❌ / unbekannt-zeitüberschreitung ⚠️, aus
registrarHint), plus eine Zeile für npm und GitHub (✅/❌). - Fragen Sie einmalig, ob weitere TLDs überprüft werden sollen (schlagen Sie einige bereits nicht abgedeckte vor, z.B.
.ai,.so, eine ccTLD) – fragen Sie nicht erneut nach demselben Namen, es sei denn, der Benutzer bringt ihn wieder zur Sprache. - Wenn der Benutzer weitere TLDs nennt, wiederholen Sie den Domain-Aufruf mit genau diesen
tldsund zeigen Sie die neuen Ergebnisse.
Soziale Handle (X, Instagram usw.) sind bewusst nicht enthalten – keine dieser Plattformen bietet eine kostenlose, nicht authentifizierte Verfügbarkeitsprüfung; das Scrapen von Profilseiten ist unzuverlässig und verstößt gegen die meisten Nutzungsbedingungen. Sagen Sie dies, wenn gefragt wird, anstatt aus einem Scrape zu raten.
Beispiel
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"
Häufige Fehler
- Verwendung von
api.domainee.dev– falscher Host, gibt 401 zurück. Verwenden Siedomainee.dev/api/.... - Ein leeres
results-Array als Fehler behandeln – es bedeutet, dass die TLD nicht erkannt wurde, kein Fehler. - Sofortiges Wiederholen nach 429 – respektieren Sie
Retry-Afterund informieren Sie den Benutzer, schleifen Sie nicht. - npm/GitHub für eine einfache „Ist diese Domain frei?“-Frage prüfen – ziehen Sie diese nur heran, wenn der Benutzer tatsächlich etwas benennt, nicht bei jeder Domainabfrage.
- Behaupten, soziale Handle zu prüfen – es gibt keine zuverlässige kostenlose API dafür; sagen Sie, dass dies außerhalb des Rahmens liegt.