Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Headless web search and content extraction via the Brave Search API. Features exponential-backoff retry, circuit breaker fault isolation, bounded-concurrency...
Headless web search and content extraction via the Brave Search API. Features exponential-backoff retry, circuit breaker fault isolation, bounded-concurrency...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Headless web search and content extraction via the Brave Search API.
Run once before first use: cd <skill-root> npm ci Required environment variable: export BRAVE_API_KEY="your-key-here" Get a free API key at brave.com/search/api.
node scripts/search.js "query" # Basic (5 results) node scripts/search.js "query" -n 10 # Up to 20 results node scripts/search.js "query" --content # Include page content node scripts/search.js "query" -n 3 --content # Combined node scripts/search.js "query" --json # Newline-delimited JSON node scripts/search.js --help # Full options + env vars
node scripts/content.js https://example.com/article node scripts/content.js https://example.com/article --json node scripts/content.js https://example.com/article --max-length 8000
--- Result 1 --- Title: Page Title URL: https://example.com/page Snippet: Description from Brave Search Content: # Page Title Extracted markdown content... --- Result 2 --- ... Pass --json to get one JSON object per line instead, suitable for piping.
CodeMeaning0Success1Invalid input or configuration error2Page had no extractable content (content.js)130Interrupted (SIGINT)
All behaviour is configurable without touching code: VariableDefaultDescriptionBRAVE_API_KEYβRequired. Brave Search subscription tokenLOG_LEVELinfodebug Β· info Β· warn Β· error Β· silentLOG_JSONfalseEmit logs as newline-delimited JSON to stderrFETCH_TIMEOUT_MS15000Per-page fetch timeoutSEARCH_TIMEOUT_MS10000Brave API call timeoutMAX_CONTENT_LENGTH5000Max chars of extracted contentMAX_RETRY_ATTEMPTS3Retry attempts on transient errorsRETRY_BASE_DELAY_MS500Base delay for exponential backoffRETRY_MAX_DELAY_MS30000Backoff delay capCONCURRENCY_LIMIT3Parallel page fetches when --content is setCB_FAILURE_THRESHOLD5Consecutive failures before circuit opensCB_RESET_TIMEOUT_MS60000Circuit breaker reset window All variables are validated at startup β misconfigured runs fail immediately with a descriptive list of every bad value rather than crashing mid-execution.
See references/ARCHITECTURE.md for a full module breakdown. scripts/ βββ search.js β Search CLI entry point βββ content.js β Content extraction CLI entry point βββ content-fetcher.js β HTTP fetch + Readability + DOM fallback βββ config.js β Schema-validated env config βββ circuit-breaker.js β Fault isolation (CLOSED β OPEN β HALF_OPEN) βββ retry.js β Exponential backoff with full jitter βββ concurrency.js β Bounded parallel execution pool βββ utils.js β htmlToMarkdown, smartTruncate, parseURL βββ logger.js β Structured leveled logger β stderr βββ errors.js β Typed error hierarchy
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.