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에서 보기