Modell / Datensatz
jina-ai/reader avatar
jina-ai/reader

jina-ai/reader: URL zu Markdown per Präfix, mit Grenzen bei Suche und Caching

Convert any URL to an LLM-friendly input with a simple prefix https://r.jina.ai/

12.000 Sterne882 ForksTypeScriptApache-2.0

Auf einen Blick

Was ist das?
Reader von Jina AI wandelt URLs über einen Proxy in LLM-freundliches Markdown um und liefert eine Websuche, die die Top-5-Treffer gleich mitliest. Der Open-Source-Zweig läuft ohne MongoDB, was den Betrieb vereinfacht, aber die SaaS-Speicherschicht ausklammert.
Für wen ist es gedacht?
Wer aus einer bestehenden Pipeline heraus Webseiten, PDFs oder Office-Dateien in Text verwandeln will, kann den Proxy von r.jina.ai ausprobieren, ohne selbst Chrome, PDF.js oder LibreOffice zu betreiben. Wer eine eigene, auditierbare Verarbeitungskette braucht oder die SaaS-Speicherschicht erwartet, sollte den OSS-Zweig nicht mit dem gehosteten Dienst verwechseln, denn die MongoDB-Anbindung fehlt hier.
Darf ich es kommerziell nutzen?
Ja. Apache-2.0 ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 117 Tagen.
In welcher Sprache ist es geschrieben?
Hauptsächlich TypeScript, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Ein Präfix statt einer eigenen Rendering-Kette

Das Problem, das Reader adressiert, ist unspektakulär und trotzdem lästig: Ein Sprachmodell kann eine URL nicht lesen. Wer eine Seite in eine RAG-Pipeline oder einen Agenten einspeisen will, braucht den Text, nicht das HTML, und schon gar nicht das CSS. Reader setzt an dieser Stelle einen Proxy davor. Aus https://en.wikipedia.org/wiki/Artificial_intelligence wird https://r.jina.ai/https://en.wikipedia.org/wiki/Artificial_intelligence, und zurück kommt Markdown. Die Zielgruppe sind Entwickler, die Dokumente, Webseiten und PDFs in einen Kontext bringen wollen, ohne selbst einen Headless-Browser, einen PDF-Parser und einen Office-Konverter zu betreiben. Das README formuliert den Anspruch knapp: Reader solle "improved output for your agent and RAG systems at no cost" liefern. Ob der Output tatsächlich besser ist, hängt vom Einzelfall ab und lässt sich aus dem Repository nicht belegen.

Zwei Endpunkte, zwei unterschiedliche Datenflüsse

r.jina.ai ist der einfache Fall: eine URL hinein, Markdown heraus. Der Dienst entscheidet laut README zwischen zwei Abrufwegen, einem vollständig gerenderten Headless-Chrome und einem leichteren curl-impersonate, und wählt "intelligently" zwischen beiden. Wie diese Entscheidung im Detail getroffen wird, geht aus dem vorliegenden Material nicht hervor. PDFs laufen über PDF.js, Office-Dateien über LibreOffice und werden anschließend als HTML oder PDF weiterverarbeitet. Bilder werden von einem Vision-Language-Modell beschrieben, damit ein rein textbasiertes Modell überhaupt eine Chance hat, sie einzuordnen. s.jina.ai ist der aufwendigere Pfad: Der Dienst sucht, holt die Top-5-Ergebnisse und wendet auf jede dieser URLs die Technik von r.jina.ai an. Das ist der eigentliche Unterschied zu den üblichen Suchfunktionen in Agent-Frameworks, die laut README oft nur Titel, URL und Beschreibung der Suchmaschinen-API zurückgeben. Wer tiefer lesen will, muss dort selbst nachladen. Reader nimmt einem das ab, bezahlt dafür aber mit fünf Seiten Abruf pro Query.

Header steuern das Ausgabeformat

