Install any skill in seconds. Free to start, no credit card required.
Get Started Free →AI Agent search platform with 9 engines, Google 13 sub-types, vertical scene search, and intelligent auto/multi/extract modes. Designed for LLM and AI agent consumption.
.claude/skills/leoyeai-novada-search/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 3073% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 156% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 255% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 1210% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 51% | 0% |
> Multi-engine AI search — 9 engines, 13 Google types, 9 vertical scenes, smart agent modes. > Powered by Novada Scraper API.
Get started in 30 seconds:
export NOVADA_API_KEY="your_key" (or pass --api-key $NOVADA_API_KEY)python3 {baseDir}/novada_search.py --query "coffee Berlin" --scene localThis skill is optimized for agents first, then rendered for humans:
--format agent-json.engines_used, result_counts, duplicates_removed, unified_results, errors.--format enhanced or --format ranked.Recommended default contract for agent handoff:
bashpython3 {baseDir}/novada_search.py --query "..." --scene news --format agent-json
If a human drags this skill to an agent, the agent should be able to clearly answer: 1) what this tool can do, 2) which mode to call (auto | multi | extract), and 3) which output format to consume (agent-json for logic).
pythonfrom novada_search import NovadaSearch client = NovadaSearch(api_key="your_key") result = client.search("coffee Berlin", scene="local") result = client.search("buy shoes", mode="auto") result = client.search("AI news", mode="multi", engines=["google", "bing"]) content = client.extract("https://example.com/article")
All SDK methods raise NovadaSearchError subclasses (not SystemExit), so agents can catch and recover.
bashpython3 {baseDir}/novada_mcp_server.py
Tools: novada_search, novada_extract. Config example: mcp.json.
pythonfrom integrations.langchain_tool import NovadaSearchTool tool = NovadaSearchTool(api_key="your_key")
bashpip install novada-search
response_time_mssearch_metadatadomainfreshnessagent-json now includes unified_results (top merged results across engines).duplicates_removed.score + agreement_count + domain + a short rationale.tests/ fixtures so ranking changes don’t silently degrade.data.code / data.msg. This CLI hard-checks it and will exit on non-success codes.fetch_mode=dynamic: slower, but higher hit rate for Maps/e-commerce pages.--verbose to see engine/type selection and execution path.--api-key per run.NOVADA_API_KEY, or a local .env in the working folder../*.py, ./*.md, ./samples/*) and network access to https://scraperapi.novada.com.Query: --query "dessert Düsseldorf" --scene local
Output:
| Rank | Shop | Rating | Reviews | Address | |:----:|:-----|:------:|:-------:|:--------| | 🥇 | donecake | 4.8★ | 3,500 | Graf-Adolf-Straße 68 | | 🥈 | SugArt Factory | 4.8★ | 423 | Schloßstraße 76-78 | | 🥉 | Eiscafe Pia | 4.7★ | 2,100 | Kasernenstraße 1 | | 4 | Unbehaun Eis | 4.6★ | 5,000 | Aachener Str. 159 | | 5 | Aux Merveilleux de fred | 4.6★ | 626 | Kasernenstraße 15 |
> Click any shop name to open in Google Maps. This is the default enhanced output — actionable links, no extra flags needed.
Layer 3 │ AI Agent │ auto · multi · extract
Layer 2 │ Scenes │ shopping · local · jobs · academic · video · news · travel · finance · images
Layer 1 │ Engines │ google · bing · yahoo · duckduckgo · yandex · youtube · ebay · walmart · yelp
│ │ + Google: shopping · local · news · scholar · jobs · flights · finance · patents · videos · images · play · lens| Engine | Strength | Example | |--------|----------|---------| | google | General + 13 sub-types | --engine google | | bing | Web, news | --engine bing | | yahoo | Finance | --engine yahoo | | duckduckgo | Privacy | --engine duckduckgo | | yandex | Russian web | --engine yandex | | youtube | Video | --engine youtube | | ebay | E-commerce | --engine ebay | | walmart | US retail | --engine walmart | | yelp | Local reviews | --engine yelp |
Use --engine google --google-type <type>:
| Type | What it searches | Type | What it searches | |------|-----------------|------|-----------------| | search | Web (default) | shopping | Products & prices | | local | Google Maps | news | Latest headlines | | scholar | Academic papers | jobs | Job listings | | flights | Airlines | finance | Stocks & markets | | videos | Video content | images | Pictures | | patents | IP / patents | play | Android apps | | lens | Visual search | | |
bashpython3 {baseDir}/novada_search.py --query "MacBook Pro M4" --engine google --google-type shopping python3 {baseDir}/novada_search.py --query "transformer attention" --engine google --google-type scholar python3 {baseDir}/novada_search.py --query "python developer remote" --engine google --google-type jobs python3 {baseDir}/novada_search.py --query "SFO to NRT" --engine google --google-type flights python3 {baseDir}/novada_search.py --query "NVIDIA" --engine google --google-type finance
Scenes auto-combine the best engines for each use case. Use --scene <name>:
| Scene | Engines combined | Use case | Status | |-------|-----------------|----------|--------| | 📰 news | Google News + Bing | Multi-source news aggregation | ✅ Available | | 🎓 academic | Google Scholar | Research papers & citations | ✅ Available | | 💼 jobs | Google Jobs | Structured job listings | ✅ Available | | 🎬 video | YouTube + Google Videos | Video tutorials & reviews | ✅ Available | | 🖼️ images | Google Images | Image search | ✅ Available | | 🛒 shopping | Google Shopping + eBay + Walmart | Cross-platform price comparison | 🔜 Coming in v1.1 | | 📍 local | Google Local + Yelp | Local business with ratings & maps | 🔜 Coming in v1.1 | | ✈️ travel | Google Flights | Flight search & pricing | 🔜 Coming in v1.1 | | 💰 finance | Google Finance + Yahoo | Stock data & market info | 🔜 Coming in v1.1 |
bashpython3 {baseDir}/novada_search.py --query "MacBook Pro" --scene shopping python3 {baseDir}/novada_search.py --query "ramen Tokyo" --scene local python3 {baseDir}/novada_search.py --query "react hooks tutorial" --scene video python3 {baseDir}/novada_search.py --query "AI startup funding" --scene news
Query: --query "AirPods Pro" --scene shopping --format agent-json
json{ "query": "AirPods Pro", "scene": "shopping", "engines_used": ["google:shopping", "ebay", "walmart"], "result_counts": { "shopping": 15, "organic": 6 }, "shopping_results": [ { "title": "Apple AirPods Pro 2nd Gen", "price": "$189.99", "seller": "Walmart", "rating": 4.8 }, { "title": "Apple AirPods Pro 2 - New", "price": "$179.00", "seller": "eBay", "rating": 4.9 }, { "title": "AirPods Pro (2nd generation)", "price": "$249.00", "seller": "Apple", "rating": 4.7 } ] }
> ⚠️ Shopping price comparison requires engine-specific data parsing that is being finalized. > The price_comparison, lowest_price, and price_range fields will be available in v1.1 > when Walmart and eBay result parsing is complete.
> ⚠️ Local business enrichment (phone, hours, open_now) depends on Google Maps and Yelp > data parsing that is being finalized for v1.1.
Use --mode <auto|multi|extract>:
Analyzes your query and auto-selects the best scene:
bashpython3 {baseDir}/novada_search.py --query "buy Nike Air Max" --mode auto # → detects "shopping" → uses eBay + Walmart + Google Shopping python3 {baseDir}/novada_search.py --query "best pizza near me" --mode auto # → detects "local" → uses Google Maps + Yelp python3 {baseDir}/novada_search.py --query "latest AI news" --mode auto # → detects "news" → uses Google News + Bing
Intent keywords (EN/DE/ZH): buy/kaufen, near me/in der nähe, job/stelle, paper/forschung, video/tutorial, news/nachrichten, flight/flug, stock/aktie, image/bild
Search multiple engines simultaneously, deduplicate by URL:
bashpython3 {baseDir}/novada_search.py --query "web scraping tools" --mode multi --engines google,bing,duckduckgo # Colon syntax for Google sub-types python3 {baseDir}/novada_search.py --query "coffee maker" --mode multi --engines ebay,walmart,google:shopping
Pull clean text from any URL:
bashpython3 {baseDir}/novada_search.py --url "https://example.com/article" --mode extract
> ⚠️ Research mode depends on the extract API which requires dynamic fetch mode. > This feature will be fully available in v1.1.
bashpython3 {baseDir}/novada_search.py --query "AI agent trends 2026" --mode research
SDK:
pythonresult = client.research("AI agent trends 2026", max_sources=5) # result includes: unified_results + extracted_content[] + sources_extracted
This tool focuses on search + structured results. If you want additional reasoning, use your own LLM API:
bashpython3 {baseDir}/novada_search.py --query "..." --scene news --format agent-json > results.json
results.json into your own LLM prompt (OpenAI/Claude/etc.) for summarization, ranking, or extraction.> This keeps Novada Search read-only and avoids bundling external AI keys into the skill.
Default is enhanced (clickable links). Override with --format <name>:
| Format | Output type | Best for | |--------|------------|----------| | enhanced (default) | Markdown + clickable Maps/website links | Daily use | | ranked | Readable markdown with ratings | Quick overview | | agent-json | Structured JSON for AI agents | LLM integration | | table | Side-by-side comparison table | Comparing options | | action-links | Shell open commands | Automation | | raw | Full API response | Debugging |
> See samples/agent-json-example.json for a ready-to-copy agent-json payload with source_engine + confidence fields.
python3 {baseDir}/novada_search.py
--query "search terms" # required (unless extract mode)
--engine google|bing|yahoo|duckduckgo|yandex|youtube|ebay|walmart|yelp
--google-type search|shopping|local|news|scholar|jobs|flights|finance|videos|images|patents|play|lens
--scene shopping|local|jobs|academic|video|news|travel|finance|images
--mode auto|multi|extract
--engines google,bing,ebay # for multi mode (colon syntax: google:shopping)
--url "https://..." # for extract mode
--format enhanced|ranked|agent-json|table|action-links|raw
--max-results 1-20 # default: 10
--fetch-mode static|dynamic # static = fast, dynamic = JS pagesPriority: --mode auto overrides everything. --scene overrides --engine. Direct --engine is the fallback.
| Feature | Novada Search | Tavily | |---------|:------------:|:------:| | Search engines | 9 | 1 | | Google sub-types | 13 | 0 | | Vertical scenes | 9 | 0 | | Shopping (eBay+Walmart+Google) | v1.1 | No | | Local (Maps+Yelp) | v1.1 | No | | Video (YouTube) | Yes | No | | Jobs / Academic / Travel | Yes | No | | Multi-engine parallel | Yes | No | | Auto intent detection | Yes | No | | Content extraction | Yes | Yes | | Agent JSON output | Yes | Yes |
Get your API key → · GitHub · Powered by Novada Scraper API v2.0
agent-json 新增 unified_results(多引擎合并后的 Top 结果)。duplicates_removed。score + agreement_count + domain + rationale(为什么排前)。tests/ 固件,保证排序逻辑稳定不退化。> 多引擎 AI 搜索平台——一次调用叠加 9 套主引擎、13 种 Google 类型、9 个垂直场景,并内置 auto / multi / extract 三层 Agent 模式。
export NOVADA_API_KEY="..." 或运行时 --api-key $NOVADA_API_KEY 注入(推荐显式传参,脚本不会再扫描个人目录)。python3 {baseDir}/novada_search.py --query "coffee Berlin" --scene local。data.code / data.msg,脚本已内建校验。fetch_mode=dynamic,命中率更高但更慢。--verbose 可查看 engine/type 选择与节点评估。--query "dessert Düsseldorf" --scene local 会输出带点击链接的 Top 5 甜品店表格,可直接跳转 Google Maps。
auto(意图识别 → 场景)、multi(自选引擎并行去重)、extract(URL 正文抽取)。python3 {baseDir}/novada_search.py \
--query "search" --scene news --format agent-json
python3 {baseDir}/novada_search.py \
--mode multi --engines google:shopping,ebay,walmart --format table
python3 {baseDir}/novada_search.py \
--mode extract --url "https://example.com/article"enhanced:默认 Markdown,附地图/官网快速操作。ranked:排名 + 摘要。table:商品/本地商家对照表。agent-json / brave:结构化 JSON 供 LLM 食用(示例见 samples/agent-json-example.json)。action-links:生成 open "URL" 命令,方便自动化。raw:原始 API 回包。| 功能 | Novada | Tavily | |------|--------|--------| | 搜索引擎数量 | 9 | 1 | | Google 子类型 | 13 | 0 | | 垂直场景 | 9 | 0 | | Shopping(eBay+Walmart+Google) | ✅ | ❌ | | Local(Maps+Yelp) | ✅ | ❌ | | 多引擎并行 | ✅ | ❌ | | Auto intent | ✅ | ❌ | | Extract API | ✅ | ✅ |
--scene 或 --mode multi,避免 auto 误判。--format agent-json,字段与 Tavily 兼容。--api-key 或在进程环境里 export(CLI 现仅读取 --api-key / NOVADA_API_KEY / 当前目录 .env)。requiredEnv.NOVADA_API_KEY、permissions 保持一致(避免扫描器判定 metadata mismatch)。| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 5,098 | 12,707 | +149% | 1 | 1 | 0% | 243 | 7,711 | +3073% | 0 | 0 | — |
case-02 | fail→fail | 8,889 | 6,989 | -21% | 1 | 1 | 0% | 1,672 | 5,551 | +232% | 0 | 0 | — |
case-03 | fail→fail | 3,628 | 6,901 | +90% | 1 | 1 | 0% | 538 | 5,529 | +928% | 0 | 0 | — |
case-04 | pass→pass | 7,664 | 6,490 | -15% | 1 | 1 | 0% | 1,514 | 6,392 | +322% | 0 | 0 | — |
case-05 | pass→pass | 4,607 | 3,865 | -16% | 1 | 1 | 0% | 755 | 5,735 | +660% | 0 | 0 | — |
case-06 | pass→pass | 11,842 | 11,725 | -1% | 1 | 1 | 0% | 2,100 | 7,500 | +257% | 0 | 0 | — |
case-07 | fail→pass | 13,729 | 9,639 | -30% | 1 | 1 | 0% | 2,702 | 6,919 | +156% | 0 | 0 | — |
case-08 | fail→pass | 9,573 | 3,646 | -62% | 1 | 1 | 0% | 1,578 | 5,604 | +255% | 0 | 0 | — |
case-09 | fail→pass | 7,340 | 6,392 | -13% | 1 | 1 | 0% | 484 | 6,338 | +1210% | 0 | 0 | — |
case-10 | fail→pass | 18,008 | 3,349 | -81% | 1 | 1 | 0% | 3,800 | 5,755 | +51% | 0 | 0 | — |
case-11 | fail→pass | 23,784 | 2,718 | -89% | 1 | 1 | 0% | 1,755 | 5,456 | +211% | 0 | 0 | — |
case-12 | fail→pass | 12,955 | 2,716 | -79% | 1 | 1 | 0% | 2,150 | 5,611 | +161% | 0 | 0 | — |
case-13 | fail→pass | 14,189 | 3,015 | -79% | 1 | 1 | 0% | 2,429 | 5,654 | +133% | 0 | 0 | — |
case-14 | fail→pass | 13,525 | 2,159 | -84% | 1 | 1 | 0% | 2,290 | 5,502 | +140% | 0 | 0 | — |
case-15 | fail→pass | 9,554 | 2,492 | -74% | 1 | 1 | 0% | 1,649 | 5,572 | +238% | 0 | 0 | — |
case-16 | fail→pass | 7,786 | 2,398 | -69% | 1 | 1 | 0% | 1,312 | 5,516 | +320% | 0 | 0 | — |
case-17 | fail→pass | 31,379 | 3,106 | -90% | 1 | 1 | 0% | 2,441 | 5,692 | +133% | 0 | 0 | — |
case-18 | fail→pass | 7,085 | 2,677 | -62% | 1 | 1 | 0% | 1,479 | 5,614 | +280% | 0 | 0 | — |
case-19 | fail→pass | 4,381 | 2,410 | -45% | 1 | 1 | 0% | 710 | 5,619 | +691% | 0 | 0 | — |
case-20 | fail→fail | 10,828 | 3,678 | -66% | 1 | 1 | 0% | 1,915 | 5,796 | +203% | 0 | 0 | — |
case-21 | pass→pass | 12,296 | 5,532 | -55% | 1 | 1 | 0% | 2,213 | 6,054 | +174% | 0 | 0 | — |
case-22 | fail→pass | 7,585 | 2,855 | -62% | 1 | 1 | 0% | 1,346 | 5,637 | +319% | 0 | 0 | — |
case-23 | fail→pass | 6,623 | 2,415 | -64% | 1 | 1 | 0% | 1,139 | 5,595 | +391% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 18 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +70 percentage points is the difference between those two pass rates over the 18 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.