deepseek-web-query

使用 DeepSeek 网页版进行互联网查询,分担大模型请求和搜索负担。当用户需要查询最新信息、一般性知识、代码问题、文本分析等,或明确说"用 DeepSeek 查一下"、"联网搜索"、"查下最新"等时触发此技能。特别地,如果提问以"ds:"或"ds:"开头,优先使用此技能。通过 Chrome DevTools MCP 控制浏览器与 DeepSeek 交互,自动检测登录状态并提示用户,保持浏览器会话复用,使用 evaluate_script 提取 Markdown 内容直接返回。

3,891 stars

Best use case

deepseek-web-query is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

使用 DeepSeek 网页版进行互联网查询,分担大模型请求和搜索负担。当用户需要查询最新信息、一般性知识、代码问题、文本分析等,或明确说"用 DeepSeek 查一下"、"联网搜索"、"查下最新"等时触发此技能。特别地,如果提问以"ds:"或"ds:"开头,优先使用此技能。通过 Chrome DevTools MCP 控制浏览器与 DeepSeek 交互,自动检测登录状态并提示用户,保持浏览器会话复用,使用 evaluate_script 提取 Markdown 内容直接返回。

Teams using deepseek-web-query should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/deepseek-web-query/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/andeymei/deepseek-web-query/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/deepseek-web-query/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How deepseek-web-query Compares

Feature / Agentdeepseek-web-queryStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

使用 DeepSeek 网页版进行互联网查询,分担大模型请求和搜索负担。当用户需要查询最新信息、一般性知识、代码问题、文本分析等,或明确说"用 DeepSeek 查一下"、"联网搜索"、"查下最新"等时触发此技能。特别地,如果提问以"ds:"或"ds:"开头,优先使用此技能。通过 Chrome DevTools MCP 控制浏览器与 DeepSeek 交互,自动检测登录状态并提示用户,保持浏览器会话复用,使用 evaluate_script 提取 Markdown 内容直接返回。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# DeepSeek Web Query

## Overview

本技能用于将用户的查询请求转发到 DeepSeek 网页版,利用 DeepSeek 的联网搜索能力获取最新信息,同时减轻主模型的负担。

**技术栈**: 使用 Chrome DevTools MCP (通过 mcporter) 控制浏览器,替代原有的 Playwright 方案。

**故障恢复**: 如果 Chrome DevTools MCP 服务不可用,会自动尝试使用 chrome-devtools-mcp-manager 技能启动浏览器和 MCP 服务。

## When to Use

当用户有以下需求时触发此技能:

- **优先触发**:提问以 "ds:" 或 "ds:" 开头(例如:"ds:什么是量子计算?")
- "用 Deep Seek 查一下..."
- "联网搜索..."
- "查下最新的..."
- "搜索一下..."
- 需要查询最新的互联网信息(新闻、技术文档、产品信息等)
- 一般性知识查询,不需要复杂的多步推理
- 代码相关问题,需要最新的 API 文档或最佳实践
- 文本分析、翻译、总结等任务

## Workflow

### 步骤 0: 预处理查询(处理 ds: 前缀)

如果用户查询以 "ds:" 或 "ds:" 开头:
1. 移除前缀("ds:" 或 "ds:")
2. 将剩余内容作为实际查询问题
3. 继续执行后续步骤

例如:
- 输入:"ds:什么是量子计算?" → 实际查询:"什么是量子计算?"
- 输入:"ds:最新的Python版本是什么?" → 实际查询:"最新的Python版本是什么?"

### 步骤 1: 检查并启动 Chrome DevTools MCP

在执行 MCP 操作前,先检查服务状态:

```bash
# 检查 MCP 服务状态
mcporter list
```

**如果服务不可用(连接错误或权限错误),执行自动恢复流程:**

#### 自动恢复流程

1. **检查内置 Chrome 浏览器状态**
   ```javascript
   browser({
     action: "status",
     profile: "openclaw"
   })
   ```

2. **如果浏览器未运行,启动它**
   ```javascript
   browser({
     action: "open",
     profile: "openclaw",
     url: "about:blank"
   })
   ```
   等待 2-3 秒让浏览器完全启动。

3. **验证 CDP 端点可用**
   ```powershell
   Invoke-WebRequest -Uri "http://localhost:18800/json/version" -Method GET
   ```

