Crear una etiqueta de descubrimiento RSS, Atom o JSON Feed
Elija RSS, escriba https://example.com/feed.xml?lang=en&source=site y obtenga la etiqueta de descubrimiento con su tipo, application/rss+xml, y el signo & escrito de forma segura como &. Los formatos desconocidos y las direcciones que no son web se rechazan. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Tipo de feed
- Rss
- Dirección web
- https://example.com/feed.xml?lang=en&source=site
- Tipo MIME
- application/rss+xml
El descubrimiento de canales funciona mejor cuando una página indica de forma explícita a navegadores, lectores y rastreadores dónde está su recurso de sindicación. Este generador recibe un tipo de canal y una URL absoluta, selecciona el tipo multimedia correspondiente, escapa los caracteres que podrían romper un atributo HTML y devuelve un elemento link rel alternate completo, listo para insertarlo en head.
Elija el formato que corresponda al documento publicado
Una etiqueta de descubrimiento solo resulta útil si su atributo type describe correctamente el recurso de la URL. El generador asigna respectivamente application/rss+xml, application/atom+xml y application/feed+json. No inspecciona ni descarga el destino, por lo que el formato elegido debe coincidir con lo que entrega su servidor.
Una declaración precisa permite que los lectores decidan si pueden interpretar el recurso antes de solicitarlo. Los nombres desconocidos se rechazan en lugar de adivinarlos, ya que un tipo verosímil pero incorrecto dificulta el diagnóstico. Si su sitio ofrece varios formatos, ejecute el generador para cada dirección y coloque todos los elementos resultantes en head.
Cada etiqueta representará así una alternativa real que un cliente compatible podrá seleccionar.
Indique la URL pública y canónica del canal
Las direcciones absolutas son preferibles en los metadatos de descubrimiento porque las páginas copiadas, los documentos almacenados en caché y los clientes con reglas distintas para la URL base seguirán resolviendo el mismo destino. El generador elimina espacios exteriores, comprueba que el valor pueda interpretarse como URL y rechaza esquemas como file, data o javascript. Conserva la dirección web proporcionada, sin reescribir silenciosamente su ruta, consulta, fragmento, escapes o mayúsculas.
Los caracteres especiales dentro de un atributo HTML se codifican en el marcado generado; así, un ampersand de la consulta queda seguro sin alterar el campo url devuelto. Esta validación confirma la forma y el esquema, no la propiedad, disponibilidad, respuesta, redirecciones ni TLS. Compruebe el destino publicado por separado y asegúrese de que entrega el canal previsto correctamente.
Inserte y compruebe el elemento generado
Copie la etiqueta devuelta en head de la página HTML cuyo canal desea anunciar. Omite title deliberadamente porque la entrada solo contiene el formato y la dirección; inventar un texto descriptivo sería menos útil que permitir que usted defina el idioma y la redacción en su propia plantilla. Si el sitio publica varios canales, como uno general y otros por tema, cree un elemento por URL y añada títulos significativos en su aplicación cuando sea necesario distinguirlos.
Revise el código fuente que se entrega después del despliegue, pues un motor de plantillas o una capa de seguridad puede transformar el marcado. Pruebe después el descubrimiento con al menos un lector y examine las cabeceras de respuesta del destino.
Qué puede hacer con ella
Añadir descubrimiento RSS a una publicación
Genere el elemento de head para el canal RSS de un blog o sitio de noticias sin memorizar su tipo multimedia.
Anunciar una alternativa Atom
Cree marcado de descubrimiento coherente para un canal Atom ofrecido junto a otros formatos de sindicación.
Preguntas frecuentes
¿Qué tipos de canal se admiten?
Los valores aceptados son rss, atom y json-feed. Cualquier otro valor devuelve un error de entrada no válida.
¿Se comprueba si existe el canal?
No. La herramienta valida la entrada y crea el marcado sin efectuar ninguna solicitud de red.
¿Son seguros los caracteres especiales de la URL?
Sí. Los caracteres con significado especial en un atributo HTML se escapan en la etiqueta, mientras que el campo url conserva la entrada recortada.
¿Cuántas etiquetas necesito si mi sitio ofrece RSS y Atom?
Una por cada canal. Use el generador una vez por formato y coloque todas las etiquetas resultantes en la cabecera de la página, para que cada lector elija la versión que entiende.
¿Qué debo cambiar si traslado mi canal a otra dirección?
Actualice tanto la redirección de su servidor como esta etiqueta de descubrimiento, para que los nuevos suscriptores empiecen con la dirección actual en lugar de depender siempre de la redirección.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"feed_type": "rss",
"url": "https://example.com/feed.xml"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.link_rel_alternate_build",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
timeout_sec | 30 |
max_crawl_pages | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Admite RSS, Atom y JSON Feed, y rechaza formatos desconocidos o URL no web inválidas.
Elija el formato que corresponda al documento publicado
Elija rss para un documento RSS en XML, atom para Atom en XML o json-feed para un documento JSON Feed. También evita errores habituales al copiar código, como anunciar un canal Atom con el tipo de RSS o presentar JSON Feed como JSON genérico.
Indique la URL pública y canónica del canal
Introduzca una URL absoluta HTTP o HTTPS que el lector de un visitante pueda alcanzar, por ejemplo https://example.com/feed.xml.
Inserte y compruebe el elemento generado
El resultado utiliza rel="alternate", el tipo multimedia específico del formato y la URL escapada como href. La herramienta del navegador y la API ejecutan la misma función determinista: una entrada idéntica produce los mismos campos y el mismo marcado. Las compilaciones automatizadas pueden usar la API por $0.002 por solicitud, mientras que el uso interactivo se ejecuta localmente en el navegador.
Casos de integración
Publicar metadatos de JSON Feed
Use el tipo multimedia registrado de JSON Feed en un elemento alternate correctamente escapado.
Preguntas técnicas
¿Cuánto cuesta una solicitud por API?
Cada solicitud por API cuesta $0.002. La versión del navegador se ejecuta localmente sin coste.
¿Por qué la URL debe ser absoluta?
Una URL HTTP o HTTPS absoluta no resulta ambigua para los lectores, con independencia de la página o URL base desde la que la descubran.