3 Punkte von GN⁺ 2024-04-15 | 1 Kommentare | Auf WhatsApp teilen
  • MarkdownDown ist ein Tool, das beliebige Webseiten in saubere Markdown-Dokumente umwandelt
  • Es unterstützt im Konvertierungsergebnis den Download von Bildern, sodass lokal gespeicherte Bilder in Markdown verlinkt werden können
  • Mit der Option Nicht-Inhalts-Elemente entfernen lassen sich Elemente reduzieren, die nichts mit dem Hauptinhalt zu tun haben
  • Optional kann auf das Markdown-Ergebnis ein GPT Filter angewendet werden
  • Nützlich für Nutzer, die Webseit Inhalte als Markdown archivieren oder auch Bilder mit organisieren möchten

Webseiten als Markdown aufbereiten

  • MarkdownDown konvertiert Webseiten in sauberes Markdown
  • Während der Konvertierung können Bilder heruntergeladen und lokale Bildlinks in das Ergebnis aufgenommen werden

Konvertierungsoptionen

  • Fokus auf den Hauptinhalt

    • Mit der Option Remove non-content elements werden Elemente entfernt, die kein Inhalt sind
  • Bildverarbeitung

    • Mit der Option Download images locally and link them werden Bilder lokal gespeichert und verlinkt
  • GPT Filter anwenden

    • Mit der Option Apply GPT Filter on Markdown kann ein GPT Filter auf das Markdown-Ergebnis angewendet werden

