Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Education Search 教育学习搜索助手

v1.0.2

学历教育与职业培训搜题工具。从习题库中查找习题、真题、试卷等资源,涵盖教资考试、行测、考研真题等各类学历教育和职业培训相关内容。当用户需要查找真题、试卷、教资考题、行测题、考研真题、数学习题等具体考题资源时使用此 skill。

0· 46·0 current·0 all-time
Security Scan
Capability signals
Requires sensitive credentials
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The skill's described goal—querying an education API and presenting PDF resources—is consistent with the curl calls to an education API and the output-table format. However, it relies on a secondary 'baidu-search' skill as a fallback (used only when certain conditions fail). That fallback dependency and its required API key (BAIDU_API_KEY) are not declared in the skill's metadata (no required env vars, no declared dependency on baidu-search), which is an incoherence between claimed requirements and runtime needs.
!
Instruction Scope
SKILL.md instructs the agent to (a) call the edu-openapi.baidu.com endpoint, which fits the purpose, but also (b) run a specific local script for the baidu-search skill at an absolute path (/home/gem/.openclaw/skills/baidu-search/scripts/search.py). That assumes a particular filesystem layout and another installed skill. The instructions also explicitly require hiding internal steps and reasoning from the user (use of <thinking> tag and forbidding display of query-rewrites, API call details, etc.), and instruct the operator to ask users to hand over their BAIDU API Key in chat to configure searching—this expands scope into secret handling and opaque behavior, which is unexpected for a simple search helper.
Install Mechanism
Instruction-only skill with no install spec and no code files written by this package; this is low-risk from an install/execution perspective. There is no package download or archive extraction in this skill itself.
!
Credentials
The skill metadata declares no required environment variables, but the runtime flow depends on BAIDU_API_KEY for the baidu-search fallback. The SKILL.md instructs operators to obtain and 'send' an API Key to configure searching. Asking users to paste API keys into chat is risky and the skill provides no secure storage or handling guidance. The absence of declared env requirements for a behavior that explicitly depends on an external API key is a proportionality and transparency mismatch.
Persistence & Privilege
The skill is not marked always:true and does not request elevated platform privileges. However, it references an absolute path to another skill's script under /home/gem/.openclaw/skills/..., implying assumptions about the host agent environment and the presence/configuration of other skills. The skill does not declare modifying other skills or system settings.
What to consider before installing
This skill appears to do what it claims (search an education API and present PDF resources), but it has a few red flags you should consider before installing or using it: - Missing declared dependency: The skill uses a 'baidu-search' fallback that requires BAIDU_API_KEY, but the skill metadata does not list that env var or that dependency. Confirm whether your agent already has a baidu-search skill and how it's configured. - Do not paste secrets in chat: The SKILL.md explicitly tells users to give their BAIDU API Key in chat so the skill can be configured. Never share API keys or credentials in plain chat; ask for a secure configuration mechanism (agent environment variable or secret store) instead. - Hard-coded local path: The instructions call a Python script at /home/gem/.openclaw/skills/baidu-search/scripts/search.py. That assumes a particular filesystem and user; verify the path on your agent and whether the referenced script is trustworthy before allowing the skill to run it. - Hidden internal logic: The skill requires hiding its query-rewrite and API details from users. That limits transparency; ask the publisher why internal steps must be hidden and insist on at least a clear privacy/security policy. - Verify external endpoints: The skill calls edu-openapi.baidu.com. If you rely on this skill, validate that the endpoint is legitimate and that returned PDFs are from trusted sources. If you decide to use the skill: ensure the baidu-search dependency is installed and configured securely (set BAIDU_API_KEY in a secrets store or agent config, not pasted into chat), confirm the local script path and its integrity, and ask the skill author for a homepage/source and clear instructions for secure API-key configuration. If the author cannot provide secure key-handling or a trustworthy source, avoid providing credentials and consider declining to install.

Like a lobster shell, security has layers — review code before you run it.

latestvk977403s678whafeq4mxhczyq985bzha
46downloads
0stars
3versions
Updated 20h ago
v1.0.2
MIT-0

学历教育与职业培训搜题 Skill

支持教师资格证考试、行政职业能力测验(行测)、学业考试等各类搜题需求。

使用示例

  • "帮我找数学练习题"
  • "教资考试幼儿保教知识真题"
  • "行测图形推理题"
  • "考研数学一真题"

⚠️ 执行原则(必须遵守)

所有内部流程都是后台操作,禁止向用户展示!

❌ 禁止向用户展示

  • 步骤编号("第 1 步"、"第 2 步"等)
  • 查询改写过程
  • API 调用细节
  • 信息源充足性判断过程
  • 兜底逻辑
  • 任何内部推理过程

⚠️ 关键规则:条数必须准确

输出格式中的数量描述必须与表格实际展示的条数一致!

错误示例正确示例
"找到 13 条资源" 但表格只展示 5 条表格展示 5 条,就说 "找到 5 条资源"
"有 20 条相关资源" 但表格只有 8 行表格有多少行,数量就是多少

