Communitygithub.com

iamvtor/opencode-setup

Search personal websites and blogs using Exa advanced search. Full filter support for finding individual perspectives, portfolios, and personal blogs. Use when searching for personal sites, blog posts, or portfolio websites.

What is opencode-setup?

opencode-setup is a OpenCode agent skill that search personal websites and blogs using Exa advanced search. Full filter support for finding individual perspectives, portfolios, and personal blogs. Use when searching for personal sites, blog posts, or portfolio websites.

Works with~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/iamvtor/opencode-setup/tree/HEAD/skills/exa-personal-site-search

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

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_results
  • type ("auto", "fast", "instant", "deep-lite", "deep", "deep-reasoning")
  • include_domains / exclude_domains
  • start_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_location
  • moderation
  • additional_queries
  • contents={"livecrawl_timeout": 10000, "max_age_hours": 0} for fresh content

Related Skills