Crear un feed RSS
Algunos sitios simplemente nunca publicaron un feed: un portafolio estático, una página de avisos de una municipalidad, un pequeño medio de noticias que corre sobre un gestor de contenido armado a mano; y ningún descubrimiento va a encontrar lo que nunca se creó.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Este endpoint va en la dirección contraria: apúntelo a una sola página e indíquele qué elemento repetido marca cada entrada, y construye un feed RSS real y válido a partir de los ítems de esa página.
Cuando no hay nada que descubrir
Un lector de feeds, una herramienta de monitoreo o un flujo de automatización construido alrededor de RSS asume que toda fuente tiene uno, pero muchos editores legítimos nunca adoptaron el formato: una página de avisos municipales, la sección de noticias de un departamento universitario, el blog de una tienda en línea sobre una plataforma que nunca se molestó en agregar soporte de feed. Para esos sitios la respuesta no es encontrar un feed oculto, porque no existe; es construir uno a partir de las páginas que ya existen.
Qué necesita el endpoint y qué construye
Envíe por POST a /web/make-rss la URL de una sola página junto con un selector CSS para el elemento que se repite en cada entrada, y reciba un task_id mientras la página se carga, se leen hasta cincuenta elementos coincidentes y de cada uno se toma un título, un enlace y una breve descripción, que se ensamblan en un solo documento RSS válido con entradas de item correctas. Con selectores opcionales puede apuntar al título y a la descripción exactos dentro de cada item. El feed terminado sigue la especificación de RSS lo bastante bien como para que los lectores y analizadores estándar, incluido nuestro propio endpoint de RSS a JSON, lo consuman sin tratamiento especial. Llega por webhook o mediante un enlace firmado válido por 24 horas.
Un feed es solo un contrato, y esto lo cumple
RSS tuvo éxito originalmente porque es un formato pequeño y sin ambición: un canal con título y descripción, y una lista de elementos con título, enlace y una breve descripción cada uno. Esa simplicidad es justo lo que hace posible sintetizar uno a partir del marcado de una página común: no hay metadatos propietarios que descifrar, solo el puñado de campos que todo lector espera. El feed generado se comporta como cualquier otro feed ante las herramientas que lo consumen, porque estructuralmente lo es.
Cómo encaja un feed creado en la automatización
Una vez que existe un feed para un sitio que nunca lo tuvo, encaja en cualquier cosa construida alrededor de feeds: herramientas de monitoreo que consultan cambios, agregadores que necesitan un formato consistente entre docenas de fuentes, o una configuración personal de lectura que solo quiere todo en un mismo lector. El precio es una tarifa base por solicitud más un cargo por URL, y cada ejecución lee una sola página, así que el costo es el mismo importe predecible cada vez, en lugar de una tarifa plana pensada para el trabajo más grande. Si una página no se puede leer, la ejecución no se cobra, así que una solicitud que vuelve vacía nunca infla la factura.
Qué puede hacer con ella
Feed para un sitio sin soporte de RSS
Construya un feed funcional a partir de una página de avisos municipales o universitarios para poder monitorearla igual que cualquier blog moderno.
Revivir un blog abandonado o limitado por la plataforma
Genere un feed para el blog de un negocio pequeño que corre sobre una plataforma que nunca agregó salida de RSS nativa.
Agregación consistente entre fuentes mixtas
Cree feeds para el puñado de fuentes de un agregador de noticias que carecen de RSS nativo, para poder consultar cada fuente de la misma forma.
Automatización de lista de lectura personal
Convierta la página de listado de un sitio sin feed en un feed para seguir sus actualizaciones desde una sola aplicación lectora, junto a todo lo demás.
Preguntas frecuentes
¿Cómo creo un feed RSS de un sitio web con la API?
Envíe por POST a /web/make-rss la URL de una sola página con un selector CSS para el elemento que se repite en cada entrada, guarde el task_id devuelto y reciba el documento RSS generado por webhook o mediante un enlace firmado válido por 24 horas.
¿Es gratis la API para crear RSS?
No, no hay plan gratuito ni prueba; cuesta $0.040 por solicitud más $0.001 por cada URL enviada, y una generación fallida nunca se cobra.
¿Qué pasa si el sitio ya tiene un feed?
Use primero el endpoint de descubrimiento de RSS; es más barato y más rápido encontrar un feed existente que construir uno que lo duplicaría.
¿Cuántos ítems puede tener un feed?
Hasta cincuenta: el endpoint lee los primeros cincuenta elementos de la página que coinciden con su selector. Para seguir más de una página, lance una solicitud por cada una.
¿El feed generado funcionará en lectores RSS estándar?
Sí, sigue la especificación de RSS lo suficientemente bien como para que los lectores y analizadores estándar lo consuman sin ningún manejo especial.
¿Qué datos incluye cada elemento del feed?
Un título, un enlace y una breve descripción, tomados de cada elemento coincidente de la página y ensamblados en entradas de item estándar. Con selectores opcionales puede indicar qué parte del elemento se convierte en el título o en la descripción.
¿Puedo regenerar el feed después para incluir entradas nuevas?
Sí, vuelva a lanzar la misma solicitud cada vez que la página cambie y el feed se reconstruye a partir de lo que muestre en ese momento.
¿Se guarda el contenido de las páginas de origen después de construir el feed?
No, las páginas descargadas y los feeds generados se eliminan después del período de retención y nunca se usan para entrenamiento.
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/make-rss \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","item_selector":"article"}'const res = await fetch("https://api.kit.forhosting.com/web/make-rss", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://example.com",
"item_selector": "article"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/make-rss",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://example.com",
"item_selector": "article"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/make-rss", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://example.com","item_selector":"article"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://example.com","item_selector":"article"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/make-rss", 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
{
"url": "https://example.com",
"item_selector": "article"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.make_rss",
"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. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |