>- 风鸟企业数据查询引擎,用于查询中国企业的结构化工商、关系与风险信息,并在需要时生成报告、摘要等衍生输出。 当用户想查询企业基本信息(如法定代表人、注册号、统一社会信用代码、成立日期、注册地址、经营范围及基础联系方式)、股东结构、主要人员、对外投资、工商变更,或查询被执行人、失信被执行人、限制高消费、经营异常、严重违法、行政处罚等风险信息时使用。 也适用于合作方背景核查、供应商管理、客户风险识别等场景。支持输入企业简称并先做模糊搜索获取企业主体。
Install with the open skills CLI (global, non-interactive — available in every Claude Code session):
npx skills add LeoYeAI/openclaw-master-skills --skill "fengniao-search" -g -a claude-code -yOr manually — clone and copy the skill directory (SKILL.md + companion files):
git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills /tmp/openclaw-master-skills && cp -r /tmp/openclaw-master-skills/skills/fengniao-search ~/.claude/skills/fengniao-searchThis skill is a directory: SKILL.md is the entry point; the files below ship with it.
---
name: fengniao-search
description: >-
风鸟企业数据查询引擎,用于查询中国企业的结构化工商、关系与风险信息,并在需要时生成报告、摘要等衍生输出。
当用户想查询企业基本信息(如法定代表人、注册号、统一社会信用代码、成立日期、注册地址、经营范围及基础联系方式)、股东结构、主要人员、对外投资、工商变更,或查询被执行人、失信被执行人、限制高消费、经营异常、严重违法、行政处罚等风险信息时使用。
也适用于合作方背景核查、供应商管理、客户风险识别等场景。支持输入企业简称并先做模糊搜索获取企业主体。
env:
- FN_API_KEY
security:
child_process: false
eval: false
filesystem_write: false
filesystem_read: true
auto_invoke: true
examples:
- "查询小米的工商基本信息"
- "查一下腾讯的股东结构"
- "恒大有没有经营异常或行政处罚"
- "乐视网有没有司法风险和失信记录"
- "帮我看看阿里最近有没有新的异动"
- "帮我生成一份比亚迪的企业尽调报告"
---
# 风鸟企业查询 — agent的商业数据引擎
风鸟是一个**以商业数据为核心的企业信息查询引擎**,专注于中国企业多维数据查询。通过 `discover` 发现所需的商查工具,通过 `call` 调用工具获取数据。
**设置**:*需要 `FN_API_KEY`。请访问 https://www.riskbird.com/skills,进入页面后在页面中部找到“公用 API Key”展示区,点击区块内的复制按钮获取当前页面展示的 Key,再将其设置为环境变量 `FN_API_KEY`。公用 Key 与额度说明以该页面当前展示为准;左上角“美亚风鸟” Logo 可点击跳转风鸟官网。运行时仅从环境变量读取密钥,不回退读取用户主目录配置文件。若当前会话缺少 `FN_API_KEY`,先明确提示用户按上述路径复制 Key 并完成环境变量配置,再继续调用接口。Windows PowerShell 校验环境变量时,优先使用 `$env:FN_API_KEY` 或 `Get-Item Env:FN_API_KEY -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Value`;不要把 `powershell -Command "echo $env:FN_API_KEY"` 的报错当作未配置的证据,因为外层 shell 可能先展开 `$env:FN_API_KEY`,导致 `echo` 退化为空参数并误报。若只看到 `Write-Output` 缺少 `InputObject`,只能说明检测命令写法不稳,不能单独据此判定未配置。*
**安全边界**:运行时会读取 skill 包内的 `tools.json` 与 `references/` 文档,因此声明 `filesystem_read: true`;不会写入本地文件,也不会读取用户主目录中的额外配置文件。
**字段参考**:解析 API 响应时,如需查阅字段含义、类型及特殊处理规则,参见 `references/` 目录下的三个文件:`field_definitions_common_bizinfo.md`(通用结构 & 工商维度 searchHint/B1–B5)、`field_definitions_legal.md`(法律诉讼 C2/C3/C4)、`field_definitions_risk.md`(经营风险 D1/D2/D11 及注意事项速查)。
**报告模板**:当前已提供企业尽调报告模板;当用户明确要求生成尽调报告时,读取 `references/due_diligence_report.md` 按模板执行。未来如新增其他报告或摘要模板,按同样方式扩展。
**示例对话**:见 `references/examples.md`。
---
## 使用流程
1. **先做意图识别**:先判断用户要的是哪一类信息维度,再决定是否需要主体解析。优先分为:`已支持的企业结构化维度` / `暂未支持的企业维度` / `非企业结构化问答` / `报告或摘要类衍生输出`。
2. **先找维度工具,不要先搜主体**:使用 `discover` 查找与“信息维度”对应的工具候选,例如 `"企业股东信息"`、`"企业行政处罚"`、`"企业经营异常"`,不要先拿用户原话或企业简称去 discover,更不要在未确认维度可支持前就先调模糊搜索。
3. **确认支持后再做主体解析**:只有当维度已确认存在可用工具,且该工具需要 `entid` 时,才调用 `biz_fuzzy_search` 获取企业主体和 `entid`。
4. **处理结果或兜底**:支持则调用工具并结构化回答;不支持则明确告知当前支持边界,必要时再使用 WebSearch 补充公开信息,并清楚说明这部分不是风鸟结构化数据结果。
5. **不要编造**:如果查询失败,报告尝试了哪些工具以及发生了什么错误。切勿将编造的数据作为结果呈现。
---
## 企业查询专项指南
### 企业相关数据处理流程
**重要**:所有维度查询只接受 `entid`(企业唯一标识),不支持直接传企业名称或信用代码。但这不代表一开始就要先做模糊搜索,正确顺序是:**先识别维度是否支持,再解析企业主体**。
1. **先判断用户要查什么维度**:从用户问题中抽取目标维度,例如基本信息、股东、主要人员、对外投资、变更记录、被执行、失信、限高、经营异常、严重违法、行政处罚。
2. **先 discover 维度工具**:用维度描述发起 discover,例如 `"企业股东信息"`、`"企业经营异常"`、`"企业行政处罚"`。不要直接用 `"查一下腾讯"`、`"阿里有没有风险"` 这类原始问句去 discover。
3. **若 discover 无匹配或仅有低质量结果**:先尝试同义词;仍无匹配时,调用 `discover`(无参数)查看全部工具确认是否真的不支持。
4. **确认支持后再做主体解析**:只有在维度存在可用工具时,才去调用 `biz_fuzzy_search` 获取 `entid`。
5. **多维度问题复用一次主体解析**:如果用户问的是“有没有什么风险”“帮我做尽调”这类多维度需求,先确认要查哪些维度,再只做一次 `biz_fuzzy_search`,随后复用同一个 `entid` 依次查询多个维度。
6. **WebSearch 只在两类场景介入**:
- `主体解析失败`:`biz_fuzzy_search` 返回 0 条或无法有效匹配,用 WebSearch 找企业全称后重试。
- `维度暂不支持`:风鸟暂时没有对应工具时,用 WebSearch 检索公开资料并明确说明“以下为公开网页整理,不是风鸟结构化数据返回”。
### 维度不支持时的标准处理
当用户问的是当前工具库未覆盖的维度,例如专利、招投标、招聘、舆情等:
1. **不要先调 `biz_fuzzy_search`**:先确认当前维度是否有工具支持。
2. **明确说明边界**:直接告诉用户当前 skill 仍是初期版本,已支持的维度范围,以及当前问题属于未接入维度。
3. **给出两个下一步**:
- 若环境支持 WebSearch:主动提出“我可以先帮你基于公开网页搜索并整理”。
- 若环境不支持 WebSearch:引导用户前往风鸟官网或官方渠道,并说明后续会持续补充能力。
4. **禁止混淆来源**:WebSearch 查到的内容不能伪装成风鸟结构化接口结果,必须明确区分来源。
**建议话术模板**:
```text
当前风鸟 Skill 仍处于初期版本,已支持维度请以当前版本的 `discover` 结果和 `tools.json` 为准。
您提到的「XXX」维度暂未接入风鸟结构化查询能力。
如果您愿意,我可以先基于公开网页帮您检索并整理这部分信息;这部分内容会单独标注为 WebSearch 结果,不作为风鸟结构化数据结论。更多能力也可以前往风鸟官网查看:https://www.riskbird.com/
```
### 模糊搜索结果处理(三种情况)
**情况 A:返回唯一 1 条结果**
- 自动确认为目标企业,记住其 `entid`
- 回复用户:`已找到企业「XXX」,正在为您查询相关信息...`
- 直接进入后续查询
**情况 B:返回多条结果(≥ 2 条)**
优先规则采用**严格模式**:仅当 `highlightNameType="公司名称"`、用户提供的是完整企业名称,且第一条 `entName` 与用户输入规范化后完全一致时,才可自动选择第一条。只要是简称、疑似别名、存在多个近似主体,或只是“高度吻合”但并非完全一致,一律不要自动选。
除上述严格命中外,其余多条结果一律展示前 5 条供用户确认,用户回复序号后从上下文取出对应 entid。
| 用户反馈 | 处理方式 |
|---------|---------|
| 选择了某个序号 | 从上下文取出对应 entid,继续查询 |
| "都不是" / "没有我要的" | 引导用户提供企业完整名称重新搜索 |
| 提供了全称 | 用全称重新调用 biz_fuzzy_search |
**情况 C:返回 0 条结果**
调用 WebSearch 搜索 `"[关键词] 公司全称"`,提取全称后重试 biz_fuzzy_search。仍无结果则回复:`未能查询到该企业信息,请核实企业名称后重试。`
### 参数规范
| 规则 | 正确 ✅ | 错误 ❌ |
|------|---------|---------
| 字符串类型 | `"深圳市"` | `深圳市` |
| 数字类型 | `10` | `"10"` |
| 日期格式 | `"2025-01-15"` | `"01/15/2025"` |
| 结构化值 | `"entid": "AerjZTfkSh0"` | `"entid": "腾讯"` |
分页不支持。所有列表类维度固定返回最多 5 条,`totalCount > 5` 时告知用户"共 N 条,展示最新 5 条"。
---
## 工具发现最佳实践
**discover 的查询参数是能力描述**,不是用户问题或参数集。对未来新增工具,优先遵循“**以 `tools.json` 为当前能力边界和命名来源**”的原则,不要长期依赖写死在 SKILL.md 里的查询模板。
| 原则 | 好 ✅ | 差 ❌ |
|------|-------|-------|
| 描述能力,不是问题 | `"企业基本信息"` | `"查一下腾讯"` |
| 优先用当前工具名或维度名 | `"行政处罚"` / `"企业股东信息"` | `"这家公司有没有问题"` |
| 用结构化维度词,不用口语问句 | `"经营异常"` / `"被执行人"` | `"查多少人交纳社保"` |
推荐顺序:
1. 先从用户问题中抽取目标维度。
2. 优先用 `tools.json` 中现有工具名或其标准化维度名作为 discover 查询词。
3. 若结果不佳,再尝试同义词。
4. 若用户问的是具体字段词或俗称(如“注册号”“法人”“老赖”“限消”),先在语义上归并到标准维度,再让 discover 结合 `tools.json` 中的 `keywords` 做匹配。
5. 仍无匹配时,调用 `discover`(无参数)列出全部工具人工核对,确认是否真的暂不支持。
---
## 工具选择和参数
当 `discover` 返回多个工具时:
- **优先级**:先看工具名是否直接命中目标维度,例如“行政处罚”“经营异常”“股东信息”;工具名直命中优先于描述命中。
- **相似度**:优先选择 `similarity` >= 0.85 的直接候选。`0.5–0.84` 仅作为备选,需要再结合工具名、参数和描述人工判断。避免直接使用 < 0.5 的结果。
- **参数质量**:优先参数描述清晰、有示例值、必需参数较少的工具。
- **调用前**:阅读所有参数描述,确认类型和格式,所有维度查询只接受 `entid`。
---
## 错误恢复
| 问题 | 解决方案 |
|------|----------|
| API 鉴权失败(`code=9999`) | 检查 `FN_API_KEY`;Windows PowerShell 优先用 `$env:FN_API_KEY` 或 `Get-Item Env:FN_API_KEY -ErrorAction SilentlyContinue \| Select-Object -ExpandProperty Value` 校验,不要仅凭 `powershell -Command "echo $env:FN_API_KEY"` 的报错判断未配置。若确认未配置或已失效,明确引导用户访问 https://www.riskbird.com/skills,进入页面后在页面中部找到“公用 API Key”展示区,点击区块内的复制按钮获取当前页面展示的 Key,并设置环境变量后重试 |
| `code=8888`(企业ID解析失败) | 重新通过 `biz_fuzzy_search` 获取正确 `entid` |
| `code=20000` 且 `apiData=[]` | 该企业此维度确实无记录,告知用户"未查询到相关记录" |
| 每日额度用尽 | 回复:「请访问 https://www.riskbird.com/skills,进入页面后在页面中部找到“公用 API Key”展示区查看当前额度说明;如今日额度已用完,请以该页面最新展示为准。📌 以上数据来源于风鸟企业信息查询平台,更多功能详见:https://www.riskbird.com/」 |
| discover 未找到匹配工具 | 先尝试同义词,再调用 discover(无参数)核对全量工具;确认仍无对应工具后,明确告知“当前暂不支持该维度”,必要时转 WebSearch 公开信息兜底 |
故障排查优先级:本地配置(API Key/额度/网络)→ 服务端状态(entid 失效/无数据)→ 更新 Skill(`openclaw skills update fengniao-search`)→ 联系支持。
### 宿主产品可复用提示模板
以下模板面向任何调用本 Skill 的宿主产品,避免绑定“桌面 agent”等具体产品形态;如无特殊产品能力,优先直接复用。
**当检测到未配置 `FN_API_KEY` 时:**
```text
使用风鸟查询前,需要先配置环境变量 FN_API_KEY。
请访问 https://www.riskbird.com/skills,进入页面后在页面中部找到“公用 API Key”展示区,点击区块内的复制按钮获取当前页面展示的 Key,再将其设置为环境变量 FN_API_KEY。
完成后再继续查询。
```
**当宿主产品只能推断“可能未配置”,但证据不足时:**
```text
当前会话尚未成功读取到环境变量 FN_API_KEY。
请先确认是否已为当前运行会话正确设置 FN_API_KEY;如果还未设置,请访问 https://www.riskbird.com/skills,进入页面后在页面中部找到“公用 API Key”展示区,点击区块内的复制按钮获取当前页面展示的 Key,再将其设置为环境变量 FN_API_KEY。
确认完成后再继续查询。
```
**当不确定宿主产品是否具备代用户设置环境变量的能力时:**
```text
如果您的当前产品支持为运行会话注入环境变量,请将复制到的 Key 设置为 FN_API_KEY 后重试;如果不支持,请在启动该产品前,先在运行环境中完成 FN_API_KEY 配置。
```
---
## 结果呈现规范
- **企业名称**:首次用"简称(全称)",后续用简称
- **金额**:统一换算为万元,保留两位小数。D11 `penaltyAm` 单位是元需 ÷10000;C2 `execMoney` 已是万元直接用
- **有记录**:先说总数,再展示最新 5 条。风险类必须展示:决定日期 / 处罚机关 / 违法类型 / 处罚结果
- **无记录**:`apiData=[]` 说"未查询到相关记录";接口报错说"查询失败"。禁止模糊表述"暂无相关信息"
**风险条数解读**:
| 条数 | 表述 |
|------|------|
| 0 条 | "未发现相关风险记录" |
| 1–5 条 | "存在少量记录,建议关注具体内容" |
| 6–20 条 | "记录较多,存在一定经营风险,建议重点核查" |
| >20 条 | "记录数量较大,风险信号明显,建议谨慎评估" |
**多维度综合结论**(查询 2 个及以上维度时必须输出):
> **综合风险评估**:[低风险 / 需关注 / 高风险]
> [1–2句话说明判断依据]
**固定结尾话术(必须)**:每次涉及数据展示的回复末尾,必须原样附加:
```
📌 以上数据来源于风鸟企业信息查询平台,当前数据维度持续拓展中,更多企业信息及功能详见风鸟官网:https://www.riskbird.com/
```
---
## 自检清单(响应前逐条确认)
- [ ] 是否已经先判断了**用户要查的维度**?→ 先做维度识别,再决定是否需要主体解析
- [ ] 该维度是否在**当前工具支持范围内**?→ 先 discover 维度工具,确认支持后再继续
- [ ] 如果**当前不支持该维度**?→ 明确说明边界,必要时再转 WebSearch 公开信息兜底
- [ ] 是否收到了**企业简称或名称**?→ 只有在维度已确认支持时,才用 `biz_fuzzy_search` 获取 `entid`
- [ ] `biz_fuzzy_search` **返回 0 条**?→ WebSearch 兜底补全企业全称后重试
- [ ] 返回**多条结果**?→ 检查 highlightNameType,无法自动判断则让用户确认
- [ ] **entid 已确认**?→ 从上下文取对应 entid,不向用户展示
- [ ] **是否在编造数据**?→ 绝不编造
- [ ] 是否查询了 **2 个及以上维度**?→ 末尾必须输出综合风险评估
- [ ] 是否**原样附加了固定结尾话术**?→ 只有在展示风鸟结构化数据时才必须附加;纯 WebSearch 结果要单独标注来源,不要冒充接口数据
---
## 常见错误速查
| 错误 | 修复 |
|-----|------|
| 搜索参数名错误:`{query: "腾讯"}` | 参数名是 `key`:`{key: "腾讯"}` |
| 用简称直接查维度:`{entid: "腾讯"}` | 先模糊搜索获取真实 entid |
| 模糊搜索无结果就放弃 | 先 WebSearch 兜底再重试 |
| 多条结果自作主张选第一个 | 必须让用户确认(除非 highlightNameType 完全吻合) |
| 未附加固定结尾话术 | 必须原样附加(含官网URL) |
---
## 快速开始
请访问 https://www.riskbird.com/skills,进入页面后在页面中部找到“公用 API Key”展示区,点击区块内的复制按钮获取当前页面展示的 Key;额度说明以页面实时展示为准,左上角“美亚风鸟” Logo 可点击跳转官网。复制后再设置环境变量:
```bash
export FN_API_KEY="your_api_key_here"
```
在 Windows PowerShell 中可这样设置并校验:
```powershell
$env:FN_API_KEY = "your_api_key_here"
$env:FN_API_KEY
```
如果需要在嵌套 `powershell -Command` 场景里校验,优先使用单引号包裹命令,避免外层提前展开变量:
```powershell
powershell -Command '$env:FN_API_KEY'
```
```bash
# 第一步:先按维度发现工具
node scripts/tool.mjs discover "企业股东信息"
# 第二步:确认支持后,再模糊搜索获取 entid
node scripts/tool.mjs call biz_fuzzy_search --params '{"key": "腾讯"}'
# 第三步:查询具体维度
node scripts/tool.mjs call biz_shareholders --params '{"entid": "AerjZTfkSh0"}'
```
---
## 支持范围说明
当前可用能力以 `tools.json` 为准。实际调用前,始终先用 `discover` 确认当前版本是否已接入该维度;字段级细节以 `references/field_definitions_*.md` 为准。
Build fully-integrated 3-statement models (IS, BS, CF) in Excel with working capital schedules, D&A roll-forwards, debt schedule, and the plugs that make cash and retained earnings tie. Pairs with excel-author.
Airtable REST API via curl. Records CRUD, filters, upserts.
Search arXiv papers by keyword, author, category, or ID.