agentsclimarketplace

Search and extract

Skill techstay/some-skills/skills/search-and-extract

A collection of AI agent skills that extend LLM capabilities with Obsidian task management, multi-backend web search, and more.

Install
npx -y skills add techstay/some-skills --skill search-and-extract

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Web search and content extraction skill spanning Tavily, Exa, Ollama Cloud, Jina AI, Parallel Web Systems, Firecrawl, and local SearXNG. Use when the user asks to search the web, fetch a page, verify facts, gather citations, or extract article text for LLM consumption.

SKILL.md

6.9 KB, as published. Nobody here has run it

Search and Extract

A single-file CLI for web search and URL content extraction across multiple services. Output is plain text (\n---\n separated) intended for LLM consumption.

Quick Reference

cd skills/search-and-extract/scripts

# Search — pick a backend with a --<service> flag (defaults to 10 results)
uv run search-extract.py search --tavily "latest rust release"
uv run search-extract.py search --exa "quantum computing"
uv run search-extract.py search --ollama "open source LLMs"
uv run search-extract.py search --jina "climate news"
uv run search-extract.py search --searxng "news today"

# No --<service> flag? The first available service is used automatically.
uv run search-extract.py search "latest AI news"

# Extract — same flag pattern, takes a single URL
uv run search-extract.py extract --tavily https://example.com
uv run search-extract.py extract --exa https://example.com
uv run search-extract.py extract --ollama https://example.com
uv run search-extract.py extract --jina https://example.com
uv run search-extract.py extract https://example.com   # default to first available

Service selection

Pick a backend by passing exactly one --<service> flag. If no service flag is given, the CLI auto-selects the first available service (in the order below) that is enabled and has its required API key set.

PriorityServicesearchextractRequired key
1tavilyyesyesTAVILY_API_KEY
2exayesyesEXA_API_KEY
3ollamayesyesOLLAMA_API_KEY
4jinayesyeskey optional
5searxngyesnonone (local server)
6parallelyesyesPARALLEL_API_KEY
7firecrawlyesyeskey optional

Passing more than one --<service> flag is an error. Diagnostics (default selection, errors) go to stderr so stdout stays clean for LLM use.


Commands

search <query> [--<service>] [--max-results N]

Search the web. <query> is positional; the backend is chosen with a --<service> flag (default: first available). Returns up to N results (default 10).

FlagDescription
--tavilyTavily API, optional answer prepended
--exaExa neural search, returns highlights
--ollamaOllama Cloud
--jinaJina AI, key optional
--searxngLocal SearXNG instance (search only)
--parallelParallel Web Systems, returns excerpts
--firecrawlFirecrawl, key optional
--max-results NMax results to return (default 10)

extract <url> [--<service>]

Extract content from a single URL. <url> is positional; the backend is chosen with a --<service> flag (default: first available). All backends take exactly one URL.

FlagDescription
--tavilyTavily, markdown output
--exaExa, full text
--ollamaOllama Cloud
--jinaJina AI
--parallelParallel Web Systems, full content
--firecrawlFirecrawl, markdown via scrape

Core function signatures

Each backend is a plain function with a normalized parameter list:

FunctionSignature
*_search(query: str, max_results=10)
*_extract(url: str)

Search functions take only the result count (max_results, default 10) beyond the query. Extract functions take only a single url.


Environment Variables

VariableRequiredDefaultDescription
TAVILY_API_KEYTavilyAPI key for Tavily search/extract
EXA_API_KEYExaAPI key for Exa search/extract
OLLAMA_API_KEYOllamaAPI key for Ollama Cloud
JINA_API_KEYOptionalOptional key for higher Jina rate limit
SEARXNG_URLSearXNGhttp://localhost:8888Base URL of local SearXNG instance
PARALLEL_API_KEYParallelAPI key for Parallel search/extract
FIRECRAWL_API_KEYOptionalOptional key for Firecrawl rate limits
DISABLE_TAVILYNoSet 1 or true to skip Tavily
DISABLE_EXANoSet 1 or true to skip Exa
DISABLE_OLLAMANoSet 1 or true to skip Ollama
DISABLE_JINANoSet 1 or true to skip Jina
DISABLE_SEARXNGNoSet 1 or true to skip SearXNG
DISABLE_PARALLELNoSet 1 or true to skip Parallel
DISABLE_FIRECRAWLNoSet 1 or true to skip Firecrawl

A service counts as available for default selection only if it is not disabled and has its required key set (where one is required).


Notes

  • Output is plain text meant for LLM consumption; multiple results are separated by \n---\n.
  • Missing required keys or disabled services return short error strings instead of crashing.
  • SearXNG only supports search; there is no --searxng flag for extract.
  • Jina AI and Firecrawl work without an API key at a lower rate limit.
  • Search defaults to 10 results; --max-results overrides it.
  • extract takes exactly one URL per invocation.
  • Run with uv run search-extract.py ... so PEP 723 inline dependencies are resolved automatically.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.