web-search

Search the web across multiple providers and fetch full webpage text with SSRF-hardened requests.

2|Updated Feb 16, 2026
One-click install
npx skills add https://github.com/xkinput/keytao-bot --skill web-search-xkinput
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: web-search
Source: https://github.com/xkinput/keytao-bot/tree/main/keytao_bot/skills/web-search
Command: npx skills add https://github.com/xkinput/keytao-bot --skill web-search-xkinput

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires httpx.

What problem does it solve? AI assistants cannot answer questions about real-time news, recent releases, or external documentation from memory alone, and guessing produces fabricated answers. This Skill gives the assistant live web search and webpage content fetching so answers are grounded in actual sources with links. ## Core Features & Use Cases - Multi-provider web search: Query DuckDuckGo, Bing, 360 Search, Exa, and GitHub with automatic fallback, circuit-breaker health tracking, and result deduplication. - Webpage text extraction: Fetch a URL and return cleaned body text via Jina Reader or a hardened direct fetcher, with support for GitHub REST, RSS/Atom feeds, and plain-text files. - SSRF protection: Every request validates the scheme, resolves and blocks private/loopback/metadata IPs, and re-validates each redirect hop with capped response sizes. - Use Case: A user asks "what changed in the latest NoneBot2 release?" The assistant calls web_search, reads the top results with web_fetch, and answers with cited source links instead of relying on stale memory. ## Quick Start Ask the bot to search the web for a topic, for example: "Search online for the latest NoneBot2 release notes and summarize them with source links."

Frequently Asked Questions about web-search

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add web search to an AI chatbot with function calling?▼

Expose a web_search tool that accepts a query and max_results, then return titles, snippets, and URLs from search providers. The model calls it whenever users ask about real-time information, and optionally calls web_fetch to read full page text.

What search providers does this web search tool support?▼

It queries DuckDuckGo HTML and Lite endpoints, Bing, 360 Search for Chinese queries, Exa when an API key is configured, and the GitHub repository search API. Backends are ranked by health and latency with automatic fallback.

How does web_fetch prevent SSRF attacks?▼

web_fetch only allows http and https schemes, resolves every hostname and blocks private, loopback, link-local, and cloud-metadata IP ranges. Redirects are followed one hop at a time with re-validation, and response bodies are capped before parsing.

Can I fetch GitHub, RSS, or plain-text URLs with web_fetch?▼

Yes. URLs are classified into channels: GitHub content uses the GitHub REST API, RSS and Atom feeds are parsed with the standard XML library, and plain-text or Markdown files are read directly. Disabled channels like YouTube or Twitter return an explicit error.

Why does web search sometimes return no results or fail?▼

Providers may rate-limit or return anti-bot pages, in which case the circuit breaker opens that backend after repeated failures and routes to alternatives. When all backends fail, the tool reports the failure honestly instead of fabricating results.

When should the assistant not use web search?▼

Skip it for casual conversation and for queries handled by dedicated skills, such as dictionary lookups or internal documentation. Reserve it for explicit search requests, real-time information, external URLs, and questions the assistant cannot answer confidently.