Die Formatsteuerung läuft über Request-Header, nicht über Pfadsegmente. x-respond-with kennt mehrere Werte. markdown liefert Markdown, ohne durch readability zu gehen, html gibt documentElement.outerHTML zurück, text den innerText des Bodys. screenshot und pageshot liefern eine URL zum Screenshot, wobei pageshot laut README versucht, die ganze Seite statt nur des Viewports zu erfassen. frontmatter ersetzt den Standardheader (Title und URL Source) durch einen YAML-Block. Das README zeigt das explizit: curl -H 'X-Respond-With: frontmatter' 'https://r.jina.ai/https://example.com' ergibt einen Block mit title, description und url, gefolgt vom Markdown. Der Hinweis auf markdown ist praktisch relevant, weil dieser Modus readability umgeht. Wer sich über fehlende oder anders strukturierte Absätze wundert, sollte zuerst prüfen, ob der Standardpfad die Ursache ist. Für die vollständige Liste der Optionen verweist das README auf https://r.jina.ai/docs und auf src/dto/crawler-options.ts als Quelle im Repository.

Suche mit site-Filter, aber ohne Tiefenkontrolle

Für die Websuche gibt es einen site-Parameter, der mehrfach angegeben werden kann. Das README zeigt: curl 'https://s.jina.ai/When%20was%20Jina%20AI%20founded%3F?site=jina.ai&site=github.com'. Die Query muss URL-kodiert sein, sonst bricht der Aufruf. Eine Möglichkeit, die Anzahl der abgerufenen Ergebnisse zu steuern, ist im vorliegenden Material nicht dokumentiert. Die Top-5-Abrufe scheinen fest zu sein. Das ist ein Kostenfaktor, den man einplanen sollte: Jede Suchanfrage löst fünf vollständige Seitenabrufe aus, inklusive Rendering, wo nötig. Wer nur einen Treffer braucht, zahlt trotzdem für fünf. Umgekehrt ist die Tiefe ein Vorteil gegenüber Such-APIs, die nur Metadaten liefern. Der Trade-off ist klar: mehr Kontext, mehr Latenz, mehr Bandbreite.

Lokaler Betrieb ohne MongoDB, mit optionalem Bucket

Der wichtigste Unterschied zwischen dem Repository und dem gehosteten Dienst steht in einem Hinweis im README: "This repository is the open source branch of the codebase behind https://r.jina.ai and https://s.jina.ai. It runs in stateless or bucket-cached mode; the MongoDB-backed SaaS storage layer is not included here." Wer den OSS-Zweig startet, bekommt also keine persistente Speicherschicht. Der Eintrag vom 2026-04 beschreibt den Zustand genauer: Der OSS-Zweig läuft standardmäßig stateless, optional mit MinIO- oder S3-kompatiblem Bucket-Caching über docker compose. Wie die Umgebungsvariablen für MinIO heißen, geht aus dem vorliegenden README-Ausschnitt nicht hervor. Wer das aufsetzen will, muss die docker-compose-Konfiguration im Repository selbst lesen. Für einfache Tests reicht der stateless-Modus. Für wiederkehrende Abrufe derselben Seiten ist das Bucket-Caching der Punkt, an dem sich Latenz und Last spürbar ändern dürften, sofern die Konfiguration korrekt greift.

Wo Reader die falsche Wahl ist

Die Abhängigkeit von einem externen Dienst ist die offensichtlichste Einschränkung. Wer r.jina.ai nutzt, schickt jede zu lesende URL an Jina AI. Für interne Wikis, Kundendokumente oder Seiten hinter einer Authentifizierung ist das in vielen Organisationen keine Option. Der OSS-Zweig lässt sich zwar selbst betreiben, aber die Dokumentation im vorliegenden Material deckt den vollständigen lokalen Betrieb nicht ab. Ein zweiter Punkt: Die Websuche über s.jina.ai liefert fünf Seiten pro Anfrage, ohne dokumentierte Möglichkeit, das zu reduzieren. Für Anwendungen mit engen Latenzbudgets oder hohem Query-Volumen ist das ein Problem. Drittens: Wer bereits eine eigene Rendering-Pipeline mit Playwright oder Puppeteer betreibt und die Extraktion selbst kontrollieren will, gewinnt durch Reader wenig. Die Entscheidung zwischen Headless-Chrome und curl-impersonate nimmt einem der Dienst ab, aber genau diese Kontrolle ist für manche Teams der Grund, überhaupt selbst zu rendern. Reader ist ein Werkzeug für Teams, die diese Kontrolle abgeben können oder wollen.

