医疗器械行情查询-比地招标网
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-bvz82yrd--medical-product-market.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-bvz82yrd/medical-product-market。- 用比地招标网「医疗产品列表」「产品、品牌和型号间的关联关系」两个接口,把用户输入的自然语言医疗产品词(如"
- 监护仪"
- "
- 迈瑞 CT"
- )解析成标准产品/品牌/型号,查询其在指定地区/医院等级/时间内的中标行情(均价、总价、采购单位、供应商),可选反查近期采购商机公告,输出 HTML 报告。当用户问"
- 查某医疗器械中标价"
- …(完整说明见下方「阅读全文」)
阅读全文 (展开查看完整说明)
概述
用比地招标网两个医疗接口,把"一个产品词"变成"一份带价格、采购方、供应商、商机的行情报告"。
完全自包含:脚本只依赖 Python 标准库,直连比地开放平台 HTTP 接口,不依赖任何其他 skill。接口参数/响应字段/错误码速查见本技能自带的 references/api-notes.md。本技能只负责医疗器械行情 + 商机这条业务线。
核心机制(务必先懂)
主流程只用 COMM-003 一个接口即可查行情(实测验证):
- COMM-003 医疗产品列表:
product参数直接填自然语言词("监护仪""CT""呼吸机")就能查,返回中标均价、采购单位、供应商。品牌/型号直接用接口返回的brand/specs字段(不要从fullName用&&拆——fullName 分隔结构不可靠,部分记录品牌位被型号占位)。 - COMM-004 产品/品牌/型号关联关系(可选辅助):用于联想补全标准词、逐级下钻,非硬依赖。当前账号尚未开通,且自助开通关键词会与"高管/股东关联关系"歧义(300105216)。
判定:HTTP 200 且业务
code==200才算成功;404 + code 300104001(或 message 含「查询数据不存在」)= 正常空结果,不是故障。300102001= 主接口未开通。
数据通道
- 优先用本技能脚本直连 HTTP 接口(唯一受支持路径,不要在对话里手写 curl 复制 Token)。
- 脚本:
scripts/run_market.py(查询,输出 JSON)+scripts/render_report.py(JSON → HTML)。
前置:Token(首次必做,先于一切探查)
Token 读取顺序:环境变量 BIDI_API_TOKEN → ~/.workbuddy/tender-subscriptions/.env → ~/.codex/config.toml。不打印、不写进交付物、不出现在回复正文。
- 先探测是否已有可用 Token:直接调一次词典接口验证。若报「未找到 Token」,按下面话术问用户:
医疗器械行情查询要调比地招标网的数据接口,需要你先开通接口账号。
到 https://www.bidizhaobiao.com/sjjk/ 注册并开通「医疗产品列表」「产品、品牌和型号间的关联关系」两个接口,开通后把控制台里的 API Token 发我,我来配置并验证。
(两个接口各 0.5 元/次,一次完整查询约 1–2 元;Token 只存你本机,不会写进任何报告。)
已开通的话直接把 Token 发我就行。
- 用户给出 Token 后,保存到
~/.workbuddy/tender-subscriptions/.env(权限 600,BIDI_API_TOKEN=xxx),立刻验证两个接口是否可用(各探测一次)。 - 未开通 → 停在第一步,不要用模拟数据演示。
查询流程(固定三步)
第一步 估算成本并告知用户:一次完整查询 = 行情 N 页(0.5 元/次)+ 可选商机反查(0.2 元/次)。动手前先说「本次约 N 次调用、约 X 元」。
第二步 跑查询:
python3 scripts/run_market.py '监护仪' --area 广东 --hospital 三甲及以上 --days 365 --json /tmp/mkt.json- 常用参数:
--area(省份)、--hospital(三甲及以上/三乙丙、三级未定/二级/一级)、--days(近 N 天)、--proc-unit(采购单位)、--brand/--specs(可选品牌/型号筛选)、--max-pages(默认 0 = 拉取全量,市场分析必须用全量;>0 封顶 N 页省成本)。 - 分省区域占比(对齐官方范本「02 区域占比与价格」):追加
--region-breakdown,脚本按省逐查 COMM-003 并聚合每省中标金额样本;--region 广东,江苏,浙江限定扫描省份(默认全国 34 个省级区),--region-pages默认 1(每省首页约 20 条样本,调大更准但更贵)。成本:每省每页 0.5 元,全国 34 省首页扫描约 17 元;动手前脚本会打印估算。 - 数据完整性:接口强制每页 20 条(
pageSize参数被后端忽略,实测无论填多少都返回 20)。默认--max-pages 0自动按 total 翻页拉满全部数据,报告头部会显示「已拉取 N / 总 M 条」;若被显式--max-pages截断,报告会醒目标红「数据不完整」。 - 追加
--tender做商机反查(BID-001 公告搜索,另计费),--tender-days默认 90。
第三步 渲染报告:
python3 scripts/render_report.py /tmp/mkt.json -o /tmp/medical_report.html然后用 present_files 打开 HTML。
报告内容(结构对齐官方范本 + 行业研究框架)
设计体系:浅色 premium 主题,比地蓝 #3083EB + 橙 #FA5401;全宽渐变 Hero 头图、执行摘要卡、带图标统计卡、章节编号徽章、洞察 callout、SVG 环形图(品牌集中度)、集中度 CR 条、价格直方图、区域条形图。所有区块均为白卡圆角 + 轻投影。
- 品牌条:内联 logo(
assets/logo.svg,需包<span class="logo">否则尺寸约束失效)+ 右侧橙标「医械行情」。 - Hero:MARKET REPORT kicker + 标题 + 统计口径 + 元信息徽章。
- 核心结论(执行摘要):自动生成 5-6 条关键发现(市场规模/竞争格局/价格区间/需求侧/供给侧/景气度),市场规模标注口径。
- 统计卡:中标总金额、采购单位数、供应单位数、行情条数、平均单价(带 SVG 线性图标)。
- 01 市场规模与价格(规模性):价格四卡 + 单价区间直方图 + 双峰解读 + 区域结构(有
--region-breakdown数据时展示分省金额条形图,否则给开启提示)。 - 02 竞争格局·品牌市占率(盈利性·横向格局):SVG 环形图(Top6+其他,圆心显示已知品牌总额)+ 图例 + CR3/CR5/CR10 集中度条(CR3≥60% 寡占 / ≥40% 较集中 / ≥20% 中度竞争 / 其余分散)+ 品牌明细表 + 集中度判断 callout;未标注品牌金额只在黄色注释单列,不显示「(未知)」。
- 03 主流品牌型号 / 04 采购方格局(下游需求侧)/ 05 供应方格局(上游供给侧):表格 + 链路解读 callout。
- 06 景气度·近期采购商机:
--tender开启时展示公告表(channel=类型、province+city=地区、biddingBudget=预算、docId=原文链接);未开启时给开启提示。 - 07 结论与行动建议:双栏(厂商/品牌方 vs 投标方/渠道)+ 市场阶段推断(数据特征推断,透明标注)。
- 行情明细(全量,品牌位
-)→ 数据解析轨迹 → 页脚(口径声明 + 调用次数 + 免责)。
关键数据处理约定
- 去重(保守判重):接口不返回任何 id/docId/uuid,跨页累积时按「整行指纹」(
json.dumps(r, sort_keys=True)各字段全等)判重,只合并完全相同行,不做模糊/相似合并(避免误杀"同型号同价同买方的两次真实采购")。实测 165 行中有 3 行字节级完全重复。报告顶部「数据完整度」会披露剔除条数与有效样本数(如"已拉取 165/165,其中已剔除 3 条完全重复记录(有效样本 162 条)")。翻页用去重后条数与total比对,并对"整页皆重复"设了退出保护,防死循环。 - 金额口径:品牌市占率、采购人/供应商金额均按
winTendererList[].value(中标金额)聚合;采购金额按procurementUnitList[].value。84% 记录有值。 - 品牌归一:接口
brand字段存在重复(如「迈瑞」与「mindray迈瑞」、「迈心诺」与「Masimo」),渲染层BRAND_NORM合并明显重复,避免市占率被腰斩;其余脏值(如型号误入品牌)如实保留。新增脏值应先从真实结果里挖(brand频次扫描),不臆造。 - 文本清洗:商机公告标题/采购单位用
clean_text()去除 HTML 标签与实体(接口个别标题带 );地区用place()过滤 API 的「未知」占位。 - 区域维度(区域占比):列表接口单行不返回 region/省份字段,故默认报告不做区域占比;开启
--region-breakdown后脚本按省逐查 COMM-003 并聚合每省中标金额样本(区域占比为样本估计,非全量计数)。用户用--area筛选时报告头部标注该地区。 - "采购总价"卡已移除:接口
totalProcurePrice字段填充率 0%。 - HTML 结构自检:
render_report.py改动后应用html.parser校验 div/section/table/tr 开闭平衡(历史踩坑:callout 漏</div>、tender 分支漏</section>),避免浏览器容错掩盖结构缺陷。
订阅盯价(可选,方案 C 扩展)
用户要"每天/每周盯某产品价格"时,用 automation_update 建定时任务(这是付费任务:每次运行会真实调用接口,行情 0.5 元/页 + 可选商机 0.2 元/次,务必先与用户确认频率与预算)。
建任务时 prompt 要自包含(未来运行看不到当前对话),写清:产品词、地区、医院等级、时间窗、输出路径、是否含商机反查。多个产品共用一个任务(prompt 里列出全部产品),不要每个产品建一个任务。
参考 prompt 模板:
用 medical-product-market skill 生成医疗器械行情报告:对以下产品各跑一次查询并渲染 HTML(
python3 scripts/run_market.py '<产品>' --area <省> --hospital 三甲及以上 --days 30 --tender --json /tmp/mkt_<产品>.json然后python3 scripts/render_report.py /tmp/mkt_<产品>.json -o <输出目录>/<产品>-行情.html),完成后用 present_files 打开。产品清单:监护仪、呼吸机、CT。仅生成报告,不做额外分析。
单一产品的低成本盯价可省去 --region-breakdown(最贵项)与 --tender,仅用基础行情查询(约 1–5 元/次)。
交互式联想(可选,方案 B 能力)
用户不知道标准词时,可调 COMM-004 grade=1, keyword=<模糊词> 联想产品列表给用户选,再逐级下钻品牌、型号。但 COMM-004 当前账号未开通;未开通时直接用自然语言词查 COMM-003 即可(实测有效)。
安全与成本
- COMM-003 行情 0.5 元/次;COMM-004 词典 0.5 元/次(可选);商机反查(BID-001)0.2 元/次;QPS 10 串行调用。
- 所有结果仅供市场分析参考,不构成投资或投标决策建议。