跳到主要内容
知仓学习社ZHICANG

multi-search-engine

Query scholarly metadata and the web through Crossref, Brave, Tavily, and DuckDuckGo with a single CLI surface. Trigger when the user asks for resea…

读凭据联网严重 0 · 高危 4TokenRhythm/opensquilla

它会碰到什么

扫了多少4 个文本文件,28 KB
它会碰到什么读凭据联网
命中总数13 处
命中统计严重 0 · 高 4 · 中 4 · 低 5
逐条看命中(4 条严重或高危)
  • scripts/search.py:141cred-envread
    api_key = os.environ.get("BRAVE_SEARCH_API_KEY") or os.environ.get("BRAVE_API_KEY")
  • scripts/search.py:141cred-envread
    api_key = os.environ.get("BRAVE_SEARCH_API_KEY") or os.environ.get("BRAVE_API_KEY")
  • scripts/search.py:179cred-envread
    api_key = os.environ.get("TAVILY_API_KEY")
  • scripts/search.py:310cred-envread
    mailto = os.environ.get("CROSSREF_MAILTO", "").strip()

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

multi-search-engine

A unified CLI for querying several web search engines in parallel and

returning a normalized result list. Built on httpx and beautifulsoup4

(both already in OpenSquilla default dependencies, so no extra install

beyond pip install opensquilla).

Use cases

  • Building a deep-research round with diverse engine coverage
  • Fact-check a claim against >1 engine
  • Compare scholarly metadata coverage with general web results
  • Find citable publication metadata without requiring an API key

Limitations

  • A single engine sufficient → call its API directly instead
  • Need headless-browser DOM rendering → this skill is HTTP-only

Quick start

python {baseDir}/scripts/search.py \
    --query "openclaw skill registry" \
    --engines crossref,duckduckgo,brave \
    --limit 10 \
    --json

Output:

{
  "query": "...",
  "results": [
    {
      "engine": "crossref",
      "title": "...",
      "url": "https://...",
      "snippet": "...",
      "rank": 1,
      "doi": "10.1234/example",
      "year": 2024,
      "authors": ["Ada Example", "Edge Research Consortium"],
      "corporate_authors": ["Edge Research Consortium"]
    }
  ],
  "errors": [
    {"engine": "brave", "reason": "BRAVE_SEARCH_API_KEY/BRAVE_API_KEY not set; skipping"}
  ]
}

doi, year, authors, and corporate_authors are optional. They are

emitted only when an engine supplies verifiable values, so the existing

five-field web-result shape remains compatible for general engines. The

parallel corporate-author list lets BibTeX consumers protect institution

names from person-name parsing.

Engines

| Engine | Needs key | Key env var | Strength |

|---|---|---|---|

| crossref | no | optional CROSSREF_MAILTO | Scholarly works with canonical DOI, year, and author metadata |

| duckduckgo | no | — | No-key, privacy-oriented broad web baseline |

| brave | yes | BRAVE_SEARCH_API_KEY or legacy BRAVE_API_KEY | High-quality results, generous free tier |

| tavily | yes | TAVILY_API_KEY | Designed for AI agents, returns clean JSON |

The script never errors out when an API-key engine's key is missing — it

records a per-engine errors entry and continues with the rest. Pass

--strict to fail fast when any requested engine is unavailable.

Routing tips

The host should pick engines by language and availability:

  • Academic queries → crossref first, then brave or tavily for broader context
  • General web queries → duckduckgo plus brave or tavily for triangulation
  • Time-sensitive (last 24h) → brave (recency filter) or tavily
  • Long-tail academic → start with crossref; supplement with direct arXiv when needed

engines.md has the full per-engine guidance.

Boundaries

  • HTTP-only. JS-rendered pages will not be readable; use a headless-browser

skill if needed.

  • DuckDuckGo scraping is best-effort —

HTML structure changes can break it. The script logs parse failures

individually and keeps the run going.

  • Timeout, HTTP 429, and transient HTTP 5xx responses receive at most two

retries with bounded backoff. Repeated failures remain per-engine soft

errors. Callers must still avoid high-rate loops.

  • Captcha-protected results are not bypassed. If an engine returns a

challenge page, the parser will return zero results for that engine and

log a warning.

Crossref is a public metadata service, not a full-text search index. The

client sends query.bibliographic, respects the requested result limit, and

uses canonical https://doi.org/<doi> URLs. Set CROSSREF_MAILTO to identify

your application through Crossref's polite-pool convention. See the

Crossref REST API etiquette

and rate-limit documentation.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

它属于哪个仓库

星标★ 7,018
本站分层T1
该仓技能数68
原文件路径src/opensquilla/skills/bundled/multi-search-engine/SKILL.md

同一个仓库里的其他技能

看这个仓库的全部 68 个技能