Skip to content
Development
Skill

/tavily-search

Web search and content extraction via the Tavily API. Use when you need real-time web results, citations, or raw article content without a browser. Requires TAVILY_API_KEY.

BOOST
From plugin
lich-skills
23112 skills
Install
$ npx -y skills add lichamnesia/lich-skills --skill tavily-search --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/tavily-search

Context preview

The summary Claude sees to decide when to auto-load this skill.

Web search and content extraction via the Tavily API. Use when you need real-time web results, citations, or raw article content without a browser. Requires TAVILY_API_KEY.

SKILL.md

tavily-search.SKILL.md
name: tavily-search
description: Web search and content extraction via the Tavily API. Use when you need real-time web results, citations, or raw article content without a browser. Requires TAVILY_API_KEY.

Tavily Search

Headless web search and content extraction using [Tavily](https://tavily.com). Built for LLM agents — returns clean, summarised results with optional raw article bodies. No browser required.

When to use

  • You need up-to-date web information (news, docs, pricing, facts)
  • You want cited sources with URLs for a research/writing task
  • You need the full readable body of a URL as markdown
  • Brave/Google search is not available or rate-limited

When NOT to use

  • You already have the page in your context
  • The answer is static and likely in the model's training data
  • You need to interact with a page (login, click) — use a browser MCP instead

Setup

1. Get a free API key: https://app.tavily.com (1000 free searches/month) 2. Export it:

   export TAVILY_API_KEY="tvly-YOUR_KEY_HERE"

Add to `~/.zshrc` or `~/.bashrc` for persistence. **Never commit the key.**

3. First run will auto-install dependencies via `uv`:

   command -v uv || curl -LsSf https://astral.sh/uv/install.sh | sh

Search

# Basic search — 5 results, summarised answer
uv run ~/.claude/skills/lich-skills/skills/tavily-search/scripts/search.py "your query"

# More results
uv run .../search.py "your query" --max-results 10

# Include full article bodies (slower, more tokens)
uv run .../search.py "your query" --raw-content

# Deeper search with higher recall
uv run .../search.py "your query" --depth advanced

# News-only, last 7 days
uv run .../search.py "your query" --topic news --days 7

# Output as JSON
uv run .../search.py "your query" --json

Flags

| Flag | Default | Purpose | |------|---------|---------| | `--max-results N` | `5` | Number of results to return (1–20) | | `--depth {basic,advanced}` | `basic` | `advanced` = slower, higher quality | | `--topic {general,news}` | `general` | News mode adds recency filtering | | `--days N` | — | With `--topic news`, restrict to last N days | | `--raw-content` | off | Include full article body as markdown | | `--include-domains a,b` | — | Restrict to comma-separated domains | | `--exclude-domains a,b` | — | Exclude comma-separated domains | | `--json` | off | Machine-readable JSON output |

Extract a single URL

uv run .../search.py --extract https://example.com/article

Returns clean markdown of the page body (no nav, ads, or boilerplate).

Output format (default, human-readable)

ANSWER: <Tavily's synthesised answer, 1–3 sentences>

RESULTS:
[1] <title>
    <url>
    <snippet — 1–2 sentences>

[2] ...

With `--raw-content` each result gets an indented markdown body below the snippet.

Examples

Research a library:

uv run .../search.py "Gemini 3 Flash Image API pricing" --depth advanced

Get the full article body of a blog post:

uv run .../search.py --extract https://blog.example.com/post --json > post.json

News sweep:

uv run .../search.py "OpenAI Codex release" --topic news --days 3 --max-results 10

Environment

  • Key lookup order: `--api-key` flag → `$TAVILY_API_KEY` → `$TAVILY_KEY`
  • Default model: Tavily's `search` and `extract` endpoints (v1)
  • Default timeout: 30s per request

Common failures

| Error | Fix | |------|-----| | `Error: No TAVILY_API_KEY` | Export the key or pass `--api-key` | | `401 Unauthorized` | Key is wrong, revoked, or over quota | | `429 Rate limit` | Wait or upgrade plan | | `No results` | Broaden query, try `--depth advanced`, drop domain filters |

Red flags

  • Hardcoding the API key anywhere in this repo
  • Passing the key on the command line in shared terminals (shell history leak)
  • Using `--raw-content` with `--max-results 20` on every query (burns tokens)

Verification

  • [ ] `$TAVILY_API_KEY` is set in env, not in files
  • [ ] `uv run .../search.py "hello world"` returns results
  • [ ] `gitleaks detect --source .` clean
Read more
Ships withlich-skills

Personal skill collection for Claude Code, Gemini CLI, and OpenAI Codex — by @LichAmnesia. Telegraph-style, opinionated, no filler. Engineering judgment skills plus high-leverage utility tools. 中文版:README-zh.md

Get the whole plugin
Stats
231
Stars
26
Forks
Maintained
Maintenance
TypeScript
Language
MIT
License
4mo ago
Last commit
6mo ago
Created
10d ago
Added

Repo: lichamnesia/lich-skills

Other skills on lich-skills.