4. **重新配置 mcporter 的 MCP 服务器**
   ```bash
   # 移除旧的配置(如果存在)
   mcporter server remove chrome-devtools
   
   # 添加新的 MCP 服务器配置
   mcporter server add chrome-devtools \
     --command "npx" \
     --args "chrome-devtools-mcp@latest,--browserUrl,http://127.0.0.1:18800,--no-usage-statistics"
   ```

5. **验证 MCP 服务已恢复**
   ```bash
   mcporter list
   mcporter call chrome-devtools.list_pages
   ```

#### 完整自动恢复脚本示例

```javascript
// 步骤 1: 检查浏览器状态
const status = await browser({ action: "status", profile: "openclaw" });

// 步骤 2: 如果未运行,启动浏览器
if (!status.cdpReady) {
  await browser({ action: "open", profile: "openclaw", url: "about:blank" });
  await new Promise(r => setTimeout(r, 3000)); // 等待启动
}

// 步骤 3: 验证 CDP 端点
// (使用 exec 执行 PowerShell 命令)

// 步骤 4: 重新配置 mcporter
// (使用 exec 执行 mcporter 命令)

// 步骤 5: 验证 MCP 服务
// (使用 exec 执行 mcporter list)
```

### 步骤 2: 打开浏览器并检测登录状态

1. 使用 Chrome DevTools MCP 打开 DeepSeek:

```bash
# 创建新页面并导航到 DeepSeek
mcporter call chrome-devtools.new_page url: "https://chat.deepseek.com/"

# 或者导航到现有页面
mcporter call chrome-devtools.navigate_page type: "url" url: "https://chat.deepseek.com/"
```

2. 等待页面加载完成后,获取页面快照:

```bash
mcporter call chrome-devtools.take_snapshot
```

3. 根据快照内容检测登录状态:
   - **登录页面特征**:包含"手机号"、"验证码"、"登录"、"微信扫码登录"等文本
   - **已登录页面特征**:包含"发送消息"、"深度思考"、"新对话"等文本

**如果 MCP 调用失败,再次执行自动恢复流程,然后重试。**

### 步骤 3: 处理登录(如需要)

如果检测到未登录:

1. 截图展示登录页面给用户:

```bash
mcporter call chrome-devtools.take_screenshot
```

2. 提示用户:"请先登录 DeepSeek(手机号+验证码或微信扫码)"
3. 等待用户完成登录
4. 用户登录完成后,重新检测状态(重复步骤 2)

### 步骤 4: 执行查询

1. **获取页面快照**,找到输入框和深度思考按钮的 uid:

```bash
mcporter call chrome-devtools.take_snapshot
```

2. **启用深度思考模式**(如果未启用):
   - 在快照中查找包含"深度思考"文本的按钮
   - 如果按钮状态显示未启用,点击启用:

```bash
mcporter call chrome-devtools.click uid: "<深度思考按钮的uid>"
```

3. **点击输入框获取焦点**:

```bash
mcporter call chrome-devtools.click uid: "<输入框的uid>"
```

4. **输入用户问题**:

```bash
mcporter call chrome-devtools.type_text text: "用户查询问题"
```

5. **按 Enter 发送**:

```bash
mcporter call chrome-devtools.press_key key: "Enter"
```

6. **等待回答完成**:
   - 等待 "已思考" 或 "已深度思考" 文本出现
   - 或者等待停止按钮消失

```bash
mcporter call chrome-devtools.wait_for text: ["已思考", "已深度思考"] timeout: 60000
```

### 步骤 5: 提取结果

**使用 evaluate_script 提取 Markdown 内容**:

```bash
mcporter call chrome-devtools.evaluate_script function: '
() => {
    // 方法1: 尝试点击 copy 按钮后从页面提取
    const copyButtons = document.querySelectorAll("button[title*=\"复制\"], button[class*=\"copy\"], [class*=\"copy-button\"]");
    if (copyButtons.length > 0) {
        copyButtons[copyButtons.length - 1].click();
    }
    
    // 等待一下复制完成
    return new Promise(resolve => {
        setTimeout(() => {
            // 提取 Markdown 内容
            const markdownElements = document.querySelectorAll(".ds-markdown, [class*=\"markdown\"], [class*=\"message-content\"]");
            let result = "";
            markdownElements.forEach(el => {
                if (el.innerText && el.innerText.trim().length > 0) {
                    result += el.innerText + "\n\n";
                }
            });
            resolve(result.trim());
        }, 500);
    });
}
'
```

