skills/community/exa-web-search/SKILL.md
Exa.ai semantic web search: neural search, crawl, contents extraction, highlights, date filtering
npx skillsauth add alphaonedev/openclaw-graph exa-web-searchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill enables semantic web searches using Exa.ai's neural engine, allowing for advanced querying, web crawling, content extraction, highlighting key sections, and date-based filtering. It's designed for AI agents to fetch and process web data efficiently in tasks requiring real-time or historical information retrieval.
Use this skill when you need to perform semantic searches beyond keyword matching, such as analyzing trends from recent articles, extracting data from crawled pages, or highlighting relevant content. Apply it in research tasks, content aggregation, or when integrating web data into AI workflows, especially if other search tools fail to capture contextual nuances.
Always initialize with authentication via environment variables. For CLI, run searches in a loop for batch processing. In code, use asynchronous API calls to avoid blocking. Structure queries with specific flags for precision, and parse responses to extract highlights or metadata. Test with small limits first to verify results.
Exa.ai uses a CLI tool and REST API. Set your API key in $EXA_API_KEY before use.
CLI Commands:
exa search --query "AI advancements" --limit 5 --date-after "2023-01-01"
Example snippet:
result = subprocess.run(['exa', 'search', '--query', 'climate change'], capture_output=True)
print(result.stdout)
exa search --query "open source tools" --crawl-depth 2 --extract-content
Snippet:
import subprocess
output = subprocess.check_output(['exa', 'search', '--query', 'web frameworks', '--highlight'])
API Endpoints:
POST https://api.exa.ai/v1/search
Request body format (JSON):
{
"query": "machine learning",
"limit": 10,
"date_after": "2022-01-01",
"crawl_depth": 1
}
Snippet:
import requests
headers = {'Authorization': f'Bearer {os.environ.get("EXA_API_KEY")}'}
response = requests.post('https://api.exa.ai/v1/search', headers=headers, json={"query": "neural networks"})
data = response.json()
GET https://api.exa.ai/v1/status to verify service availability.Config Formats:
.exa-config.json file for persistent settings:
{
"default_limit": 20,
"api_endpoint": "https://api.exa.ai/v1/search"
}
Load it in code: with open('.exa-config.json') as f: config = json.load(f)Integrate by setting $EXA_API_KEY in your environment or passing it via headers. For AI agents, wrap API calls in try-except blocks and use async libraries like aiohttp for non-blocking operations. Combine with other skills by piping results, e.g., feed search outputs to a summarization tool. Ensure rate limits (e.g., 100 requests/min) are respected by adding delays. For clustering, reference the 'community' tag to link with related skills.
Check HTTP status codes in API responses (e.g., 401 for unauthorized, access via response.status_code). For CLI, parse stderr for messages like "Query exceeded limits". Common errors include invalid queries (fix by validating input strings) or network issues (retry with exponential backoff). In code, use:
if response.status_code != 200:
raise Exception(f"API error: {response.json().get('error')}")
Log errors with details like error codes and retry up to 3 times for transient failures.
tools
Root web development: project structure, tooling selection, deployment decisions
development
WebAssembly: Rust/Go/C to WASM, wasm-bindgen, Emscripten, WASM Component Model
development
Vue 3: Composition API script setup, Pinia, Vue Router 4, SFCs, Vite, Nuxt 3
tools
Tailwind CSS 4: utility classes, config, JIT, arbitrary values, darkMode, plugins, shadcn/ui