Read this article in English.
Web a Markdown: 6 formas de convertir una página web a Markdown (con código)
Respuesta corta: Para una página ahora mismo, pon
https://r.jina.ai/delante de la dirección (Jina Reader). En tu propio código, usa Readability con Turndown (Node.js) o markdownify (Python). Dentro de n8n o Zapier, usa sus herramientas integradas. Para páginas que necesitan JavaScript, o cuando quieras solo el contenido principal y los metadatos en una sola llamada, usa la API de URL a Markdown de Cofferdock.
Markdown es texto normal con unas pocas marcas sencillas: # para los títulos, - para las listas y texto para los enlaces. Los modelos de IA lo leen muy bien, y es fácil de guardar, buscar y versionar. Una página web en bruto, en cambio, está llena de etiquetas, scripts y menús. Markdown conserva los encabezados, las listas, los enlaces y las tablas con mucho menos ruido.
Comparativa rápida
| Forma | Ideal para |
|---|---|
| Jina Reader | Una página, sin código y gratis |
| Python con markdownify | Scripts que convierten la página entera |
| Node.js con Readability y Turndown | Tu propio código, quedándote solo con el artículo |
| n8n | Automatizaciones con sus nodos integrados |
| Zapier y Make | Flujos sin código (Make da texto plano) |
| API de Cofferdock | Páginas con JavaScript, contenido principal y metadatos |
1. Jina Reader
Pon https://r.jina.ai/ delante de la dirección de la página y ejecuta esto en una terminal:
curl "https://r.jina.ai/https://example.com/article"
Devuelve la página como texto fácil de leer para la IA. Es gratis para un uso básico sin clave, con 20 peticiones por minuto, y con una clave se pueden hacer más. Si necesitas una página hoy mismo, es la opción más rápida.
2. Python con markdownify
Instala las dos librerías con pip install requests markdownify y ejecuta este script:
import requests
from markdownify import markdownify as md
html = requests.get("https://example.com/article", timeout=20).text
print(md(html, heading_style="ATX"))
Esto convierte la página entera, con sus menús incluidos. requests no ejecuta JavaScript, así que las páginas que crean su contenido con JavaScript llegan casi vacías.
3. Node.js con Readability y Turndown
Readability se queda solo con el contenido principal de la página, la misma idea que el modo lectura de Firefox. Turndown convierte ese HTML a Markdown. Instálalas con npm install jsdom @mozilla/readability turndown, guarda el código de abajo como article.mjs y ejecútalo con node article.mjs:
import { JSDOM } from 'jsdom';
import { Readability } from '@mozilla/readability';
import TurndownService from 'turndown';
const url = 'https://example.com/article';
const html = await (await fetch(url)).text();
const dom = new JSDOM(html, { url });
const article = new Readability(dom.window.document).parse();
const markdown = new TurndownService({ headingStyle: 'atx' }).turndown(article.content);
console.log(article.title);
console.log(markdown);
Como en la versión de Python, fetch no ejecuta JavaScript. Es una buena elección cuando quieres texto de artículo limpio y controlas el código.
4. Dentro de n8n
n8n tiene lo que necesitas sin ningún servicio extra:
- Añade un nodo HTTP Request. Pon el método en
GETy la URL de la página. En Options → Response → Response Format, elige Text. El HTML llega al campodata. - Añade un nodo Markdown después. Pon el modo en HTML to Markdown y, en HTML, escribe
{{ $json.data }}. Elige un nombre para Destination Key, que es el campo de salida. - En Options, pon Ignored Elements en
nav, footerpara quitar los menús y los pies de página.
Recuerda que el nodo HTTP Request no ejecuta JavaScript. Para ver el proceso completo, consulta la guía paso a paso.
5. Dentro de Zapier y Make
Zapier: usa Web Parser by Zapier, con el evento Parse Webpage. Pon URL to parse con la página y Content type en Markdown. El analizador está pensado para artículos, así que puede no encajar con todos los diseños. También existe un paso de Formatter, Formatter by Zapier → Text → Convert HTML to Markdown, pero algunos usuarios comentan que su resultado tiene saltos de línea de más. Si solo quieres texto plano, usa Remove HTML Tags. Consulta la guía de Zapier.
Make: usa el módulo HTTP → Make a request con GET para obtener el HTML. Después, Text parser → HTML to text te da texto plano con formato, no Markdown. La función integrada stripHTML() también da texto plano, por ejemplo {{stripHTML(1.data)}}. Consulta la guía de Make.
6. La API de URL a Markdown de Cofferdock
Esta herramienta abre la página en un navegador real (Chromium) con JavaScript activado, así que también lee webs que crean su contenido con JavaScript. Por defecto se queda solo con el contenido principal, con la misma detección que el modo lectura de Firefox. Además devuelve los metadatos de la página: título, descripción, imagen, idioma, autor, nombre del sitio y fechas.
También puedes enviar HTML que ya tengas con html en lugar de url, y usar base_url para que los enlaces relativos se vuelvan absolutos. Las opciones principales son format (markdown, text o metadata), main_content, include_links, include_images, max_chars y wait_ms.
Así es una llamada para un artículo:
curl -X POST "https://api.cofferdock.com/web-to-markdown" \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/article"}'
Una respuesta correcta tiene este aspecto:
{ "success": true, "title": "...", "content": "## First step\n\nArticle text...", "length": 4821, "truncated": false, "meta": { "main_content_found": true } }
Cada página cuesta 1 crédito, y las llamadas fallidas no se cobran. Los límites son una página por llamada, hasta 4 MB de HTML y 20 peticiones por minuto por IP. El plan gratuito incluye 50 créditos al mes, sin tarjeta. Si las formas gratuitas de arriba te bastan, usa esas. La API merece la pena cuando las páginas necesitan JavaScript, cuando quieres los metadatos o cuando no quieres mantener el código tú mismo.
Problemas habituales
- Páginas construidas con JavaScript: HTTP Request, requests y fetch reciben casi nada. Usa la API de Cofferdock, que abre un navegador real.
- Menús, avisos de cookies y pies de página: deja activado el contenido principal (el valor por defecto en nuestra API y en Readability), o quítalos con Ignored Elements en el nodo Markdown.
- Portadas, listados y paneles: el contenido principal puede dejar partes fuera. Pon
main_contentenfalsepara obtener la página completa. - Webs con inicio de sesión o que bloquean robots: no se pueden leer, tampoco el contenido que aparece tras un clic.
- Páginas muy largas:
max_charsfija el límite (por defecto, 200.000). Si el texto se corta,truncatedvaletrue. - Enlaces relativos: al enviar
html, ponbase_urlpara que los enlaces funcionen. - Texto que va a una IA: procede de la web de otra persona y puede contener frases que parecen instrucciones. Trátalo como datos, no como órdenes.
- Permisos: lee solo las páginas que tienes permiso para leer, y respeta las condiciones de cada sitio.
Preguntas frecuentes
¿Cuál es la forma más fácil de convertir una página web a Markdown? Para una página, usa Jina Reader: pon https://r.jina.ai/ delante de la dirección. No necesitas código.
¿Qué herramientas se quedan solo con el contenido principal? Las que se basan en Readability: nuestra API, y Readability en tu propio código Node.js. markdownify convierte todo lo que hay en la página.
¿Puedo convertir HTML que ya tengo? Sí. Puedes usar markdownify en Python, Turndown en Node.js, el nodo Markdown de n8n, el Formatter de Zapier o nuestra API con la entrada html.
¿Hay alguna opción gratuita? Sí. Jina Reader funciona sin clave, las librerías son gratuitas y n8n y Zapier tienen herramientas integradas. Nuestro plan gratuito incluye 50 créditos al mes, sin tarjeta.
Guías relacionadas
- Scraping en n8n
- Scraping en Make
- Scraping en Zapier
- Alternativa a Firecrawl
- Agente de IA de n8n que lee webs
Pruébalo tú mismo
Prueba la herramienta en cofferdock.com/es/web-to-markdown. Puedes crear una cuenta gratuita en cofferdock.com/register, con 50 créditos al mes y sin tarjeta.