HTML a Markdown
Entregue HTML crudo — un artículo extraído por scraping, una exportación de un CMS antiguo, un boletín por correo — y reciba Markdown limpio que conserva la estructura y descarta el ruido: sin estilos en línea, sin scripts de rastreo, sin quince capas de divs anidados que dejó un constructor de páginas. Es el viaje inverso de devolver un marcado cargado de formato a algo que una persona, o un modelo de lenguaje, pueda leer de verdad.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
El HTML en la práctica rara vez está limpio
El HTML del mundo real — el de una página extraída por scraping, un CMS de hace diez años, una plantilla de correo exportada — está lleno de ruido que no tiene nada que ver con el contenido real: píxeles de rastreo, atributos de estilo en línea, spans vacíos que dejó un editor WYSIWYG, tablas anidadas usadas para maquetación en vez de datos. Convertir eso directamente a Markdown sin un paso de limpieza solo produce Markdown igual de ruidoso, lleno de caracteres escapados con barra invertida y formato roto, lo cual anula todo el propósito de pasar a un formato más liviano.
Qué elimina el endpoint y qué conserva
POST /data/html-to-markdown analiza el HTML, descarta las etiquetas script y style, los atributos de rastreo, los comentarios y el marcado presentacional que no tiene equivalente en Markdown, y traduce el resto a sintaxis limpia: los encabezados se convierten en marcas de numeral en el nivel correcto, las tablas se vuelven tablas de Markdown delimitadas por barras verticales, las listas ordenadas y desordenadas se anidan correctamente, y los enlaces e imágenes conservan intactos sus atributos href y alt en lugar de quedar reducidos a texto plano.
Por qué esta dirección es más difícil de lo que parece
Convertir Markdown a HTML es casi determinista: hay una forma HTML obvia para cada fragmento. Ir en la otra dirección no lo es: el HTML puede expresar el mismo resultado visual con una docena de estructuras de etiquetas distintas, y decidir qué sopa de divs y spans anidados representa en realidad un encabezado, una cita o un párrafo simple requiere análisis estructural real, no un simple intercambio de etiqueta por sintaxis. Ese es el problema central que resuelve este endpoint, para que no tenga que ajustar a mano la salida de un scraper cada vez que un sitio de origen cambia su marcado.
Qué esperar del resultado
El Markdown de salida es compatible con CommonMark, así que se abre correctamente en cualquier editor, generador de sitios estáticos o renderizador de Markdown sin ajustes adicionales. El contenido sin equivalente limpio en Markdown — una maquetación compleja de varias columnas, un video incrustado — se simplifica a su forma legible más cercana o se conserva como bloque de HTML crudo, según el elemento, para que la información nunca se pierda en silencio.
Dónde encaja habitualmente en un flujo de trabajo
Combínelo con nuestro endpoint de Markdown a HTML para normalizar contenido que se mueve entre dos CMS, o ejecútelo antes de un paso de resumen para que un modelo de lenguaje reciba prosa limpia en vez de rastrear el significado entre marcado anidado, lo cual mejora notablemente el procesamiento posterior de contenido extraído por scraping o migrado.
Qué puede hacer con ella
Migración de contenido entre CMS
Convierta la exportación HTML de una plataforma antigua a Markdown para que se importe de forma limpia en un CMS moderno o un generador de sitios estáticos nativo de Markdown.
Scraping y archivado web
Convierta el HTML de artículos extraídos por scraping en Markdown legible para un archivo de investigación o una herramienta de lectura diferida, eliminando anuncios y elementos de navegación en el proceso.
Alimentar contenido a modelos de lenguaje
Limpie el HTML antes de pasarlo a una tarea de resumen o extracción, ya que el Markdown transmite la estructura con mucho menos overhead de tokens que las etiquetas crudas.
Archivado de boletines por correo
Convierta plantillas HTML de boletines a Markdown para un archivo buscable y con control de versiones, en vez de guardar HTML crudo y pesado.
Preguntas frecuentes
¿Cómo convierto HTML a Markdown con la API?
Envíe su HTML por POST a /data/html-to-markdown; recibe un task_id y el Markdown limpio llega por webhook o enlace firmado.
¿Elimina scripts y código de rastreo?
Sí, las etiquetas script, los bloques style, los comentarios y los atributos de rastreo se eliminan como parte de la conversión, dejando solo el marcado relevante para el contenido.
¿Qué pasa con elementos sin equivalente en Markdown, como videos incrustados?
Se simplifican a la representación legible más cercana o se conservan como un bloque de HTML crudo, para que la información subyacente no se pierda en silencio.
¿Existe un plan gratuito para el conversor de HTML a Markdown?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Cuánto cuesta cada conversión?
$0.002 por solicitud sin importar el tamaño del documento, y una conversión fallida tras los reintentos nunca se cobra.
¿Maneja bien las tablas?
Sí, las tablas HTML se convierten en tablas de Markdown delimitadas por barras verticales, conservando filas, columnas y celdas de encabezado.
¿El Markdown resultante es CommonMark estándar?
Sí, la salida es compatible con CommonMark y se abre correctamente en cualquier editor o renderizador de Markdown estándar sin ajustes.
¿Puedo convertir un lote grande de páginas HTML a la vez?
Envíe cada página como su propia solicitud; como cada llamada es asíncrona, puede correr muchas conversiones en paralelo y recoger los resultados conforme llega cada webhook.
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/data/html-to-markdown \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/html-to-markdown", {
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/data/html-to-markdown",
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/data/html-to-markdown", 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/data/html-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
{
"input": "…"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.html_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
max_mb | 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. |