Discovery-Tag für RSS, Atom oder JSON Feed erstellen
Feeds lassen sich am zuverlässigsten finden, wenn eine Seite Browsern, Feedreadern und Crawlern ausdrücklich die Adresse der Syndizierungsressource nennt.
Im Browser ausführen – kostenlos
Dieser Generator erhält einen Feedtyp und eine absolute URL, wählt den passenden Medientyp, maskiert für HTML-Attribute problematische Zeichen und liefert ein vollständiges link-rel-alternate-Element für den head-Bereich. RSS, Atom und JSON Feed werden unterstützt; unbekannte Formate und ungültige Nicht-Web-URLs werden zurückgewiesen.
Wählen Sie das Format des veröffentlichten Dokuments
Ein Discovery-Tag ist nur dann hilfreich, wenn sein type-Attribut die Ressource unter der URL korrekt beschreibt. Wählen Sie rss für ein RSS-Dokument im XML-Format, atom für ein Atom-Dokument im XML-Format oder json-feed für ein JSON-Feed-Dokument. Der Generator ordnet diesen Optionen application/rss+xml, application/atom+xml beziehungsweise application/feed+json zu. Das Ziel wird weder abgerufen noch untersucht; deshalb muss Ihre Auswahl dem Inhalt entsprechen, den Ihr Server tatsächlich ausliefert. Eine genaue Deklaration hilft Feedreadern schon vor dem Abruf zu entscheiden, ob sie die Ressource verarbeiten können. Außerdem verhindert sie typische Kopierfehler, etwa einen Atom-Endpunkt als RSS oder JSON Feed nur als allgemeines JSON anzukündigen. Unbekannte Bezeichnungen werden nicht erraten, sondern abgelehnt, da ein glaubwürdig wirkender falscher Typ die Fehlersuche erschwert. Bietet Ihre Website mehrere Formate an, führen Sie den Generator für jeden Endpunkt aus und fügen Sie alle erzeugten Elemente in den head-Bereich ein. Jeder Tag beschreibt dann eine echte Alternative, die ein kompatibler Client auswählen kann.
Geben Sie die kanonische öffentliche Feed-URL an
Tragen Sie eine absolute HTTP- oder HTTPS-URL ein, die ein Feedreader erreichen kann, beispielsweise https://example.com/feed.xml. Absolute Adressen eignen sich besonders für Discovery-Metadaten: Kopierte Seiten, zwischengespeicherte Dokumente und Clients mit abweichender Behandlung der Basis-URL finden weiterhin denselben Endpunkt. Der Generator entfernt äußere Leerzeichen, prüft die Interpretierbarkeit als URL und lehnt Schemas wie file, data oder javascript ab. Die angegebene Webadresse bleibt erhalten; Pfad, Abfrage, Fragment, Escape-Schreibweise und Großschreibung werden nicht unbemerkt verändert. Zeichen mit Sonderbedeutung in einem HTML-Attribut werden im erzeugten Markup codiert. So wird ein kaufmännisches Und in der Abfrage sicher dargestellt, ohne das zurückgegebene url-Feld zu verändern. Die Prüfung bestätigt Form und Schema, nicht Eigentum, Erreichbarkeit, Inhaltstyp, Weiterleitungen oder TLS. Testen Sie den veröffentlichten Endpunkt separat und stellen Sie sicher, dass er den vorgesehenen Feed erfolgreich ausliefert. Verschieben Sie einen Feed, aktualisieren Sie sowohl die Serverweiterleitung als auch diesen Discovery-Tag.
Fügen Sie das Element ein und prüfen Sie es
Kopieren Sie den zurückgegebenen Tag in den head-Bereich der HTML-Seite, deren Feed auffindbar sein soll. Das Ergebnis verwendet rel="alternate", den formatspezifischen Medientyp und die maskierte Feed-URL als href. Ein title wird bewusst nicht ergänzt, weil die Eingabe nur Format und URL enthält; eine erfundene Beschreibung wäre weniger hilfreich, als Ihnen Sprache und Formulierung in Ihrer Vorlage zu überlassen. Wenn Ihre Website mehrere Feeds anbietet, etwa einen Hauptfeed und thematische Feeds, erstellen Sie pro URL ein Element und ergänzen Sie in Ihrer Anwendung aussagekräftige Titel, falls Benutzer sie unterscheiden müssen. Kontrollieren Sie nach der Bereitstellung den tatsächlich ausgelieferten Quelltext, denn Template-Systeme oder Sicherheitsschichten können korrekt erzeugtes Markup verändern. Testen Sie die Erkennung anschließend mit mindestens einem Feedreader und prüfen Sie die Antwortheader des Endpunkts. Browserwerkzeug und API führen dieselbe deterministische Funktion aus; gleiche Eingaben liefern daher gleiche Felder und identisches Markup. Automatisierte Builds können die API für $0.002 je Anfrage nutzen, während die interaktive Ausführung kostenlos lokal im Browser erfolgt.
Anwendungsfälle
RSS-Erkennung für eine Publikation ergänzen
Erzeugen Sie das head-Element für den RSS-Endpunkt eines Blogs oder Nachrichtenangebots, ohne sich den Medientyp merken zu müssen.
Eine Atom-Alternative ankündigen
Erstellen Sie einheitliches Discovery-Markup für einen Atom-Feed neben weiteren Syndizierungsformaten.
JSON-Feed-Metadaten veröffentlichen
Verwenden Sie den registrierten JSON-Feed-Medientyp in einem korrekt maskierten alternate-Element.
Häufige Fragen
Welche Feedtypen werden unterstützt?
Zulässig sind rss, atom und json-feed. Jeder andere Wert führt zu einem Fehler wegen ungültiger Eingabe.
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Die Browserversion wird kostenlos lokal ausgeführt.
Wird geprüft, ob der Feed existiert?
Nein. Das Werkzeug prüft die Eingabe und erstellt das Markup ohne Netzwerkanfrage.
Warum muss die URL absolut sein?
Eine absolute HTTP- oder HTTPS-URL bleibt für Feedreader unabhängig von der Seite oder Basis-URL eindeutig.
Sind Sonderzeichen in der URL sicher?
Ja. Zeichen mit besonderer Bedeutung in HTML-Attributen werden im Tag maskiert; das getrennte url-Feld behält die bereinigte Eingabe bei.
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/web/link-rel-alternate-build \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"feed_type":"rss","url":"https://example.com/feed.xml"}'const res = await fetch("https://api.kit.forhosting.com/web/link-rel-alternate-build", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"feed_type": "rss",
"url": "https://example.com/feed.xml"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/link-rel-alternate-build",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"feed_type": "rss",
"url": "https://example.com/feed.xml"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/link-rel-alternate-build", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"feed_type":"rss","url":"https://example.com/feed.xml"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"feed_type":"rss","url":"https://example.com/feed.xml"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/link-rel-alternate-build", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"feed_type": "rss",
"url": "https://example.com/feed.xml"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.link_rel_alternate_build",
"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.
Limits
timeout_sec | 30 |
max_crawl_pages | 25 |
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. |