Query scholarly metadata and the web through Crossref, Brave, Tavily, and DuckDuckGo with a single CLI surface. Trigger when the user asks for research search, fact lookup, source discovery, or engine comparison. Results retain DOI, publication year, and authors when supplied by Crossref, then deduplicate by DOI, arXiv ID, or normalized URL. API-key engines gate themselves on the relevant environment variable; Crossref and DuckDuckGo need no key.
70
87%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
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).
deep-research round with diverse engine coveragepython {baseDir}/scripts/search.py \
--query "openclaw skill registry" \
--engines crossref,duckduckgo,brave \
--limit 10 \
--jsonOutput:
{
"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.
| 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.
The host should pick engines by language and availability:
crossref first, then brave or tavily for broader contextduckduckgo plus brave or tavily for triangulationbrave (recency filter) or tavilycrossref; supplement with direct arXiv when neededengines.md has the full per-engine guidance.
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.
94ac35e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.