# Jina Reader

> 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.

- Skill: `s-hiraoku/jina-reader` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add s-hiraoku/jina-reader`
- Raw SKILL.md: https://api.skillmd.com/api/skills/s-hiraoku/jina-reader/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: s-hiraoku (https://skillmd.com/u/s-hiraoku)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/s-hiraoku/jina-reader

---


# Jina Reader

Use this workflow when a public URL is hard to read through normal tools: JavaScript-heavy pages, reader-hostile articles, X/Twitter posts and threads, GitHub pages, PDFs, or pages that return incomplete snippets.

## Quick Start

Use the bundled script when a public URL is hard to read through normal tools. The helper lives with the installed skill:

```bash
# project-scope skill install
python3 .claude/skills/jina-reader/scripts/read_url.py "https://x.com/user/status/1234567890"

# user-scope skill install
python3 ~/.claude/skills/jina-reader/scripts/read_url.py "https://x.com/user/status/1234567890"
```

In this source repository, use `python3 skills/jina-reader/scripts/read_url.py ...` instead. If the skill is loaded from a plugin cache, run the helper at `<plugin-root>/skills/jina-reader/scripts/read_url.py`.

The script prints Markdown from `https://r.jina.ai/`. If `JINA_API_KEY` is set, it sends it as a bearer token; otherwise it uses public unauthenticated access.

For a one-off fetch without the script:

```bash
curl "https://r.jina.ai/https://example.com/page"
```

## Workflow

1. Try ordinary browsing, web search, or direct fetch first when those tools are already suitable.
2. Use the installed helper at `.claude/skills/jina-reader/scripts/read_url.py`, `~/.claude/skills/jina-reader/scripts/read_url.py`, or `<plugin-root>/skills/jina-reader/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.
3. Also prefer the script for X/Twitter, long URLs, URLs containing `#`, or repeated use.
4. Summarize or extract only the relevant content requested by the user.
5. Mention uncertainty when Reader returns sparse output, a login wall, deleted content, rate-limit text, or an obviously incomplete page.
6. 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.

## Script

The installed helper accepts the same arguments in project, user, and plugin installs:

```bash
python3 .claude/skills/jina-reader/scripts/read_url.py URL [--output path] [--timeout seconds] [--header "Name: value"]
```

Use `--output` when the fetched Markdown is large or the user asked for a saved artifact.

## Final Report

Include:

- URL fetched
- whether Jina Reader returned complete-looking Markdown or partial/blocked content
- summary, extracted facts, or saved output requested by the user
- corroboration used for current or high-stakes claims

