Exa Web Toolkit

Web toolkit powered by Exa, tuned for scientific and technical content.

How to use it

  1. Hit Copy the whole skill.
  2. Claude: ⋯ → Download .md, then Customize → Skills → Add → Upload skill.
    ChatGPT: make a Project and paste it into Instructions.
    Neither? Paste it at the top of a new chat — it works for that chat.
  3. Describe your job in plain words. The AI follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit K-Dense-AI/scientific-agent-skills/skills/exa-search#main ~/.claude/skills/exa-search

For one project only, change the path to .claude/skills/exa-search.

Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Show the full text103 lines
exa-search/SKILL.md103 lines4.9 KBpushed 52d agoRawView on GitHub

Exa Web Toolkit

A skill for web-powered research tasks backed by Exa: web search and URL extraction. Exa's index combines high-quality keyword and semantic retrieval, which makes it well-suited to scientific, technical, and conceptual queries.

Routing — pick the right capability

Read the user's request and match it to one of the capabilities below. Read the corresponding reference file for detailed instructions before running commands.

User wants to... Capability Where
Look something up, research a topic, find current info Web Search references/web-search.md
Fetch content from a specific URL (webpage, article, PDF) Web Extract references/web-extract.md
Install or authenticate Setup Below

Decision guide

  • Default to Web Search for topic lookups, research questions, or "what is X?" queries. When the topic is scientific or technical, pass --category "research paper" to bias toward scholarly sources, and/or an academic --include-domains allowlist. See references/web-search.md for the two-pass academic strategy.
  • Use Web Extract when the user provides a URL or asks you to read/fetch a specific page. Prefer this over the built-in WebFetch for batch extraction (multiple URLs in one call) and for academic PDFs.

Academic source priority

For technical or scientific queries, prefer academic and scientific sources:

  • Peer-reviewed journal articles and conference proceedings over blog posts or news
  • Preprints (arXiv, bioRxiv, medRxiv) when peer-reviewed versions aren't available
  • Institutional and government sources (NIH, WHO, NASA, NIST) over commercial sites
  • Primary research over secondary summaries

Two levers to steer Exa toward scholarly content:

  1. --category "research paper" biases retrieval toward scholarly sources.
  2. --include-domains with a scholarly allowlist (arxiv.org, nature.com, pubmed.ncbi.nlm.nih.gov, etc.) restricts the domain pool.

Combine both for strictly academic results. See references/web-search.md for the full pattern.

When citing academic sources, include author names and publication year where available (e.g., Smith et al., 2025) in addition to the standard citation format. If a DOI is present, prefer the DOI link.


Setup

This skill uses the exa-py Python SDK. The scripts in scripts/ declare their dependencies via PEP 723 inline metadata, so you can run them directly with uv run without a separate install step:

uv run --with exa-py python "$SKILL_PATH/scripts/exa_search.py" --help

If you prefer a persistent install:

uv pip install "exa-py>=1.14.0"

Authentication

All commands read the API key from the EXA_API_KEY environment variable. Get your Exa API key at dashboard.exa.ai/api-keys.

First, check if a .env file exists in the project root and contains EXA_API_KEY. If so, load it:

dotenv -f .env run -- uv run --with exa-py python "$SKILL_PATH/scripts/exa_search.py" "your query"

If dotenv isn't available, install it: uv pip install python-dotenv[cli].

If there's no .env, export the key for the session:

export EXA_API_KEY="your-key"

Verify by running any script with --help — it will exit cleanly if the key is set and auth-check runs only when a real query is made.

Tracking header

Every script in this skill sets the x-exa-integration request header to k-dense-ai--scientific-agent-skills so Exa can attribute usage from the K-Dense AI scientific-agent-skills repo to this integration. Do not remove or rename this header when adapting the scripts.


Files in this skill

  • SKILL.md — this file (routing and setup)
  • references/web-search.md — detailed web search reference with academic strategy
  • references/web-extract.md — URL content extraction reference
  • scripts/exa_search.py — CLI wrapper around client.search_and_contents
  • scripts/exa_extract.py — CLI wrapper around client.get_contents
