~/utility/rag-web-crawler

RAG Web Crawler — Webseiten zu Markdown & Text-Chunks

Crawlt öffentliche Webseiten zu sauberem Markdown, Klartext und überlappenden Text-Chunks mit Quell-URL und Zeichenpositionen, bereit zum Einbetten für RAG.

RAG-Daten TypeScriptMozilla ReadabilityjsdomTurndown Weltweit
proooxy/rag-web-crawler — Steckbrief
Kategorieutility / RAG-Daten
SpracheTypeScript
StackTypeScript, Mozilla Readability, jsdom, Turndown
MärkteWeltweit
Outputsauberes, RAG-fertiges JSON

Hauptfunktionen

Sauberes Markdown und Klartext für jede Seite, mit Überschriften, Listen, Links, Codeblöcken und einfachen Tabellen

Chunks, bereit zum Einbetten, die sich überlappen und an Absatz- oder Satzgrenzen enden, jeder mit stabiler id, Quell-URL und Titel sowie exakten Zeichenpositionen zum Zitieren

Hauptinhalt zuerst: Menüs, Kopf- und Fußzeilen und Seitenleisten fallen weg, und CSS-Selektoren entfernen alles Weitere, was Sie angeben

Folgt Links innerhalb jeder Website bis zu fünf Ebenen tief und lädt jede Seite nur einmal

Suche statt URLs: Jede Ergebnisseite einer Suchanfrage wird wie eine Start-URL gecrawlt (kostenpflichtiger Apify-Plan nötig)

robots.txt wird standardmäßig beachtet, mit höflichen Pausen zwischen Anfragen an dieselbe Website

Seiten bleiben in ihrer Sprache — Englisch, Chinesisch und andere — ohne Übersetzung

Ein Status und ein Fehlercode für jede Seite und für jeden Lauf eine Zusammenfassung mit Zählern und Abbruchgrund

Anwendungsfälle

  • Die Wissensbasis eines RAG-Chatbots aus Dokumentation und Hilfeseiten aufbauen
  • KI-Agenten auf aktuelle Webseiten stützen, die sie zitieren können
  • Eine Liste von Artikeln in Embeddings für die semantische Suche umwandeln
  • Die Seiten sammeln, die eine Suche zu einem Thema findet, in ihrer Originalsprache
  • Einen Vektorspeicher regelmäßig aktualisieren, mit Chunk-ids, die gleich bleiben, solange sich die Seite nicht ändert
  • KI-Agenten über den MCP-Server von Apify Webseiten als Markdown bereitstellen

Eingabeparameter

ParameterTypErforderlichBeschreibung
startUrlsarrayoptionalURLs öffentlicher Seiten zum Crawlen, bis zu 1.000
querystringoptionalSuchanfrage, deren Ergebnisseiten gecrawlt werden (kostenpflichtiger Apify-Plan nötig)
queriesarrayoptionalWeitere Suchanfragen, zusammengeführt mit query
maxResultsPerQuerynumberoptionalGecrawlte Suchergebnisse pro Anfrage (Standard 5, höchstens 50)
maxPagesnumberoptionalHöchstzahl verschiedener Seiten, die ein Lauf einplant (Standard 20, höchstens 1.000)
maxDepthnumberoptionalWie viele Link-Ebenen innerhalb jeder Website verfolgt werden (Standard 0 = nur Start-URLs, höchstens 5)
maxConcurrencynumberoptionalGleichzeitig verarbeitete Seiten (Standard 3)
maxSearchRequestsnumberoptionalSuchanfragen pro Lauf, Wiederholungen eingeschlossen (Standard 10, 0 = keine Suche)
maxFetchRequestsnumberoptionalAlle Netzwerkversuche pro Lauf, robots.txt und Wiederholungen eingeschlossen (Standard 100)
requestTimeoutSecsnumberoptionalTimeout jeder Anfrage in Sekunden (Standard 30)
maxResponseBytesnumberoptionalGrößte akzeptierte Seitenantwort (Standard 2 MiB)
maxContentCharsnumberoptionalLängster pro Seite behaltener Text in Zeichen (Standard 50.000)
maxOutputBytesnumberoptionalGesamtausgabe pro Lauf (Standard 20 MiB)
respectRobotsTxtbooleanoptionalZuerst die robots.txt jeder Website prüfen (standardmäßig an)
onlyMainContentbooleanoptionalNur den Hauptinhalt der Seite behalten (standardmäßig an)
removeSelectorsarrayoptionalCSS-Selektoren der Elemente, die vor der Extraktion entfernt werden
chunkSizenumberoptionalChunk-Länge in Zeichen, nicht in Tokens (Standard 1.000)
chunkOverlapnumberoptionalZeichen, die aufeinanderfolgende Chunks teilen (Standard 150)

Beispielausgabe