1 Kommentare

 
GN⁺ 2024-04-15
Meinungen auf Hacker News
  • Beim Umwandeln von Websites in Markdown gibt es drei unterschiedliche Probleme: den Seiteninhalt vollständig zu erfassen, Werbung und Zusatzinhalte zu entfernen sowie das richtige Layout und die passende Abschnittsformatierung zu erhalten.
    Für präzise Inhaltsextraktion und Formatierung funktionieren Lösungen auf Basis von Trafilatura, Newspaper4k und python-readability im Standardzustand am besten; für vollständiges Erfassen passt eine Kombination aus Scraping-Diensten und Selenium gut.
    Ich frage mich, was dieses Tool anders oder besser macht. Dieses Feld war eine Weile ziemlich festgefahren, daher würde ich gern hören, was ihr gelernt habt.

    • Besonders in Umgebungen ohne JavaScript-Runtime oder wenn man keine verwenden möchte, ist gründliches Scraping schwierig.
      Bei der Inhaltsextraktion fand ich den Ansatz der Postlight-Bibliothek ziemlich elegant. Jeder HTML-Node wird anhand von Heuristiken wie Textlänge, Link-Dichte und CSS-Klasse bewertet, und der Node mit der höchsten Punktzahl wird ausgewählt. Beim Bau einer persönlichen Read-it-later-App habe ich das einmal nach Swift portiert.
      https://github.com/postlight/parser
    • Mein Artikel-Web-Scraper ist inzwischen auf Playwright plus Adblocker umgezogen, führt danach Mozillas Readability auf der Seite aus, und ein LLM prüft das Ergebnis.
      Wenn die Prüfung fehlschlägt, wird der Kontext des vollständigen Seiten-HTML gekürzt, mit Pandoc nach Markdown konvertiert, und anschließend extrahiert das LLM den Haupttext aus dem Markdown.
  • Vercel also – sobald jetzt Traffic kommt, sollte man auf die Rechnung achten. Ich hoffe, ihr nutzt es nicht so, wie Vercel einen ständig dazu verleitet.

    • Es ist etwas bitter, wie die Dokumentation einen überall dazu drängt, es zu verwenden. Manchmal reicht ein einziges WebP völlig aus.
      Genau wie in dem Bus-Meme: Auf der glücklichen Seite sitzen Nutzer und Vercel, auf der traurigen der Geldbeutel.
      Ausgenommen natürlich, wenn man dynamisches Skalieren und Verkleinern braucht.
    • Tatsächlich hat es sich ziemlich gut gehalten, und die Kosten waren vernachlässigbar.
      Für den HN-Traffic wurde nichts Besonderes gemacht, es war einfach eine Standard-Next.js-App.
  • Bild-Downloads und GPT-basiertes Filtern anzubieten ist eine gute Idee.
    Ich habe letztes Jahr ein ähnliches Tool gebaut, aber ohne diese Funktionen: https://url2text.com/
    Die UI kann langsam sein, aber auf der Homepage sieht man Beispielausgaben.
    Die zugrunde liegende API ist Urlbox’ Website-Screenshot-API; direkt verwendet ist sie deutlich performanter. Man kann JavaScript-gerendertes HTML, Metadaten und Screenshots zusammen mit Markdown in einem Aufruf anfordern: https://urlbox.com/extracting-text
    Ergebnisse lassen sich auch direkt in S3-kompatiblem Storage speichern: https://urlbox.com/s3
    Oder per Webhook zustellen: https://urlbox.com/webhooks
    In einem Nebenprojekt rendere ich mit Urlbox’ Markdown-Funktion über 1 Mio. Mal pro Monat; solches Markdown ist für Embeddings und Prompts deutlich besser geeignet.
    Wenn man ganze Websites auf diese Weise scrapen möchte, ist auch dctanners neues Tool einen Blick wert: https://usescraper.com/

    • Ich bin der Gründer von https://usescraper.com. Inzwischen gibt es auch eine Option für Single-URL-Scraping: https://docs.usescraper.com/api-reference/scraper/scrape
      Es kostet 0,001 $ pro Seite und nutzt einen Headless-Chrome-Browser. Die Ergebnisse sind schnell, und man zahlt nur nach Nutzung.
    • Sieht ganz gut aus, aber url2text scheint keine API zu haben, und urlbox scheint keine Option zum Überspringen von Screenshots zu bieten, wenn man nur Text will.
      Wenn man nur Text braucht, wirkt das ziemlich teuer.
  • Wenn eine Website eine Cookie-Meldung anzeigt, scheint dieses Tool dort hängen zu bleiben und den eigentlichen Inhalt nicht parsen zu können.
    Als ich zum Beispiel https://www.cnbc.com/ eingegeben habe, wurden nur die Cookie-Meldung und der rechtliche Text drumherum als Markdown erzeugt.

    • So etwas zu umgehen ist nicht einfach, aber es kann etwa so funktionieren: https://url2text.com/u/wYVake
      Ich hatte Glück, dass ich auf einer ausgereiften API aufbauen konnte, die bereits viele Edge Cases aus verschiedenen Arten von Seiten-Rendering behandelt.
  • Schon htmltidy und Pandocs HTML→Markdown-Konvertierung waren für mich ausreichend brauchbar.
    http://www.html-tidy.org/
    https://pandoc.org/

    • Von tidy hatte ich noch nie gehört, aber es sieht vielversprechend aus.
      Ich bin zugleich versucht und verängstigt, das gesamte finale Template-HTML damit laufen zu lassen, um verbliebene fehlerhafte Strukturen zu finden. Je nachdem, wie strukturiert die Korrekturen ausfallen, könnte man daraus vielleicht eine Testsuite machen.
  • Ich habe ebenfalls etwas sehr Ähnliches gebaut: smort.io. Wenn man smort.io/ vor eine beliebige Artikel-URL setzt, kann man sie einfach bearbeiten, kommentieren und teilen.
    Es funktioniert auch mit ArXiv-Papers.
    Der Show-HN-Thread zu Smort ist hier: https://news.ycombinator.com/item?id=30673502

  • Ich habe es mit einer komplexen Marketing-Seite ausprobiert, und es hat sie sehr gut verarbeitet.
    Falls du es teilen kannst: Mich würde interessieren, wie viel Last auf dem Host entsteht. Ist das etwas, das man dauerhaft kostenlos betreiben kann, oder wird es am Ende kosteneffizient ungünstig?

    • Da eine Headless-Chrome-Instanz gestartet wird, ist es etwas schwergewichtig. Diesen Teil werde ich mir hinsichtlich Optimierung ansehen.
      Davon abgesehen ist GPT-4 teuer, aber bisher sind die Kosten vernachlässigbar, daher bin ich zuversichtlich. Ich denke, es lässt sich langfristig betreiben.
  • Einer der Fälle, in denen man keine AI braucht. Es gibt sehr gut funktionierende Algorithmen, um Inhalte aus Seiten zu extrahieren; eine Implementierung davon ist https://github.com/buriy/python-readability

    • Als ich vor ein paar Jahren Tools zum Entfernen von Boilerplate verglichen habe, lieferte jusText meiner Erinnerung nach im Auslieferungszustand die besten Ergebnisse
      readability und ein paar andere Libraries habe ich auch ausprobiert. Ich frage mich, wie der aktuelle Stand heute ist
    • Hier ist AI optional. Vor der Umwandlung in Markdown wird readability verwendet, um das HTML aufzuräumen
    • Als ich readability zuletzt verwendet habe, funktionierte es gut bei Artikeln, hatte aber mit anderen Seitentypen Probleme
      Es hat deutlich mehr Inhalte entfernt, als ich wollte
    • Ich frage mich, wie man hier dasselbe allein mit diesem Tool ohne AI erreichen könnte
    • Ehrlich gesagt hatte ich erwartet, dass das meiste davon schwarze Magie ist, aber der Kern des Projekts sieht wie ein Bündel von regulären Ausdrücken aus, das sicher mühsam aufgebaut wurde. Cool
  • Das immer wieder erstaunliche Pandoc (https://pandoc.org/) macht so etwas sehr gut. Tatsächlich unterstützt es auch praktisch fast jedes andere Dokumentformat

    • Stimme zu. Pandoc gehört zu den nützlichsten Tools, die es gibt, wird aber kaum erwähnt
      Es ist erstaunlich, einfach zu benutzen und funktioniert gut. In diesem Bereich kommen häufig neue Tools heraus, aber um mich dazu zu bringen, etwas anderes als Pandoc zu verwenden, müsste es wohl wirklich einzigartige und überzeugende Funktionen haben oder stark auf einen bestimmten Anwendungsfall optimiert sein
  • Cool. Ich fände es gut, wenn es eine Browser-Erweiterung gäbe, die das auf jede Seite anwendet, die ich lese, und sie irgendwo speichert

    • SingleFile für Firefox: https://addons.mozilla.org/en-US/firefox/addon/single-file/
    • Die Option, die ich manuell nutze, ist Markdown clipper
      https://github.com/deathau/markdown-clipper
      Vermutlich gibt es Dutzende ähnlicher Erweiterungsalternativen
    • Die Kombination aus Wallabag + Obsidian + Wallabag Browser Ext ist gut. Manuell ausgelöst, aber hervorragend
    • Omnivore speichert mithilfe eines Webarchivs eine Kopie
      https://omnivore.app/
    • Ich meine, Apps wie Pocket, Readwise Reader und Matter decken so etwas bereits ab
      Edit: Ich habe zu schnell gelesen. Den Teil mit der automatischen, systematischen Verarbeitung habe ich übersehen