home / skills / openclaw / skills / tavily

This skill delivers AI-ready web search results with summaries and structured data from Tavily, enabling fast, accurate research and source gathering.

npx playbooks add skill openclaw/skills --skill tavily

Review the files below or copy the command above to add this skill to your agents.

Files (4)
SKILL.md
9.8 KB
---
name: tavily
description: AI-optimized web search using Tavily Search API. Use when you need comprehensive web research, current events lookup, domain-specific search, or AI-generated answer summaries. Tavily is optimized for LLM consumption with clean structured results, answer generation, and raw content extraction. Best for research tasks, news queries, fact-checking, and gathering authoritative sources.
---

# Tavily AI Search

## Overview

Tavily is a search engine specifically optimized for Large Language Models and AI applications. Unlike traditional search APIs, Tavily provides AI-ready results with optional answer generation, clean content extraction, and domain filtering capabilities.

**Key capabilities:**
- AI-generated answer summaries from search results
- Clean, structured results optimized for LLM processing
- Fast (`basic`) and comprehensive (`advanced`) search modes
- Domain filtering (include/exclude specific sources)
- News-focused search for current events
- Image search with relevant visual content
- Raw content extraction for deeper analysis

## Architecture

```mermaid
graph TB
    A[User Query] --> B{Search Mode}
    B -->|basic| C[Fast Search<br/>1-2s response]
    B -->|advanced| D[Comprehensive Search<br/>5-10s response]
    
    C --> E[Tavily API]
    D --> E
    
    E --> F{Topic Filter}
    F -->|general| G[Broad Web Search]
    F -->|news| H[News Sources<br/>Last 7 days]
    
    G --> I[Domain Filtering]
    H --> I
    
    I --> J{Include Domains?}
    J -->|yes| K[Filter to Specific Domains]
    J -->|no| L{Exclude Domains?}
    K --> M[Search Results]
    L -->|yes| N[Remove Unwanted Domains]
    L -->|no| M
    N --> M
    
    M --> O{Response Options}
    O --> P[AI Answer<br/>Summary]
    O --> Q[Structured Results<br/>Title, URL, Content, Score]
    O --> R[Images<br/>if requested]
    O --> S[Raw HTML Content<br/>if requested]
    
    P --> T[Return to Agent]
    Q --> T
    R --> T
    S --> T
    
    style E fill:#4A90E2
    style P fill:#7ED321
    style Q fill:#7ED321
    style R fill:#F5A623
    style S fill:#F5A623
```

## Quick Start

### Basic Search

```bash
# Simple query with AI answer
scripts/tavily_search.py "What is quantum computing?"

# Multiple results
scripts/tavily_search.py "Python best practices" --max-results 10
```

### Advanced Search

```bash
# Comprehensive research mode
scripts/tavily_search.py "Climate change solutions" --depth advanced

# News-focused search
scripts/tavily_search.py "AI developments 2026" --topic news
```

### Domain Filtering

```bash
# Search only trusted domains
scripts/tavily_search.py "Python tutorials" \
  --include-domains python.org docs.python.org realpython.com

# Exclude low-quality sources
scripts/tavily_search.py "How to code" \
  --exclude-domains w3schools.com geeksforgeeks.org
```

### With Images

```bash
# Include relevant images
scripts/tavily_search.py "Eiffel Tower architecture" --images
```

## Search Modes

### Basic vs Advanced

| Mode | Speed | Coverage | Use Case |
|------|-------|----------|----------|
| **basic** | 1-2s | Good | Quick facts, simple queries |
| **advanced** | 5-10s | Excellent | Research, complex topics, comprehensive analysis |

**Decision tree:**
1. Need a quick fact or definition? → Use `basic`
2. Researching a complex topic? → Use `advanced`
3. Need multiple perspectives? → Use `advanced`
4. Time-sensitive query? → Use `basic`

### General vs News

| Topic | Time Range | Sources | Use Case |
|-------|------------|---------|----------|
| **general** | All time | Broad web | Evergreen content, tutorials, documentation |
| **news** | Last 7 days | News sites | Current events, recent developments, breaking news |

