@dvcrn/webserp
BWeb search across 7 engines in parallel with browser impersonation. Use when the agent needs current information from the web — news, documentation, recent events, or anything beyond training data. Returns structured JSON (SearXNG-compatible) with title, URL, and content. Uses curl_cffi to mimic real browser fingerprints so requests don't get blocked. Install with `pip install webserp`. No API keys needed.
Install
agr install @dvcrn/webserp --target claudeWrites 1 file into .claude/skills/, pinned to git-406e9eea.
- .claude/skills/webserp/SKILL.md
Document
name: webserp
description: "Web search across 7 engines in parallel with browser impersonation. Use when the agent needs current information from the web — news, documentation, recent events, or anything beyond training data. Returns structured JSON (SearXNG-compatible) with title, URL, and content. Uses curl_cffi to mimic real browser fingerprints so requests don't get blocked. Install with pip install webserp. No API keys needed."
webserp
Metasearch CLI — queries Google, DuckDuckGo, Brave, Yahoo, Mojeek, Startpage, and Presearch in parallel. Uses curl_cffi for browser impersonation. Results like a browser, speed like an API.
When to use webserp
- You need current/recent information not in your training data
- You need to verify facts or find sources
- You need to discover URLs, documentation, or code repositories
- The user asks about recent events, releases, or news
Install
pip install webserp
No API keys, no configuration. Just install and search.
Usage
# Search all 7 engines (default)
webserp "how to deploy docker containers"
# Search specific engines
webserp "python async tutorial" --engines google,brave,duckduckgo
# Limit results per engine
webserp "rust vs go" --max-results 5
# Show which engines succeeded/failed
webserp "test query" --verbose
# Set per-engine timeout
webserp "query" --timeout 15
# Use a proxy
webserp "query" --proxy "socks5://127.0.0.1:1080"
Options
| Flag | Description | Default |
|---|---|---|
-e, --engines | Comma-separated engine list | all |
-n, --max-results | Max results per engine | 10 |
--timeout | Per-engine timeout (seconds) | 10 |
--proxy | Proxy URL for all requests | none |
--verbose | Show engine status in stderr | false |
Output format
JSON to stdout (SearXNG-compatible):
{
"query": "deployment issue",
"number_of_results": 42,
"results": [
{
"title": "How to fix Docker deployment issues",
"url": "https://example.com/docker-fix",
"content": "Common Docker deployment problems and solutions...",
"engine": "google"
}
],
"suggestions": [],
"unresponsive_engines": []
}
Parse with jq or any JSON parser. The results array contains title, url, content, and engine for each result. unresponsive_engines lists any engines that failed with the error reason.
Tips
- Use
--max-results 5to keep output concise when you just need a few links - Use
--engines google,braveto target specific engines for faster results - Use
--verbose(writes to stderr) to see which engines responded — the JSON on stdout is unaffected - Results are deduplicated by URL across engines — you won't get the same link twice
Repository README
Describes dvcrn/openclaw-skills-marketplace as a whole, which may contain artifacts other than this one. Where this artifact had no useful description of its own, its summary was taken from here.
OpenClaw Skills Marketplace For Claude
This repository is an automatic conversion of openclaw/skills into the Claude Skills marketplace format so the skills can be installed and used directly in Claude.
It takes the OpenClaw skill corpus and rewrites it into a Claude-compatible marketplace with:
- a root marketplace manifest at
.claude-plugin/marketplace.json - one Claude plugin per OpenClaw skill under
plugins/ - a generation report at
reports/generate-marketplace.json
Use In Claude
Add this marketplace in Claude with:
/plugin marketplace add dvcrn/openclaw-skills-marketplace
Then install any generated plugin from the marketplace:
/plugin install <plugin-name>@openclaw-skills
Example:
/plugin install 0x-professor--agentic-mcp-server-builder@openclaw-skills
What This Repo Does
The generator reads canonical OpenClaw source skills from:
openclaw-skills/skills/<owner>/<slug>/
Each source skill is expected to contain:
_meta.jsonSKILL.mdor lowercaseskill.md
The conversion process:
- maps each OpenClaw skill to one Claude plugin
- normalizes lowercase
skill.mdtoSKILL.md - extracts Claude plugin root assets like
agents/,hooks/,.mcp.json,.lsp.json, andsettings.json - preserves nested
skills/trees when a source package already behaves like a multi-skill plugin - skips malformed inputs and records them in
reports/generate-marketplace.json
Regenerate The Entire Marketplace
To rebuild the full marketplace from the openclaw-skills submodule:
mise run generate
That regenerates:
.claude-plugin/marketplace.jsonplugins/<plugin-id>/...reports/generate-marketplace.json
The generator replaces previous generated output under .claude-plugin/, plugins/, and reports/ on each run.
If you want the explicit underlying task name, this still works too:
mise run generate_marketplace
For small development runs:
python3 scripts/generate_marketplace.py --source openclaw-skills/skills --output . --limit 10
Validate And Test
Run the generator tests:
mise run test
Validate the generated marketplace:
claude plugin validate .
Notes
- Plugin ids are generated as
<owner>--<slug>after sanitization. - Nested source
skills/directories are preserved as plugin content rather than treated as separate top-level source skills. - The upstream OpenClaw source is included as the
openclaw-skillssubmodule.
Trustgrade B
- passBody integrity
Whether the stored document is plausibly the kind of file the artifact declares, rather than something fetched by mistake.
- passType matchnot applicable to this artifact type
Whether the artifact is really the kind of thing its metadata claims it is.
- passFreshness
How long since the source repository was last pushed to.
- passPrompt injection
Scans the artifact's own text for instructions aimed at your agent rather than at you.
- warnLicenseno SPDX license detected
Whether the source repository declares an SPDX license permissive enough to redistribute.
How the grade is calculated
Each check contributes 0 points when it passes, 1 when it warns, and 2 when it fails. The total maps to a letter:
- Aevery check passed
- Bone warning
- Ctwo warnings
- Dprompt injection or body integrity failed, or three warnings
- Fone of those failed, and something else is wrong
These are automated hygiene checks, not a security audit, and not a dependency or vulnerability scan. A grade of A means nothing was flagged — not that the artifact is safe.
Versions
git-406e9eeae09f2026-07-31