exa-search skill
Use this skill to search the web, find similar pages, or fetch page contents via the Exa AI search engine — fast, neural, and certificate-aware.
The skill invokes a native Rust binary (bin/exa-search) via Bash. Run install.sh once to build it.
When to Use / When NOT to Use
✅ USE when:
- - Searching the web for articles, documentation, repos, papers, tools, people, companies
- Finding recent news or announcements (use
livecrawl: "fallback" or "always" for recency) - Fetching full text of a known URL without browser automation
- Finding pages similar to a reference URL (competitor analysis, alternative tools)
- Any web lookup that isn't a specific tweet or video
❌ NOT FOR:
- - Fetching tweets/X posts → use
fxtwitter skill (Exa can't fetch tweet URLs) - Downloading video/audio → use INLINECODE5
- Scraping dynamic or Cloudflare-protected pages → use INLINECODE6
- Local file/code search → use
rg, find, or INLINECODE9 - Querying structured APIs (GitHub, weather, etc.) → use their dedicated skills
- When the query is already a direct URL with known content → prefer
get_contents action
Prerequisites
- -
EXA_API_KEY set in ~/.openclaw/workspace/.env (get one at exa.ai) - Rust installed (
rustup) — only needed for the one-time build - INLINECODE14 binary present (run
bash install.sh to build)
Actions
1. Search
CODEBLOCK0
Full params:
CODEBLOCK1
type options: auto (default) · neural · INLINECODE19
livecrawl options:
- -
"never" — fastest (~300-600ms), pure cached index. Best for reference material, docs, courses. - INLINECODE22 — use cache, crawl live if not cached. Good default.
- INLINECODE23 — prefer live crawl. Slower but fresher.
- INLINECODE24 — always crawl live. For breaking news or rapidly-changing pages.
2. Find Similar
Find pages similar to a given URL:
CODEBLOCK2
Params: same contents options as search (text, highlights, summary, livecrawl)
3. Get Contents
Fetch full contents for one or more URLs:
CODEBLOCK3
Output format
All actions return JSON on stdout:
CODEBLOCK4
On error:
CODEBLOCK5
The formatted field is ready-to-use markdown — you can send it directly to the user.
Speed reference (same query, 3 runs)
| Mode | Avg | Peak |
|---|
| INLINECODE30 (instant) | ~440ms | 308ms |
| Default (no livecrawl) |
~927ms | 629ms |
~18.7× faster than Exa MCP at peak.
Helper: load API key
CODEBLOCK6
Or export once at the top of a longer workflow:
CODEBLOCK7
Invocation pattern
CODEBLOCK8
The formatted field in the output is ready-to-use markdown — send it directly to the user.
Mode selection (be deliberate, every search)
| Situation | INLINECODE32 | INLINECODE33 |
|---|
| Docs, tutorials, courses, reference material | INLINECODE34 | INLINECODE35 |
| General research — people, tools, concepts, companies |
"never" |
"neural" |
| Exact function names, error messages, package names |
"never" |
"keyword" |
| Recent releases, changelogs, GitHub repos |
"fallback" |
"auto" |
| News or announcements from the last 1-2 weeks |
"fallback" |
"neural" |
| Breaking news, live prices, today's events |
"always" |
"neural" |
| Unsure |
"fallback" |
"auto" |
Default when in doubt: livecrawl: "never", type: "neural" — fastest, works for 80% of searches.
When to use each action
search (default) — use for any information retrieval from a query string.
find_similar — use when you have a URL and want more like it: related articles, alternative tools, similar repos, competing products.
CODEBLOCK9
get_contents — use when you have a specific URL and need its full text: docs pages, blog posts, GitHub READMEs, papers. Faster than search when the URL is already known.
echo '{"action":"get_contents","urls":["https://..."],"text":{"max_characters":3000}}' | EXA_API_KEY="$EXA_API_KEY" ...
Enrich results for research tasks
When writing reports, summaries, or comparing multiple results — request highlights or summary per result:
CODEBLOCK11
Note: highlights/summary add latency (~200-500ms extra). Only use when you actually need them.
exa-search 技能
使用此技能通过 Exa AI 搜索引擎搜索网页、查找相似页面或获取页面内容——快速、神经化且具备证书感知能力。
该技能通过 Bash 调用原生 Rust 二进制文件 (bin/exa-search)。运行 install.sh 一次即可构建。
何时使用 / 何时不使用
✅ 使用场景:
- - 搜索网页上的文章、文档、代码仓库、论文、工具、人物、公司
- 查找最新新闻或公告(使用 livecrawl: fallback 或 always 获取最新内容)
- 无需浏览器自动化即可获取已知 URL 的全文
- 查找与参考 URL 相似的页面(竞品分析、替代工具)
- 任何非特定推文或视频的网页查找
❌ 不适用于:
- - 获取推文/X 帖子 → 使用 fxtwitter 技能(Exa 无法获取推文 URL)
- 下载视频/音频 → 使用 yt-dlp
- 抓取动态或 Cloudflare 保护的页面 → 使用 scrapling
- 本地文件/代码搜索 → 使用 rg、find 或 grep
- 查询结构化 API(GitHub、天气等)→ 使用专用技能
- 当查询已经是已知内容的直接 URL 时 → 优先使用 get_contents 操作
前提条件
- - 在 ~/.openclaw/workspace/.env 中设置 EXAAPIKEY(在 exa.ai 获取)
- 安装 Rust(rustup)——仅用于一次性构建
- 存在 bin/exa-search 二进制文件(运行 bash install.sh 构建)
操作
1. 搜索
bash
echo {query:你的查询内容,num_results:5} \
| EXAAPIKEY=$(grep -E ^EXAAPIKEY= ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d ) \
~/.openclaw/workspace/skills/exa-search/bin/exa-search
完整参数:
json
{
query: rust 异步编程,
num_results: 5,
type: neural,
livecrawl: never,
include_domains: [github.com, docs.rs],
exclude_domains: [reddit.com],
startpublisheddate: 2025-01-01,
endpublisheddate: 2026-12-31,
category: 研究论文,
use_autoprompt: true,
text: { max_characters: 2000 },
highlights: { numsentences: 3, highlightsper_url: 2 },
summary: { query: 关键要点 }
}
type 选项: auto(默认)· neural · keyword
livecrawl 选项:
- - never — 最快(约 300-600ms),纯缓存索引。最适合参考资料、文档、课程。
- fallback — 使用缓存,未缓存时实时抓取。良好的默认选项。
- preferred — 优先实时抓取。较慢但更新鲜。
- always — 始终实时抓取。适用于突发新闻或快速变化的页面。
2. 查找相似
查找与给定 URL 相似的页面:
bash
echo {action:findsimilar,url:https://example.com,numresults:5} \
| EXAAPIKEY=$(grep -E ^EXAAPIKEY= ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d ) \
~/.openclaw/workspace/skills/exa-search/bin/exa-search
参数: 与搜索相同的内容选项(text、highlights、summary、livecrawl)
3. 获取内容
获取一个或多个 URL 的完整内容:
bash
echo {action:getcontents,urls:[https://example.com,https://other.com],text:{maxcharacters:1000}} \
| EXAAPIKEY=$(grep -E ^EXAAPIKEY= ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d ) \
~/.openclaw/workspace/skills/exa-search/bin/exa-search
输出格式
所有操作在标准输出返回 JSON:
json
{
ok: true,
action: search,
results: [
{
url: https://...,
title: ...,
score: 0.87,
author: ...,
published_date: 2026-01-15,
image: https://...,
favicon: https://...,
text: ...,
highlights: [...],
summary: ...
}
],
formatted: ## 标题\n...
}
错误时:
json
{ ok: false, error: ... }
formatted 字段是可直接使用的 Markdown 格式——可以直接发送给用户。
速度参考(相同查询,3 次运行)
| 模式 | 平均 | 峰值 |
|---|
| livecrawl: never(即时) | ~440ms | 308ms |
| 默认(无 livecrawl) |
~927ms | 629ms |
峰值速度比 Exa MCP 快约 18.7 倍。
辅助:加载 API 密钥
bash
EXAAPIKEY=$(grep -E ^EXAAPIKEY= ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d )
或在较长工作流顶部一次性导出:
bash
export EXAAPIKEY=$(grep -E ^EXAAPIKEY= ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d )
echo {query:...} | ~/.openclaw/workspace/skills/exa-search/bin/exa-search
调用模式
bash
EXAAPIKEY=$(grep -E ^EXAAPIKEY= ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d )
echo {query:...,num_results:5,livecrawl:never} \
| EXAAPIKEY=$EXAAPIKEY ~/.openclaw/workspace/skills/exa-search/bin/exa-search
输出中的 formatted 字段是可直接使用的 Markdown 格式——直接发送给用户。
模式选择(每次搜索都要慎重考虑)
| 场景 | livecrawl | type |
|---|
| 文档、教程、课程、参考资料 | never | neural |
| 一般研究——人物、工具、概念、公司 |
never | neural |
| 精确函数名、错误信息、包名 | never | keyword |
| 最新版本、更新日志、GitHub 仓库 | fallback | auto |
| 过去 1-2 周的新闻或公告 | fallback | neural |
| 突发新闻、实时价格、今日事件 | always | neural |
| 不确定时 | fallback | auto |
默认推荐: livecrawl: never,type: neural——最快,适用于 80% 的搜索。
何时使用每个操作
search(默认)——用于从查询字符串中检索任何信息。
find_similar——当你有 URL 并想要更多类似内容时使用:相关文章、替代工具、相似仓库、竞品。
bash
echo {action:findsimilar,url:https://...,numresults:5,livecrawl:never} | EXAAPIKEY=$EXAAPIKEY ...
get_contents——当你有特定 URL 并需要其全文时使用:文档页面、博客文章、GitHub README、论文。当 URL 已知时比 search 更快。
bash
echo {action:getcontents,urls:[https://...],text:{maxcharacters:3000}} | EXAAPIKEY=$EXAAPIKEY ...
为研究任务丰富结果
在撰写报告、摘要或比较多个结果时——请求每个结果