← Back to Skills Marketplace
soymilkwinsagain

Better Tavily Search

by SoymilkWinsAgain · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
129
Downloads
1
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install better-tavily-search
Description
The best skill to retrieve fresh web evidence with Tavily. Use for source finding, link discovery, official documentation lookup, current-event verification,...
README (SKILL.md)

Better Tavily Search

Use Tavily when the task needs fresh external evidence, links, current facts, official documentation, or source discovery.

This skill is not a rigid search policy. The model should still plan. Use Tavily's controls to express that plan more precisely:

  • choose the right query
  • choose the right profile
  • keep the first pass small
  • escalate only when the first pass is insufficient

Core Idea

Prefer evidence-first retrieval over answer-first retrieval.

Default pattern:

  1. Run a small Tavily search with an intent-aligned profile.
  2. Inspect titles, URLs, domains, snippets, dates, and scores.
  3. Rewrite the query or refine Tavily parameters if the first pass is weak.
  4. Extract content from the best 1–3 URLs only when more detail is needed.
  5. Use site mapping only for documentation or site-navigation tasks.

Do not start with large raw-content payloads unless the task clearly requires them.

Requirements

Authentication is loaded by the script itself. Either of these is valid:

  • environment variable: TAVILY_API_KEY
  • ~/.openclaw/.env containing TAVILY_API_KEY=...

The skill metadata only requires python3, because the script can load the API key from either location.

Quick Start

# general search
python3 {baseDir}/scripts/tavily.py search \
  --query "OpenClaw skills documentation" \
  --profile general \
  --max-results 5 \
  --format agent

# recent news search
python3 {baseDir}/scripts/tavily.py search \
  --query "Federal Reserve meeting March 2026" \
  --profile news \
  --time-range month \
  --max-results 5 \
  --format agent

# official-domain search
python3 {baseDir}/scripts/tavily.py search \
  --query "Python asyncio task group docs" \
  --profile official \
  --include-domains docs.python.org \
  --max-results 5 \
  --format agent

# higher-precision search
python3 {baseDir}/scripts/tavily.py search \
  --query '"exact phrase" OpenClaw' \
  --profile precision \
  --search-depth advanced \
  --chunks-per-source 3 \
  --max-results 5 \
  --format agent

# extract content from top URLs
python3 {baseDir}/scripts/tavily.py extract \
  --query "OpenClaw skills frontmatter requirements" \
  --urls "https://docs.openclaw.ai/tools/skills,https://docs.openclaw.ai/tools/creating-skills" \
  --chunks-per-source 3 \
  --format md

# map a documentation site before extraction
python3 {baseDir}/scripts/tavily.py map \
  --url "https://docs.openclaw.ai" \
  --format raw

Working Principles

  • Keep search queries compact, entity-heavy, and task-specific.
  • Keep the first pass small: usually max_results=3..5.
  • Prefer explicit parameters over broad, vague prompting.
  • Use Tavily-native knobs to match intent instead of stuffing instructions into the query.
  • Default to --include-answer off and let downstream reasoning synthesize the answer.
  • Default to --include-raw-content off on the first pass.
  • Prefer search -> extract over search + huge raw content.
  • Use --auto-parameters only as a recovery step or when the intent is genuinely ambiguous.

Intent Profiles

Think in profiles, not in a flat list of low-level flags. Choose the smallest profile that matches the task.

general

Use for ordinary web search, concept lookup, background verification, and broad source finding.

Default shape:

  • topic=general
  • search_depth=basic
  • max_results=3..5
  • include_answer=false
  • include_raw_content=false

news

Use when the user asks about recent events, recent policy changes, sports, politics, or anything framed as latest, recent, today, or this week.

Default shape:

  • topic=news
  • add time_range or start_date/end_date when the time window matters
  • start with search_depth=basic

finance

Use for company, market, filings, earnings, and finance-specific information.

Default shape:

  • topic=finance
  • start with basic
  • add time_range or domain filters if needed

