{
  "schemaVersion": "1.0",
  "item": {
    "slug": "free-search-aggregator",
    "name": "Free Search Aggregator",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/VulcanusALex/free-search-aggregator",
    "canonicalUrl": "https://clawhub.ai/VulcanusALex/free-search-aggregator",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/free-search-aggregator",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=free-search-aggregator",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "README.zh-CN.md",
      "SKILL.md",
      "agents/openai.yaml",
      "assets/hero.svg",
      "config/providers.yaml"
    ],
    "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/free-search-aggregator"
    },
    "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/free-search-aggregator",
    "agentPageUrl": "https://openagent3.xyz/skills/free-search-aggregator/agent",
    "manifestUrl": "https://openagent3.xyz/skills/free-search-aggregator/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/free-search-aggregator/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": "Free Search Aggregator",
        "body": "Reliable, provider-diverse web search for OpenClaw with high uptime + low operator overhead."
      },
      {
        "title": "Why use this skill",
        "body": "12 search providers, 6 requiring no API key at all\nAutomatic failover: if one provider fails, the next is tried instantly\nQuota-aware: tracks daily usage, warns at 80%, skips exhausted providers\nTask search mode for multi-angle research queries\nBuilt-in storage lifecycle (cache / index / report), no workspace clutter\nSelf-healing: health-based smart routing automatically promotes reliable providers\nQuality optimization: relevance scoring, fuzzy dedup, domain diversity, re-ranking\nAuto-discovery: probes candidate search engines and SearXNG instances for new sources\nSelf-diagnostic: doctor and setup commands for zero-friction onboarding"
      },
      {
        "title": "Provider Overview",
        "body": "ProviderKey RequiredFree QuotaIndex SourceNotesbraveBRAVE_API_KEY2000/dayBrave independentHigh quality, privacy-friendlyexaEXA_API_KEY~33/day (1k/mo)Neural + webSemantic search, unique findstavilyTAVILY_API_KEY1000/dayWeb (AI-optimized)Designed for AI agentsduckduckgoNone~500/dayBing + ownNo key, privacy-focusedbing_htmlNone~300/dayMicrosoft Bing RSSNo key, stable XML feedmojeekNone (or MOJEEK_API_KEY)200/dayMojeek independentNon-Google/Bing indexserperSERPER_API_KEY2500/dayGoogleHigh quota free tiersearchapiSEARCHAPI_API_KEY100/moGoogle / BingMulti-enginegoogle_cseGOOGLE_API_KEY + GOOGLE_CX100/dayGoogleOfficial Google APIbaiduBAIDU_API_KEY200/dayBaiduBest for Chinese contentwikipediaNone1000/dayWikipediaFactual/encyclopedic queriessearxngNoneunlimited (self-hosted)Meta (all engines)Requires own instance\n\nTotal daily quota (all keys configured): 8400+ requests/day"
      },
      {
        "title": "Credential model (important)",
        "body": "No mandatory API key — DuckDuckGo + Bing RSS + Mojeek + Wikipedia work out of the box.\nAPI-key providers fail gracefully if key is missing (AuthError → skip, no quota consumed, no latency):\n\nBRAVE_API_KEY\nEXA_API_KEY\nTAVILY_API_KEY\nSERPER_API_KEY\nSEARCHAPI_API_KEY\nGOOGLE_API_KEY + GOOGLE_CX\nBAIDU_API_KEY\nMOJEEK_API_KEY (optional — without it uses HTML scraping)"
      },
      {
        "title": "1. Search failover",
        "body": "Default provider order:\n\nbrave → exa → tavily → duckduckgo → bing_html → mojeek → serper → searchapi → google_cse → baidu → wikipedia\n\nFirst successful non-empty result returns immediately."
      },
      {
        "title": "2. Task-level multi-query search",
        "body": "Expands one goal into multiple targeted queries\nAggregates + deduplicates results\nPrefix presets:\n\ndefault: workers=1\n@dual ... → workers=2\n@deep ... → workers=3 + deeper query coverage"
      },
      {
        "title": "3. Quota intelligence",
        "body": "Per-provider daily tracking\nReal quota retrieval where supported (Tavily, SearchAPI, Brave via probe)\nAuto concurrency reduction at 80% quota saturation"
      },
      {
        "title": "4. Provider health monitoring",
        "body": "Tracks success rate, latency, and error types per provider over time\nComputes health scores (success 50%, latency 30%, freshness 20%)\nSmart ordering: auto-promotes healthy providers, demotes degraded ones\nView dashboard: python -m free_search health"
      },
      {
        "title": "5. Result quality optimization",
        "body": "Relevance scoring (query-title-snippet token overlap)\nEnhanced dedup: URL + title similarity (Jaccard threshold)\nDomain diversity: limits same-domain results (default max 3)\nAutomatic filtering of low-quality results (short titles, missing URLs)"
      },
      {
        "title": "6. Source auto-discovery",
        "body": "Probes all configured providers for availability\nScans candidate search engines (Marginalia, Wiby, public SearXNG instances)\nValidates response format, latency, and result quality\nGenerates recommendations for new sources to integrate\nRun: python -m free_search discover"
      },
      {
        "title": "7. Managed persistence",
        "body": "memory/search-cache/YYYY-MM-DD/*.json\nmemory/search-index/search-index.jsonl\nmemory/search-reports/YYYY-MM-DD/*.md"
      },
      {
        "title": "Quick commands",
        "body": "# Normal search\nscripts/search \"latest AI agent frameworks 2026\" --max-results 5\n\n# Task search (multi-query, parallel)\nscripts/search task \"@dual Compare Claude vs GPT-4 for code generation\" --max-results 5\n\n# Deep research mode\nscripts/search task \"@deep autonomous vehicle safety 2026\" --max-results 8 --max-queries 10\n\n# Quota status\nscripts/status\n\n# Real quota from provider APIs\nscripts/remaining --real\n\n# Cleanup cache\npython3 -m free_search gc --cache-days 14\n\n# Provider health dashboard\npython3 -m free_search health\n\n# Discover new search sources\npython3 -m free_search discover\n\n# System diagnostics\npython3 -m free_search doctor\n\n# Setup status & recommendations\npython3 -m free_search setup"
      },
      {
        "title": "Bing RSS (bing_html) — No key needed",
        "body": "Uses Bing's built-in RSS endpoint (format=rss) — bypasses bot detection. Works out of the box."
      },
      {
        "title": "Mojeek — No key needed (API key optional)",
        "body": "Out-of-the-box HTML scraping. For higher quotas/stability:\n\nRegister at https://www.mojeek.com/services/search/api/\nSet MOJEEK_API_KEY → automatically switches to JSON API mode"
      },
      {
        "title": "Wikipedia — No key needed",
        "body": "Multilingual support — change lang in providers.yaml:\n\nwikipedia:\n  lang: it   # en | zh | it | de | fr | ja ..."
      },
      {
        "title": "Exa.ai — API key required",
        "body": "Register at https://exa.ai/\nSet EXA_API_KEY\nFree tier: 1000 searches/month (~33/day)"
      },
      {
        "title": "Google Custom Search — API key + CX required",
        "body": "Get API key: https://developers.google.com/custom-search/v1/introduction\nCreate search engine: https://programmablesearchengine.google.com/\nSet GOOGLE_API_KEY and GOOGLE_CX\nFree tier: 100 queries/day"
      },
      {
        "title": "Baidu Qianfan — API key required",
        "body": "Register at https://cloud.baidu.com/\nSet BAIDU_API_KEY\nBest for Chinese-language content"
      },
      {
        "title": "SearXNG — Self-hosted instance required",
        "body": "Public instances rate-limit server-to-server requests. Use your own:\n\ndocker run -d -p 8080:8080 searxng/searxng\n\nThen in providers.yaml:\n\nsearxng:\n  endpoint: http://localhost:8080\n  enabled: true"
      },
      {
        "title": "Post-install self-check",
        "body": "# 1) Confirm provider load\nscripts/status --compact\n\n# 2) Smoke test (uses duckduckgo/bing/mojeek out of the box)\nscripts/search \"openclaw\" --max-results 3 --compact\n\n# 3) Verify storage paths\nls -la /home/openclaw/.openclaw/workspace/memory/search-cache/ | tail -n 5\n\n# 4) Check real quota (optional)\nscripts/remaining --real --compact"
      },
      {
        "title": "Output contract (stable)",
        "body": "Search: query, provider, results[], meta.attempted, meta.quota\nTask search: task, queries[], grouped_results[], merged_results[], meta\nQuota: date, providers[], totals; with --real: real_quota.providers[]"
      },
      {
        "title": "Operator notes",
        "body": "Default mode: workers=1 — conservative for cost control\nUse @dual / @deep only for research tasks\nSearXNG and YaCy are enabled: false by default (self-hosted only)\nMOJEEK_API_KEY is optional — provider gracefully falls back to HTML scraping\nProvider health data stored in memory/provider-health/health.jsonl\nDiscovery results stored in memory/provider-discovery/discovery.jsonl\nRun python -m free_search doctor after setup to verify everything works\nRun python -m free_search discover periodically to find new search sources"
      }
    ],
    "body": "Free Search Aggregator\n\nReliable, provider-diverse web search for OpenClaw with high uptime + low operator overhead.\n\nWhy use this skill\n12 search providers, 6 requiring no API key at all\nAutomatic failover: if one provider fails, the next is tried instantly\nQuota-aware: tracks daily usage, warns at 80%, skips exhausted providers\nTask search mode for multi-angle research queries\nBuilt-in storage lifecycle (cache / index / report), no workspace clutter\nSelf-healing: health-based smart routing automatically promotes reliable providers\nQuality optimization: relevance scoring, fuzzy dedup, domain diversity, re-ranking\nAuto-discovery: probes candidate search engines and SearXNG instances for new sources\nSelf-diagnostic: doctor and setup commands for zero-friction onboarding\nProvider Overview\nProvider\tKey Required\tFree Quota\tIndex Source\tNotes\nbrave\tBRAVE_API_KEY\t2000/day\tBrave independent\tHigh quality, privacy-friendly\nexa\tEXA_API_KEY\t~33/day (1k/mo)\tNeural + web\tSemantic search, unique finds\ntavily\tTAVILY_API_KEY\t1000/day\tWeb (AI-optimized)\tDesigned for AI agents\nduckduckgo\tNone\t~500/day\tBing + own\tNo key, privacy-focused\nbing_html\tNone\t~300/day\tMicrosoft Bing RSS\tNo key, stable XML feed\nmojeek\tNone (or MOJEEK_API_KEY)\t200/day\tMojeek independent\tNon-Google/Bing index\nserper\tSERPER_API_KEY\t2500/day\tGoogle\tHigh quota free tier\nsearchapi\tSEARCHAPI_API_KEY\t100/mo\tGoogle / Bing\tMulti-engine\ngoogle_cse\tGOOGLE_API_KEY + GOOGLE_CX\t100/day\tGoogle\tOfficial Google API\nbaidu\tBAIDU_API_KEY\t200/day\tBaidu\tBest for Chinese content\nwikipedia\tNone\t1000/day\tWikipedia\tFactual/encyclopedic queries\nsearxng\tNone\tunlimited (self-hosted)\tMeta (all engines)\tRequires own instance\n\nTotal daily quota (all keys configured): 8400+ requests/day\n\nCredential model (important)\nNo mandatory API key — DuckDuckGo + Bing RSS + Mojeek + Wikipedia work out of the box.\nAPI-key providers fail gracefully if key is missing (AuthError → skip, no quota consumed, no latency):\nBRAVE_API_KEY\nEXA_API_KEY\nTAVILY_API_KEY\nSERPER_API_KEY\nSEARCHAPI_API_KEY\nGOOGLE_API_KEY + GOOGLE_CX\nBAIDU_API_KEY\nMOJEEK_API_KEY (optional — without it uses HTML scraping)\nCore capabilities\n1. Search failover\n\nDefault provider order:\n\nbrave → exa → tavily → duckduckgo → bing_html → mojeek → serper → searchapi → google_cse → baidu → wikipedia\n\n\nFirst successful non-empty result returns immediately.\n\n2. Task-level multi-query search\nExpands one goal into multiple targeted queries\nAggregates + deduplicates results\nPrefix presets:\ndefault: workers=1\n@dual ... → workers=2\n@deep ... → workers=3 + deeper query coverage\n3. Quota intelligence\nPer-provider daily tracking\nReal quota retrieval where supported (Tavily, SearchAPI, Brave via probe)\nAuto concurrency reduction at 80% quota saturation\n4. Provider health monitoring\nTracks success rate, latency, and error types per provider over time\nComputes health scores (success 50%, latency 30%, freshness 20%)\nSmart ordering: auto-promotes healthy providers, demotes degraded ones\nView dashboard: python -m free_search health\n5. Result quality optimization\nRelevance scoring (query-title-snippet token overlap)\nEnhanced dedup: URL + title similarity (Jaccard threshold)\nDomain diversity: limits same-domain results (default max 3)\nAutomatic filtering of low-quality results (short titles, missing URLs)\n6. Source auto-discovery\nProbes all configured providers for availability\nScans candidate search engines (Marginalia, Wiby, public SearXNG instances)\nValidates response format, latency, and result quality\nGenerates recommendations for new sources to integrate\nRun: python -m free_search discover\n7. Managed persistence\nmemory/search-cache/YYYY-MM-DD/*.json\nmemory/search-index/search-index.jsonl\nmemory/search-reports/YYYY-MM-DD/*.md\nQuick commands\n# Normal search\nscripts/search \"latest AI agent frameworks 2026\" --max-results 5\n\n# Task search (multi-query, parallel)\nscripts/search task \"@dual Compare Claude vs GPT-4 for code generation\" --max-results 5\n\n# Deep research mode\nscripts/search task \"@deep autonomous vehicle safety 2026\" --max-results 8 --max-queries 10\n\n# Quota status\nscripts/status\n\n# Real quota from provider APIs\nscripts/remaining --real\n\n# Cleanup cache\npython3 -m free_search gc --cache-days 14\n\n# Provider health dashboard\npython3 -m free_search health\n\n# Discover new search sources\npython3 -m free_search discover\n\n# System diagnostics\npython3 -m free_search doctor\n\n# Setup status & recommendations\npython3 -m free_search setup\n\nProvider setup guides\nBing RSS (bing_html) — No key needed\n\nUses Bing's built-in RSS endpoint (format=rss) — bypasses bot detection. Works out of the box.\n\nMojeek — No key needed (API key optional)\n\nOut-of-the-box HTML scraping. For higher quotas/stability:\n\nRegister at https://www.mojeek.com/services/search/api/\nSet MOJEEK_API_KEY → automatically switches to JSON API mode\nWikipedia — No key needed\n\nMultilingual support — change lang in providers.yaml:\n\nwikipedia:\n  lang: it   # en | zh | it | de | fr | ja ...\n\nExa.ai — API key required\nRegister at https://exa.ai/\nSet EXA_API_KEY\nFree tier: 1000 searches/month (~33/day)\nGoogle Custom Search — API key + CX required\nGet API key: https://developers.google.com/custom-search/v1/introduction\nCreate search engine: https://programmablesearchengine.google.com/\nSet GOOGLE_API_KEY and GOOGLE_CX\nFree tier: 100 queries/day\nBaidu Qianfan — API key required\nRegister at https://cloud.baidu.com/\nSet BAIDU_API_KEY\nBest for Chinese-language content\nSearXNG — Self-hosted instance required\n\nPublic instances rate-limit server-to-server requests. Use your own:\n\ndocker run -d -p 8080:8080 searxng/searxng\n\n\nThen in providers.yaml:\n\nsearxng:\n  endpoint: http://localhost:8080\n  enabled: true\n\nPost-install self-check\n# 1) Confirm provider load\nscripts/status --compact\n\n# 2) Smoke test (uses duckduckgo/bing/mojeek out of the box)\nscripts/search \"openclaw\" --max-results 3 --compact\n\n# 3) Verify storage paths\nls -la /home/openclaw/.openclaw/workspace/memory/search-cache/ | tail -n 5\n\n# 4) Check real quota (optional)\nscripts/remaining --real --compact\n\nOutput contract (stable)\nSearch: query, provider, results[], meta.attempted, meta.quota\nTask search: task, queries[], grouped_results[], merged_results[], meta\nQuota: date, providers[], totals; with --real: real_quota.providers[]\nOperator notes\nDefault mode: workers=1 — conservative for cost control\nUse @dual / @deep only for research tasks\nSearXNG and YaCy are enabled: false by default (self-hosted only)\nMOJEEK_API_KEY is optional — provider gracefully falls back to HTML scraping\nProvider health data stored in memory/provider-health/health.jsonl\nDiscovery results stored in memory/provider-discovery/discovery.jsonl\nRun python -m free_search doctor after setup to verify everything works\nRun python -m free_search discover periodically to find new search sources"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/VulcanusALex/free-search-aggregator",
    "publisherUrl": "https://clawhub.ai/VulcanusALex/free-search-aggregator",
    "owner": "VulcanusALex",
    "version": "1.3.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/free-search-aggregator",
    "downloadUrl": "https://openagent3.xyz/downloads/free-search-aggregator",
    "agentUrl": "https://openagent3.xyz/skills/free-search-aggregator/agent",
    "manifestUrl": "https://openagent3.xyz/skills/free-search-aggregator/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/free-search-aggregator/agent.md"
  }
}