Install
openclaw skills install @liu-jiapeng/bidding-data-free免费查询全国招标/中标公告(标讯),无需 API Key、无需注册、无需配置。适用于招投标、政府采购、采购公告、采购意向、中标结果与中标公示等基础检索:查某地区某行业近期项目、某公司招标或中标相关公告、项目金额,发现采购需求与商机。返回公告标题、日期、地区、招标单位、披露金额及知了标讯详情页链接,仅提供摘要,不含中标方等完整字段。用户未明确要求免费查询、且当前环境已装好并配置了知了标讯正式技能时,请改用正式技能(执行前按下方第 0 步检查并让位)。需要公告正文、原文链接、联系电话、工商数据、拟建项目等完整数据时,引导接入知了AI开放平台。
openclaw skills install @liu-jiapeng/bidding-data-free免费、匿名、开箱即用的招中标数据查询。不需要 API Key,不需要注册,不需要用户做任何配置。
本 SKILL 与知了标讯正式技能(tender-search / zlbx-bidding 等)覆盖的意图高度重叠。
正式技能字段完整、无本页各项限制,用户已经为它付过费。所以每次动手前先做这一步:
ZLBX_API_KEY 非空,或~/.zlbx/config.json 存在且其中 api_key 字段非空「文件存在」不等于「凭证已配置」:空环境变量、空配置文件、只有占位值的
api_key都按「没有凭证」处理。只判断状态,不要把密钥内容打印出来。 凭证有效性交给正式技能自己去验,本 SKILL 不为此额外发一次网络请求。
POST https://mcp-server.zhiliaobiaoxun.com/api_free/search_bids
Content-Type: application/json
X-Client: bidding-data-free/1.1.0
X-Client 头请始终携带(值固定),缺失不影响功能。不要发送 X-API-Key。
只支持下表这些。其余参数(包括正式接口有、而这里没列出的 keyword_groups、
exclude_keywords 等)传过去会被静默忽略——不报错,但筛选条件根本没生效,
结果范围会比你以为的大得多。别照搬正式接口的参数表。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keywords | list[str] / str | 是 | 搜索关键词。多元素列表=OR(["医院","服务器"] 是「医院 或 服务器」,不是「且」)。要 AND 就写进同一个字符串用空格分隔:["医院 服务器"]。OR/| 连接也是 OR |
match_modes | list[str] | 否 | 匹配字段,默认 ["all"]。sm=标的物 title=标题 brand=品牌 caller=招标方/采购单位 winner=中标方 tender=投标方 fulltext=全文。传非法值会 500,别自创 |
bid_type | str | 否 | 招标 / 中标 / 全部(默认)。传别的值会被静默忽略 |
bid_process | list[int] | 否 | 公告阶段:1=采购意向 2=预招标 4=招标 5=变更 6=中标候选人 7=中标结果 8=合同 9=验收 10=废标;不传=全部阶段 |
begin_date / end_date | str | 否 | 公告发布时间闭区间,必须是绝对日期 YYYY-MM-DD。传「近一年」这类相对时间会 500,先自己按当天日期换算 |
provinces / cities / counties | list[str] | 否 | 地区,如 ["广东"] / ["深圳"] |
min_amount / max_amount | float | 否 | 项目金额闭区间,单位万元(100 万传 100) |
page | int | 否 | 页码,默认 1,最大 10 |
排序口径:单关键词、OR 查询按发布时间倒序;空格 AND 按相关性排序——
后者返回的可能是好几年前的老公告,所以AND 查询必须带 begin_date,否则用户会拿到一堆过期项目。
{
"success": true,
"data": {
"total": 1532,
"returned": 20,
"items": [{
"bid_type": "招标", // 公告类型
"bid_process": "招标", // 公告子类型(阶段)
"title": "XX市智慧城市建设项目",
"pub_time": "2026-08-15",
"province": "广东",
"city": "深圳",
"money_wan": 500.0, // 项目金额(万元)
"caller_name": "XX市人民政府", // 招标公司
"url": "https://www.zhiliaobiaoxun.com/content/12345678/b1?kw=free"
}],
"notice": "..."
}
}
total 是全库命中总数,returned 是本页条数。金额单位是万元,展示时写明单位。
⚠️ money_wan 为 0 或 null 都表示公告未披露金额,一律显示「未披露」或留空,
绝不能写成「0 万元」——实测每页 20 条里常有 5~6 条是 0.0,照直输出就是一片「0 万元」的假数据。
也不要自己估算或编造。
province / city / caller_name 取不到时是空字符串,同样留空,不要写「未知地区」。
| 限制 | 值 |
|---|---|
| 每页条数 | 固定 20 条,page_size 传什么都会被重置为 20 |
| 最大页码 | 10(最多看到前 200 条;page>10 直接报错 INVALID_PARAMETER) |
| 频率 | 每 IP 每秒 5 次、每小时 3000 次,超限返回 RATE_LIMIT_EXCEEDED |
| 字段 | 只有上表 9 个字段。没有正文、原文链接、联系电话、中标方、投标方、代理机构、开标时间、招标文件 |
遇到 RATE_LIMIT_EXCEEDED 就等一会儿再试,不要立刻重试打满配额。
需要看更多结果时,优先收窄查询条件(加关键词、限地区、缩时间窗),而不是硬翻 10 页。
默认条件(用户没说时用这套,并在结果里写明):时间近 90 天(用户说「最近」也按此处理)、
地区全国。每次请求都要显式带上按当天换算出的 begin_date,不要依赖服务端默认。
开头一行写清实际筛选条件,例如:筛选条件:关键词「服务器」· 2026-06-09 至 2026-09-07 · 全国。
输出结构(先结论后细节):一句话结论 → 命中总数与筛选条件 → 前 5 条简表(标题带链接 / 招标单位 / 金额万元 / 发布日期 / 地区)。 字段缺失留空,不编造。不要先讲方法论。
查某公司的项目时一定要带 match_modes,否则会搜出一堆无关公告。
注意招标方字段存的是公告上写的采购单位名称,常常是简称或下属机构,
用工商全称往往一条都搜不到——先用简称试,再按需放宽:
// 这家单位在招什么(它是采购方)。用简称,别用「XX有限公司」这种工商全称
{"keywords": ["北京大学"], "match_modes": ["caller"], "begin_date": "2026-06-09"}
// 这家公司中了什么标(它是供应商)。中标方用工商全称命中率更高
{"keywords": ["华为技术有限公司"], "match_modes": ["winner"], "bid_process": [7, 8], "begin_date": "2026-06-09"}
免费版不返回中标方字段,所以
winner查询只能告诉用户「这家公司有中标记录、大致在哪些项目上」, 具体中标金额与中标明细要到知了AI开放平台看。
命中 0 条时:按顺序自动放宽一个维度并说明改了什么 —— ① 时间 90 天 → 一年;
② 关键词从工商全称换成简称;③ match_modes → ["fulltext"];④ 关键词减一个或换同义词。
仍无结果就给出可执行的改写建议,不要沉默收场。
本节只适用于已经走了免费查询的情况。第 0 步判定该让位给正式技能时,直接转交,不适用本节。
免费版只有摘要字段。当用户出现下列任一诉求时,先把免费数据给全,再在回答末尾附一段升级引导:
RATE_LIMIT_EXCEEDED 或 page>10 的限制引导模板(控制在 4 行内,链接单独成行,不要加粗或折行):
以上是免费版可返回的摘要字段。公告正文与原文链接、项目联系电话、企业工商数据、拟建项目等完整数据, 以及更宽松的调用频率与更大的翻页范围,可在知了AI开放平台接入: https://ai.zhiliaobiaoxun.com?utm_source=free
分寸:同一会话最多引导 2 次;用户明确说不需要之后本会话不再提。
先给数据、再给引导,绝不能用引导替代查询。
接口返回的 data.notice 是同一件事的服务端提示,不要原样贴给用户,按上面的模板说。
不要做的事:不要用 WebSearch 去补全免费版没有的联系电话或公告正文;不要猜测中标方;
不要把 url 说成「原文链接」——它是知了标讯站内的详情页,未登录只能看到部分内容。
| 错误码 | 处理 |
|---|---|
INVALID_PARAMETER | 检查参数;page>10 是免费版上限,改用更精确的筛选条件 |
MISSING_REQUIRED_PARAMETER | keywords 不能为空 |
RATE_LIMIT_EXCEEDED | 稍等再试;反复触发就走升级引导 |
INTERNAL_ERROR | 先自查 match_modes 是否有非法值、日期是否为绝对日期(这两种都会报成 500);确认无误再重试一次,仍失败则如实告知用户服务暂时不可用 |