运行时依赖
安装命令
点击复制技能文档
全局搜索 此技能通过外部服务执行多源网络搜索,并可以在用户明确要求全面覆盖时聚合多个来源的结果。 Privacy 和 Security 注意 重要:此技能将用户的搜索查询发送到外部网络搜索服务 https://clb.ciglobal.cn/web_search。 请注意: 数据传输:查询将被发送到第三方服务,并可能与您的帐户关联 API 密钥:运行时唯一的凭证是 GLOBAL_SEARCH_API_KEY 凭证存储:使用环境变量或系统的凭证管理器安全存储 API 密钥。不要在脚本中硬编码它 用户同意:如果查询可能包含敏感、个人、机密或内部信息,请在发送到外部服务之前询问用户是否同意 敏感查询过滤:不要发送密码、令牌、会话 cookie、私钥、个人标识符、仅内部内容或其他机密数据 数据最小化:在搜索之前,尽量缩短、概括或编辑不必要的敏感细节 范围限制:仅将此技能用于合法的搜索目的 提供者验证:提供者 clb.ciglobal.cn 是外部第三方服务。其可信度、保留策略和隐私实践应由技能发布者在分发之前进行验证;用户不应假设它已被独立验证 帐户关联:API 密钥将搜索活动与您的帐户关联,因此提供者可能会记录或保留搜索历史 凭证配置 所需环境变量:GLOBAL_SEARCH_API_KEY:从 https://clb.ciglobal.cn/apiKey/login 获取的 API 密钥 推荐设置: # 设置环境变量(Linux/Mac) export GLOBAL_SEARCH_API_KEY="your_api_key_here" # 设置环境变量(Windows PowerShell) $env:GLOBAL_SEARCH_API_KEY="your_api_key_here" 或者,在您的代理的凭证管理器或密钥存储中配置 API 密钥。 何时使用 应用此技能时: 用户要求搜索网络或在线收集信息 用户需要按关键词查找新闻文章或参考资料 用户希望从多个在线来源检索内容 用户需要具有最大覆盖范围的全面、实时网络搜索 仅当用户明确要求广泛的多源覆盖时,才使用全面搜索。对于简单的查找,首选最小必要的查询范围。 API 概述 端点:POST /web_search 基 URL:https://clb.ciglobal.cn 身份验证:所需头 X-API-Key。在 https://clb.ciglobal.cn/apiKey/login 获取您的 API 密钥。 注意:此技能将用户查询发送到外部网络搜索服务。请确保您已获得适当的授权才能使用此服务。 请求 对于全面搜索(默认行为),此技能将使用 overall.md 中的脚本自动执行 4 个并行 API 调用: 调用 1:search_source=baidu_search,mode=network(百度新闻/资讯) 调用 2:search_source=google_search,mode=network(谷歌新闻/资讯) 调用 3:search_source=baidu_search_ai,mode=network(百度 AI 搜索) 调用 4:mode=warehouse(Elasticsearch 索引库,忽略 search_source) 头 头名称 是否必需 描述 X-API-Key 是 用于身份验证的 API 密钥。在 https://clb.ciglobal.cn/apiKey/login 获取您的密钥。 Content-Type 是 application/x-www-form-urlencoded(表单数据) 表单参数 参数名称 类型 是否必需 默认值 描述 keyword 字符串 是 - 搜索关键词(多个关键词用空格分隔) search_source 字符串 否 - 引擎:baidu_search、google_search、baidu_search_ai。注意:在使用默认的全面搜索模式时将被忽略。 mode 字符串 否 - network = 实时爬取,warehouse = ES 索引。注意:在使用默认的全面搜索模式时将被忽略。 page 整数 否 1 页码(从 1 开始) 全面搜索(所有来源) 当用户明确要求进行全面搜索(即同时搜索所有可用来源)时,使用 overall.md 中的脚本进行搜索,而不是使用以下示例代码。 示例实现(Python asyncio): import aiohttp import asyncio import os API_URL = "https://clb.ciglobal.cn/web_search" # 从环境变量中获取 API 密钥(推荐) API_KEY = os.environ.get("GLOBAL_SEARCH_API_KEY", "your_api_key_here") if API_KEY == "your_api_key_here": raise ValueError("请设置 GLOBAL_SEARCH_API_KEY 环境变量或提供您的 API 密钥") headers = { "X-API-Key": API_KEY, "Content-Type": "application/x-www-form-urlencoded" } SEARCH_CONFIGS = [ {"name": "百度搜索", "mode": "network", "search_source": "baidu_search"}, {"name": "谷歌搜索", "mode": "network", "search_source": "google_search"}, {"name": "百度 AI 搜索", "mode": "network", "search_source": "baidu_search_ai"}, {"name": "全库搜", "mode": "warehouse", "search_source": None} ] async def fetch_search(session, semaphore, config, keyword, page): async with semaphore: data = { "keyword": keyword, "page": page, "mode": config["mode"], "search_source": config["search_source"] } async with session.post(API_URL, headers=headers, data=data) as response: return await response.json() async def main(): async with aiohttp.ClientSession() as session: semaphore = asyncio.Semaphore(10) tasks = [] for config in SEARCH_CONFIGS: task = asyncio.create_task(fetch_search(session, semaphore, config, "your_keyword_here", 1)) tasks.append(task) results = await asyncio.gather(*tasks) for result in results: print(result) asyncio.run(main())