Autosearch fetch-jina

Fetch any public URL as clean Markdown via Jina Reader (r.jina.ai). Best for articles, docs, blog posts; weak on heavy anti-bot sites (Zhihu, Xiaohongshu).

install
source · Clone the upstream repo
git clone https://github.com/0xmariowu/Autosearch
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/0xmariowu/Autosearch "$T" && mkdir -p ~/.claude/skills && cp -r "$T/autosearch/skills/tools/fetch-jina" ~/.claude/skills/0xmariowu-autosearch-fetch-jina && rm -rf "$T"
manifest: autosearch/skills/tools/fetch-jina/SKILL.md
source content

Fetch public web pages as Markdown through Jina Reader's

https://r.jina.ai/<URL>
endpoint.

URL Fit

  • Best for articles, documentation, blogs, changelogs, and other mostly static public pages.
  • Weak for JavaScript-heavy pages, login-gated content, and anti-bot sites such as Zhihu or Xiaohongshu.
  • Use it as the first fast path when the task needs URL-to-Markdown content without browser state.

Invocation

Call

fetch.py
's async
fetch(url: str)
function with the original public URL:

result = await fetch("https://example.com/article")

Successful calls return:

{
    "ok": True,
    "url": "https://example.com/article",
    "reader_url": "https://r.jina.ai/https://example.com/article",
    "markdown": "...",
    "metadata": {"title": "...", "fetched_at": "...", "status": 200},
}

Failure Modes

  • Timeout, network errors, 4xx, and 5xx responses return
    ok: false
    with a structured
    reason
    .
  • Anti-bot refusals return
    reason: jina_refused
    and
    suggest_fallback: fetch-crawl4ai
    .
  • Runtime callers should choose their own fallback instead of assuming this tool retries.

Limits

  • Public Jina Reader availability and rate limits are upstream dependencies.
  • Some sites block reader-style fetches or return degraded content.
  • This skill does not execute JavaScript, click through consent flows, or authenticate.

Quality Bar

  • Evidence items have non-empty title and url.
  • No crash on empty or malformed API response.
  • Source channel field matches the channel name.