Defuddle - un open source HTML-to-Markdown pour remplacer Readability
(github.com/kepano)- Un outil qui supprime les éléments inutiles d’une page web (commentaires, barre latérale, en-tête, pied de page, etc.) pour ne conserver que le contenu principal
- Contrairement à Mozilla Readability, il fonctionne de manière plus flexible et prend en charge une standardisation HTML cohérente pour les formules, blocs de code, notes de bas de page, etc.
- Développé pour Obsidian Web Clipper, avec pour objectif la compatibilité avec d’autres outils de conversion HTML-to-Markdown (comme Turndown)
- Intègre des fonctions d’extraction de métadonnées variées, comme les styles mobiles et les données schema.org
- Compatible à la fois avec Node.js et le navigateur, avec plusieurs bundles au choix selon l’usage
Ce qui différencie Defuddle de Readability
- Un filtrage plus tolérant qui réduit la suppression d’éléments incertains
- Un traitement cohérent des zones spéciales comme les notes de bas de page, les formules et le code
- Prend en compte la feuille de style mobile de la page
- Permet d’extraire des informations supplémentaires comme les métadonnées schema.org, les images, le favicon ou la date de publication
Composition des bundles
- Bundle Core (defuddle) : adapté à une utilisation dans le navigateur, sans dépendance externe
- Bundle Full (defuddle/full) : inclut des fonctions supplémentaires comme le parsing des formules
- Bundle Node (defuddle/node) : optimisé pour l’environnement Node.js (JSDOM), avec prise en charge complète des formules et de la conversion Markdown
Structure de l’objet retourné
Defuddle retourne un objet contenant les informations suivantes
- author : nom de l’auteur de l’article ou de la page
- content : chaîne de contenu principal nettoyé
- description : description résumée de l’article ou de la page
- domain : nom de domaine du site
- favicon : URL du favicon du site
- image : URL de l’image principale
- metaTags : informations sur les balises meta
- parseTime : temps de traitement (en millisecondes)
- published : informations de date de publication
- site : nom du site
- schemaOrgData : données extraites de schema.org
- title : titre du contenu
- wordCount : nombre de mots du contenu principal
Options
- debug : active la journalisation de débogage
- url : spécifie l’URL de la page à analyser
- markdown : convertit le contenu principal en Markdown
- separateMarkdown : retourne à la fois le HTML et le Markdown
- removeExactSelectors : option de suppression des sélecteurs à correspondance exacte (publicités, boutons sociaux, etc.) (valeur par défaut : true)
- removePartialSelectors : option de suppression des sélecteurs à correspondance partielle (publicités similaires, etc.) (valeur par défaut : true)
1 commentaires
Avis Hacker News
Je n’aime pas la façon dont l’éditeur wysiwyg que j’utilise convertit le markdown en HTML, donc je me dis qu’en créant moi-même une barre d’outils et un éditeur pour y intégrer cet outil, on pourrait obtenir de meilleurs résultats.
J’ai récemment étudié un sujet similaire, et je n’étais pas vraiment convaincu par la qualité des implémentations de Readability dans différentes langues. Readability.js était la meilleure, mais l’environnement Javascript ne convenait pas à mon projet. J’ai finalement choisi la bibliothèque Python Trafilatura pour extraire du contenu de très haute qualité, avec des métadonnées précises en plus. Comparer mon implémentation avec Trafilatura pourrait permettre d’identifier des pistes d’amélioration.
J’utilise Obsidian Clipper depuis son lancement, et j’apprécie tout particulièrement sa fonction d’extraction basée sur des profils par site. Même pour ceux qui n’utilisent pas Obsidian, la qualité d’extraction en markdown est l’une des plus fiables que j’aie vues jusqu’à présent.
À une époque où les sites web deviennent de plus en plus complexes et encombrés, je pense qu’un convertisseur markdown robuste, capable d’aider le lecteur à se concentrer sur le vrai contenu, est absolument nécessaire. Je suis ravi de voir arriver un projet qui comble le vide laissé par Readability, et je lui souhaite bonne chance.
J’ai découvert Defuddle en analysant le code source, impressionné par la qualité de conversion en markdown d’Obsidian Web Clipper. Je compte l’utiliser dans l’application de type read-it-later / knowledge-base que je développe, donc je voulais remercier l’auteur par avance.
Je me demande si Readability de Mozilla est vraiment à l’abandon. La dernière release date d’il y a 2 mois, et le mainteneur Gijs répond encore très activement aux issues.
Présentation d’un projet similaire développé en PHP : markydown. Son avantage est la simplicité de l’auto-hébergement.
Exemple d’usage concret : Obsidian Web Clipper est très pratique pour convertir des conversations chatGPT en markdown, ou tout simplement pour les utiliser au format imprimable.
Question sur la raison pour laquelle, sur certains sites web, l’accès en mode lecture (par exemple le lecteur sur iPhone) affiche un écran blanc ou rend le texte illisible. Cela semble particulièrement fréquent sur les sites d’actualité. Est-ce intentionnel pour forcer l’affichage des publicités, et si oui, comment cela est-il mis en place ?