XML-Sitemap erstellen
Die Funktion erzeugt aus einer eingegebenen Liste von URLs eine gültige XML-Sitemap nach dem Sitemap-Standard, mit lastmod je URL. Für alle, die keine passende Sitemap-Funktion im eigenen CMS haben oder eine Sitemap für Seiten außerhalb des CMS erstellen wollen, ohne dafür ein Plugin zu installieren.
Für wen sich das eignet
Nicht jede Website läuft über ein CMS mit eingebauter Sitemap-Funktion; bei selbst programmierten Seiten oder älteren Systemen fehlt sie häufig. Die Funktion nimmt stattdessen eine Liste bereits bekannter URLs entgegen und baut daraus eine sitemap.xml, ohne dass dafür ein Plugin installiert oder eine bestehende Codebasis verändert werden muss, was gerade bei gewachsenen, historisch untypisierten Projekten ohne einheitliches System spürbar Zeit spart.
Was in die Sitemap aufgenommen wird
Jede angegebene URL erscheint mit einem lastmod-Datum in der Sitemap; wird kein Datum mitgeliefert, setzt die Funktion das aktuelle Datum der Erstellung ein. Bei mehr als 50.000 URLs teilt die Funktion die Liste automatisch auf mehrere Sitemaps auf und erzeugt zusätzlich eine übergeordnete Sitemap-Index-Datei, ganz ohne manuelles Aufteilen der ursprünglichen Liste durch Sie selbst oder ein Mitglied Ihres Teams von Hand.
Nach der Erstellung
Die erzeugte sitemap.xml laden Sie in das Stammverzeichnis Ihrer Domain hoch und tragen den Pfad anschließend in der robots.txt sowie in der Google Search Console ein. Eine bereits erstellte Sitemap lässt sich mit der kostenlosen Validierungsfunktion vor dem Hochladen zusätzlich prüfen, um Fehler zu vermeiden, statt sie erst nach der Einreichung über die Search Console mit spürbarer Verzögerung zu bemerken.
Preis und Automatisierung über die API
$0.002 pro Seite in der übergebenen URL-Liste, ohne Grundgebühr je Anfrage. Die Erstellung steht auf dieser Seite sowie über die API bereit, etwa um eine Sitemap automatisiert nach jedem Deployment neu zu erzeugen, ohne dass dafür manuell eingegriffen werden muss und jemand die Liste jedes Mal erneut von Hand hochlädt, aktualisiert oder sorgfältig prüft. Eine Mindestbestellmenge gibt es dabei nicht.
Anwendungsfälle
Selbst programmierte Website ohne CMS
Ein Entwickler ohne CMS-Unterbau übergibt die feste Liste seiner rund vierzig Unterseiten und erhält eine gültige sitemap.xml zum Hochladen.
Sitemap nach jedem Deployment
Schneider IT-Systeme GmbH & Co. KG lässt die Sitemap über die API bei jedem Deployment automatisch neu erzeugen, damit neue Seiten zeitnah in der Sitemap erscheinen.
Alte Website mit unvollständiger Sitemap
Lukas Fischer erstellt für eine ältere Website ohne funktionierende Sitemap-Funktion eine vollständige neue Sitemap aus einer manuell zusammengestellten URL-Liste.
Häufige Fragen
Woher kommt die Liste der URLs?
Sie stellen sie selbst zusammen oder übergeben sie über die API, etwa aus einer bestehenden Seitenliste Ihres Systems.
Was passiert bei mehr als 50.000 URLs?
Die Funktion teilt die Liste automatisch auf mehrere Sitemaps auf und erzeugt eine übergeordnete Sitemap-Index-Datei.
Muss ich die erzeugte Sitemap noch irgendwo eintragen?
Ja, üblicherweise in der robots.txt und in der Google Search Console, damit Suchmaschinen die Sitemap finden.
Was kostet die Sitemap-Erstellung?
$0.002 pro Seite in der URL-Liste, ohne Grundgebühr.
Kann ich die erzeugte Sitemap vorab prüfen lassen?
Ja, mit der kostenlosen Validierungsfunktion, in die Sie den erzeugten Inhalt einfügen.
Brauche ich für die Erstellung ein Konto?
Nein. Es gibt derzeit keine Konten – Sie zahlen direkt pro Seite in der Liste.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/seo/sitemap-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/seo/sitemap-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"input": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/sitemap-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"input": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/sitemap-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"input":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"input":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/sitemap-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"input": "…"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.sitemap_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
413 | input_too_large | Die Eingabe überschreitet das Größenlimit dieser Aufgabe – die genaue Grenze steht auf der Seite. |