无需 API 密钥的 DuckDuckGo 搜索方案,通过 web_fetch 直接抓取 Lite 版结果,零依赖、零成本,适合 Brave API 失效时的降级方案。
说明:
## 核心用法
`ddg-search` 技能通过 `web_fetch` 工具直接请求 DuckDuckGo Lite 的 HTML 页面,解析出搜索结果的标题、摘要和 URL。无需安装任何依赖包,也无需配置 API 密钥,是真正的零成本搜索方案。
**基础调用模式:**
“`
web_fetch(url=”https://lite.duckduckgo.com/lite/?q=QUERY”, extractMode=”text”, maxChars=8000)
“`
**关键技巧:**
– 使用 `extractMode=”text”` 而非 markdown,避免 HTML 标签干扰
– 结果以纯文本编号列表呈现,需人工过滤前 1-2 条广告条目
– 支持区域过滤(`&kl=us-en`、`&kl=au-en` 等)
– 精确短语搜索需 URL 编码引号:`%22exact+phrase%22`
**推荐工作流:**
1. 搜索获取候选 URL 列表
2. 人工挑选最相关条目(跳过”Sponsored link”)
3. 二次 `web_fetch` 抓取目标页面全文
## 显著优点
– **零门槛**:无 API 密钥、无付费墙、无 rate limit 焦虑
– **零依赖**:纯 web_fetch 实现,不引入额外 Python 包
– **降级可靠**:专为 `missing_brave_api_key` 错误设计,主搜索失效时的保险方案
– **区域支持**:内置 20+ 国家/地区代码,本地化搜索能力完整
## 潜在局限
– **功能裁剪**:不支持时间范围过滤(`&df=` 不可靠),无图片/视频结果
– **源质量差异**:底层数据来自 Bing 索引,与 Google 结果存在偏差
– **反爬风险**:DuckDuckGo 可能调整 Lite 版页面结构,导致解析失效
– **广告干扰**:前 1-2 条结果固定为广告,需人工识别跳过
– **速率隐性限制**:高频调用可能触发 IP 级限制,无明确文档说明阈值
## 适合人群
– Brave API 配额耗尽或配置失败的紧急场景
– 成本敏感、追求零运维的轻量级应用
– 需要快速验证搜索可行性,再决定是否接入付费 API 的 POC 阶段
– 对结果时效性不敏感、可接受 Bing 索引质量的通用查询
## 常规风险
– **解析脆弱性**:HTML 结构变更会导致结果提取失败,无官方 API 稳定性承诺
– **合规灰色地带**:大规模自动化抓取可能违反 DuckDuckGo ToS
– **结果完整性**:maxChars 截断可能遗漏深层结果,长查询需分页策略(技能未提供)








