Personal Site Search (Exa Python SDK)
Prerequisites
uv pip install exa-py
Set EXA_API_KEY environment variable. Get one at https://dashboard.exa.ai/api-keys
Approach
Use ctx_execute(language: "python", code: "...") to call Exa. Never run Exa searches in main context — always spawn Task agents that return only distilled output.
Supported Parameters
The personal site category supports ALL available parameters:
from exa_py import Exa
import os, json
exa = Exa(os.environ["EXA_API_KEY"])
response = exa.search(
"building side projects indie hacking journey 2025",
num_results=15,
category="personal site",
type="auto",
exclude_domains=["medium.com"], # exclude aggregators for independent blogs
contents={"highlights": True}
)
results = []
for r in response.results:
results.append({
"title": r.title,
"url": r.url,
"highlights": getattr(r, 'highlights', [])
})
print(json.dumps(results, indent=2))
Full Parameter Support
query(required)num_resultstype("auto", "fast", "instant", "deep-lite", "deep", "deep-reasoning")include_domains/exclude_domainsstart_published_date/end_published_date(ISO 8601)start_crawl_date/end_crawl_date(ISO 8601)include_text/exclude_text(single-item arrays only; multi-item causes 400)contents={"text": {"max_characters": N}}contents={"highlights": True}/contents={"highlights": {"query": "..."}}contents={"summary": True}/contents={"summary": {"query": "..."}}user_locationmoderationadditional_queriescontents={"livecrawl_timeout": 10000, "max_age_hours": 0}for fresh content