**Decision tree:**
1. Query contains "latest", "recent", "current", "today"? → Use `news`
2. Looking for historical or evergreen content? → Use `general`
3. Need up-to-date information? → Use `news`

## API Key Setup

### Option 1: Clawdbot Config (Recommended)

Add to your Clawdbot config:

```json
{
  "skills": {
    "entries": {
      "tavily": {
        "enabled": true,
        "apiKey": "tvly-YOUR_API_KEY_HERE"
      }
    }
  }
}
```

Access in scripts via Clawdbot's config system.

### Option 2: Environment Variable

```bash
export TAVILY_API_KEY="tvly-YOUR_API_KEY_HERE"
```

Add to `~/.clawdbot/.env` or your shell profile.

### Getting an API Key

1. Visit https://tavily.com
2. Sign up for an account
3. Navigate to your dashboard
4. Generate an API key (starts with `tvly-`)
5. Note your plan's rate limits and credit allocation

## Common Use Cases

### 1. Research & Fact-Finding

```bash
# Comprehensive research with answer
scripts/tavily_search.py "Explain quantum entanglement" --depth advanced

# Multiple authoritative sources
scripts/tavily_search.py "Best practices for REST API design" \
  --max-results 10 \
  --include-domains github.com microsoft.com google.com
```

### 2. Current Events

```bash
# Latest news
scripts/tavily_search.py "AI policy updates" --topic news

# Recent developments in a field
scripts/tavily_search.py "quantum computing breakthroughs" \
  --topic news \
  --depth advanced
```

### 3. Domain-Specific Research

```bash
# Academic sources only
scripts/tavily_search.py "machine learning algorithms" \
  --include-domains arxiv.org scholar.google.com ieee.org

# Technical documentation
scripts/tavily_search.py "React hooks guide" \
  --include-domains react.dev
```

### 4. Visual Research

```bash
# Gather visual references
scripts/tavily_search.py "modern web design trends" \
  --images \
  --max-results 10
```

### 5. Content Extraction

```bash
# Get raw HTML content for deeper analysis
scripts/tavily_search.py "Python async/await" \
  --raw-content \
  --max-results 5
```

## Response Handling

### AI Answer

The AI-generated answer provides a concise summary synthesized from search results:

```python
{
  "answer": "Quantum computing is a type of computing that uses quantum-mechanical phenomena..."
}
```

**Use when:**
- Need a quick summary
- Want synthesized information from multiple sources
- Looking for a direct answer to a question

**Skip when** (`--no-answer`):
- Only need source URLs
- Want to form your own synthesis
- Conserving API credits

### Structured Results

Each result includes:
- `title`: Page title
- `url`: Source URL
- `content`: Extracted text snippet
- `score`: Relevance score (0-1)
- `raw_content`: Full HTML (if `--raw-content` enabled)

### Images

When `--images` is enabled, returns URLs of relevant images found during search.

## Best Practices

### 1. Choose the Right Search Depth

- Start with `basic` for most queries (faster, cheaper)
- Escalate to `advanced` only when:
  - Initial results are insufficient
  - Topic is complex or nuanced
  - Need comprehensive coverage

### 2. Use Domain Filtering Strategically

**Include domains for:**
- Academic research (`.edu` domains)
- Official documentation (official project sites)
- Trusted news sources
- Known authoritative sources

**Exclude domains for:**
- Known low-quality content farms
- Irrelevant content types (Pinterest for non-visual queries)
- Sites with paywalls or access restrictions

### 3. Optimize for Cost

- Use `basic` depth as default
- Limit `max_results` to what you'll actually use
- Disable `include_raw_content` unless needed
- Cache results locally for repeated queries

### 4. Handle Errors Gracefully

The script provides helpful error messages:

```bash
# Missing API key
Error: Tavily API key required
Setup: Set TAVILY_API_KEY environment variable or pass --api-key

# Package not installed
Error: tavily-python package not installed
To install: pip install tavily-python
```

## Integration Patterns

### Programmatic Usage