**备选方案**:如果上述方法失败,直接提取页面文本:

```bash
mcporter call chrome-devtools.evaluate_script function: '
() => {
    const messages = document.querySelectorAll(".ds-markdown, [class*=\"message-content\"], [class*=\"chat-message\"]");
    const lastMessage = messages[messages.length - 1];
    return lastMessage ? lastMessage.innerText : document.body.innerText;
}
'
```

### 步骤 6: 结果返回

**重要:直接返回提取的原始内容,不要进行 LLM 二次总结或加工。**

- 直接将提取的 Markdown 文本返回给用户
- **不添加额外的解释、总结或格式化**
- **不进行任何整理或编辑**
- 保持 DeepSeek 原始输出的完整性
- 避免不必要的 token 消耗

### 步骤 7: 保持浏览器

**重要**: 不要关闭浏览器页面!保持浏览器会话供后续查询复用。

如需关闭,使用:

```bash
mcporter call chrome-devtools.close_page pageId: <page_id>
```

## 故障恢复机制详解

### 常见错误及处理

#### 错误 1: "connect EPERM" 或管道连接错误

**症状**: 
```
connect EPERM \\.\pipe\mcporter-daemon-xxx
```

**处理**: 执行完整自动恢复流程(步骤 1)。

#### 错误 2: "CDP not ready"

**症状**: 浏览器状态显示 `cdpReady: false`

**处理**: 
1. 停止现有浏览器:`browser({ action: "stop", profile: "openclaw" })`
2. 重新启动浏览器:`browser({ action: "open", profile: "openclaw", url: "about:blank" })`
3. 等待 3 秒后重试

#### 错误 3: MCP 服务器返回错误

**症状**: `mcporter call` 返回错误但连接正常

**处理**:
1. 检查页面是否存在:`mcporter call chrome-devtools.list_pages`
2. 如需要,重新导航到 DeepSeek
3. 重试操作

### 自动恢复的最佳实践

1. **最多尝试 2 次恢复**:如果连续 2 次恢复失败,向用户报告问题
2. **记录恢复操作**:在日志中记录每次恢复尝试
3. **保持用户知情**:如果恢复需要较长时间,告知用户正在处理
4. **优雅降级**:如果 MCP 完全不可用,建议使用替代方案(如 Tavily 搜索)

## Chrome DevTools MCP 工具参考

### 核心工具

| 工具 | 用途 |
|------|------|
| `new_page` | 创建新标签页并加载 URL |
| `navigate_page` | 导航到 URL 或前进/后退/刷新 |
| `take_snapshot` | 获取页面 a11y 树快照(用于查找元素 uid) |
| `take_screenshot` | 截图 |
| `click` | 点击元素 |
| `fill` | 填写输入框 |
| `type_text` | 输入文本 |
| `press_key` | 按键 |
| `evaluate_script` | 执行 JavaScript 并返回结果 |
| `wait_for` | 等待特定文本出现 |
| `list_pages` | 列出所有打开的页面 |
| `select_page` | 选择特定页面作为上下文 |

### DeepSeek 页面元素选择策略

**输入框**:
- 查找 placeholder 包含"发送消息"的 textarea
- 或查找 contenteditable="true" 的元素

**深度思考按钮**:
- 查找文本包含"深度思考"的按钮
- 检查按钮状态(aria-pressed 或 class)

**Copy 按钮**:
- 查找 title 包含"复制"或 class 包含"copy"的按钮
- 通常位于每条消息的右上角

**消息内容**:
- class 包含 "ds-markdown" 或 "message-content"

## Login Detection

通过页面快照检测登录状态:

**登录页面特征:**
- 包含文本:"手机号"、"验证码"、"登录"、"微信扫码登录"
- 有手机号输入框和验证码输入框

**已登录页面特征:**
- 包含文本:"发送消息"、"深度思考"、"新对话"
- 有消息输入框

## Result Extraction Methods

