jina-aiWeb reading and searching via Jina AI APIs. Fetch clean markdown from URLs (r.jina.ai), web search (s.jina.ai), or deep multi-step research (DeepSearch).
Install via ClawdBot CLI:
clawdbot install adhishthite/jina-aiWeb reading and search powered by Jina AI. Requires JINA_API_KEY environment variable.
Trust & Privacy: By using this skill, URLs and queries are transmitted to Jina AI (jina.ai). Only install if you trust Jina with your data.
Model Invocation: This skill may be invoked autonomously by the model without explicit user trigger (standard for integration skills). If you prefer manual-only invocation, disable model invocation in your OpenClaw skill settings.
Get your API key: https://jina.ai/ β Dashboard β API Keys
This skill makes HTTP requests to the following external endpoints only:
| Endpoint | URL Pattern | Purpose |
|----------|-------------|---------|
| Reader API | https://r.jina.ai/{url} | Sends URL content request to Jina for conversion to markdown |
| Search API | https://s.jina.ai/{query} | Sends search query to Jina for web search results |
| DeepSearch API | https://deepsearch.jina.ai/v1/chat/completions | Sends research question to Jina for multi-step research |
No other external network calls are made by this skill.
JINA_API_KEY is transmitted to Jina's servers (via Authorization header)JINA_API_KEY environment variable; no other env vars are readX-Set-Cookie header is available for authenticated content but is opt-in only| Endpoint | Base URL | Purpose |
|----------|----------|---------|
| Reader | https://r.jina.ai/{url} | Convert any URL β clean markdown |
| Search | https://s.jina.ai/{query} | Web search with LLM-friendly results |
| DeepSearch | https://deepsearch.jina.ai/v1/chat/completions | Multi-step research agent |
All endpoints accept Authorization: Bearer $JINA_API_KEY.
r.jina.ai)Fetches any URL and returns clean, LLM-friendly content. Works with web pages, PDFs, and JS-heavy sites.
# Plain text output
curl -s "https://r.jina.ai/https://example.com" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "Accept: text/plain"
# JSON output (includes url, title, content, timestamp)
curl -s "https://r.jina.ai/https://example.com" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "Accept: application/json"
Or use the helper script: scripts/jina-reader.sh
| Header | Query Param | Values | Default | Description |
|--------|-------------|--------|---------|-------------|
| X-Respond-With | respondWith | content, markdown, html, text, screenshot, pageshot, vlm, readerlm-v2 | content | Output format |
| X-Retain-Images | retainImages | none, all, alt, all_p, alt_p | all | Image handling |
| X-Retain-Links | retainLinks | none, all, text, gpt-oss | all | Link handling |
| X-With-Generated-Alt | withGeneratedAlt | true/false | false | Auto-caption images |
| X-With-Links-Summary | withLinksSummary | true | - | Append links section |
| X-With-Images-Summary | withImagesSummary | true/false | false | Append images section |
| X-Token-Budget | tokenBudget | number | - | Max tokens for response |
| Header | Query Param | Description |
|--------|-------------|-------------|
| X-Target-Selector | targetSelector | Only extract matching elements |
| X-Wait-For-Selector | waitForSelector | Wait for elements before extracting |
| X-Remove-Selector | removeSelector | Remove elements before extraction |
| Header | Query Param | Description |
|--------|-------------|-------------|
| X-Timeout | timeout | Page load timeout (1-180s) |
| X-Respond-Timing | respondTiming | When page is "ready" (html, network-idle, etc.) |
| X-No-Cache | noCache | Bypass cached content |
| X-Proxy | proxy | Country code or auto for proxy |
| X-Set-Cookie | setCookies | Forward cookies for authenticated content |
# Extract main content, remove navigation elements
curl -s "https://r.jina.ai/https://example.com/article" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "X-Retain-Images: none" \
-H "X-Remove-Selector: nav, footer, .sidebar, .ads" \
-H "Accept: text/plain"
# Extract specific section
curl -s "https://r.jina.ai/https://example.com" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "X-Target-Selector: article.main-content"
# Parse a PDF
curl -s "https://r.jina.ai/https://example.com/paper.pdf" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "Accept: text/plain"
# Wait for dynamic content
curl -s "https://r.jina.ai/https://spa-app.com" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "X-Wait-For-Selector: .loaded-content" \
-H "X-Respond-Timing: network-idle"
s.jina.ai)Web search returning LLM-friendly results with full page content.
# Plain text
curl -s "https://s.jina.ai/your+search+query" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "Accept: text/plain"
# JSON
curl -s "https://s.jina.ai/your+search+query" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "Accept: application/json"
Or use the helper script: scripts/jina-search.sh "
| Param | Values | Description |
|-------|--------|-------------|
| site | domain | Limit to specific site |
| type | web, images, news | Search type |
| num / count | 0-20 | Number of results |
| gl | country code | Geo-location (e.g. us, in) |
| filetype | extension | Filter by file type |
| intitle | string | Must appear in title |
All Reader parameters also work on search results.
# Site-scoped search
curl -s "https://s.jina.ai/OpenAI+GPT-5?site=reddit.com" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "Accept: text/plain"
# News search
curl -s "https://s.jina.ai/latest+AI+news?type=news&num=5" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "Accept: application/json"
# Search for PDFs
curl -s "https://s.jina.ai/machine+learning+survey?filetype=pdf&num=5" \
-H "Authorization: Bearer $JINA_API_KEY"
Multi-step research agent that combines search + reading + reasoning. OpenAI-compatible chat completions API.
curl -s "https://deepsearch.jina.ai/v1/chat/completions" \
-H "Authorization: Bearer $JINA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jina-deepsearch-v1",
"messages": [{"role": "user", "content": "Your research question here"}],
"stream": false
}'
Or use the helper script: scripts/jina-deepsearch.sh "
Use for complex research requiring multiple sources and reasoning chains.
| Script | Purpose |
|--------|---------|
| scripts/jina-reader.sh | Read any URL as markdown |
| scripts/jina-search.sh | Web search |
| scripts/jina-deepsearch.sh | Deep multi-step research |
| scripts/jina-reader.py | Python reader (no deps beyond stdlib) |
| Need | Use |
|------|-----|
| Fetch a URL as markdown | Reader β better than web_fetch for JS-heavy sites |
| Web search | Search β LLM-friendly results |
| Complex multi-source research | DeepSearch |
| Parse a PDF from URL | Reader β pass PDF URL directly |
| Screenshot a page | Reader with X-Respond-With: screenshot |
| Extract structured data | Reader with jsonSchema param |
AI Usage Analysis
Analysis is being generated⦠refresh in a few seconds.
Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).
AI-optimized web search via Tavily API. Returns concise, relevant results for AI agents.
This skill should be used when users need to search the web for information, find current content, look up news articles, search for images, or find videos. It uses DuckDuckGo's search API to return results in clean, formatted output (text, markdown, or JSON). Use for research, fact-checking, finding recent information, or gathering web resources.
Web search and content extraction via Brave Search API. Use for searching documentation, facts, or any web content. Lightweight, no browser required.
Search indexed Discord community discussions via Answer Overflow. Find solutions to coding problems, library issues, and community Q&A that only exist in Discord conversations.
Multi search engine integration with 17 engines (8 CN + 9 Global). Supports advanced search operators, time filters, site search, privacy engines, and WolframAlpha knowledge queries. No API keys required.