10 Punkte von GN⁺ 2025-05-23 | 1 Kommentare | Auf WhatsApp teilen
  • Ein Tool, das auf Webseiten unnötige Elemente (Kommentare, Seitenleisten, Header, Footer usw.) entfernt und nur den Hauptinhalt übrig lässt
  • Im Gegensatz zu Mozilla Readability arbeitet es flexibler und unterstützt eine konsistente HTML-Standardisierung für Formeln, Codeblöcke, Fußnoten usw.
  • Wurde für den Obsidian Web Clipper entwickelt und zielt auf Kompatibilität mit anderen HTML-zu-Markdown-Konvertierungstools (wie Turndown) ab
  • Bietet integrierte Funktionen zum Extrahieren verschiedener Metadaten wie mobile Styles und schema.org-Daten
  • Unterstützt sowohl Node.js als auch Browser, mit verschiedenen Bundles je nach Einsatzzweck

Unterschiede zwischen Defuddle und Readability

  • Reduziert durch großzügigeres Filtering das Entfernen unsicherer Elemente
  • Behandelt Sonderbereiche wie Fußnoten, Formeln und Code konsistent
  • Berücksichtigt die mobilen Stylesheets der Seite
  • Kann zusätzliche Informationen extrahieren wie schema.org-Metadaten, Bilder, Favicon und Veröffentlichungsdatum

Bundle-Zusammenstellung

  • Core-Bundle (defuddle): Für die Nutzung im Browser geeignet, ohne externe Abhängigkeiten
  • Full-Bundle (defuddle/full): Mit zusätzlichen Funktionen wie Formel-Parsing
  • Node-Bundle (defuddle/node): Für Node.js-Umgebungen (JSDOM) optimiert, mit vollständiger Unterstützung für Formeln und Markdown-Konvertierung

Struktur des Rückgabeobjekts

Defuddle gibt ein Objekt mit Informationen wie den folgenden zurück

  • author: Name des Autors des Artikels oder der Seite
  • content: String mit dem bereinigten Hauptinhalt
  • description: Kurzbeschreibung des Artikels oder der Seite
  • domain: Domainname der Website
  • favicon: URL des Favicons der Website
  • image: URL des Vorschaubilds
  • metaTags: Informationen zu den Meta-Tags
  • parseTime: Verarbeitungsdauer (in Millisekunden)
  • published: Informationen zum Veröffentlichungsdatum
  • site: Name der Website
  • schemaOrgData: Extrahierte schema.org-Daten
  • title: Titel des Inhalts
  • wordCount: Anzahl der Wörter im Hauptinhalt

Optionen

  • debug: Aktiviert Debug-Logging
  • url: Gibt die URL der zu analysierenden Seite an
  • markdown: Konvertiert den Hauptinhalt in Markdown
  • separateMarkdown: Gibt HTML und Markdown gleichzeitig zurück
  • removeExactSelectors: Option zum Entfernen exakt passender Selektoren (Werbung, Social Buttons usw.) (Standardwert true)
  • removePartialSelectors: Option zum Entfernen teilweise passender Selektoren (ähnliche Werbung usw.) (Standardwert true)

