Defuddle - un proyecto open source de HTML a Markdown que reemplaza a Readability
(github.com/kepano)- Es una herramienta que elimina los elementos innecesarios (comentarios, barra lateral, encabezado, pie de página, etc.) de una página web para dejar solo el contenido principal
- A diferencia de Mozilla Readability, funciona de forma más flexible y admite una estandarización consistente de HTML para fórmulas, bloques de código, notas al pie, etc.
- Fue desarrollada para Obsidian Web Clipper y busca compatibilidad con otras herramientas de conversión de HTML a Markdown (como Turndown)
- Incorpora funciones de extracción de diversos metadatos, como estilos móviles y datos de schema.org
- Es compatible tanto con Node.js como con navegadores, y permite elegir entre distintos bundles según el caso de uso
Diferencias entre Defuddle y Readability
- Usa un filtrado más permisivo para reducir la eliminación de elementos dudosos
- Maneja de forma consistente áreas especiales como notas al pie, fórmulas y código
- Toma como referencia la hoja de estilos móvil de la página
- Puede extraer información adicional como metadatos de schema.org, imágenes, favicon y fecha de publicación
Composición de bundles
- Bundle Core (
defuddle): adecuado para uso en navegador, sin dependencias externas - Bundle Full (
defuddle/full): incluye funciones adicionales como análisis de fórmulas - Bundle Node (
defuddle/node): optimizado para entornos Node.js (JSDOM), con soporte completo para fórmulas y conversión a Markdown
Estructura del objeto de retorno
Defuddle devuelve un objeto con información como la siguiente
- author: nombre del autor del artículo o la página
- content: cadena con el contenido principal depurado
- description: descripción resumida del artículo o la página
- domain: nombre de dominio del sitio
- favicon: URL del favicon principal del sitio
- image: URL de la imagen principal
- metaTags: información de meta tags
- parseTime: tiempo de procesamiento (en milisegundos)
- published: información de fecha de publicación
- site: nombre del sitio
- schemaOrgData: datos extraídos de schema.org
- title: título del contenido
- wordCount: cantidad de palabras del contenido principal
Opciones
- debug: activa el logging de depuración
- url: especifica la URL de la página a analizar
- markdown: convierte el contenido principal a Markdown
- separateMarkdown: devuelve HTML y Markdown al mismo tiempo
- removeExactSelectors: opción para eliminar selectores de coincidencia exacta (anuncios, botones sociales, etc.) (valor predeterminado: true)
- removePartialSelectors: opción para eliminar selectores de coincidencia parcial (anuncios similares, etc.) (valor predeterminado: true)
1 comentarios
Comentarios de Hacker News
No me gusta cómo el editor WYSIWYG que uso convierte de markdown a HTML, así que me da la impresión de que si hiciera mi propia barra de herramientas y editor y les aplicara esta herramienta, podría obtener mejores resultados.
Hace poco investigué un tema parecido y no estaba seguro de la calidad de Readability implementado en varios lenguajes. Readability.js era el mejor, pero el entorno de JavaScript no encajaba con mi proyecto. Al final elegí la biblioteca de Python Trafilatura para extraer contenido de la mejor calidad, incluyendo metadatos, con precisión. Quizá comparar mi implementación con Trafilatura podría ayudar a encontrar puntos de mejora.
Llevo usando Obsidian Clipper desde su lanzamiento y valoro especialmente su función de extracción basada en perfiles por sitio. Incluso si no eres usuario de Obsidian, la calidad de extracción a markdown es de las más confiables que he visto hasta ahora.
Ahora que los sitios web se han vuelto cada vez más complejos y distractores, creo que hace falta un convertidor a markdown robusto que permita a los lectores concentrarse en el contenido real. Me alegra ver un proyecto que viene a llenar el vacío que deja Readability, y le deseo mucho éxito.
Quedé tan impresionado con la calidad de conversión a markdown de Obsidian Web Clipper que, al revisar su código fuente, terminé descubriendo Defuddle. Planeo usarlo en una app de read-it-later/base de conocimiento que estoy desarrollando, así que quería agradecer de antemano.
Me da curiosidad si Readability de Mozilla realmente está abandonado. La última versión salió hace 2 meses y el mantenedor Gijs responde issues de forma muy activa.
Presentación de un proyecto similar desarrollado en PHP: markydown. Tiene la ventaja de poder selfhostearse fácilmente.
Caso de uso real de Obsidian Web Clipper como herramienta muy útil para convertir conversaciones de chatGPT a markdown o para usarlas de forma sencilla al imprimir.
Curiosidad sobre por qué en algunos sitios web, al acceder en modo lectura (por ejemplo, el lector de iPhone), la pantalla queda en blanco o el texto no se ve bien. Pasa sobre todo en sitios de noticias. Se plantea si la causa es que lo ocultan intencionalmente para mostrar anuncios y, de ser posible, cómo lo hacen.