### 方法 1: Evaluate Script 提取(推荐)

优点:
- 获取 Markdown 格式文本,保留格式
- Token 消耗极低(~100 tokens)
- 速度快
- 用户可直接复制编辑

实现:
1. 使用 `evaluate_script` 执行 JavaScript
2. 查询 `.ds-markdown` 或 `[class*="message-content"]` 元素
3. 提取 `innerText` 返回

### 方法 2: 截图返回

优点:
- 原汁原味
- 包含图表、代码高亮等视觉效果

缺点:
- 无法复制文本
- 文件较大

### 方法 3: LLM 整理(传统方式)

优点:
- 可二次加工、个性化
- 可结合上下文

缺点:
- Token 消耗高(~2k+ tokens)
- 速度慢

## 完整查询流程示例(含故障恢复)

### ds: 前缀查询(推荐方式)

用户: "ds:什么是量子计算?"

1. 识别并移除 "ds:" 前缀,实际查询:"什么是量子计算?"
2. **检查 MCP 服务状态**,如不可用执行自动恢复流程
3. 使用 Chrome DevTools MCP 导航到 chat.deepseek.com
4. 获取快照检测登录状态
5. 如果未登录,截图提示用户登录
6. 如果已登录:
   - 查找并点击深度思考按钮(如未启用)
   - 点击输入框获取焦点
   - 输入问题
   - 按 Enter 发送
7. 等待回答完成
8. 使用 evaluate_script 提取 Markdown 内容
9. 直接返回提取的原始文本
10. 保持页面打开

### 快速复用

用户: "ds:再详细说一下 asyncio 的事件循环"

1. 识别并移除 "ds:" 前缀
2. **检查 MCP 服务状态**,如不可用执行自动恢复流程
3. 复用已打开的页面(使用 `list_pages` 和 `select_page`)
4. 直接输入新问题并获取回答

## 命令速查

### MCP 服务管理
```bash
# 检查 MCP 服务状态
mcporter list

# 添加 MCP 服务器配置
mcporter server add chrome-devtools \
  --command "npx" \
  --args "chrome-devtools-mcp@latest,--browserUrl,http://127.0.0.1:18800,--no-usage-statistics"

# 移除 MCP 服务器配置
mcporter server remove chrome-devtools
```

### 浏览器管理
```javascript
// 检查浏览器状态
browser({ action: "status", profile: "openclaw" })

// 启动浏览器
browser({ action: "open", profile: "openclaw", url: "about:blank" })

// 停止浏览器
browser({ action: "stop", profile: "openclaw" })
```

### CDP 验证
```powershell
# 测试 CDP 端点
Invoke-WebRequest -Uri "http://localhost:18800/json/version" -Method GET
```

### DeepSeek 查询
```bash
# 导航到 DeepSeek
mcporter call chrome-devtools.navigate_page type: "url" url: "https://chat.deepseek.com/"

# 获取页面快照
mcporter call chrome-devtools.take_snapshot

# 点击元素
mcporter call chrome-devtools.click uid: "<element_uid>"

# 输入文本
mcporter call chrome-devtools.type_text text: "查询内容"

# 按键
mcporter call chrome-devtools.press_key key: "Enter"

# 等待文本出现
mcporter call chrome-devtools.wait_for text: '["已思考", "已深度思考"]' timeout: 60000

# 执行 JavaScript 提取内容
mcporter call chrome-devtools.evaluate_script function: '
() => {
    const elements = document.querySelectorAll(".ds-markdown");
    let result = "";
    elements.forEach(el => {
        result += el.innerText + "\n\n";
    });
    return result.trim();
}
'

# 截图
mcporter call chrome-devtools.take_screenshot

# 列出所有页面
mcporter call chrome-devtools.list_pages

# 选择页面
mcporter call chrome-devtools.select_page pageId: 0
```

## Notes