1 Kommentare

 
GN⁺ 2025-05-23
Hacker-News-Kommentare
  • Mir gefällt nicht, wie der von mir genutzte WYSIWYG-Editor Markdown in HTML umwandelt; daher habe ich die Hoffnung, mit einer selbst gebauten Toolbar und einem eigenen Editor in Kombination mit diesem Tool bessere Ergebnisse zu erzielen.

  • Ich habe mich kürzlich mit einem ähnlichen Thema beschäftigt, war aber von der Qualität der in verschiedenen Sprachen implementierten Readability-Varianten nicht überzeugt. Readability.js war am besten, aber eine JavaScript-Umgebung passte nicht zu meinem Projekt. Am Ende fiel die Wahl auf die Python-Bibliothek Trafilatura, um Inhalte mitsamt Metadaten in höchster Qualität und mit guter Genauigkeit zu extrahieren. Wenn man meine Implementierung mit Trafilatura vergleicht, ließen sich vermutlich Ansatzpunkte für Verbesserungen finden.

    • Falls du Go verwendest: Es gibt eine von mir gepflegte Readability- und eine Trafilatura-Portierung für Go. Die Go-Version von Trafilatura erreicht eine ähnliche Leistung wie die Python-Version. Siehe: go-shiori/go-readability, markusmobius/go-trafilatura
    • Die offizielle Dokumentation von Trafilatura ist hier zu finden. Zur Einordnung: Trafilatura bedeutet auf Italienisch „Extrusion“. Der Name soll daher kommen, dass Makkaroni Soße besonders gut aufnehmen; dazu gab es noch eine interessante Erläuterung zum Hintergrund des Pasta-Begriffs. (Und der Hinweis, dass die korrekte Schreibweise trafilatura ist, nicht trifatura.)
  • Ich nutze Obsidian Clipper seit dem Launch und schätze besonders die profilbasierte Extraktion pro Website. Auch für Nicht-Obsidian-Nutzer ist die Qualität der Markdown-Extraktion eine der verlässlichsten, die ich bisher gesehen habe.

    • Danke für den Tipp.
  • Angesichts dessen, wie komplex und unübersichtlich Websites in letzter Zeit geworden sind, braucht es unbedingt einen robusten Markdown-Konverter, der es Lesern ermöglicht, sich auf die eigentlichen Inhalte zu konzentrieren. Schön zu sehen, dass ein Projekt auftaucht, das die Lücke von Readability füllt — viel Erfolg damit.

  • Ich war von der Qualität der Markdown-Konvertierung im Obsidian Web Clipper so beeindruckt, dass ich den Quellcode analysiert habe und dabei auf Defuddle gestoßen bin. Ich plane, es in meiner selbst entwickelten Read-it-later-/Knowledge-Base-App einzusetzen, und wollte mich schon im Voraus bedanken.

  • Ich frage mich, ob Mozillas Readability wirklich vernachlässigt wird. Das letzte Release ist erst zwei Monate her, und der Maintainer Gijs reagiert auch sehr aktiv auf Issues.

    • Ich finde allerdings, dass die Codebasis an vielen Stellen Verbesserungen gebrauchen könnte. Ich habe sie beruflich einmal geforkt, um Bugs zu beheben. Ein Beispiel: Es gibt einen Bug, durch den Preisangaben auf Seiten in Sprachen wie Niederländisch, wo Kommas innerhalb von Zahlen verwendet werden, komplett als wichtiger Text erkannt werden. Ich wollte dazu einen PR einreichen, aber dafür mussten die Tests zwingend durchlaufen; auf der von mir getesteten Seite schlugen sie fehl, was das Mergen unnötig erschwerte und ineffizient machte.
  • Vorstellung eines ähnlichen Projekts in PHP: markydown. Vorteil: einfaches Self-Hosting.

  • Ein praktischer Anwendungsfall dafür, dass Obsidian Web Clipper ein sehr nützliches Tool ist, wenn man chatGPT-Unterhaltungen in Markdown umwandeln oder etwas unkompliziert für den Druck aufbereiten möchte.

    • Manche Clients, darunter Kagi Assistant, bieten eine Funktion, Gesprächsinhalte direkt als Markdown zu speichern. Auch die Nutzung von Obsidians Web Clipper ist dafür eine gute Idee.
    • Ich bitte chatGPT selbst oft darum, Zusammenfassungen oder benötigte Inhalte direkt als Markdown-Datei auszugeben, und nutze das dann weiter.
  • Ich frage mich, warum bei manchen Websites im Lesemodus (z. B. iPhone Reader) der Bildschirm weiß bleibt oder der Text nicht richtig angezeigt wird. Das passiert besonders häufig bei News-Websites. Liegt das daran, dass Inhalte absichtlich versteckt werden, um Werbung einzublenden, und wenn ja, wie wird das technisch umgesetzt?

    • Solche Probleme werden besonders in der EU, im Vereinigten Königreich oder in Kalifornien oft durch Datenschutzbanner oder Cookie-Hinweise verursacht. Manche Websites zeigen diese Banner nur als Modal an; das lässt sich im Lesemodus meist gut verarbeiten. Andere verdecken den Inhalt jedoch per Redirect oder serverseitigem Rendering komplett. Wenn man den Lesemodus verwendet, empfiehlt es sich, zuerst entsprechende Banner zu schließen und es dann erneut zu versuchen.