Install
openclaw skills install unified-search-suiteUnified web search + deep research suite. Default ordinary /unified_search queries route to deep search-layer mode (Exa + Tavily + Grok); the legacy merged three-engine search (Tavily + Exa + Google) remains available via --legacy or the legacy subcommand. Use when user asks for “综合搜索”, “三搜索”, “三引擎”, “/unified_search”, deep search, issue/PR thread tracing, content extraction, or URL→Markdown conversion.
openclaw skills install unified-search-suiteThis skill is now a two-layer search suite:
/unified_search <query> calls
search-layer: Exa + Tavily + Grok multi-source search with intent-aware scoringfetch-thread: deep thread / issue / PR / forum context extractioncontent-extract: URL → Markdown with MinerU fallbackmineru-extract: official MinerU parsing wrapper--legacy or the explicit legacy subcommand
Run:
bash scripts/unified-search.sh "<query>"
This routes ordinary lookup queries to search-layer deep mode by default. Use --legacy or the legacy subcommand when the old Tavily + Exa + Google merged output is specifically needed.
Examples:
bash scripts/unified-search.sh "tavily language filter"
bash scripts/unified-search.sh "OpenClaw cron run docs"
bash scripts/unified-search.sh --legacy "OpenClaw cron run docs" --topic news --days 7
Chat trigger examples:
/unified_search tavily docs language filter/unified_search OpenClaw cron run docs/unified_search --legacy OpenClaw cron run docs --topic news --days 7Run:
bash scripts/unified-search.sh search-layer "<query>" --mode deep --intent status --num 5
Examples:
bash scripts/unified-search.sh search-layer "OpenClaw config validation bug" --mode deep --intent status --extract-refs
bash scripts/unified-search.sh search-layer --queries "Bun vs Deno" "Bun advantages" "Deno advantages" --mode deep --intent comparison --num 5
bash scripts/unified-search.sh "RAG framework comparison" --mode deep --intent comparison --num 5
If --mode / --intent / --freshness / --source / --extract-refs / --extract-refs-urls / --domain-boost appears, the unified wrapper auto-routes to deep-search mode.
Run:
bash scripts/unified-search.sh fetch-thread "https://github.com/owner/repo/issues/123"
Examples:
bash scripts/unified-search.sh fetch-thread "https://github.com/owner/repo/issues/123" --format markdown
bash scripts/unified-search.sh fetch-thread "https://news.ycombinator.com/item?id=43197966"
Run:
bash scripts/unified-search.sh content-extract --url "https://mp.weixin.qq.com/s/example"
Run:
bash scripts/unified-search.sh mineru-extract "https://example.com/file.pdf"
bash scripts/unified-search.sh mineru-parse-documents --file-sources "https://example.com/file.pdf"
bash scripts/unified-search.sh "<query>"
Ordinary queries now default to search-layer deep mode. Legacy parameters are only for --legacy or the explicit legacy subcommand:
--num: max results per engine (default 5)--topic: general or news (default general)--days: only for recent-news style queries--save-run: save output to custom dir--json: emit summary.json--legacy: force old Tavily + Exa + Google merged behaviorbash scripts/unified-search.sh search-layer ...
Important parameters:
--mode fast|deep|answer--intent factual|status|comparison|tutorial|exploratory|news|resource--freshness pd|pw|pm|py--queries ...--domain-boost github.com,stackoverflow.com--source exa,tavily,grok,tinyfish--extract-refs--extract-refs-urlsbash scripts/unified-search.sh fetch-thread <url> [--format json|markdown] [--extract-refs-only]
bash scripts/unified-search.sh content-extract --url <url>
bash scripts/unified-search.sh mineru-extract <url> [--model MinerU-HTML]
bash scripts/unified-search.sh mineru-parse-documents --file-sources "<URL1>\n<URL2>"
~/.openclaw/openclaw.json -> skills.entries.tavily.apiKeygoogle-search skillPreferred credentials file:
{
"exa": "your-exa-key",
"tavily": "your-tavily-key",
"grok": {
"apiUrl": "https://api.x.ai/v1",
"apiKey": "your-grok-key",
"model": "grok-4.20-multi-agent-xhigh"
},
"tinyfish": {
"apiKey": "your-tinyfish-key",
"apiUrl": "https://api.search.tinyfish.ai"
}
}
Location:
~/.openclaw/credentials/search.json
Optional env overrides:
export EXA_API_KEY="..."
export TAVILY_API_KEY="..."
export GROK_API_URL="https://api.x.ai/v1"
export GROK_API_KEY="..."
export GROK_MODEL="grok-4.20-multi-agent-0309"
export TINYFISH_API_KEY="..."
export TINYFISH_API_URL="https://api.search.tinyfish.ai"
export GITHUB_TOKEN="..." # improves GitHub issue/PR thread fetch limits
export MINERU_TOKEN="..." # required for MinerU parsing
This skill now uses a dedicated venv:
.venv(local virtualenv, create with: python3 -m venv .venv)
Installed there:
requeststrafilaturabeautifulsoup4lxmlsearch-layer script can directly use Exa + Tavily + Grok + TinyFish.web_search, but shell scripts themselves cannot call agent-only tools. So in pure CLI mode, Brave is not auto-executed by the wrapper.content-extract and mineru-* require external accessibility and, for MinerU, a valid MINERU_TOKEN.The upstream implementation is vendored here:
vendor/openclaw-search-skills/
Key vendored modules:
search-layer/content-extract/mineru-extract/Return the native structured JSON / markdown contract from the vendored tool whenever possible, then summarize with:
For concise reporting template, read references/report-template.md.