Was Reader von einem Scraper unterscheidet

Der naheliegende Vergleich ist ein selbstgebauter Scraper, etwa Playwright plus Readability plus Turndown. Der Unterschied liegt nicht in der Ausgabe, sondern im Betrieb. Ein eigener Scraper braucht einen Browser, einen Proxy-Rotation-Mechanismus, eine Warteschlange und jemanden, der sich um fehlgeschlagene Abrufe kümmert. Reader bündelt das hinter einem URL-Präfix. Der Preis ist die Abhängigkeit und die begrenzte Einsicht in die Abrufentscheidung. Ein zweiter Vergleich: Such-APIs wie die von Google oder Bing liefern Metadaten, Reader liefert Inhalte. Für einen Agenten, der eine Frage beantworten soll, ist der Unterschied erheblich, weil die Antwort oft im Seitentext steht und nicht in der Beschreibung. Wer nur Links sammeln will, fährt mit einer Such-API günstiger. Wer die Antwort aus dem Text braucht, spart sich mit Reader den zweiten Schritt.

Lizenz, Wartung und was vor dem Einsatz zu prüfen ist

Reader steht unter Apache-2.0. Das erlaubt kommerzielle Nutzung und Modifikation, verlangt aber die Beibehaltung der Lizenzhinweise und enthält eine Patentklausel. Wer den Code in ein eigenes Produkt einbettet, sollte die Bedingungen selbst prüfen; das README gibt dazu keine Hinweise. Zur Wartung: Das Repository ist nicht archiviert, der letzte Push liegt laut Metadaten im Mai 2026, und das README dokumentiert Änderungen bis April 2026. Die Versionshinweise zeigen einen größeren Umbau im März 2025, bei dem Reader von Firebase zu einem Cloud-Run-Image mit MongoDB Atlas migrierte, sowie eine Entkopplung der Speicherschicht im Dezember 2025. Diese Umbauten betreffen den SaaS-Zweig; der OSS-Zweig folgt mit Verzögerung, wie der Eintrag vom 2026-04 nahelegt. Wer den OSS-Zweig produktiv betreibt, sollte damit rechnen, dass die Synchronisierung mit dem SaaS-Code nicht sofort erfolgt. Ein konkretes Upgrade-Risiko lässt sich aus dem Material nicht ableiten, weil keine Versionsnummern oder Changelog-Details vorliegen.

Redaktionelles Fazit

Wer aus einer bestehenden Pipeline heraus Webseiten, PDFs oder Office-Dateien in Text verwandeln will, kann den Proxy von r.jina.ai ausprobieren, ohne selbst Chrome, PDF.js oder LibreOffice zu betreiben. Wer eine eigene, auditierbare Verarbeitungskette braucht oder die SaaS-Speicherschicht erwartet, sollte den OSS-Zweig nicht mit dem gehosteten Dienst verwechseln, denn die MongoDB-Anbindung fehlt hier. Vor dem Einsatz lohnt der Blick in src/dto/crawler-options.ts, weil dort die Header-Optionen und ihre Validierung liegen, und ein Test mit einer Seite, die auf x-respond-with: markdown angewiesen ist, weil dieser Pfad readability umgeht.

Offizielle Quellen

  1. Issues
  2. jina-ai/reader on GitHub
  3. License: Apache-2.0
  4. Project website
  5. README
Community-Notizen

Community-Notizen