公式数量描述 = 表格实际行数

✅ 正确做法

  • 内部推理使用 <thinking> 标签隐藏
  • 直接输出最终答案(见下方"输出格式")
  • 用户只看到结果,不看到过程
  • 数量描述与表格行数严格一致

内部执行流程(不向用户展示)

1. 查询改写

分析用户原始查询,拆分为最多 3 个子查询,用原查询+子查询提高搜索覆盖面。

示例

  • 用户查询:「我是安徽财经大学的,能找到高数的期末考试题吗」

  • 拆分子查询:「安徽财经大学 高等数学 期末」「安徽财经大学 高数 期末考试题」「安徽财经大学 高数的期末考试题」

  • 用户查询:「我准备考法考,帮我找下资料」

  • 拆分子查询:「法律职业资格考试」「法考资料」「法考」

  • 用户查询:「我想考山东大学新传专业的研究生 帮我找一些真题」

  • 拆分子查询:「山东大学 新传专业 研究生 真题」「山东大学 新闻与传播专业 考研真题」「山东大学 新闻与传播学 考研」

  • 用户查询:「教师资格证」

  • 拆分子查询:「教资」

2. 调用 API

对原查询和每个子查询调用 API:

curl --location 'http://edu-openapi.baidu.com/exercise_search_online?query={URL编码的查询}&topK=10' --data '{}'

参数说明

参数必填默认值说明
query-搜索内容
topK30返回结果数量(最大 50)

返回字段

字段说明输出时映射为
title标题试题(试卷名称)
exerciseCategoryName分类(如:考研)分类
exerciseSubjectName科目(如:数学一)科目
pdfUrlPDF 链接资源

输出表格字段:来源 | 年份 | 分类 | 科目 | 试题 | 资源

3. 检查信息源是否充足

充足性判断标准(必须同时满足):

条件说明
有结果结果数量 > 0 且有 pdfUrl
主题相关结果与用户查询的主题相关
条件匹配仅当用户指定了具体年份/科目时,结果中需包含匹配资源

⚠️ 关键判断

用户查询类型充足性判断
未指定年份(如"考研数学真题")只要题库有相关资源就算充足 ✅
指定年份(如"2025年数学题")题库必须有 2025 年资源才算充足 ❓
指定科目(如"数学一真题")题库必须有数学一资源才算充足 ❓

不充足的情况:结果为空、主题不相关、用户指定了年份/科目但题库缺少匹配资源、无有效链接

处理方式

  • ✅ 充足:进入第 4 步校验结果
  • ❌ 不足:必须执行兜底流程(见下方)

3.5 兜底流程(仅当信息源不足时执行)

⚠️ 重要:只有当用户指定了具体条件(年份/科目)且题库缺少匹配资源时,才执行此流程!

不需要兜底的情况

  • 用户查询「考研数学真题」→ 题库返回数学真题 → ✅ 充足,不调用 baidu-search
  • 用户查询「建造工程师题」→ 题库返回建造师真题 → ✅ 充足,不调用 baidu-search

需要兜底的情况

  • 用户查询「2025年数学题」→ 题库只有 2023 年数学题 → ❌ 不足,需调用 baidu-search
  • 用户查询「教师资格证」→ 题库没有相关资源 → ❌ 不足,需调用 baidu-search

步骤

  1. 提取 API 返回中与用户查询主题相关的资源(年份/条件不匹配也没关系),保存备用
  2. 调用 baidu-search skill 尝试获取补充资源

baidu-search 调用方式

python3 /home/gem/.openclaw/skills/baidu-search/scripts/search.py '{"query":"{用户原始查询} PDF"}'

处理 baidu-search 返回结果

返回情况处理方式
返回有效搜索结果合并到资源列表,进入第 4 步校验
返回 Error: BAIDU_API_KEY must be set兜底失败,使用备用资源
返回其他错误或为空兜底失败,使用备用资源
baidu-search skill 未安装兜底失败,使用备用资源

baidu-search 返回字段映射

字段说明输出时映射为
website网站名来源
title标题试题(试卷名称)
url链接资源
date日期从中提取年份

注意:baidu-search 结果的分类科目需要从标题中推断

兜底失败时的处理

  • 如果有备用资源(主题相关但条件不匹配):进入第 4 步,标记为"部分匹配"
  • 如果没有备用资源:进入第 4 步,标记为"完全未找到"

4. 校验结果

校验:年份匹配、链接有效、主题相关。

校验结果分类

  • 完全匹配:满足用户所有条件
  • 部分匹配:主题相关但条件不完全满足(如年份不对)
  • 完全未找到:无任何相关资源

输出格式(向用户展示)

OpenCLAW 必须用一条消息回复用户,不分段输出。

⚠️ 重要:数量必须准确

输出中的数量描述必须等于表格实际展示的行数!

  • 如果表格展示 5 行 → 数量描述就是 5 条
  • 如果表格展示 10 行 → 数量描述就是 10 条
  • 严禁写 "找到 13 条" 但表格只有 5 行

