Fetch public web pages with Jina AI Reader API and convert them into LLM-friendly Markdown. Use when an agent needs to read, summarize, quote briefly, extract facts from, or inspect a public URL that normal browsing, scraping, search snippets, or direct fetch tools cannot read cleanly, including JavaScript-heavy pages, reader-hostile pages, X/Twitter posts and threads, articles, GitHub pages, and PDFs. Trigger when the user asks to use Jina, use r.jina.ai, read an otherwise unreadable site, rec…
Fetch public web pages with Jina AI Reader API and convert them into LLM-friendly Markdown.
Use when an agent needs to read, summarize, quote briefly, extract facts from, or inspect a public URL that normal browsing, scraping, search snippets, or direct fetch tools cannot read cleanly, including JavaScript-heavy pages, reader-hostile pages, X/Twitter posts and threads, articles, GitHub pages, and PDFs.
Trigger when the user asks to use Jina, use r.jina.ai, read an otherwise unreadable site, recover readable text from a URL, read an X/Twitter post by URL, or turn a webpage into Markdown.
Stronger alternatives
This repository is archived — consider an actively maintained alternative.
The script prints Markdown from https://r.jina.ai/. If JINAAPIKEY is set, it sends it as a bearer token; otherwise it uses public unauthenticated access.
For a one-off fetch without the script:
curl "https://r.jina.ai/https://example.com/page"
Workflow
Try ordinary browsing, web search, or direct fetch first when those tools are already suitable.
Use scripts/read_url.py when the page is public but normal tools return a blank page, script shell, paywall/login-like wrapper, poor snippets, blocked parsing, or incomplete text.
Also prefer the script for X/Twitter, long URLs, URLs containing #, or repeated use.
Summarize or extract only the relevant content requested by the user.
Mention uncertainty when Reader returns sparse output, a login wall, deleted content, rate-limit text, or an obviously incomplete page.
Do not treat Jina Reader as authorization bypass. It can only reliably read content that is publicly accessible to Jina.
X/Twitter Notes
Use the canonical post URL when possible: https://x.com/<handle>/status/<id>.
twitter.com URLs are acceptable; the script leaves the original URL intact.
Reader may fail on deleted, protected, age-gated, region-blocked, or login-only posts.
For threads, fetch the thread URL first. If the returned Markdown only includes the first post, ask for or locate the individual post URLs before claiming full thread coverage.
Output Handling
Keep direct quotations short and attribute them to the fetched URL.
For news, legal, financial, medical, or other high-stakes/current claims, corroborate with additional reliable sources before presenting conclusions.
If the task is to archive or preserve a post, save the Markdown to a user-facing file only when the user asks.