- **ds: 前缀**:使用 "ds:" 或 "ds:" 前缀可以确保优先使用此技能进行查询
- **自动恢复**:MCP 服务故障时会自动尝试恢复,无需手动干预
- **首次使用需要登录 DeepSeek 账号**
- **浏览器页面会保持打开状态**,供后续查询使用
- **如需关闭页面**,使用 `close_page` 工具
- **查询结果取决于 DeepSeek 网页版的响应速度**,通常需要 10-30 秒
- **默认使用 evaluate_script 提取方案**,兼顾速度和质量
- **Chrome DevTools MCP 需要浏览器通过 `--remote-debugging-port` 启动**(内置 `openclaw` 配置文件已自动处理)
- **故障恢复最多尝试 2 次**,避免无限循环
- **如果 MCP 完全不可用**,建议向用户说明并提供替代方案(如 Tavily 搜索)

## 依赖技能

本技能依赖于以下技能的正常工作:
- **chrome-devtools-mcp-manager**: 用于管理 Chrome 浏览器和 MCP 服务的生命周期
- **browser tool**: OpenClaw 内置的浏览器控制工具
- **mcporter**: MCP 服务器管理 CLI 工具

## 故障排除

### MCP 服务持续不可用

如果自动恢复流程无法解决问题:

1. **检查 Node.js 环境**
   ```bash
   node --version
   npx --version
   ```

2. **检查 chrome-devtools-mcp 包**
   ```bash
   npm list -g chrome-devtools-mcp
   # 或
   npx chrome-devtools-mcp@latest --help
   ```

3. **检查端口占用**
   ```powershell
   Get-NetTCPConnection -LocalPort 18800
   ```

4. **手动重启**
   ```javascript
   browser({ action: "stop", profile: "openclaw" })
   // 等待 5 秒
   browser({ action: "open", profile: "openclaw", url: "about:blank" })
   ```

5. **联系用户**
   如果以上步骤都无法解决问题,向用户报告:
   - 当前状态
   - 已尝试的解决方案
   - 建议的替代方案(如 Tavily 搜索)

Related Skills

gold-price-query

3891
from openclaw/skills

This skill retrieves real-time precious metal prices (gold, silver, platinum, palladium, etc.) from https://i.jzj9999.com/quoteh5. It provides bid/ask prices, daily high/low prices, and price trends for 20+ metal types.

Data & Research

DeepSeek Agent Skill

3891
from openclaw/skills

Integrates DeepSeek API with OpenClaw agents.

stock-query

3891
from openclaw/skills

查询全球主要市场股票实时行情:A 股、港股、美股,以及场内 ETF、场外基金、主要指数。 需要:curl(HTTP 请求)、iconv(GBK→UTF-8 转码)。 Use when: 用户要求查询股价、基金净值、ETF 价格、大盘指数,或需要计算持仓市值时。 NOT for: 加密货币、期货、期权、外汇。

cn-stock-query

3891
from openclaw/skills

查询中国 A 股股票、场内 ETF 及场外基金的实时行情与最新净值。 Use when: 用户要求查询股价、基金净值、ETF 价格,或需要计算持仓市值时。 NOT for: 美股(含中概 ADR)、港股、加密货币、期货、期权。

gcp-bigquery-optimizer

3891
from openclaw/skills

Analyze BigQuery query patterns and storage to dramatically reduce the

deepseek-v3-lite-agent

3891
from openclaw/skills

You are DeepSeek-V3-Agent,an effective content creator.---# `current_date: $DATE$`

fund-query

3891
from openclaw/skills

查询中国公募基金信息,支持收藏和分组管理。包括基金名称、单位净值、估算净值、涨跌幅等。使用天天基金 API 获取实时数据。当用户输入基金代码(6 位数字)、询问基金净值、或需要管理基金收藏/分组时使用此技能。

twitter-query

3891
from openclaw/skills

Query X/Twitter via twitterapi.io read-only APIs by account (user timeline) or by keyword (advanced search). Outputs structured JSON; no LLM, no trend scoring. Use when the user asks for tweets from a handle, user timeline, keyword/hashtag/cashtag search, or 推特/X 推文查询.

yahooquery

3891
from openclaw/skills

Access Yahoo Finance data including real-time pricing, fundamentals, analyst estimates, options, news, and historical data via the yahooquery Python library.

deepseek-ocr

3819
from openclaw/skills

Expert skill for using DeepSeek-OCR, a vision-language model for optical character recognition with context optical compression supporting documents, PDFs, and images.

---

3891
from openclaw/skills

name: article-factory-wechat

Content & Documentation

humanizer

3891
from openclaw/skills

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.

Content & Documentation