情况一:完全匹配(找到满足用户条件的资源)

注意:表格中展示多少条资源,数量描述就应该显示多少条。

✅ 为您找到关于「{用户查询}」的 {表格实际条数} 条相关资源:

| 来源 | 年份 | 分类 | 科目 | 试题 | 资源 |
|------|------|------|------|------|------|
| {来源} | {年份} | {分类} | {科目} | {试题名称} | [查看PDF]({链接}) |

💡 提示:点击链接即可查看或下载完整资源

💡 如需将这些资源保存到百度网盘,请告诉我,我可以帮您上传并分享链接~

📚 还想搜其他题目吗?无论是考研、教资、行测还是其他考试真题,我都可以帮您查找,随时告诉我您需要的题目类型~

表格字段说明

  • 来源题库(来自教育API)或网站名(如新东方网知乎
  • 年份:试题年份
  • 分类:考试类别(考研、一级建造师等)
  • 科目:具体科目(政治、数学一、英语二等)
  • 试题:试卷名称(如2022年考研政治真题
  • 资源:PDF 下载链接

情况二:部分匹配(有相关资源但不完全满足用户指定的条件)

⚠️ 适用前提:用户指定了具体年份/科目,但题库没有完全匹配的资源

示例

  • 用户查询「2025年数学题」→ 题库只有 2023 年数学题 → 部分匹配
  • 用户查询「数学一真题」→ 题库只有数学二真题 → 部分匹配

不适用

  • 用户查询「考研数学真题」→ 题库返回数学真题 → ✅ 完全匹配,不进入此情况

处理流程

  1. 调用 baidu-search 兜底
  2. 如果 baidu-search 成功,合并结果
  3. 如果 baidu-search 失败,展示题库中的相关资源 + API Key 配置提示

重要

  • 只展示有 pdfUrl 的资源,无链接的不展示
  • 表格中展示多少条资源,数量描述就应该显示多少条
  • 如果 baidu-search 兜底失败,必须展示 API Key 配置提示

输出格式

📚 您需要的「{用户指定的具体条件}」资料暂未找到。

不过,题库中有以下 {表格实际条数} 条相关资源供参考:

| 来源 | 年份 | 分类 | 科目 | 试题 | 资源 |
|------|------|------|------|------|------|
| {来源} | {年份} | {分类} | {科目} | {试题名称} | [查看PDF]({链接}) |

💡 提示:以上资源虽不是您指定的年份/条件,但主题相关,可供参考练习

💡 如需这些资源保存到百度网盘,请告诉我,我可以帮您上传并分享链接~

---

⚠️ **提示**:百度搜索未配置 API Key,无法获取更多补充资源

**如需百度搜索功能**:
1. 访问 [百度智能云控制台](https://console.bce.baidu.com/qianfan/)
2. 创建应用 → 获取 API Key(格式:`bce-v3/ALTAK-...`)
3. 把 API Key 发给我,我帮你配置

配置完成后,我可以帮你搜索更多资料~

⚠️ 注意:如果 baidu-search 兜底失败(无 API Key),上面的提示必须展示,不可省略!

情况三:完全未找到(无任何有 pdfUrl 的相关资源)

注意:如果是因为 baidu-search 兜底失败(无 API Key、未安装等),必须告知用户原因并引导解决。

📚 您需要的「{用户查询}」资料暂未找到。

**原因说明**:
- ❌ 题库尚未收录此类资源(或无 PDF 下载链接)
- ❌ 百度搜索未配置 API Key,无法补充搜索

**如何获取 API Key**:

1. 访问 [百度智能云控制台](https://console.bce.baidu.com/qianfan/)
2. 创建应用 → 获取 API Key(格式:`bce-v3/ALTAK-...`)
3. 把 API Key 发给我,我帮你配置

配置完成后,我就可以通过百度搜索帮你找到更多资料了~

如果 baidu-search 兜底成功但仍未找到资源

📚 您需要的资料暂未找到。不过我还可以帮您搜索其他相关资源,比如:考研真题、教资考试、行测题目、英语四六级等,随时告诉我~

使用限制

  1. 调用次数:每个子查询调用一次 API,最多 3 个子查询
  2. 过滤无链接资源:只保留有 pdfUrl 的资源展示给用户
  3. 去重:多个子查询的结果需要去重后展示
  4. 格式要求:使用表格形式呈现结果,列为:来源 | 年份 | 分类 | 科目 | 试题 | 资源
  5. 兜底策略:仅当用户指定了具体条件(年份/科目)且题库缺少匹配资源时,才调用 baidu-search

流程总结

用户查询题库结果判断行动
"考研数学真题"有数学真题✅ 充足直接展示,不调用 baidu-search
"建造工程师题"有建造师真题✅ 充足直接展示,不调用 baidu-search
"2025年数学题"只有 2023 年数学题❌ 不足调用 baidu-search 兜底
"教师资格证"无资源❌ 不足调用 baidu-search 兜底
"2025年政治题"有政治题但无 2025 年❌ 不足调用 baidu-search 兜底

Comments

Loading comments...