HTML na text pre LLM: Porovnanie Jina AI Reader a Defuddle

Ak pracujete s agentmi, RAG-om alebo dlhými promptmi, kvalita vstupu je polovica úspechu. Surové HTML je plné šumu – navigácia, reklamy, skripty, tracking pixely. Potrebujete čistý text/Markdown, ktorý LLM spracuje efektívne.

Dnes porovnáme dva elegantné open source nástroje, ktoré tento problém riešia – jeden cez API/self-hosted server, druhý ako lokálna knižnica.

Jina AI Reader

Prvý nástroj, ktorý si predstavíme, je Reader od Jina AI. Je to open source projekt, ktorý môžete používať buď ako webovú službu (API) alebo si ho nainštalovať na vlastný server.

Ako to funguje?

Cez API:

# Jednoduchšie už to byť nemôže
curl https://r.jina.ai/https://example.com/article

# Alebo web search s obsahom top 5 výsledkov
curl "https://s.jina.ai/ako+trénovať+LLM+model"

Self-hosted:

# Nainštalujete si to lokálne
git clone https://github.com/jina-ai/reader
cd reader
npm install
npm start

# Potom používate váš vlastný endpoint
curl http://localhost:3000/https://example.com/article

V oboch prípadoch dostanete späť čistý Markdown pripravený pre váš LLM.

Technické detaily

  • Programovací jazyk: TypeScript/Node.js
  • Licencia: Apache-2.0
  • Stack: Puppeteer (headless Chrome) → Readability.js → Turndown
  • Cena a limity:
    • r.jina.ai (read):
      • Bez API kľúča: 20 RPM (zadarmo)
      • S API kľúčom: 500 RPM (zadarmo)
      • Premium: 5000 RPM
    • s.jina.ai (search): účtuje ~10 000 tokenov/request
      • Nové API kľúče = 10 miliónov tokenov štartovací kredit
    • Self-hosted: Zadarmo (open source)

Dôležité: Jina AI Reader je kompletne open source! Môžete si ho stiahnuť z GitHubu a prevádzkovať lokálne. Výhoda: Puppeteer zvláda aj dynamické SPA stránky – nie len statické HTML.

Search funkcia (https://s.jina.ai/váš+query) vráti top 5 výsledkov už spracovaných Readerom – šetríte scraping kroky.

Defuddle

Druhý nástroj je od Stephana Anga (známeho ako kepano, tvorca Obsidianu). Defuddle je knižnica, ktorú si nainštalujete lokálne.

Ako to funguje?

npm install defuddle jsdom

V Node.js:

import { JSDOM } from 'jsdom';
import { Defuddle } from 'defuddle/node';

const dom = await JSDOM.fromURL('https://example.com/article');
const result = await Defuddle(dom, url, { markdown: true });

console.log(result.content);  // čistý Markdown
console.log(result.metadata); // autor, title, schema.org...

V browseri:

import Defuddle from 'defuddle';

const defuddle = new Defuddle(document);
const result = defuddle.parse();

Technické detaily

  • Programovací jazyk: TypeScript (~96% kódu)
  • Licencia: MIT
  • Cena: Zadarmo
  • Bundles:
    • Core: pre prehliadač, bez závislostí
    • Full: + math equation parsing (MathML/LaTeX)
    • Node.js: pre server s JSDOM

Defuddle má zaujímavú funkcionalitu – používa mobilné CSS štýly stránky na lepšie odhadnutie nepotrebných elementov. Plus štandardizuje HTML elementy (headingy, kód, poznámky, MathML) pre konzistentný výstup.

Porovnanie: Silné a slabé stránky

NástrojSilné stránkySlabé stránky
Jina ReaderNajrýchlejšia integrácia – prefix k URL a hotovo<br>• Bez kľúča zadarmo (20/500 RPM limity)<br>• Zvláda SPA/dynamické stránky (Puppeteer)<br>• PDF support out of the box<br>• Search API = top 5 výsledkov už spracovanýchZávislosť na externe (pri API verzii)<br>• Search míňa tokeny (~10k/request)<br>• Self-host = potrebujete server s Node.js
DefuddleLokálne a flexibilné – plná kontrola<br>• MIT licencia – priaznivá pre komercii<br>• Funguje v browseri aj Node.js<br>• Bohaté metadáta (schema.org, autor, atď.)<br>• 3 bundles pre rôzne use-casesNevyrieši načítanie (len čistí HTML)<br>• Na SPA treba vlastný render stack<br>• Viac práce s integráciou

Mini „cookbook“ pre LLM pipeline

API varianta (bez infra):

# 1. Získajte obsah
curl https://r.jina.ai/https://example.com/article > content.md

# 2. Pošlite do vášho LLM/embeddings
# Hotovo! Máte čistý Markdown

Self-host varianta (viac kontroly):

// 1. Fetch s Playwright/Puppeteer
const html = await page.content();

// 2. Defuddle → čistý obsah
const result = await Defuddle(html, url, { 
  markdown: true,
  removeImages: false 
});

// 3. Uložte a indexujte
await saveToVectorDB(result.content, result.metadata);

Hybrid: Jina Reader self-hosted + vlastná pipeline

# Spustite vlastný Reader server
docker run -p 3000:3000 jinaai/reader

# Používajte ako API ale lokálne
curl http://localhost:3000/https://example.com

Kedy siahnuť po ktorom?

  • „Chcem z URL → text hneď teraz“ (prototyp, skript, malá integrácia): Jina Reader cez r.jina.ai
  • „Potrebujem spracovať 1000+ stránok denne“: Jina Reader self-hosted alebo Defuddle + Playwright
  • „Mám vlastnú scraping infraštruktúru“: Defuddle na čistenie HTML
  • „Chcem web search + obsah“: Jina s.jina.ai (pozor na tokeny)

Záver v jednej vete

  • Jina Reader = „URL-prefix a hotovo“, super na rýchle použitie a dynamické weby; zadarmo pre r.jina.ai (20-500 RPM), ale s.jina.ai berie tokeny
  • Defuddle = „otvorená knižnica na poctivú očistu HTML“, ideálna do vlastnej pipeline s úplnou kontrolou, MIT licencia

Oba nástroje sú open source a doplňujú sa – Jina pre rýchly štart a SPA stránky, Defuddle pre custom integrácie a maximálnu kontrolu.

Odkazy