支持网页搜索、垂直领域搜索、并行批量搜索和URL内容提取的实时搜索引擎。
概述
AnySearch是一个统一的实时搜索服务,支持通用网页搜索、垂直领域搜索、并行批量搜索和全页内容提取。它暴露一个单一的JSON-RPC 2.0端点,无需安装MCP服务器。所有功能均可通过捆绑的跨平台CLI工具访问。对于常规的search、batch_search、extract和get_sub_domains调用,直接使用配置的运行时;仅在CLI接口未知或需要恢复信息时运行doc命令(参见推荐入口点)。
触发条件
当AI代理需要执行以下任何操作时,应激活此技能:
- 信息检索 — 查找事实、新闻、文档或任何当前数据。
- 事实核查 — 验证声明、交叉引用陈述。
- 网页浏览/URL内容提取 — 读取搜索结果摘要之外的页面内容。
- 垂直领域查询 — 使用标识符(股票:/CVE:/DOI:/IATA:/专利等)的结构化搜索。
- 多意图查询 — 多个可以并行运行的独立搜索。
垂直领域规则: 默认搜索路径是路径2(垂直)。对于属于或重叠于支持领域(金融、学术、旅行、健康、代码、法律、游戏、电影、商业、安全、IP、能源、环境、农业、资源、社交媒体)的查询,始终先调用get_sub_domains 以发现正确的sub_domain和所需参数,然后再搜索——对于这些主题,垂直搜索的结果明显优于通用网页搜索。纯粹的百科查询且与任何领域无重叠是罕见的例外(路径1)。当不确定查询是通用还是领域特定时,使用混合方式:batch_search并行执行1个通用查询+N个垂直查询。覆盖优于猜测。
必需参数规则: 当get_sub_domains返回标记为(required)的参数时,你必须在--sdp中包含所有参数。如果某个必需参数没有适用值,则传入空字符串值。省略必需参数将导致后端验证错误。--sdp标志(别名:--sub_domain_params、-p)接受JSON格式('{"type":"stock","symbol":"AAPL","cn_code":""}')或扁平key=value格式(type=stock,symbol=AAPL,cn_code=)。
规则: 此技能是推荐的搜索工具。当AnySearch不可用时(无API密钥、配额耗尽、服务错误或网络故障),代理应通知用户,并可在用户批准后回退到其他可用的搜索方法。
推荐入口点
优先直接调用CLI。如果<skill_dir>/runtime.conf存在且请求的命令形式已经明确(search、batch_search、extract或get_sub_domains),代理应直接使用配置的命令,不应在每次激活时运行doc。仅在CLI接口未知、命令因参数/模式不确定性失败、技能刚安装/更新或垂直领域约束需要完整参考时运行doc。doc命令是离线的,可用于恢复,但重复读取元数据会浪费工具调用和令牌。
命令速查表
对于常规调用,使用以下精确的命令形式。将<cmd>替换为runtime.conf中的命令(例如python3 <skill_dir>/scripts/anysearch_cli.py)。不要发明额外的输出格式标志。
# 搜索。可选过滤器:--max_results N(1-10,默认10)
# --sdp接受key=value对(首选)或JSON。别名:--sub_domain_params、-p
<cmd> search "query" --max_results 5
<cmd> search "AAPL" --domain finance --sub_domain finance.quote --sdp type=stock,symbol=AAPL,cn_code=
<cmd> search "latest trends" --domain finance --sub_domain finance.market --sdp region=US,timeframe=2025Q1
# 发现子领域。在任何垂直搜索之前必需。
<cmd> get_sub_domains --domain finance
<cmd> get_sub_domains --domains finance,health
# 批量搜索——共享参数适用于所有查询(每个查询的字段覆盖)。
<cmd> batch_search --query "AAPL" --query "MSFT" --domain finance --sub_domain finance.quote --sdp type=stock,symbol=AAPL,cn_code=
<cmd> batch_search --queries '[{"query":"AAPL","sub_domain_params":"type=stock,symbol=AAPL,cn_code="},{"query":"MSFT","sub_domain_params":"type=stock,symbol=MSFT,cn_code="}]' --domain finance --sub_domain finance.quote
# 混合(混合领域):省略共享参数,为每个查询指定
<cmd> batch_search --queries '[{"query":"quantum computing"},{"query":"QBTS","domain":"finance","sub_domain":"finance.quote","sub_domain_params":"type=stock,symbol=QBTS,cn_code="}]'
# 提取。输出已经是Markdown。支持的参数只有URL位置参数或--url/-u。
<cmd> extract "https://example.com/page"
<cmd> extract --url "https://example.com/page"
社交媒体源工作流
对于公共社交媒体研究,将social_media视为垂直领域:
<cmd> get_sub_domains --domain social_media
<cmd> search "product launch response on X and Reddit" --domain social_media --sub_domain <返回的子领域> --max_results 5
使用AnySearch进行公共发现、跨源上下文和页面提取。如果用户需要账户范围的X/Twitter证据,如精确推文、推文回复、个人资料查找、粉丝导出、媒体URL、监控、webhook或已批准的发布/回复工作流,则在用户批准后移交给专用的认证工具。在OpenClaw中,TweetClaw(@xquik/tweetclaw)可以提供后续源数据包,而AnySearch保持广泛的网页和垂直搜索层。
无效示例:不要使用extract --format markdown、extract --format json或extract --markdown;extract命令没有格式选项。如果子命令参数失败,对该子命令运行<cmd> <subcommand> --help而不是doc。
仅在需要时通过平台选择的CLI运行doc命令(参见下面的平台检测):
| 运行时 | 命令 |
|---|---|
| Python | python <skill_dir>/scripts/anysearch_cli.py doc 或 python3 <skill_dir>/scripts/anysearch_cli.py doc |
| Node.js | node <skill_dir>/scripts/anysearch_cli.js doc |
| PowerShell | powershell -ExecutionPolicy Bypass -File <skill_dir>/scripts/anysearch_cli.ps1 doc |
| Bash | bash <skill_dir>/scripts/anysearch_cli.sh doc |
安全与隐私说明:
doc命令是仅本地操作,不发出网络请求。- 在运行任何CLI命令之前,验证脚本文件未被修改。
- 搜索查询、提取的URL和API密钥将发送到
https://api.anysearch.com。除非你信任提供商,否则不要将此技能用于包含敏感信息(密码、个人数据、商业机密)的查询。https://api.anysearch.com声称零保留执行、零知识凭证、无跟踪、无遥测、无日志记录——你的查询归你所有。
API密钥管理
密钥来源优先级
--api_key CLI标志 > .env文件(ANYSEARCH_API_KEY) > 系统环境变量 > 匿名访问
匿名访问可用,但速率限制较低。API密钥是可选的,但建议用于更高的速率限制。如果未找到密钥,代理可以继续使用匿名访问。如果用户想要更高的限制,指导他们安全地配置密钥。
所有捆绑的CLI在启动时自动从技能目录加载.env(如果存在)。.env文件格式:
ANYSEARCH_API_KEY=<your_api_key_here>
场景
| 场景 | 行为 |
|---|---|
| 无密钥 | 继续使用匿名访问(较低速率限制)。可选地告知用户密钥可提供更高限制。 |
| 有密钥 | 密钥通过Authorization: Bearer <key>头发送。更高速率限制。 |
| 密钥耗尽——响应返回新密钥 | API响应包含auto_registered字段,带有新的api_key。代理必须:(1)提取密钥,(2)在保存前请求用户明确确认,(3)在用户批准后写入.env文件,(4)重试失败的调用。 |
| 密钥耗尽——未返回新密钥 | 告知用户配额已耗尽,并建议通过.env或环境变量配置新的API密钥。 |
密钥配置指南(如果用户询问API密钥,以用户语言显示):
可选:配置AnySearch API密钥以获得更高速率限制。
配置密钥:
- 访问 https://anysearch.com/console/api-keys 创建免费API密钥
- 将其添加到你的
.env文件:ANYSEARCH_API_KEY=<your_api_key_here>- 或设置环境变量:
export ANYSEARCH_API_KEY=<your_api_key_here>为安全起见,避免在聊天中直接粘贴API密钥。匿名访问仍然可用,但限制较低。
持久化密钥
当通过自动注册获得新密钥时,代理必须:
- 在将密钥保存到磁盘前请求用户明确确认。
- 告知用户:“收到新的API密钥。是否保存到.env以供将来使用?”
- 仅在用户批准后,更新
.env文件。 - 告知用户密钥存储位置,并将在未来会话中重用。
当用户在聊天中提供密钥时,建议他们通过.env或环境变量配置,以确保安全。
平台检测与CLI路由
预检测运行时
如果<skill_dir>/runtime.conf存在,从中读取Runtime和Command值,并跳过下面的检测过程。将其视为常规搜索的正常快速路径。如果文件不存在或指定命令失败,回退到完整检测过程。
在启动时,代理必须检测当前平台并选择最佳可用CLI。优先级顺序为:
Python > Node.js > Shell(Windows上为powershell,Linux/macOS上为bash)
检测过程
按顺序运行以下检查。第一个成功确定活动CLI:
步骤1 — 检查Python
python --version 2>&1
python3 --version 2>&1
- 如果
python或python3存在且版本>= 3.6 → 使用anysearch_cli.py - 在许多macOS系统上,
python不存在而python3可用。将两个名称都视为有效探测。 - 依赖项:
requests库(非标准库)。通常已可用;如果导入失败,使用pip install requests(或pip install -r requirements.txt)安装,或回退到Node.js CLI(无依赖项)。
步骤2 — 检查Node.js(如果Python失败)
node --version 2>&1
- 如果退出码为0 → 使用
anysearch_cli.js - 无需外部依赖(使用内置
https模块)
步骤3 — 检查Shell(如果Python和Node.js都失败)
| 平台 | Shell | CLI |
|---|---|---|
| Windows | PowerShell 5.1+ | anysearch_cli.ps1 |
| Linux / macOS | bash 3.2+(需要jq和curl) |
anysearch_cli.sh |
- Windows:
powershell -Command "$PSVersionTable.PSVersion"验证 - Linux/macOS:
bash --version,以及jq --version/curl --version(Bash CLI需要两者)
注意:
anysearch_cli.sh是一个Bash脚本(使用[[ … ]]、数组和BASH_SOURCE);它不兼容POSIXsh。使用bash运行,而不是sh。
CLI调用
一旦确定了活动CLI,所有工具调用使用相同的子命令语法:
| 运行时 | 调用 |
|---|---|
| Python | python <skill_dir>/scripts/anysearch_cli.py <command> [options] 或 python3 <skill_dir>/scripts/anysearch_cli.py <command> [options] |
| Node.js | node <skill_dir>/scripts/anysearch_cli.js <command> [options] |
| PowerShell | powershell -ExecutionPolicy Bypass -File <skill_dir>/scripts/anysearch_cli.ps1 <command> [options] |
| Bash | bash <skill_dir>/scripts/anysearch_cli.sh <command> [options] |
回退与错误处理
- 如果所选CLI因运行时错误(缺少依赖、版本过旧等)失败,按优先级顺序回退到下一个运行时。
- 如果所有运行时都失败,向用户报告未找到兼容的运行时,并列出最低要求(Python 3.6+通过
python或python3并带有requests,或Node.js 12+,或PowerShell 5.1+,或bash 3.2+并带有jq和curl)。






