Install
openclaw skills install tavily-search-pro-native-nodeResearch-grade Tavily toolkit for OpenClaw - native Node.js, zero dependencies. Search + Extract + Cache + Stats + Rate-limit backoff. Use when the user needs deep web research, multi-URL content extraction, or wants to track Tavily credit usage. Includes built-in response caching, full-page raw content, the Tavily /extract endpoint, automatic 429 backoff, a JSONL usage log, and a stats subcommand. Requires TAVILY_API_KEY in the process environment. For a minimal search-only skill, see tavily-search-native-node.
openclaw skills install tavily-search-pro-native-nodeResearch-grade Tavily toolkit. One script, four subcommands: search, extract, stats, cache.
TAVILY_API_KEY from the process environment only.~/.openclaw/.env.https://api.tavily.com/search and https://api.tavily.com/extract.~/.openclaw/cache/tavily-search-pro-native-node/.--no-log for sensitive calls.potential_exfiltration warning is expected for this Pro skill because it combines env credentials, local cache/log file access, and Tavily network calls. It does not transmit local files or secrets.Native Node.js. Zero dependencies. Small enough to audit directly.
Use this skill when:
Use tavily-search-native-node (the basic version) instead when:
Do NOT use this when:
web_fetch for one-off page readsThe script is in scripts/tavily-pro.mjs.
# Search
node "<skill-dir>/scripts/tavily-pro.mjs" search "OpenClaw skills ecosystem"
# Extract full content from URLs
node "<skill-dir>/scripts/tavily-pro.mjs" extract https://example.com/ https://www.iana.org/help/example-domains
# See your usage
node "<skill-dir>/scripts/tavily-pro.mjs" stats
# Inspect or clear cache
node "<skill-dir>/scripts/tavily-pro.mjs" cache info
node "<skill-dir>/scripts/tavily-pro.mjs" cache clear
# Help
node "<skill-dir>/scripts/tavily-pro.mjs" help
| Flag | Values | Default | Purpose |
|---|---|---|---|
--topic | general | news | general | news biases to fresh articles |
--depth | basic | advanced | basic | advanced = 2 credits |
--max | 1-20 | 5 | Results to return |
--days | integer | 7 (news only) | Age window |
--include | comma list | (none) | Domains to include |
--exclude | comma list | (none) | Domains to exclude |
--raw-content | flag | off | Include full page text per result |
--json | flag | off | Raw JSON output |
--no-cache | flag | off | Skip cache |
--no-log | flag | off | Skip usage log |
--no-retry | flag | off | No backoff on 429 |
--ttl | seconds | 24h general, 1h news | Override cache TTL |
Wraps Tavily's /extract endpoint - takes one or more URLs, returns clean article text.
# Single URL
node "./scripts/tavily-pro.mjs" extract https://example.com
# Multi-URL (more efficient than separate calls)
node "./scripts/tavily-pro.mjs" extract https://a.com https://b.com https://c.com
# Advanced depth for pages with JavaScript rendering
node "./scripts/tavily-pro.mjs" extract --depth advanced https://spa-site.com
Flags: --depth, --json, --no-cache, --no-log, --no-retry, --ttl (default 7 days).
Credits: Tavily bills extract in batches of 5 URLs - 1 credit per 5 URLs (basic), 2 per 5 (advanced). Our log tracks this correctly.
Shows usage summary from the JSONL log.
node "./scripts/tavily-pro.mjs" stats # last 30 days
node "./scripts/tavily-pro.mjs" stats --days 7 # last week
node "./scripts/tavily-pro.mjs" stats --json # machine-readable
Output includes: total calls, searches vs extracts, cache hit rate, errors, credits used, and estimated credits avoided by cache.
node "./scripts/tavily-pro.mjs" cache info # show dir, entry count, size, age
node "./scripts/tavily-pro.mjs" cache clear # wipe the cache
TAVILY_API_KEY from the process environment onlyhttps://api.tavily.com/search and https://api.tavily.com/extract~/.openclaw/cache/tavily-search-pro-native-node/cache/~/.openclaw/cache/tavily-search-pro-native-node/usage.log--json preserves raw provider JSON~/.openclaw/cache/tavily-search-pro-native-node/api.tavily.comResponses cached to ~/.openclaw/cache/tavily-search-pro-native-node/cache/ keyed by SHA-256 of the request body + kind (search/extract). Different flag combos = different cache entries. No false hits.
Default TTLs:
Override per-call with --ttl SECONDS. Skip entirely with --no-cache.
On HTTP 429 (rate-limited), the script retries up to 3 times with exponential backoff (1s, 2s, 4s) or respects the Retry-After header if present. Disable with --no-retry.
Network errors also retry. All other HTTP errors surface immediately.
Every call appends one JSON line to ~/.openclaw/cache/tavily-search-pro-native-node/usage.log:
{"ts":1713732000000,"kind":"search","query":"OpenClaw","depth":"basic","topic":"general","cached":false,"credits":1}
Queries are logged in plaintext. If that's sensitive for a particular call, use --no-log to skip it.
Log is read-only by the script except for appends. Manually rotate/delete if it grows too large (typical: ~200 bytes/entry, so 1 MB = ~5000 calls).
Requires TAVILY_API_KEY in the process environment.
Get a key: https://app.tavily.com - free tier is 1,000 credits/month.
When invoking this skill:
basic depth unless user asks for a deep dive--include to scope to trusted domains when appropriate--no-cache for fresh, or cache clear to wipe allcache info to see size, cache clear to resetRename-Item usage.log usage-old.log; macOS/Linux: mv usage.log usage-old.logThis skill is intentionally dependency-free and keeps cache/log writes under ~/.openclaw/cache/tavily-search-pro-native-node/. Before publishing or updating, run node --check scripts/tavily-pro.mjs, node scripts/tavily-pro.mjs help, node scripts/tavily-pro.mjs stats --json, and a no-key smoke test with a temporary home directory to verify credential errors without spending credits.