Eine gespeicherte Seite aus einem echten Lauf, Text gekürzt und nur einer ihrer fünf Chunks gezeigt:

 1{
 2  "schemaVersion": "1.0",
 3  "url": "https://www.w3.org/WAI/tutorials/tables/one-header/",
 4  "title": "Tables with One Header",
 5  "description": "Accessibility resources free online from the international standards organization: W3C Web Accessibility Initiative (WAI).",
 6  "languageCode": "en",
 7  "canonicalUrl": "https://www.w3.org/WAI/tutorials/tables/one-header/",
 8  "markdown": "# Tables with One Header\n\nin [Tables Tutorial](https://www.w3.org/WAI/tutorials/tables/)\n\n## Overview\n\n…",
 9  "text": "Tables with One Header\n\nin Tables Tutorial\n\nOverview\n\nThis page covers tables that have one simple header for rows or one simple header for columns. …",
10  "chunks": [
11    {
12      "id": "495cb4e58e13bbf9b5cdbe922f7ea652973ca4dfda61b952aaa021db045a450c",
13      "index": 0,
14      "text": "Tables with One Header\n\nin Tables Tutorial\n\nOverview\n\nThis page covers tables that have one simple header for rows or one simple header for columns. …",
15      "startChar": 0,
16      "endChar": 988,
17      "sourceUrl": "https://www.w3.org/WAI/tutorials/tables/one-header/",
18      "title": "Tables with One Header"
19    }
20  ],
21  "contentTruncated": false,
22  "sources": [],
23  "crawl": {
24    "depth": 0,
25    "httpStatusCode": 200,
26    "loadedAt": "2026-10-19T07:03:53.643Z",
27    "contentType": "text/html",
28    "renderingMode": "http",
29    "extractionMethod": "main"
30  }
31}

Die Chunk-Positionen zählen Unicode-Codepoints in text. Jeder Lauf schreibt außerdem REQUESTS, ein Ergebnis pro Seite mit Status und Fehlercode, und OUTPUT, die Zusammenfassung des Laufs mit Zählern, Abbruchgrund und berechneten Events.

Tipps

  • Nutzen Sie id als Datensatz-ID in Ihrem Vektorspeicher. Sie bleibt über Läufe hinweg gleich, solange sich Seite und Chunk-Einstellungen nicht ändern; schreiben Sie die Chunks bei einem geplanten Lauf nach id, ersetzen sie die alten statt Kopien anzulegen.
  • Fangen Sie mit wenigen Seiten an. Prüfen Sie das Markdown Ihrer Zielseiten, bevor Sie maxPages oder maxDepth erhöhen, und entfernen Sie Reste wie Boxen mit verwandten Links per removeSelectors.
  • Lesen Sie REQUESTS zusammen mit dem Dataset. Ein Lauf kann erfolgreich sein, obwohl einzelne Seiten übersprungen wurden oder fehlschlugen, und jede nennt den Grund.

FAQ

Was unterscheidet ihn von einem allgemeinen Web Scraper?
Sie geben URLs oder eine Suchanfrage an, keine Selektoren. Er behält den Hauptinhalt jeder Seite als Markdown und Klartext und schneidet den Text in Chunks, bereit zum Einbetten, jeder mit URL, Titel und exakten Zeichenpositionen der Seite, damit eine Antwort ihre Quelle nennen kann.
Brauche ich einen API-Key?
Keinen externen API-Key, weder zum Crawlen noch für die Suche. Sie brauchen ein Apify-Konto; wer den Actor über die Apify-API aufruft, nutzt sein Apify-Token.
Rendert er JavaScript?
Nein. Er liest Seiten per HTTP; eine Seite, die JavaScript braucht, um ihren Text anzuzeigen, kann mit NO_CONTENT scheitern oder unvollständig ankommen. Testen Sie zuerst einige Ihrer Zielseiten.
Welche Seiten kann er lesen?
Öffentliche HTML-, Markdown- und Klartextseiten. Logins, Cookies, Paywalls, CAPTCHAs, Proxys, PDFs und Bilder gehören nicht dazu, und Adressen aus privaten Netzen sowie URLs mit Zugangsdaten werden abgelehnt.
Ist das Crawlen von Websites erlaubt?
Das Crawlen öffentlich zugänglicher, nicht personenbezogener Daten ist im Allgemeinen legal, doch Seiteninhalte sind oft urheberrechtlich geschützt, und manche Websites schränken das Crawlen in ihren Nutzungsbedingungen ein. Der Crawler beachtet standardmäßig robots.txt; für die Nutzung der gesammelten Inhalte sind Sie verantwortlich.

verwandt in ~/utility

RAG Web Crawler — Webseiten zu Markdown & Text-Chunks ausführen oder ein individuelles Projekt anfragen

In wenigen Minuten mit der Extraktion auf Apify starten, oder mich für einen maßgeschneiderten Scraper und eine RAG-Pipeline exakt nach Quelle und Schema beauftragen.

auf Apify ausführen individuelle Daten anfragen