Skip to main content

exa

Use Exa for web search, code context lookup, and company or people research via the official SDK, direct API calls, or MCP. Use when setting up Exa in a coding-agent environment, testing EXA_API_KEY, configuring Exa MCP, or looking up current web information.

ソース情報

リポジトリ
lefant/agent-skills
ソースの最終更新活動
2026年4月29日 15:23
検出された SKILL.md の言語
英語
スター
1
フォーク
1

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
4 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
exa
description
Use Exa for web search, code context lookup, and company or people research via the official SDK, direct API calls, or MCP. Use when setting up Exa in a coding-agent environment, testing EXA_API_KEY, configuring Exa MCP, or looking up current web information.
metadata
{"openclaw":{"emoji":"🔎","requires":{"env":"[Truncated]"},"primaryEnv":"EXA_API_KEY","skillKey":"exa","os":["linux","darwin","win32"]}}
# Exa Use this skill for Exa SDK, API, and MCP work. ## Requirement: EXA_API_KEY Before any Exa call, verify that `EXA_API_KEY` is present without printing it: ```bash test -n "${EXA_API_KEY:-}" ``` In OpenClaw, this skill declares `primaryEnv: EXA_API_KEY`, so prefer configuring `skills.entries.exa.apiKey` as a SecretRef. OpenClaw injects the key for the agent run. For manual use outside OpenClaw, export `EXA_API_KEY` from your local secret manager or an untracked local env file. Do not write API keys into tracked repo files or echo them into logs. ## First documentation step Read `references/llms.txt` first. That file is a full local snapshot of Exa's documentation index and points to: - JavaScript SDK docs - Exa MCP setup - coding-agent search and contents guides - vertical-specific references like code, company, news, and people search - Exa-published agent skill templates Important pages usually worth following from the index: - `https://exa.ai/docs/sdks/javascript-sdk.md` - `https://exa.ai/docs/reference/search-api-guide-for-coding-agents.md` - `https://exa.ai/docs/reference/contents-api-guide-for-coding-agents.md` - `https://exa.ai/docs/reference/exa-mcp.md` - `https://exa.ai/docs/reference/code-search-claude-skill.md` If the task is to add a brand-new Exa integration to a project, Exa's coding-agent docs recommend using Dashboard Onboarding first: - `https://dashboard.exa.ai/onboarding` ## Preferred in this repo For repo-local automation, prefer this order: 1. official JavaScript SDK (`exa-js`) via a small Node helper 2. direct HTTP (`/search`, `/contents`) for low-level debugging and inspection 3. MCP only when the user specifically wants tool-based agent integration Operational note: - if handwritten HTTP fails but the key should work, test the official SDK before concluding that the key is invalid - official SDK behavior can succeed where a naive raw HTTP request fails due to request-shape or compatibility details ## Known-good local helper pattern This skill ships reusable helper examples at: - `scripts/exa-search.mjs` - `scripts/exa-contents.mjs` Use it as a starting point for repo-local helpers. Recommended workflow: - keep reusable Exa helpers in the target repo's `scripts/` directory - install `exa-js` locally in the workspace; do not assume global npm access - if local tooling lives under `.tools/`, resolve packages from there - rely on OpenClaw SecretRef skill injection when running inside OpenClaw - for manual runs, load `EXA_API_KEY` from an untracked local secret source - emit compact normalized JSON for downstream agent use The bundled helper is designed to resolve `exa-js` from the current working directory or `.tools/`, so it works in restricted environments that do not allow global installs. Known-good invocation patterns once copied into a repo: ```bash node scripts/exa-search.mjs 'Altego AI founders' 3 node scripts/exa-contents.mjs 'https://altego.ai/about' highlights 2000 ``` Recommended JSON shape for helper output: - search helper: - `query` - `count` - `results[].title` - `results[].url` - `results[].publishedDate` - `results[].highlights` - contents helper: - `url` - `mode` - `result.title` - `result.url` - `result.publishedDate` - `result.author` - `result.highlights` - `result.text` ## Decision rule: search vs contents Use this default rule: - use `exa.search()` or `/search` when discovering sources - use `exa.getContents()` or `/contents` once you know the exact URL - request `highlights` first for token efficiency - request full `text` only when deeper reading is required ## Minimal SDK usage ```js import Exa from "exa-js"; const exa = new Exa(); const result = await exa.search("latest developments in AI safety research", { type: "auto", numResults: 10, contents: { highlights: { maxCharacters: 4000, }, }, }); ``` Minimal contents retrieval: ```js import Exa from "exa-js"; const exa = new Exa(); const { results } = await exa.getContents(["https://altego.ai/about"], { text: true, }); ``` ## Minimal curl usage Basic search request: ```bash curl -fsS 'https://api.exa.ai/search' \ -H "x-api-key: $EXA_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "query": "latest developments in AI safety research", "type": "auto", "numResults": 10, "contents": { "highlights": { "maxCharacters": 4000 } } }' ``` Use `type: "auto"` by default unless the user explicitly needs a different search mode. ## Known-good smoke test To verify the key works against a real company lookup, use this two-step flow. ### 1. Search for the target SDK/helper path: ```bash node scripts/exa-search.mjs 'co-founders of altego.ai' 3 ``` Raw HTTP path: ```bash curl -fsS 'https://api.exa.ai/search' \ -H "x-api-key: $EXA_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "query": "co-founders of altego.ai", "type": "auto", "numResults": 5, "contents": { "highlights": { "maxCharacters": 1200 } } }' ``` This query works as a smoke test, but search results may include noisy `AlterEgo` matches. ### 2. Fetch the authoritative page contents SDK/helper path: ```bash node scripts/exa-contents.mjs 'https://altego.ai/about' text 5000 ``` SDK path: ```js import Exa from "exa-js"; const exa = new Exa(); const { results } = await exa.getContents(["https://altego.ai/about"], { text: { maxCharacters: 5000 }, }); ``` Raw HTTP path: ```bash curl -fsS 'https://api.exa.ai/contents' \ -H "x-api-key: $EXA_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "urls": ["https://altego.ai/about"], "text": { "maxCharacters": 5000 } }' ``` At the time this skill was created, that page identified the founders as: - Mats Horn - Fabian Linzberger Use `/contents` when you already know the URL and want the cleanest answer from a known page. ## MCP Treat MCP as optional, not primary. Base MCP URL: ```text https://mcp.exa.ai/mcp ``` If the client supports key-in-URL remote config: ```text https://mcp.exa.ai/mcp?exaApiKey=YOUR_API_KEY ``` Optional tool restriction example: ```text https://mcp.exa.ai/mcp?exaApiKey=YOUR_API_KEY&tools=web_search_exa,get_code_context_exa,people_search_exa ``` Codex example: ```bash codex mcp add exa --url https://mcp.exa.ai/mcp ``` If tools do not appear after config changes, restart the MCP client. ## API usage guidance Prefer these defaults unless the task needs something else: - `type: "auto"` - compact `highlights` for search-result evidence - `/contents` or `exa.getContents()` for known URLs - domain filters only when the user needs tighter source control Typical categories: - `company` - `people` - `news` - `research paper` - `personal site` - `financial report` ## Common mistakes to avoid Avoid outdated or incorrect parameter shapes. Common mistakes called out in Exa docs include: - using deprecated `useAutoprompt` - using `includeUrls` or `excludeUrls` instead of domain filters - putting `text` or `highlights` at the top level of `/search` instead of under `contents` - confusing `/search` payload shape with `/contents` payload shape When unsure, read the relevant page from `references/llms.txt` and follow the current docs.
GitHubで見る