official

Use when the user implicitly wants official docs, vendor docs, standards, API references, or primary sources.

Default shape:

  • topic=general
  • use include_domains
  • keep max_results small
  • escalate to advanced only if the first pass is noisy

precision

Use when exact wording, a specific page, or a narrow entity match matters.

Default shape:

  • use quoted strings when appropriate
  • consider exact_match=true
  • use search_depth=advanced
  • set chunks_per_source=2..3

regional

Use when the source region matters more than the global web average.

Default shape:

  • add country
  • combine with general, news, or finance intent as needed

Query Planning

Plan the query at the semantic level, then let Tavily do the retrieval work.

Good first-pass queries usually have these properties:

  • one main information goal
  • the main entities named explicitly
  • little or no conversational filler
  • no unnecessary formatting instructions
  • optional date or source constraints only when they help retrieval

Prefer:

  • OpenClaw skills documentation site:docs.openclaw.ai
  • SEC 10-K NVIDIA fiscal 2026
  • Boston University data science tuition 2026 official

Avoid:

  • long essay prompts
  • combining many unrelated asks in one query
  • asking Tavily to already write the final answer inside the query

For detailed rewrite patterns, read:

  • references/query_playbook.md

Command Surface

The implementation lives at:

  • scripts/tavily.py

Search

python3 {baseDir}/scripts/tavily.py search --query "..."

Main flags:

  • --profile {general,news,finance,official,precision,regional}
  • --topic {general,news,finance}
  • --search-depth {ultra-fast,fast,basic,advanced}
  • --max-results N
  • --time-range {day,week,month,year} or exact --start-date YYYY-MM-DD --end-date YYYY-MM-DD
  • --include-domains ...
  • --exclude-domains ...
  • --country ...
  • --exact-match
  • --auto-parameters
  • --chunks-per-source N
  • --include-answer [basic|advanced]
  • --include-raw-content [markdown|text]
  • --include-favicon
  • --safe-search
  • --format {agent,raw,md,brave}

Extract

python3 {baseDir}/scripts/tavily.py extract --urls "https://..."

Main flags:

  • --query ... for reranking extracted chunks
  • --chunks-per-source N
  • --extract-depth {basic,advanced}
  • --content-format {markdown,text}
  • --include-images
  • --include-favicon
  • --request-timeout SECONDS
  • --format {agent,raw,md}

Map

python3 {baseDir}/scripts/tavily.py map --url "https://..."

Main flags:

  • --instructions ...
  • --max-depth N
  • --max-breadth N
  • --limit N
  • --select-paths ...
  • --select-domains ...
  • --exclude-paths ...
  • --exclude-domains ...
  • --allow-external / --no-allow-external (default is to exclude external links)
  • --request-timeout SECONDS
  • --format {agent,raw,md}

For exact flag behavior, run --help on the relevant subcommand.

Escalation Ladder

Use the lightest step that can solve the task.

Step 1 — Small search

Start with a profile-aligned search call.

Step 2 — Rewrite the query

If results are broad, stale, or noisy, rewrite the query before expanding result count.

Step 3 — Refine parameters

Use one or more of:

  • topic
  • time_range or start_date/end_date
  • include_domains / exclude_domains
  • country
  • exact_match
  • search_depth=fast|advanced
  • chunks_per_source

Step 4 — Extract top URLs

When snippets are promising but insufficient, run extract on the best 1–3 URLs. Pass the same user intent as query so Tavily can rerank extracted chunks.

Step 5 — Map then extract

When the task is really about navigating a documentation site or knowledge base, map the site first, then extract selected pages.

Step 6 — Stop escalating

If the top sources already answer the question, stop. Do not keep searching just because more knobs exist.

For the detailed decision tree, read:

  • references/escalation_rules.md

Output Philosophy

Expose a stable shape to the model while preserving Tavily signals that help planning.

