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)
- r.jina.ai (read):
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ástroj | Silné stránky | Slabé stránky |
---|---|---|
Jina Reader | • Najrý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ých | • Závislosť na externe (pri API verzii)<br>• Search míňa tokeny (~10k/request)<br>• Self-host = potrebujete server s Node.js |
Defuddle | • Loká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-cases | • Nevyrieš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), ales.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
- Jina AI Reader na GitHube – zdrojový kód a inštalačné inštrukcie
- Defuddle na GitHube
- Jina AI Reader – produktová stránka – API dokumentácia a limity
- Defuddle Playground – vyskúšajte online