1---
2name: exa-search
3description: "Web toolkit powered by Exa, tuned for scientific and technical content. Use this skill when the user needs to search the web or fetch/extract URL content. Covers: web search (semantic lookups, research, current info — with optional research-paper category and academic domain filtering) and URL extraction (fetching pages, articles, academic PDFs in batch). Use this skill for web-related tasks when the user wants high-quality search or scholarly filtering via category=research paper. Triggers on requests to search, look up, fetch a page, or extract an article."
4compatibility: Requires exa-py Python SDK, an EXA_API_KEY, and internet access.
5license: MIT
6metadata:
7 version: "1.2"
8 skill-author: Exa
9 website: https://exa.ai
10 docs: https://exa.ai/docs
11 openclaw:
12 primaryEnv: EXA_API_KEY
13 envVars:
14 - name: EXA_API_KEY
15 required: true
16 description: Exa search API key.
17---
18 
19# Exa Web Toolkit
20 
21A skill for web-powered research tasks backed by [Exa](https://exa.ai): web search and URL extraction. Exa's index combines high-quality keyword and semantic retrieval, which makes it well-suited to scientific, technical, and conceptual queries.
22 
23## Routing — pick the right capability
24 
25Read the user's request and match it to one of the capabilities below. Read the corresponding reference file for detailed instructions before running commands.
26 
27| User wants to... | Capability | Where |
28|---|---|---|
29| Look something up, research a topic, find current info | **Web Search** | `references/web-search.md` |
30| Fetch content from a specific URL (webpage, article, PDF) | **Web Extract** | `references/web-extract.md` |
31| Install or authenticate | **Setup** | Below |
32 
33### Decision guide
34 
35- **Default to Web Search** for topic lookups, research questions, or "what is X?" queries. When the topic is scientific or technical, pass `--category "research paper"` to bias toward scholarly sources, and/or an academic `--include-domains` allowlist. See `references/web-search.md` for the two-pass academic strategy.
36- **Use Web Extract** when the user provides a URL or asks you to read/fetch a specific page. Prefer this over the built-in WebFetch for batch extraction (multiple URLs in one call) and for academic PDFs.
37 
38### Academic source priority
39 
40For technical or scientific queries, prefer academic and scientific sources:
41- Peer-reviewed journal articles and conference proceedings over blog posts or news
42- Preprints (arXiv, bioRxiv, medRxiv) when peer-reviewed versions aren't available
43- Institutional and government sources (NIH, WHO, NASA, NIST) over commercial sites
44- Primary research over secondary summaries
45 
46Two levers to steer Exa toward scholarly content:
471. `--category "research paper"` biases retrieval toward scholarly sources.
482. `--include-domains` with a scholarly allowlist (arxiv.org, nature.com, pubmed.ncbi.nlm.nih.gov, etc.) restricts the domain pool.
49 
50Combine both for strictly academic results. See `references/web-search.md` for the full pattern.
51 
52When citing academic sources, include author names and publication year where available (e.g., [Smith et al., 2025](url)) in addition to the standard citation format. If a DOI is present, prefer the DOI link.
53 
54---
55 
56## Setup
57 
58This skill uses the [`exa-py`](https://github.com/exa-labs/exa-py) Python SDK. The scripts in `scripts/` declare their dependencies via PEP 723 inline metadata, so you can run them directly with `uv run` without a separate install step:
59 
60```bash
61uv run --with exa-py python "$SKILL_PATH/scripts/exa_search.py" --help
62```
63 
64If you prefer a persistent install:
65 
66```bash
67uv pip install "exa-py>=1.14.0"
68```
69 
70### Authentication
71 
72All commands read the API key from the `EXA_API_KEY` environment variable. Get your Exa API key at [dashboard.exa.ai/api-keys](https://dashboard.exa.ai/api-keys).
73 
74First, check if a `.env` file exists in the project root and contains `EXA_API_KEY`. If so, load it:
75 
76```bash
77dotenv -f .env run -- uv run --with exa-py python "$SKILL_PATH/scripts/exa_search.py" "your query"
78```
79 
80If `dotenv` isn't available, install it: `uv pip install python-dotenv[cli]`.
81 
82If there's no `.env`, export the key for the session:
83 
84```bash
85export EXA_API_KEY="your-key"
86```
87 
88Verify by running any script with `--help` — it will exit cleanly if the key is set and auth-check runs only when a real query is made.
89 
90### Tracking header
91 
92Every script in this skill sets the `x-exa-integration` request header to `k-dense-ai--scientific-agent-skills` so Exa can attribute usage from the K-Dense AI scientific-agent-skills repo to this integration. Do not remove or rename this header when adapting the scripts.
93 
94---
95 
96## Files in this skill
97 
98- `SKILL.md` — this file (routing and setup)
99- `references/web-search.md` — detailed web search reference with academic strategy
100- `references/web-extract.md` — URL content extraction reference
101- `scripts/exa_search.py` — CLI wrapper around `client.search_and_contents`
102- `scripts/exa_extract.py` — CLI wrapper around `client.get_contents`
103 

Discussion

Alternatives

Also in Papers & citations