Página web a Markdown
Markdown es lo que un modelo de lenguaje realmente quiere leer: encabezados, listas y enlaces sin los espacios publicitarios, barras de navegación y scripts de rastreo que los envuelven. Esta API toma una URL y devuelve esa página como Markdown ordenado, para que pueda meter contenido real en un prompt en vez de una sopa de divs.
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.
El problema de darle HTML crudo a un modelo
Pegue el HTML crudo de una página en un prompt y la mayor parte del presupuesto de tokens se va en marcado, no en significado — divs anidados, estilos en línea, etiquetas de script, avisos de cookies y menús de navegación repetidos en cada página del sitio. Un modelo tiene que abrirse paso por todo eso para llegar a los tres párrafos que realmente importaban, y con frecuencia se distrae o se corta antes de alcanzarlos.
Cómo funciona la conversión
La página se renderiza primero, así que el contenido construido con JavaScript queda incluido, y luego se identifica la estructura relevante — encabezados, párrafos, listas, tablas, enlaces, bloques de código — y se traduce a sintaxis Markdown estándar. El relleno como navegación, pies de página y contenedores publicitarios se deja fuera a propósito, porque el objetivo es el contenido que el lector buscaba, no una reproducción exacta de la maqueta.
El ascenso silencioso de Markdown como formato para máquinas
Markdown se inventó para quienes escribían correos en texto plano y querían un resultado que igual se viera razonable como HTML. Su segunda vida, dos décadas después, es como el formato preferido para alimentar texto a modelos de lenguaje: compacto, sin ambigüedad sobre la estructura, y mucho más económico en tokens que el HTML o un PDF muy formateado. Convertir la web a Markdown bajo demanda es, en el fondo, convertirla a la forma que los modelos fueron diseñados para leer.
A dónde va el resultado después
El Markdown resultante entra directo en un flujo de generación aumentada por recuperación, un espejo de documentación, o un sistema personal de notas — cualquier lugar donde el texto plano y estructurado sea más fácil de almacenar y buscar que una página renderizada. Como la entrega es asíncrona por webhook o por un enlace firmado de 24 horas, convertir un lote de URLs no implica mantener conexiones abiertas ni consultar una lista de tareas.
Quién usa esto en vez de un scraping completo
Si necesita cada atributo y script de una página, esta no es la herramienta — para eso está la API de HTML renderizado. Esta sirve para el caso mucho más común: quiere la sustancia de una página, legible, estructurada y liviana, sin escribir un analizador para las particularidades de marcado de cada sitio.
Qué puede hacer con ella
Contexto para LLM y flujos RAG
Convierta páginas de referencia a Markdown antes de vectorizarlas, para que la recuperación devuelva texto limpio y no ruido de marcado.
Espejo de documentación
Traiga la página de documentación de una API externa a Markdown para mantener una copia local y buscable en su propia base de conocimiento.
Herramientas de investigación y notas
Guarde artículos y páginas como archivos Markdown que entran directo en una app de notas o en la carpeta de contenido de un sitio estático.
Migración de contenido
Convierta las páginas de un sitio antiguo a Markdown como primer paso para moverlas a un generador de sitios estáticos moderno.
Preguntas frecuentes
¿Maneja páginas renderizadas con JavaScript?
Sí, la página se renderiza primero para capturar el contenido construido por frameworks del lado del cliente antes de convertirla, no solo la respuesta cruda del servidor.
¿Qué estructuras conserva?
Encabezados, párrafos, listas, tablas, enlaces, imágenes y bloques de código se traducen a sintaxis Markdown estándar.
¿Elimina anuncios y navegación?
El relleno como menús, pies de página y contenedores publicitarios se deja fuera a propósito, ya que el objetivo es contenido legible, no una copia completa de la maqueta.
¿Hay plan gratuito?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cuánto cuesta?
$0.040 por solicitud más $0.001 por URL, así que convertir un lote de páginas tiene un costo predecible y publicado.
¿Puedo convertir varias URLs en una sola llamada?
Sí, envíe varias URLs en una misma solicitud; la tarifa por URL se aplica a cada una procesada.
¿Qué pasa si una página no carga?
La tarea reintenta automáticamente hasta tres veces; si sigue fallando recibe un error claro y esa página no se cobra.
¿Cómo recibo el Markdown resultante?
Por webhook firmado cuando termina la conversión, o por un enlace firmado válido por 24 horas si prefiere ir a buscarlo usted mismo.
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, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/web/to-markdown \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/web/to-markdown", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/to-markdown",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/to-markdown", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/to-markdown", 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://ejemplo.com"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.to_markdown",
"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. |