```python
from tavily_search import search

result = search(
    query="What is machine learning?",
    api_key="tvly-...",
    search_depth="advanced",
    max_results=10
)

if result.get("success"):
    print(result["answer"])
    for item in result["results"]:
        print(f"{item['title']}: {item['url']}")
```

### JSON Output for Parsing

```bash
scripts/tavily_search.py "Python tutorials" --json > results.json
```

### Chaining with Other Tools

```bash
# Search and extract content
scripts/tavily_search.py "React documentation" --json | \
  jq -r '.results[].url' | \
  xargs -I {} curl -s {}
```

## Comparison with Other Search APIs

**vs Brave Search:**
- ✅ AI answer generation
- ✅ Raw content extraction
- ✅ Better domain filtering
- ❌ Slower than Brave
- ❌ Costs credits

**vs Perplexity:**
- ✅ More control over sources
- ✅ Raw content available
- ✅ Dedicated news mode
- ≈ Similar answer quality
- ≈ Similar speed

**vs Google Custom Search:**
- ✅ LLM-optimized results
- ✅ Answer generation
- ✅ Simpler API
- ❌ Smaller index
- ≈ Similar cost structure

## Troubleshooting

### Script Won't Run

```bash
# Make executable
chmod +x scripts/tavily_search.py

# Check Python version (requires 3.6+)
python3 --version

# Install dependencies
pip install tavily-python
```

### API Key Issues

```bash
# Verify API key format (should start with tvly-)
echo $TAVILY_API_KEY

# Test with explicit key
scripts/tavily_search.py "test" --api-key "tvly-..."
```

### Rate Limit Errors

- Check your plan's credit allocation at https://tavily.com
- Reduce `max_results` to conserve credits
- Use `basic` depth instead of `advanced`
- Implement local caching for repeated queries

## Resources

See [api-reference.md](references/api-reference.md) for:
- Complete API parameter documentation
- Response format specifications
- Error handling details
- Cost and rate limit information
- Advanced usage examples

## Dependencies

- Python 3.6+
- `tavily-python` package (install: `pip install tavily-python`)
- Valid Tavily API key

## Credits & Attribution

- Tavily API: https://tavily.com
- Python SDK: https://github.com/tavily-ai/tavily-python
- Documentation: https://docs.tavily.com

Overview

This skill provides AI-optimized web search using the Tavily Search API. It returns clean, structured results tailored for LLM consumption, with options for AI-generated answer summaries, raw content extraction, and image results. Use it to speed up research, fact-checking, and current-events lookups with domain filtering and news-focused search modes.

How this skill works

The skill sends your query to the Tavily API in either a fast (basic) or comprehensive (advanced) mode. Results are returned as structured items (title, url, content, score) and can include an AI-generated answer summary, raw HTML, or image URLs. You can restrict searches by topic (general or news) and include/exclude specific domains for more authoritative or targeted results.

When to use it

  • Gathering authoritative sources for research or documentation.
  • Summarizing multiple web sources into a concise AI-generated answer.
  • Looking up recent news or time-sensitive events (news mode).
  • Extracting raw page content for deeper analysis or scraping.
  • Filtering results to trusted domains for domain-specific research.

Best practices

  • Default to basic mode for quick facts and to save credits; use advanced for deep research.
  • Include trusted domains for academic or official material and exclude known low-quality sources.
  • Limit max_results and avoid raw HTML unless needed to control cost and speed.
  • Enable images only when visual references matter, and cache results for repeated queries.

Example use cases

  • Produce a concise summary of recent AI policy updates using news mode and advanced depth.
  • Collect authoritative links and snippets for a technical guide by including official docs and GitHub.
  • Extract raw HTML of select pages to feed into a downstream NLP pipeline for entity extraction.
  • Search and retrieve image URLs for visual research on architecture or design trends.

FAQ

How do I set the API key?

Provide a tvly-... key via your config system or set TAVILY_API_KEY in the environment.

When should I use advanced mode?

Use advanced when initial results are insufficient, the topic is complex, or you need comprehensive coverage.