In der Welt der Web-Scraper gibt es einen weit verbreiteten Ansatz: Für jede Zielseite wird ein maßgeschneiderter Extraktionscode geschrieben. Doch was wäre, wenn ein Tool Blog-Inhalte, Tutorials oder Nachrichtenartikel universell auslesen könnte – ohne dass Entwickler:innen für jede Domain einen Handler programmieren müssen? Genau hier setzt pluckmd an. Das Open-Source-Tool nutzt eine intelligente, datengetriebene Methode, um Inhalte zu extrahieren, und setzt dabei auf Heuristiken, LLM-Unterstützung und eine klare Validierungslogik.
Das Prinzip: Extraktion als Datenobjekt statt hartcodierter Logik
Anstatt den Code basierend auf der Domain zu verzweigen (z. B. ein spezieller Parser für Medium, ein anderer für Substack), nutzt pluckmd ein `AdapterSpec`-Objekt. Dieses beschreibt in einer standardisierten Struktur, wie Artikel-Links gefunden, Inhalte extrahiert und Paginierung gehandhabt werden sollen. Das Besondere: Die Spezifikation ist rein datenbasiert und kann von Menschen, Heuristiken oder sogar KI-Modellen generiert werden.
interface AdapterSpec {
listing: ListingExtractionSpec; // Regeln für die Link-Extraktion
article: ArticleExtractionSpec; // Regeln für den Artikel-Inhalt
pagination: PaginationSpec; // Paginierungslogik (z. B. Scrollen, Next-Button, Auto-Detection)
evidence: string; // Begründung für die erkannte Struktur
}Durch diese Abstraktion bleibt das System vollständig austauschbar. Egal, ob die Spezifikation manuell eingegeben, von einem Algorithmus errechnet oder von einem LLM generiert wird – das Tool verarbeitet sie immer auf die gleiche Weise.
Schrittweise Auflösung: Von Cache bis KI – aber möglichst ohne LLM
pluckmd verfolgt eine klare Prioritätenreihenfolge, um die LLM-Nutzung zu minimieren:
- Cache-Prüfung: Zuerst wird geprüft, ob bereits eine gültige Spezifikation für die Domain im Cache liegt. Diese wird gegen die aktuelle HTML-Struktur verifiziert, um veraltete Einträge auszuschließen.
- Lokale Heuristiken: Falls kein Cache-Eintrag vorhanden ist, kommen algorithmische Regeln zum Einsatz. Diese analysieren die Seitenstruktur ohne domänenspezifisches Vorwissen.
- LLM-Unterstützung: Erst wenn die Heuristiken keine klare Lösung finden, greift das Tool auf ein Sprachmodell zurück. Jede funktionierende Spezifikation wird anschließend im Cache gespeichert – für zukünftige Anfragen.
Diese Strategie spart Kosten und Rechenleistung, da LLM-Aufrufe nur in Ausnahmefällen nötig sind. Gleichzeitig wird sichergestellt, dass keine ungültigen Daten in den Cache gelangen.
Wie Heuristiken Artikel-Listen automatisch erkennen
Ein zentraler Baustein von pluckmd ist die automatische Erkennung von Artikel-Listen – und das funktioniert ohne Wissen über die Domain. Das Tool geht wie folgt vor:
- Normalisierung der Links: Pfade wie
/blog/mein-artikel-2024oder/tutorials/python-tutorialwerden in Wildcard-Muster umgewandelt, z. B./blog/*oder/tutorials/*. - Gruppierung nach Mustern: Links mit ähnlichen Mustern werden zusammengefasst. Eine Gruppe mit mindestens drei Links desselben Musters gilt als Kandidat für eine Artikel-Liste.
- Scoringsystem: Die Qualität einer Gruppe wird anhand mehrerer Faktoren bewertet:
- Anzahl der Links in der Gruppe
- Anteil der Links im Verhältnis zur Gesamtzahl der Links auf der Seite
- Tiefe des Pfads (z. B.
/blog/2024/04/artikelvs./artikel) - Position im HTML-Baum (z. B. innerhalb eines
<main>-Elements)
Durch diese strukturanalytische Herangehensweise werden selbst dynamische Seiten wie WordPress-Blogs oder statische Site-Generator-Websites zuverlässig erkannt – ohne dass Entwickler:innen manuell eingreifen müssen.
Sicherheit durch Validierung: Nur vertrauenswürdige Daten nutzen
Bevor eine Spezifikation akzeptiert oder im Cache gespeichert wird, durchläuft sie eine mehrstufige Validierung:
- Mindestanzahl an Links: Die gefundenen Links müssen mindestens dreimal vorkommen.
- URL-Muster-Übereinstimmung: Mindestens 50 % der Links müssen dem vorhergesagten URL-Muster entsprechen.
- Inhaltsvalidierung: Falls der Artikel-Inhalt über einen CSS-Selektor extrahiert wird, muss der Text mindestens 80 Zeichen umfassen.
Erst wenn alle Kriterien erfüllt sind, wird die Spezifikation als gültig markiert. Fällt ein Test durch, wird die gesamte Extraktion verworfen – ein wichtiger Schutzmechanismus, um fehlerhafte oder manipulierte Daten auszuschließen.
Flexible Backends: Vom statischen Fetch bis zur interaktiven Session
pluckmd unterstützt drei verschiedene Backends, um Webseiten abzurufen:
- Statischer Fetch (z. B. über
curloderfetch) - Headless-Browser (z. B. Playwright)
- Manuelle Chrome-Session (für Seiten mit JavaScript-Rendering oder Login-Pflicht)
Ein entscheidender Vorteil: Die Extraktionslogik bleibt von der Quelle entkoppelt. Ob eine Seite statisch geladen oder dynamisch gerendert wird – die AdapterSpec bleibt identisch. Neue Backends lassen sich einfach hinzufügen, indem eine neue Backend-Klasse implementiert wird, die eine gemeinsame Schnittstelle erfüllt.
Der Agent als Backup: Wenn Heuristiken scheitern
Falls die automatischen Heuristiken keine Lösung finden und kein LLM konfiguriert ist, fällt pluckmd nicht in einen Fehlerzustand. Stattdessen:
- Es generiert eine Strukturbeschreibung der Seite inklusive potenzieller CSS-Selektoren.
- Diese wird als Request-Datei gespeichert.
- Ein externer KI-Agent (z. B. ein Coding-Assistent) kann die Datei auslesen und eine passende
AdapterSpecerstellen. - Die Lösung wird validiert, akzeptiert und im Cache gespeichert.
Auf diese Weise lassen sich auch komplexe Seiten wie login-pflichtige Portale oder Single-Page-Applikationen (SPAs) erschließen – ohne dass das pluckmd-Team manuell eingreifen muss.
Fazit: Ein universeller Ansatz für Web-Extraktion
pluckmd demonstriert, wie Web-Scraping durch Datenabstraktion und modulare Architekturen deutlich vereinfacht werden kann. Statt für jede neue Domain einen eigenen Parser zu schreiben, reicht eine einzige AdapterSpec, die von Heuristiken, LLMs oder sogar menschlichen Entwickler:innen stammen kann. Die klare Trennung zwischen Extraktion, Validierung und Backend-Logik macht das Tool zu einer robusten Lösung – besonders für KI-Agenten, die Wissen aus dem Web automatisiert verarbeiten müssen.
Wer ähnliche Ansätze verfolgt oder eigene Erfahrungen mit generischer Web-Extraktion hat, kann sich gerne in der Diskussion austauschen. Ein besonders spannender Aspekt bleibt die Abwägung zwischen Vertrauen in Heuristiken und dem Einsatz von Sprachmodellen – eine Frage, die in zukünftigen Versionen noch weiter optimiert werden könnte.
KI-Zusammenfassung
Tek bir JSON yapısıyla tüm web sitelerinden içerik çıkarmak mümkün. pluckmd’nin nasıl çalıştığını ve kod yerine veri odaklı yaklaşımların avantajlarını keşfedin.