# Jina Reader test plan (fixed BEFORE any r.jina.ai call)
Written: 2026-10-20 10:43:44 UTC+8. No API key, no account, no cookies. Grok Bot box (Linux), curl.

## Vendor claims (source: https://jina.ai/reader/, fetched 2026-10-20 10:43 UTC+8; strings confirmed in raw HTML)
C1 "Convert a URL to LLM-friendly input by prepending r.jina.ai." + "Boilerplate such as navigation, headers, footers, and ads is stripped, and the main content is converted to Markdown."
C2 "the default engine renders the page in a headless browser so client-side JavaScript executes before extraction"
C3 "The best part? It's free!" ; rate-limit table: Reader r.jina.ai "w/o API Key: 20 RPM", average latency 7.9s. Also "Reader natively supports PDF reading."
Pricing: free without key (20 RPM); free API key with free tokens; paid = token top-ups (https://jina.ai/pricing/ returned HTTP 404 on 2026-10-20, so no per-token price recorded).

## Pages and ground truth
P1 https://en.wikipedia.org/wiki/Markdown  GT = MediaWiki API plain-text extract (action=query&prop=extracts&explaintext). Metric: share of GT sentences (>=40 chars) found in Jina output after normalisation (sentence recall). Links: count of article wikilinks from API (prop=links, ns0) vs distinct en.wikipedia.org/wiki/ links in output. Images: images in our own fetched article HTML (<img> inside mw-parser-output) vs ![...] in output.
P2 https://docs.python.org/3/library/json.html  GT = our own fetch, text of <div role="main"> via Python html.parser. Metric: sentence recall; code examples: count of '>>> ' lines in GT vs output.
P3 https://quotes.toscrape.com/js/  (quotes are inserted by JavaScript). GT = the 10 quotes in the page's inline <script> data. Metric: quotes found in output (default engine); also compare plain HTML fetch (expected 0 quotes in static HTML).
P4 https://arxiv.org/pdf/2310.19923v4 (PDF, example given by Jina's own FAQ). GT = abstract text from https://export.arxiv.org/api/query?id_list=2310.19923v4. Metric: abstract sentence recall.
Boilerplate markers (count in output, 0 = clean): P1 "Jump to content","Main menu","Create account","Log in","Donate","Privacy policy","Powered by MediaWiki"; P2 "Navigation","Theme","previous |","Report a bug","Show source","Copyright".
Rate limit (C3): 22 GET requests to https://r.jina.ai/https://example.com as fast as possible, sequential, within one minute; record HTTP codes. Expect 429 after ~20 if the limit is enforced as documented.

## Rating rules
C1: V2 if P1 and P2 recall >= 95% and <= 1 boilerplate marker each; V1 if recall >= 80% or markers 2-3; F otherwise.
C2: V2 if >= 9/10 quotes on P3 with default engine; V1 1-8; F 0.
C3: V2 if all test calls succeed without key/login and observed limit is consistent with 20 RPM; V1 if free but limits differ materially; F if a key or payment was required.
Overall = worst of C1/C2 unless C3 fails (then F). PDF result reported under C3/extra.
