OpenClaw Skills 百度搜索(Baidu Search)技能使用参考手册

2026-03-05 17:21 更新

概述

Baidu Search 是用于通过百度 AI 搜索引擎(BDSE)为 AI 助手提供中文互联网搜索能力的 OpenClaw 技能,属于百度官方支持的 OpenClaw 技能之一,是百度智能云 OpenClaw 镜像方案的核心组件。该技能专门针对中文互联网内容进行优化,能够获取实时、准确的中文搜索结果,并对结果进行智能解析、摘要和结构化处理,支持文本、图片、视频等多种搜索类型,可集成到 OpenClaw 的智能体工作流中,为 AI 助手提供强大的中文信息检索能力。

技能信息

  • 名称:baidu-search
  • 描述:通过百度 AI 搜索引擎进行网页搜索,用于获取实时信息、文档或研究主题
  • 版本:1.1.0
  • 作者:ide-rea
  • 依赖
    • 需要 Python3 环境
    • 需要设置 BAIDU_API_KEY 环境变量(百度千帆 API 密钥)
  • 触发词:"百度搜索"、"中文搜索"、"搜索信息"、"查找资料"

👤 作者:ide-rea
🦞 官方地址:https://clawhub.ai/ide-rea/baidu-search
👉 Skills 下载地址:baidu-search-1.1.0.zip

使用方法

基本命令格式

python3 skills/baidu-search/scripts/search.py '<JSON>'

请求参数说明

参数 类型 是否必需 默认值 描述
query str - 搜索查询关键词
edition str standard 搜索版本:standard(完整搜索)或lite(轻量搜索)
resource_type_filter list[obj] web:20, others:0 资源类型过滤:web(最多 50 条)、video(最多 10 条)、image(最多 30 条)、aladdin(最多 5 条)
search_filter obj - 高级过滤选项(详见下文)
block_websites list[str] - 要屏蔽的网站,例如 ["tieba.baidu.com"]
search_recency_filter str - 时间过滤:week(一周内)、month(一个月内)、semiyear(半年内)、year(一年内)
safe_search bool false 启用严格内容过滤

SearchFilter 高级过滤

参数 类型 描述
match.site list[str] 限制搜索到特定网站,例如 ["baike.baidu.com"]
range.pageTime obj 页面时间范围过滤(详见下文)

日期范围格式

  • 固定日期:YYYY-MM-DD
  • 相对时间(从当前日期开始):now-1w/d(一周内)、now-1M/d(一个月内)、now-1y/d(一年内)
操作符 含义
gte 大于或等于(开始时间)
lte 小于或等于(结束时间)

使用示例

基础搜索

python3 skills/baidu-search/scripts/search.py '{"query":"人工智能"}'

按时间和网站过滤搜索

python3 skills/baidu-search/scripts/search.py '{
"query":"最新新闻",
"search_recency_filter":"week",
"search_filter":{"match":{"site":["news.baidu.com"]}}
}'

资源类型过滤搜索

python3 skills/baidu-search/scripts/search.py '{
"query":"旅游景点",
"resource_type_filter":[{"type":"web","top_k":20},{"type":"video","top_k":5}]
}'

工具代码说明

search.py(百度搜索核心脚本)

import sys
import json
import requests
import os


def baidu_search(api_key, requestBody: dict):
    """
    调用百度AI搜索API进行搜索
    :param api_key: 百度千帆API密钥
    :param requestBody: 搜索请求参数字典
    :return: 搜索结果数据
    """
    # 百度AI搜索API接口地址
    url = "https://qianfan.baidubce.com/v2/ai_search/web_search"
    # 设置请求头
    headers = {
        "Authorization": "Bearer %s" % api_key,  # 身份认证头
        "X-Appbuilder-From": "openclaw",  # 来源标识
        "Content-Type": "application/json"  # 内容类型
    }

    
    # 使用POST方法发送JSON数据到API
    response = requests.post(url, json=requestBody, headers=headers)
    # 检查请求是否成功
    response.raise_for_status()

    
    # 解析JSON响应
    results = response.json()

    
    # 检查API返回是否包含错误信息
    if "code" in results:
        raise Exception(results["message"])

    
    # 提取搜索结果数据
    datas = results["references"]

    
    # 移除不需要的字段(snippet字段)
    keys_to_remove = {"snippet"}
    for item in datas:
        for key in keys_to_remove:
            if key in item:
                del item[key]

    
    return datas


if __name__ == "__main__":
    # 检查命令行参数是否正确
    if len(sys.argv) < 2:
        print("Usage: python baidu_search.py <query>")
        sys.exit(1)

    
    # 获取命令行传入的查询参数
    query = sys.argv[1]
    parse_data = {}

    
    # 尝试解析JSON格式的查询参数
    try:
        parse_data = json.loads(query)
        print(f"成功解析请求体: {parse_data}")
    except json.JSONDecodeError as e:
        print(f"JSON解析错误: {e}")

    
    # 检查是否包含query字段
    if "query" not in parse_data:
        print("错误: 请求体中必须包含query字段。")
        sys.exit(1)

    
    # 从环境变量获取百度API密钥
    api_key = os.getenv("BAIDU_API_KEY")
    if not api_key:
        print("错误: 必须在环境变量中设置BAIDU_API_KEY。")
        sys.exit(1)

    
    # 构建请求体数据
    request_body = {
        "messages": [
            {
                "content": parse_data["query"],
                "role": "user"
            }
        ],
        "edition": parse_data["edition"] if "edition" in parse_data else "standard",
        "search_source": "baidu_search_v2",
        "resource_type_filter": parse_data["resource_type_filter"] if "resource_type_filter" in parse_data else [
            {"type": "web", "top_k": 20}],
        "search_filter": parse_data["search_filter"] if "search_filter" in parse_data else {},
        "block_websites": parse_data["block_websites"] if "block_websites" in parse_data else None,
        "search_recency_filter": parse_data[
            "search_recency_filter"] if "search_recency_filter" in parse_data else "year",
        "safe_search": parse_data["safe_search"] if "safe_search" in parse_data else False,
    }

    
    try:
        # 调用百度搜索函数
        results = baidu_search(api_key, request_body)
        # 以格式化的JSON格式输出结果
        print(json.dumps(results, indent=2, ensure_ascii=False))
    except Exception as e:
        print(f"错误: {str(e)}")
        sys.exit(1)

元数据信息

该技能的元数据信息如下:

{
  "ownerId": "kn7akgt520t01vgs2tzx7yk6m180kt26",
  "slug": "baidu-search",
  "version": "1.1.0",
  "publishedAt": 1770955893565
}
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号