From lich-skills
Searches the web and extracts article content via the Tavily API, returning clean results with citations for real-time facts, news, or research. No browser needed.
How this skill is triggered — by the user, by Claude, or both
Slash command
/lich-skills:tavily-searchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
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.
Headless web search and content extraction using Tavily. Built for LLM agents — returns clean, summarised results with optional raw article bodies. No browser required.
Get a free API key: https://app.tavily.com (1000 free searches/month)
Export it:
export TAVILY_API_KEY="tvly-YOUR_KEY_HERE"
Add to ~/.zshrc or ~/.bashrc for persistence. Never commit the key.
First run will auto-install dependencies via uv:
command -v uv || curl -LsSf https://astral.sh/uv/install.sh | sh
# 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
| 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 |
uv run .../search.py --extract https://example.com/article
Returns clean markdown of the page body (no nav, ads, or boilerplate).
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.
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
--api-key flag → $TAVILY_API_KEY → $TAVILY_KEYsearch and extract endpoints (v1)| 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 |
--raw-content with --max-results 20 on every query (burns tokens)$TAVILY_API_KEY is set in env, not in filesuv run .../search.py "hello world" returns resultsgitleaks detect --source . cleannpx claudepluginhub lichamnesia/lich-skills --plugin lich-skillsPerforms AI-optimized web searches via Tavily API, returning clean snippets for current information and news.
Searches the web via the Tavily CLI, returning LLM-optimized results with content snippets, relevance scores, and metadata. Supports domain filtering, time ranges, and multiple search depths.
Searches the web, extracts content from URLs, and crawls websites using the Tavily API for up-to-date information retrieval.