{
  "schemaVersion": "1.0",
  "item": {
    "slug": "exa-search-rust",
    "name": "Exa Search (Rust)",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Prompt-Surfer/exa-search-rust",
    "canonicalUrl": "https://clawhub.ai/Prompt-Surfer/exa-search-rust",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/exa-search-rust",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=exa-search-rust",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "Cargo.toml",
      "README.md",
      "SKILL.md",
      "install.sh",
      "src/client.rs",
      "src/main.rs"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/exa-search-rust"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/exa-search-rust",
    "agentPageUrl": "https://openagent3.xyz/skills/exa-search-rust/agent",
    "manifestUrl": "https://openagent3.xyz/skills/exa-search-rust/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/exa-search-rust/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "exa-search skill",
        "body": "Use this skill to search the web, find similar pages, or fetch page contents via the Exa AI search engine — fast, neural, and certificate-aware.\n\nThe skill invokes a native Rust binary (bin/exa-search) via Bash. Run install.sh once to build it."
      },
      {
        "title": "When to Use / When NOT to Use",
        "body": "✅ USE when:\n\nSearching the web for articles, documentation, repos, papers, tools, people, companies\nFinding recent news or announcements (use livecrawl: \"fallback\" or \"always\" for recency)\nFetching full text of a known URL without browser automation\nFinding pages similar to a reference URL (competitor analysis, alternative tools)\nAny web lookup that isn't a specific tweet or video\n\n❌ NOT FOR:\n\nFetching tweets/X posts → use fxtwitter skill (Exa can't fetch tweet URLs)\nDownloading video/audio → use yt-dlp\nScraping dynamic or Cloudflare-protected pages → use scrapling\nLocal file/code search → use rg, find, or grep\nQuerying structured APIs (GitHub, weather, etc.) → use their dedicated skills\nWhen the query is already a direct URL with known content → prefer get_contents action"
      },
      {
        "title": "Prerequisites",
        "body": "EXA_API_KEY set in ~/.openclaw/workspace/.env (get one at exa.ai)\nRust installed (rustup) — only needed for the one-time build\nbin/exa-search binary present (run bash install.sh to build)"
      },
      {
        "title": "1. Search",
        "body": "echo '{\"query\":\"your query here\",\"num_results\":5}' \\\n  | EXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"') \\\n  ~/.openclaw/workspace/skills/exa-search/bin/exa-search\n\nFull params:\n\n{\n  \"query\": \"rust async programming\",\n  \"num_results\": 5,\n  \"type\": \"neural\",\n  \"livecrawl\": \"never\",\n  \"include_domains\": [\"github.com\", \"docs.rs\"],\n  \"exclude_domains\": [\"reddit.com\"],\n  \"start_published_date\": \"2025-01-01\",\n  \"end_published_date\": \"2026-12-31\",\n  \"category\": \"research paper\",\n  \"use_autoprompt\": true,\n  \"text\": { \"max_characters\": 2000 },\n  \"highlights\": { \"num_sentences\": 3, \"highlights_per_url\": 2 },\n  \"summary\": { \"query\": \"key takeaways\" }\n}\n\ntype options: auto (default) · neural · keyword\n\nlivecrawl options:\n\n\"never\" — fastest (~300-600ms), pure cached index. Best for reference material, docs, courses.\n\"fallback\" — use cache, crawl live if not cached. Good default.\n\"preferred\" — prefer live crawl. Slower but fresher.\n\"always\" — always crawl live. For breaking news or rapidly-changing pages."
      },
      {
        "title": "2. Find Similar",
        "body": "Find pages similar to a given URL:\n\necho '{\"action\":\"find_similar\",\"url\":\"https://example.com\",\"num_results\":5}' \\\n  | EXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"') \\\n  ~/.openclaw/workspace/skills/exa-search/bin/exa-search\n\nParams: same contents options as search (text, highlights, summary, livecrawl)"
      },
      {
        "title": "3. Get Contents",
        "body": "Fetch full contents for one or more URLs:\n\necho '{\"action\":\"get_contents\",\"urls\":[\"https://example.com\",\"https://other.com\"],\"text\":{\"max_characters\":1000}}' \\\n  | EXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"') \\\n  ~/.openclaw/workspace/skills/exa-search/bin/exa-search"
      },
      {
        "title": "Output format",
        "body": "All actions return JSON on stdout:\n\n{\n  \"ok\": true,\n  \"action\": \"search\",\n  \"results\": [\n    {\n      \"url\": \"https://...\",\n      \"title\": \"...\",\n      \"score\": 0.87,\n      \"author\": \"...\",\n      \"published_date\": \"2026-01-15\",\n      \"image\": \"https://...\",\n      \"favicon\": \"https://...\",\n      \"text\": \"...\",\n      \"highlights\": [\"...\"],\n      \"summary\": \"...\"\n    }\n  ],\n  \"formatted\": \"## [Title](url)\\n...\"\n}\n\nOn error:\n\n{ \"ok\": false, \"error\": \"...\" }\n\nThe formatted field is ready-to-use markdown — you can send it directly to the user."
      },
      {
        "title": "Speed reference (same query, 3 runs)",
        "body": "ModeAvgPeaklivecrawl: \"never\" (instant)~440ms308msDefault (no livecrawl)~927ms629ms\n\n~18.7× faster than Exa MCP at peak."
      },
      {
        "title": "Helper: load API key",
        "body": "EXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"')\n\nOr export once at the top of a longer workflow:\n\nexport EXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"')\necho '{\"query\":\"...\"}' | ~/.openclaw/workspace/skills/exa-search/bin/exa-search"
      },
      {
        "title": "Invocation pattern",
        "body": "EXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"')\necho '{\"query\":\"...\",\"num_results\":5,\"livecrawl\":\"never\"}' \\\n  | EXA_API_KEY=\"$EXA_API_KEY\" ~/.openclaw/workspace/skills/exa-search/bin/exa-search\n\nThe formatted field in the output is ready-to-use markdown — send it directly to the user."
      },
      {
        "title": "Mode selection (be deliberate, every search)",
        "body": "SituationlivecrawltypeDocs, tutorials, courses, reference material\"never\"\"neural\"General research — people, tools, concepts, companies\"never\"\"neural\"Exact function names, error messages, package names\"never\"\"keyword\"Recent releases, changelogs, GitHub repos\"fallback\"\"auto\"News or announcements from the last 1-2 weeks\"fallback\"\"neural\"Breaking news, live prices, today's events\"always\"\"neural\"Unsure\"fallback\"\"auto\"\n\nDefault when in doubt: livecrawl: \"never\", type: \"neural\" — fastest, works for 80% of searches."
      },
      {
        "title": "When to use each action",
        "body": "search (default) — use for any information retrieval from a query string.\n\nfind_similar — use when you have a URL and want more like it: related articles, alternative tools, similar repos, competing products.\n\necho '{\"action\":\"find_similar\",\"url\":\"https://...\",\"num_results\":5,\"livecrawl\":\"never\"}' | EXA_API_KEY=\"$EXA_API_KEY\" ...\n\nget_contents — use when you have a specific URL and need its full text: docs pages, blog posts, GitHub READMEs, papers. Faster than search when the URL is already known.\n\necho '{\"action\":\"get_contents\",\"urls\":[\"https://...\"],\"text\":{\"max_characters\":3000}}' | EXA_API_KEY=\"$EXA_API_KEY\" ..."
      },
      {
        "title": "Enrich results for research tasks",
        "body": "When writing reports, summaries, or comparing multiple results — request highlights or summary per result:\n\n{\n  \"query\": \"...\",\n  \"num_results\": 5,\n  \"highlights\": { \"num_sentences\": 3, \"highlights_per_url\": 2 },\n  \"summary\": { \"query\": \"key takeaways for a developer\" }\n}\n\nNote: highlights/summary add latency (~200-500ms extra). Only use when you actually need them."
      }
    ],
    "body": "exa-search skill\n\nUse this skill to search the web, find similar pages, or fetch page contents via the Exa AI search engine — fast, neural, and certificate-aware.\n\nThe skill invokes a native Rust binary (bin/exa-search) via Bash. Run install.sh once to build it.\n\nWhen to Use / When NOT to Use\n\n✅ USE when:\n\nSearching the web for articles, documentation, repos, papers, tools, people, companies\nFinding recent news or announcements (use livecrawl: \"fallback\" or \"always\" for recency)\nFetching full text of a known URL without browser automation\nFinding pages similar to a reference URL (competitor analysis, alternative tools)\nAny web lookup that isn't a specific tweet or video\n\n❌ NOT FOR:\n\nFetching tweets/X posts → use fxtwitter skill (Exa can't fetch tweet URLs)\nDownloading video/audio → use yt-dlp\nScraping dynamic or Cloudflare-protected pages → use scrapling\nLocal file/code search → use rg, find, or grep\nQuerying structured APIs (GitHub, weather, etc.) → use their dedicated skills\nWhen the query is already a direct URL with known content → prefer get_contents action\nPrerequisites\nEXA_API_KEY set in ~/.openclaw/workspace/.env (get one at exa.ai)\nRust installed (rustup) — only needed for the one-time build\nbin/exa-search binary present (run bash install.sh to build)\nActions\n1. Search\necho '{\"query\":\"your query here\",\"num_results\":5}' \\\n  | EXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"') \\\n  ~/.openclaw/workspace/skills/exa-search/bin/exa-search\n\n\nFull params:\n\n{\n  \"query\": \"rust async programming\",\n  \"num_results\": 5,\n  \"type\": \"neural\",\n  \"livecrawl\": \"never\",\n  \"include_domains\": [\"github.com\", \"docs.rs\"],\n  \"exclude_domains\": [\"reddit.com\"],\n  \"start_published_date\": \"2025-01-01\",\n  \"end_published_date\": \"2026-12-31\",\n  \"category\": \"research paper\",\n  \"use_autoprompt\": true,\n  \"text\": { \"max_characters\": 2000 },\n  \"highlights\": { \"num_sentences\": 3, \"highlights_per_url\": 2 },\n  \"summary\": { \"query\": \"key takeaways\" }\n}\n\n\ntype options: auto (default) · neural · keyword\n\nlivecrawl options:\n\n\"never\" — fastest (~300-600ms), pure cached index. Best for reference material, docs, courses.\n\"fallback\" — use cache, crawl live if not cached. Good default.\n\"preferred\" — prefer live crawl. Slower but fresher.\n\"always\" — always crawl live. For breaking news or rapidly-changing pages.\n2. Find Similar\n\nFind pages similar to a given URL:\n\necho '{\"action\":\"find_similar\",\"url\":\"https://example.com\",\"num_results\":5}' \\\n  | EXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"') \\\n  ~/.openclaw/workspace/skills/exa-search/bin/exa-search\n\n\nParams: same contents options as search (text, highlights, summary, livecrawl)\n\n3. Get Contents\n\nFetch full contents for one or more URLs:\n\necho '{\"action\":\"get_contents\",\"urls\":[\"https://example.com\",\"https://other.com\"],\"text\":{\"max_characters\":1000}}' \\\n  | EXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"') \\\n  ~/.openclaw/workspace/skills/exa-search/bin/exa-search\n\nOutput format\n\nAll actions return JSON on stdout:\n\n{\n  \"ok\": true,\n  \"action\": \"search\",\n  \"results\": [\n    {\n      \"url\": \"https://...\",\n      \"title\": \"...\",\n      \"score\": 0.87,\n      \"author\": \"...\",\n      \"published_date\": \"2026-01-15\",\n      \"image\": \"https://...\",\n      \"favicon\": \"https://...\",\n      \"text\": \"...\",\n      \"highlights\": [\"...\"],\n      \"summary\": \"...\"\n    }\n  ],\n  \"formatted\": \"## [Title](url)\\n...\"\n}\n\n\nOn error:\n\n{ \"ok\": false, \"error\": \"...\" }\n\n\nThe formatted field is ready-to-use markdown — you can send it directly to the user.\n\nSpeed reference (same query, 3 runs)\nMode\tAvg\tPeak\nlivecrawl: \"never\" (instant)\t~440ms\t308ms\nDefault (no livecrawl)\t~927ms\t629ms\n\n~18.7× faster than Exa MCP at peak.\n\nHelper: load API key\nEXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"')\n\n\nOr export once at the top of a longer workflow:\n\nexport EXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"')\necho '{\"query\":\"...\"}' | ~/.openclaw/workspace/skills/exa-search/bin/exa-search\n\nInvocation pattern\nEXA_API_KEY=$(grep -E \"^EXA_API_KEY=\" ~/.openclaw/workspace/.env | cut -d= -f2 | tr -d '\"')\necho '{\"query\":\"...\",\"num_results\":5,\"livecrawl\":\"never\"}' \\\n  | EXA_API_KEY=\"$EXA_API_KEY\" ~/.openclaw/workspace/skills/exa-search/bin/exa-search\n\n\nThe formatted field in the output is ready-to-use markdown — send it directly to the user.\n\nMode selection (be deliberate, every search)\nSituation\tlivecrawl\ttype\nDocs, tutorials, courses, reference material\t\"never\"\t\"neural\"\nGeneral research — people, tools, concepts, companies\t\"never\"\t\"neural\"\nExact function names, error messages, package names\t\"never\"\t\"keyword\"\nRecent releases, changelogs, GitHub repos\t\"fallback\"\t\"auto\"\nNews or announcements from the last 1-2 weeks\t\"fallback\"\t\"neural\"\nBreaking news, live prices, today's events\t\"always\"\t\"neural\"\nUnsure\t\"fallback\"\t\"auto\"\n\nDefault when in doubt: livecrawl: \"never\", type: \"neural\" — fastest, works for 80% of searches.\n\nWhen to use each action\n\nsearch (default) — use for any information retrieval from a query string.\n\nfind_similar — use when you have a URL and want more like it: related articles, alternative tools, similar repos, competing products.\n\necho '{\"action\":\"find_similar\",\"url\":\"https://...\",\"num_results\":5,\"livecrawl\":\"never\"}' | EXA_API_KEY=\"$EXA_API_KEY\" ...\n\n\nget_contents — use when you have a specific URL and need its full text: docs pages, blog posts, GitHub READMEs, papers. Faster than search when the URL is already known.\n\necho '{\"action\":\"get_contents\",\"urls\":[\"https://...\"],\"text\":{\"max_characters\":3000}}' | EXA_API_KEY=\"$EXA_API_KEY\" ...\n\nEnrich results for research tasks\n\nWhen writing reports, summaries, or comparing multiple results — request highlights or summary per result:\n\n{\n  \"query\": \"...\",\n  \"num_results\": 5,\n  \"highlights\": { \"num_sentences\": 3, \"highlights_per_url\": 2 },\n  \"summary\": { \"query\": \"key takeaways for a developer\" }\n}\n\n\nNote: highlights/summary add latency (~200-500ms extra). Only use when you actually need them."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Prompt-Surfer/exa-search-rust",
    "publisherUrl": "https://clawhub.ai/Prompt-Surfer/exa-search-rust",
    "owner": "Prompt-Surfer",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/exa-search-rust",
    "downloadUrl": "https://openagent3.xyz/downloads/exa-search-rust",
    "agentUrl": "https://openagent3.xyz/skills/exa-search-rust/agent",
    "manifestUrl": "https://openagent3.xyz/skills/exa-search-rust/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/exa-search-rust/agent.md"
  }
}