From lich-skills
Searches web for real-time results with citations and extracts raw markdown article content via Tavily API, no browser needed. For research, news, docs when info is dynamic or current.
npx claudepluginhub lichamnesia/lich-skills --plugin lich-skillsThis skill uses the workspace's default tool permissions.
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.
Performs AI-optimized web searches via Tavily API, returning clean AI-ready snippets for current info, news, and research. Supports deep mode, news filtering by days, result count; triggers on general search queries without URLs.
Searches the web via Tavily API for structured, AI-optimized results with domain filtering, relevance scores, and answer summaries. Use for real-time research, news, current events, or fact verification. Requires TAVILY_API_KEY.
Searches the web via Tavily CLI (tvly) for LLM-optimized results with content snippets, relevance scores, and metadata in JSON. Supports domain/time/depth filters; use for articles, news, lookups, or current info.
Share bugs, ideas, or general feedback.
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 . clean