下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-bvz82yrd--gov-enterprise-customer-profile.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-bvz82yrd/gov-enterprise-customer-profile。输入政企客户企业名称,结合工商/股东/高管/招投标公开数据,分析其过往同类项目招标中标、合作供应商(次数/金额/资质)与采购偏好,输出单文件中文 HTML 报告,用于拜访前客户洞察。
阅读全文 (展开查看完整说明)
概述
业主采购画像-比地招标网
为政企团队的业务人员,在拜访一个陌生政企客户(业主 / 采购单位)之前,提供一份可快速阅读的客户洞察报告:它把该客户的工商画像、过往招投标行为与供应商合作网络拼成一张图,帮助拜访前就知道「这个客户是谁、怎么花钱、跟谁合作、偏好什么、我方从哪里切入」。
核心设计:分析前会先询问调用方(贵司)的公司名称,通过贵司工商经营范围自动推导「同类项目」关键词,再据此过滤业主的标讯——避免人工拍脑袋选品类,也避免把所有采购记录混在一起导致分析失焦。
关键词来源优先级(1.2.0 起):① 人工 --category > ② 调用方公司历史中标记录(搜索其公司名,取 winTenderer 命中的记录,从标题/品类提取业务词)> ③ 调用方工商经营范围回退。中标记录直接反映公司真实在做的业务,比又宽又虚的经营范围精准得多;仅当中标记录不足 2 个关键词时才回退经营范围。
首次调用引导(强制顺序,必读)
任何调用(含 analyze)之前,先跑 status 判断是否首次——零成本、不计费:
python3 ~/.workbuddy/skills/gov-enterprise-customer-profile/scripts/customer_profile.py status退出码 0 = 凭据与开通闸口均就绪,可直接进入 analyze;退出码 1 = 尚未就绪,按下列顺序补齐。
前 3 步是硬门槛:不满足就停下来引导用户,不要直接开跑 analyze。第 4、5 步是必问项。
| 步骤 | 做什么 | 不满足时怎么引导 |
|---|---|---|
| ① 凭据 | 检查环境变量 BIDI_API_TOKEN → 回退 ~/.codex/config.toml | 引导用户去比地招标网开放平台开通「开放接口」并取得 Token(账号未授权时联系比地商务/账号管理员)。用户给到 Token 后协助写入配置。绝不代填、不落盘、不回显、不写日志;真正的"注册开通"只能由用户完成,agent 不能代为注册 |
| ② 开通闸口 | 跑 init(探测 → 提交自助开通 → 复探 → 出闸口报告) | 出现 300102001 no permission = 该接口的「自助开通」主能力未对本账号授权,需联系比地后台放开;Token 失效 / 出口 IP 不在白名单 按脚本输出的指引处理后重跑 init |
| ③ 业主全称 | 确认客户(业主/采购单位)的工商全称 | 用户只给简称/俗称(如「市公安局」「某学院」「XX 集团」)时,先向其确认全称再跑。全称精度直接决定召回质量——名称不准会产出零命中报告,而页头告警是事后才出现,那时 API 费已花掉 |
| ④ 我方公司 | 主动询问:「请问贵司(调用方)的公司名称是什么?」 | 用于推导同类口径(历史中标记录 → 经营范围)。用户拒答或答不出不强求,但必须明确告知:同类分析将回退为「该客户全部公开采购」,报告页头会出琥珀横幅、采购偏好节会出对应提示 |
| ⑤ 成本确认 | 说明取数范围与预估费用(约 10–18 元)后征得同意 | 用户要控成本 → 建议 --no-deepdive、调小 --search-pages / --top-n,或先只跑 status / 单客户试跑 |
补充说明:
status读取的运行状态写在~/.workbuddy/state/gov-enterprise-customer-profile.json(在 skill 目录之外,不会被打进分发包);内容仅含init_at / init_ready / init_total / last_analyze_at / last_customer,不含 Token。- 无凭据时脚本不再只丢一行报错,而是打印完整的三步配置引导(取得凭据 → 两种配置写法 →
init命令)后退出,等价于自动完成第 ① 步的引导。
报告结构:
核心结论(含我方合作基础与实际数据覆盖区间)
一、我方与该客户的合作基础(是否中过标 / 次数 / 金额 / 榜单排名 / 与 Top1 对比;未合作则提示从零破冰)
二、客户企业画像(工商 IC-001 / 股东 IC-006 / 高管 IC-004)
三、采购盘子与近期活跃度(项目总数 / 同类金额合计 / 最近采购距今天数 / 近90天项目数
/ 单笔金额 TOP5(同源去重后优先成交记录)/ 招标代理机构清单)
四、同类项目招标中标情况(按「调用方中标记录或经营范围」推导的同类关键词过滤)
五、合作供应商分析(次数榜 + 金额榜双视角 / 注册省份 / 本地 or 外地 + Top 供应商资质优势深挖)
六、采购偏好分析(同类项目口径:金额区间 / 采购品类 / 供应商所在地本地or外地 / 供应商集中度)
七、拜访前行动建议
八、数据缺口与免责(如实列出未核实供应商数、时间覆盖缺口、代理机构披露率、金额披露率)报告呈现规范:
页头:6 张 KPI 卡 + 「我方合作状态」横幅(绿=已有合作基础,琥珀=尚无合作记录)
目录:八个章节锚点,可页内跳转
一、我方合作基础:拜访策略的分水岭——决定「存量维护扩量」还是「从零破冰」
二、客户画像:机关/事业单位等无公开法定代表人·注册资本·股东·高管时,
合并为一句说明 + 仅展示有值的公开要素,不铺一排空表
(比地接口用字面量「-」表示空值,已归一化处理)
三、采购盘子:4 个数字方块 + 单笔金额 TOP5(同一项目的采购/成交公告按标题核心词
归组去重,组内优先保留已披露中标单位的成交记录)+ 代理机构表;
时间覆盖不足时给橙色告警(业务口吻:"可扩大检索范围后重新生成报告")
五、供应商:次数榜 + 金额榜双视角(次数榜会掩盖「单笔大单」型 incumbent);
「本地/外地」用彩色 badge(省份系按企业名称推测的,badge 带「·推测」后缀);Top 深挖卡片含规模画像(成立年限/注册资本/状态)
+ 三层资质(企业基础 / 资质证书 / 行政许可,紧凑网格;只展示未过期项,过期项直接隐藏并在页脚计数提示「已隐藏 N 条过期项」,无有效期限视为长期有效保留)
六、采购偏好:金额区间(同类口径)+ 采购品类词频 + 供应商所在地(本地 vs 外地)
+ HHI 集中度仪表盘与 Top1/Top3 进度条;开头注明「同类项目 N 条 / 占全部 M 条的 X%」
七、行动建议:编号清单,首条为我方视角(先盘存量 / 从零破冰),含大单、窗口期、代理渠道
输出:HTML 按区块换行(pretty-print),便于二次编辑与审计
横幅告警:客户作为采购人的公开标讯为 0 条时,hero 顶部出琥珀横幅提示「招投标章节缺失/极薄」
+ 业务口吻建议(核对全称 / 确认数据渠道 / 扩大检索范围);未推导到同类口径(category 与 my-company 均不足以聚焦)时,
hero 顶部出琥珀横幅「同类分析口径回退至全部采购」,并在「六、采购偏好」节的口径说明同步改为琥珀告警,
避免把「全部采购」误读为「与贵司业务相关的同类项目」
★ 用词规范(硬约束):报告正文一律不得出现 CLI 参数/命令或实现术语
(如 --category / --my-company / --search-pages / analyze / init / check / 接口 / 翻页数 / API / 重跑 等),
一律改为业务口吻("可扩大检索范围后重新生成报告""数据源未覆盖"等);技术操作说明只保留在 SKILL.md 与 CLI help,不进报告。
例外:接口代码(OP-006 / IC-008 / CC-002 / BID-001 等)作为数据溯源标签,保留在章节小标题与说明中。适用场景
- 政企销售 / 客户经理拿到了一个目标客户名单(如某公安局、某医院、某高校、某城投),拜访前想快速摸清底细。
- 需要了解:该客户过往在与我司业务相关的品类招了多少、谁中了、中了多少、合作是否稳定。
- 需要提炼该客户的采购偏好(单项目金额带、供应商是本地还是外地、供应商集中度、常用采购方式、采购节奏),据此设计拜访话术与切入策略。
- 需要把若干家目标客户的公开画像导出成可转发的 HTML 报告。
数据流与安全
- 复用
bidi-tender-search的同套接口与凭据:环境变量BIDI_API_TOKEN(Authorization: Bearer <token>)。
脚本优先取环境变量,否则回退到 ~/.codex/config.toml 的 [mcp_servers.bidi-tender-search.env]。禁止输出、落盘或回显 Token。
- 接口基础地址:
https://moose-api.bidizhaobiao.com/。详见 [references/api-map.md](references/api-map.md)。 - 每次 API 调用均计费:公告搜索 0.2 元/次;企业类约 0.05–0.4 元/次。
一次完整分析包括:客户标讯搜索 15 页 + 调用方中标记录搜索 5 页 + 客户 3 接口 + 调用方公司 1 接口 + 合作供应商所在地核验(最多 30 家)+ Top8 供应商 ×3 接口,约 10–18 元量级。执行前先向调用方说明取数范围与大致成本;可用 --search-pages / --top-n / --no-deepdive 控制成本。
- 隐私:仅使用调用方公司名称查询其公开中标记录与工商经营范围,用于推导同类关键词;不采集、不输出任何非公开信息。
- 字段名在不同企业间可能不一致,脚本已做候选键模糊匹配;个别字段缺失时如实标注「—」,不臆造。
接口申请与配置(安装前置,必读)
本技能依赖比地招标网开放接口,使用前必须完成配置,否则 init / analyze 会因无凭据直接失败。无凭据时脚本会直接打印完整配置引导后退出(取得凭据 → 两种配置写法 → 下一步命令),不落盘、不回显 Token;先跑 status 可判断当前是否已就绪。
1. 申请开放接口 Token
- 在比地招标网开放平台申请开通「开放接口」并获取
token(用户自备凭据,脚本不内置)。 - 若某些接口返回
300102001 company api error: no permission,表示该接口的「自助开通」主能力未对贵司账号授权,需联系比地后台放开后才能使用。
2. 配置 Token(二选一,环境变量优先)
export BIDI_API_TOKEN='你的token' # 方式 A:环境变量(推荐)
# 方式 B:写入 ~/.codex/config.toml 的 [mcp_servers.bidi-tender-search.env]
# BIDI_API_TOKEN = "你的token"3. 首次运行 init 开通接口(自助开通闸口)
平台没有「查询已开通列表」的接口,脚本用探测法判断开通范围,再对未开通的提交自助开通(幂等)。
BIDI_API_TOKEN='<token>' python3 ~/.workbuddy/skills/gov-enterprise-customer-profile/scripts/customer_profile.py init流程:凭据预检 → 逐接口探测(已开通 / 已开通(空) / 未开通 / 异常)→ 对未开通的提交自助开通(幂等)→ 复探确认 → 出闸口报告(就绪 N/M)。check 仅探测、不提交开通,用于诊断。探测会对每个接口发起一次真实调用,一次自检约 1–2 元。
工作流程
0. 先查运行状态(零成本、不计费)
python3 ~/.workbuddy/skills/gov-enterprise-customer-profile/scripts/customer_profile.py status判断"是否首次调用":凭据是否就位(含来源,不回显内容)、首次开通是否已完成及就绪接口数、最近一次分析时间与客户。退出码 0 = 可直接 analyze;1 = 按上一节《首次调用引导(强制顺序)》补齐。别跳过——否则容易跑到一半才发现没凭据或接口没开通。
1. 开通接口(仅首次)
BIDI_API_TOKEN='<token>' python3 ~/.workbuddy/skills/gov-enterprise-customer-profile/scripts/customer_profile.py init2. 确认业主全称、询问调用方公司名称并执行分析
执行前先确认这两件事,再跑命令:
- 客户(业主/采购单位)的工商全称:用户只给简称/俗称时必须先确认全称;
--customer越精确召回越准,名称不准会得到零命中报告。 - 向用户询问:「请问贵司(调用方)的公司名称是什么?」 该名称用于查其历史中标记录(优先)或工商经营范围,推导同类关键词。用户拒答不强求,但须告知将回退为「该客户全部公开采购」。
BIDI_API_TOKEN='<token>' python3 ~/.workbuddy/skills/gov-enterprise-customer-profile/scripts/customer_profile.py analyze
--customer "大石桥市公安局"
--my-company "某某科技有限公司"
--years 3
--search-pages 15 --top-n 8
--html report.html --json snapshot.json --md report.md参数说明:
--customer(必填):客户企业名称(业主 / 采购单位全称,越精确越好)。--my-company(推荐必填):调用方(贵司)公司名称。脚本先用它搜索历史中标记录(取winTenderer命中项)提取业务关键词;
不足时回退到其工商经营范围。该关键词作为同类项目清单、供应商合作分析、采购偏好的统一口径。
--category(选填):人工品类关键词,逗号分隔(如信息化,软件,运维,工程)。优先级最高。--years:回顾年限,默认 3。--search-pages:公告搜索翻页数(每页 20 条),默认 15(≈3 元)。客户标讯多可调大。
同时决定调用方中标记录的搜索页数(取 max(2, min(5, search-pages)))。
--top-n:资质深挖的 Top 供应商数量,默认 8。越多 API 费越高。--no-deepdive:跳过供应商资质深挖(省约 TopN×3 次调用)。--html/--json/--md:分别落盘 HTML 报告 / JSON 快照 / Markdown 简版。
缺省 --html 时,控制台打印 Markdown 摘要。
3. 仅用快照重新渲染(可选,省 API 费)
python3 ~/.workbuddy/skills/gov-enterprise-customer-profile/scripts/customer_profile.py render
--input snapshot.json --html report.html4. 解读报告并交付
- 核心结论 KPI:采购项目总数、合作供应商数、平均/中位中标额、主力金额区间、供应商本地/外地结构。
- 客户画像:工商主体 + 股东名册 + 高管名册,判断客户规模、性质(机关/事业单位/国企)、决策层。
机关/事业单位无公开法定代表人、注册资本、股东、高管时,合并为一句说明而非展示空表。
- 同类项目:基于贵司历史中标记录(不足时回退经营范围)推导关键词过滤出的招标/中标清单,看客户在该品类的采购节奏与预算。
- 合作供应商:中标次数榜 + 注册省份/本地 or 外地 + Top 供应商的资质证书(OP-006)、行政许可(IC-008 / 信用中国 CC-002)深挖,判断 incumbent 优势与我方差异化空间。
- 采购偏好(同类项目口径):金额区间、采购品类词频、供应商所在地(本地 vs 外地)、供应商集中度(HHI);
开头会注明「同类相关项目 N 条 / 占该客户全部 M 条的 X%」,只看与贵司业务相关的采购,不分析业主全部业务。不做「采购地区分布」——同一业主的标讯天然集中于其注册地,无增量信息;不做「采购来源」「公告类型分布」「年度发布趋势」——发布网站、公告类型与发布年份对拜访策略参考价值有限。
- 行动建议:基于上述自动生成拜访前话术与切入策略,以编号清单(1/2/3/4/5)呈现,可直接打印逐项打勾。
关键分析方法
- 采购人过滤:公告搜索以客户名称为关键词,再按
tenderee(招标单位)字段归一化匹配,仅保留客户作为采购人的记录;tenderee缺失时退化为标题匹配。 - 供应商聚合:对中标单位字段
winTenderer按常见分隔符拆分、按名称聚合,统计中标次数、累计/平均中标额、合作年份跨度、涉及公告类型。 - 金额口径:
winBidPrice(中标价)优先,biddingBudget(预算)兜底;统一换算为「元」后按万元口径分桶。 - 集中度:Top1/Top3 占比 + HHI(赫芬达尔指数),HHI≥0.25 视为高度集中。
- 品类词频:从公告
product字段拆分统计,呈现高频采购品类。 - 同类项目口径:优先用调用方历史中标记录(BID-001 搜其公司名,
winTenderer命中)提取业务词;
不足时回退其工商经营范围。均命中内置的「有项目指向性」域名词典;刻意排除 服务/销售/代理/技术 等过于通用的词,避免「什么都匹配」。
- 供应商所在地解析:对合作供应商回查 IC-001 取注册地址,再解析省份。解析采用「省级全称 → 直辖市/特区 → 地级市+市字 → 地级市开头 → 省简称开头」的从严顺序,
内置全国地级市→省份映射;刻意不做省级简称全文子串匹配,否则「广州市天河区天河北路」会被误判为河北。
- 省份「名称兜底」:工商未返回注册地(loc 缺失或 province 为「未知/未核实」)时,改用
province_from_name()按企业名称推测省级;
覆盖三种高置信形态:①名称前缀/全称(「广州市…」「广东…」「武汉…」);②括号内地名(「…(广州)…」);③后缀前紧邻地名(「…广东分公司」)。推测结果一律标注为「推测」,与工商核实的「已核实」分开计量:supplier_region.inferred/confirmed 分别计数,列表徽章带「·推测」,「五、采购偏好」出橙色口径说明,「八、数据缺口」如实标注推测家数。此兜底能显著降低「未核实」占比(实测某客户 58 家未核实 → 全部归位,本地/外地图才有意义)。
- 行政许可字段归一化:IC-008 的真实字段是
allowContent(许可决定书正文)/allowStartdate/allowEnddate/allowAuthority/isHistory,
与 CC-002 的 licenseName/validStart/validEnd/authority 不同;脚本统一归一化,许可名称从 allowContent 提取事项名,并跳过 isHistory=1 的历史记录。
- 供应商资质深挖:对 TopN 供应商回查 IC-001(主体)、OP-006(资质证书)、IC-008 + CC-002(行政许可)。
已知坑(务必注意)
init与check语义不同,勿混用(曾出过 bug):init= 探测 + 提交自助开通 + 复探 + 写状态(首次必跑);
check = 仅探测(诊断用,不提交开通、不写状态)。run_gate(cmd) 内的开通分支判断必须包含 "init"——此前子命令名叫 init 而分支判断写成 ("gate", "ensure"),导致 init 静默退化成 check、从不提交开通。另:status 的行为由退出码区分(0=就绪 / 1=需引导),供 agent 判断"是否首次调用"。
- 比地接口用字面量「-」表示空值:机关/事业单位的 IC-001 返回
legalPerson='-'、capital='-'等,
'-' 是 truthy,若不归一化会导致「空表判断」失效、报告铺满「-」。脚本已用 is_blank() 统一处理(含 -/—/无/null/未知 等占位符),新增字段展示时必须走 first_of()。
- 搜索翻页不足会导致时间覆盖失真:搜索结果按发布时间倒序返回,
--search-pages偏小时「近 N 年」
实际只覆盖最近 1 年左右。脚本已自动检测并在报告中给橙色告警(业务口吻提示扩大检索范围,不复述 CLI 参数)。
- 同一项目存在多条公告:采购公告(只有预算)/ 成交公告 / 合同公告会重复出现,
单笔金额 TOP5 已按标题核心词归组去重,组内优先保留已披露中标单位的成交记录。
- 累计金额口径 = 中标价优先、缺省取预算:只统计中标价会严重低估(大量项目只有预算),
曾出现「中标 4 次累计 4.5 万」排在「中标 1 次 314 万」之前的误导。金额榜与次数榜并列呈现。
- HTTP 404 ≠ 接口异常:body 为
code=300104001且含「查询数据不存在」时是正常空响应(该公司无该项记录),不计缺口;只有非此语义的 404 才算真异常。 - 快照 JSON 反序列化后三份供应商列表不再共享对象:
suppliers/suppliers_by_amount/top_suppliers在内存中是同一批 dict(analyze 内一致),
但写成 JSON 再读回后成为三份独立副本。任何「仅用快照重算供应商字段」的离线脚本必须对三份列表按名称同步,否则金额榜/深挖卡片会残留旧值(易误判为"没生效")。受影响的是离线重算;正常 analyze 全流程无此问题。
- 响应双重嵌套:open/v1 列表接口业务数据在
data.data;搜索接口列表在data.data。 - 中标单位仅取首标段:
winTenderer为第一标段中标人,多包组项目的其他包中标人可能未计入;已在报告中说明,不臆造。 - 品类过滤是关键词粗筛:基于标题/product 文本匹配,存在漏召与误召,结论以「公开可验证」为界,不宣称全量。
- BID-001 搜索必须用
range=40(标题+内容)+pattern=10(精准):默认的range=10(仅标题)搜不到公司名(公司名只在正文的中标单位字段);
而 pattern=20/30(模糊/智能)会把公司名拆词后乱匹配(实测给「广州方集信息科技有限公司」返回一堆无关公告、winTenderer 命中 0)。二者合起来才稳定命中。
- 省份解析禁止用省级简称全文子串匹配:会出「天河北路→河北」这类假阳性;必须按「省级全称/地级市+市/城市名开头」从严匹配。
- IC-008 与 CC-002 字段名不同:IC-008 用
allowContent/allowStartdate/allowEnddate/allowAuthority/isHistory,忽略isHistory=1的历史记录;
按 licenseName/validStart 解析 IC-008 会得到一排空「—」。
- 供应商所在地可能仍「未核实」:中标记录里的
winTenderer名称可能不全(如简称、缺「集团」),IC-001 精确查不到就会标注「未核实」,属正常,不臆造。 - 不做采购地区分布、采购来源、公告类型分布与年度趋势分析:同属于同一业主的标讯天然集中于其注册地;发布网站、公告类型与发布年份对拜访策略无增量信息,已在报告中剔除。
- 采购偏好为「同类项目」口径:只分析与该客户采购中与贵司业务相关的项目(可在报告开头看到「同类 N 条 / 占全部 M 条的 X%」),不分析业主全部采购业务。
数据缺口(诚实标注)
以下情况在报告「数据缺口与免责」中如实列出,不臆造结论:接口未开通 / 未接通、搜索零命中、tenderee 字段缺失导致退化为标题匹配、中标单位首标段口径局限、资质与许可未公开。
局限与免责
- 画像依赖企业公开工商 / 招投标数据,无身份证号 / 统一人物 ID,人员与供应商比对为辅助信号。
- 报告为政企客户拜访前初步洞察辅助材料,不构成尽职调查、资信结论或法律意见;是否准入 / 定标 / 合作以招标文件、实地考察与官方渠道为准。
- 页头/页脚 logo 为比地招标网商标,公开发布前需替换为自有图标或取得授权。
品牌 logo
- 报告页头内嵌比地招标网 logo(
assets/logo-bidizhaobiao.png,以 base64 内嵌为单文件 HTML,可离线打开与转发);
文件缺失时自动回退内置 SVG 占位 logo。替换 logo 直接覆盖该 PNG 即可。