Preferred default output is agent, which preserves:

  • the original query
  • the executed query and parameters
  • the selected profile
  • source domain
  • score when available
  • snippet or extracted content chunks
  • usage metadata when available
  • response time and request identifiers when available

Use raw when you need the closest representation of Tavily's response. Use md for human inspection. Use brave only when a downstream consumer expects a Brave-like result shape.

For the detailed schema, read:

  • references/output_contract.md
  • references/param_matrix.md

When Not to Use This Skill

Do not use this skill when:

  • the answer is fully contained in local files or already-open documents
  • the task is pure writing or transformation with no need for external sources
  • a specialized tool already exists for the target system
  • the task is a large, asynchronous research workflow better handled by Tavily Research or another research-specific workflow

Notes for the Implementer

This wrapper should reflect Tavily's design, not fight it. Expose the parameters that matter for model planning, but still protect context size and credit usage with conservative defaults and stable output contracts.

Usage Guidance
This skill appears to do exactly what it says: call the Tavily API to search, extract, and map web content. Before installing, confirm you trust the Tavily endpoint and provide a TAVILY_API_KEY. Note that the script will also read ~/.openclaw/.env for the key (documented) and will honor a TAVILY_API_BASE environment variable (not prominently documented) — if you set TAVILY_API_BASE it will send your API key and queries to that URL, so only set it to trusted endpoints (the default is https://api.tavily.com). If you want extra assurance, review scripts/tavily.py yourself; it uses only the Python standard library and makes HTTPS POSTs to the API, with no subprocess execution or other filesystem access beyond reading the .env file.
Capability Assessment
Purpose & Capability
Name/description, CLI surface in SKILL.md, and the included Python script all target Tavily web retrieval. The only required credential is TAVILY_API_KEY which is appropriate for calling a Tavily API. Required binary (python3) matches the provided script.
Instruction Scope
Instructions and code mainly perform web retrieval via Tavily and explain using either TAVILY_API_KEY or ~/.openclaw/.env for auth (documented in SKILL.md). One small mismatch: the script also reads the TAVILY_API_BASE environment variable (defaults to https://api.tavily.com) but that env var is not called out in the SKILL.md; this lets a user override the API endpoint (an intentional flexibility for some deployments but worth noting).
Install Mechanism
No install spec — the skill is delivered as a script and docs only. The implementation is standard-library Python and makes only HTTPS calls; nothing is downloaded or extracted during install.
Credentials
The primaryEnv is TAVILY_API_KEY (expected). The script also reads ~/.openclaw/.env to find the same key (documented). It additionally reads TAVILY_API_BASE if present (not declared in metadata) which can redirect requests to a different server — functionally useful but worth being aware of because it changes where your API key and queries are sent.
Persistence & Privilege
always is false and the skill does not request permanent presence or modify other skills. It does not write to system-wide configs or ask for unrelated privileges.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install better-tavily-search
  3. After installation, invoke the skill by name or use /better-tavily-search
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Better Tavily Search 1.0.0 — initial release - Introduces a skill for evidence-first, fresh web retrieval via Tavily with a focus on flexible query planning and small, high-quality results. - Provides support for several task-specific profiles: general, news, finance, official, precision, and regional. - Includes modular command-line interface: search, extract, and map, each with extensive and precise parameter control. - Automatically loads the Tavily API key from either environment variables or a config file. - Emphasizes compact, task-specific queries and incremental escalation for efficient information retrieval.
Metadata
Slug better-tavily-search
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Better Tavily Search?

The best skill to retrieve fresh web evidence with Tavily. Use for source finding, link discovery, official documentation lookup, current-event verification,... It is an AI Agent Skill for Claude Code / OpenClaw, with 129 downloads so far.

How do I install Better Tavily Search?

Run "/install better-tavily-search" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Better Tavily Search free?

Yes, Better Tavily Search is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Better Tavily Search support?

Better Tavily Search is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Better Tavily Search?

It is built and maintained by SoymilkWinsAgain (@soymilkwinsagain); the current version is v1.0.0.

💬 Comments