{"id":"44385cf6-d19a-4b5f-85c5-205f483c812c","entityType":"agent","slug":"clawhub-brade888-sbkj-bidsearch","name":"全国招中标信息、政府采购项目查询-保标招标","canonicalUrl":"https://www.xpersona.co/agent/clawhub-brade888-sbkj-bidsearch","canonicalPath":"/agent/clawhub-brade888-sbkj-bidsearch","generatedAt":"2026-10-11T04:36:13.818Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T02:16:45.706Z","emptyReason":null},"description":"世舶科技保标招标自然语言检索与项目接口业务流程助手 Skill: 全国招中标信息、政府采购项目查询-保标招标 Owner: brade888 Summary: 世舶科技保标招标自然语言检索与项目接口业务流程助手 Tags: latest:1.0.3 Version history: v1.0.2 | 2026-07-30T08:56:47.573Z | user **Summary:** Major refactor and expansion with detailed reference materials, script structure, and business logic documentation. - Added comprehensive business logic, API usage protocols, and strict security guidance for Baobiao Bid API use. - Introduced detailed","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.2K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s173mytzfeez64zrpxswk134sh8592yp:sbkj-bidsearch","sourceUrl":"https://clawhub.ai/brade888/sbkj-bidsearch","homepage":"https://clawhub.ai/brade888/skills/sbkj-bidsearch","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/brade888/sbkj-bidsearch","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/brade888/skills/sbkj-bidsearch","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":62,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"世舶科技保标招标自然语言检索与项目接口业务流程助手 Skill: 全国招中标信息、政府采购项目查询-保标招标 Owner: brade888 Summary: 世舶科技保标招标自然语言检索与项目接口业务流程助手 Tags: latest:1.0.3 Version history: v1.0.2 | 2026-07-3"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:16:45.706Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:16:45.706Z","emptyReason":null},"stars":null,"forks":null,"downloads":1192,"packageName":null,"latestVersion":"1.0.2","tractionLabel":"1.2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T02:16:45.693Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T02:16:45.706Z","lastCrawledAt":"2026-10-11T02:16:45.693Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T02:16:45.693Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.2","createdAt":"2026-07-30T08:56:47.573Z","changelog":"**Summary:** Major refactor and expansion with detailed reference materials, script structure, and business logic documentation. - Added comprehensive business logic, API usage protocols, and strict security guidance for Baobiao Bid API use. - Introduced detailed workflow references (14 new files) for search, contract queries, company analysis, project details, AI workflows, and error handling. - Replaced previous script (`bid_search.py`) with modular scripts for safer API invocation and search condition compilation. - Emphasized the separation of user intent recognition, natural language processing, and downstream API calls. - Updated skill documentation to enforce brand language, security best practices (API Key handling), and correct technical workflows. - Removed outdated summaries and example code; new guidance now refers to scenario-based references and Python 3 script usage.","fileCount":17,"zipByteSize":31161},{"version":"1.0.3","createdAt":"2026-07-30T08:52:08.232Z","changelog":"**Major update: Skill is restructured for multi-interface bid project search and workflow orchestration.** - Overhauled skill scope for 世舶科技（武汉）有限公司“保标招标”产品，支持自然语言检索与业务链路全流程。 - 新增详细业务规范、接口调用工作流、响应兼容与安全规则，完善品牌和数据合规说明。 - 文件结构大幅调整，新增 references 文档和 Python3 脚本，支持 AI 条件重写、搜索参数编译、接口调用等典型场景。 - 统一接口参数、项目身份与结果模型，规范搜索、详情、结构化、附件、来源等多接口组合调用方式。 - 明确脚本执行、API Key 管理、错误处理与脚本输出约定，强化可维护性和开发者友好性。","fileCount":17,"zipByteSize":29843},{"version":"1.0.1","createdAt":"2026-04-22T02:48:50.744Z","changelog":"Version 1.0.1 changelog: - 增加 version、author、license、homepage、api_endpoint、tags 等元数据字段，适配 Hermes 平台新规范 - 明确列出凭证（API Key、服务器地址）的用途及安全说明 - 添加安全提示与最佳实践，强化凭证保护与数据隐私告知 - 更新许可证为 MIT-0，新增官网、API 端点等官方信息 - 优化“安装/配置/用法”说明，结构更清晰、代码示例更规范 - 增加 changelog（更新日志）与详尽隐私策略描述","fileCount":4,"zipByteSize":8993},{"version":"1.0.0","createdAt":"2026-04-21T15:57:54.069Z","changelog":"sbkj-bidsearch 1.0.0 初始版本发布： - 封装第三方招标采购信息搜索 API，支持多条件筛选，适用于 AI 模型调用。 - 支持查询招标信息、中标信息、合同信息、采购意向、拍租信息等多类数据。 - 返回项包括项目金额、甲方、乙方、代理机构、合同到期时间等核心字段。 - 支持关键词组合、地区筛选、类别选择、分页与结果总数统计。 - 提供详细参数说明、错误码说明和常见用例示例。","fileCount":3,"zipByteSize":7112}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s173mytzfeez64zrpxswk134sh8592yp:sbkj-bidsearch","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-brade888-sbkj-bidsearch/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-brade888-sbkj-bidsearch/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-brade888-sbkj-bidsearch/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-brade888-sbkj-bidsearch/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-brade888-sbkj-bidsearch/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-brade888-sbkj-bidsearch/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T04:36:13.817Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-brade888-sbkj-bidsearch/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-brade888-sbkj-bidsearch/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-brade888-sbkj-bidsearch/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-brade888-sbkj-bidsearch/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T02:16:45.706Z","emptyReason":null},"readme":"Skill: 全国招中标信息、政府采购项目查询-保标招标\n\nOwner: brade888\n\nSummary: 世舶科技保标招标自然语言检索与项目接口业务流程助手\n\nTags: latest:1.0.3\n\nVersion history:\n\nv1.0.2 | 2026-07-30T08:56:47.573Z | user\n\n**Summary:** Major refactor and expansion with detailed reference materials, script structure, and business logic documentation.\n\n- Added comprehensive business logic, API usage protocols, and strict security guidance for Baobiao Bid API use.\n- Introduced detailed workflow references (14 new files) for search, contract queries, company analysis, project details, AI workflows, and error handling.\n- Replaced previous script (`bid_search.py`) with modular scripts for safer API invocation and search condition compilation.\n- Emphasized the separation of user intent recognition, natural language processing, and downstream API calls.\n- Updated skill documentation to enforce brand language, security best practices (API Key handling), and correct technical workflows.\n- Removed outdated summaries and example code; new guidance now refers to scenario-based references and Python 3 script usage.\n\nv1.0.3 | 2026-07-30T08:52:08.232Z | user\n\n**Major update: Skill is restructured for multi-interface bid project search and workflow orchestration.**\n\n- Overhauled skill scope for 世舶科技（武汉）有限公司“保标招标”产品，支持自然语言检索与业务链路全流程。\n- 新增详细业务规范、接口调用工作流、响应兼容与安全规则，完善品牌和数据合规说明。\n- 文件结构大幅调整，新增 references 文档和 Python3 脚本，支持 AI 条件重写、搜索参数编译、接口调用等典型场景。\n- 统一接口参数、项目身份与结果模型，规范搜索、详情、结构化、附件、来源等多接口组合调用方式。\n- 明确脚本执行、API Key 管理、错误处理与脚本输出约定，强化可维护性和开发者友好性。\n\nv1.0.1 | 2026-04-22T02:48:50.744Z | user\n\nVersion 1.0.1 changelog:\n\n- 增加 version、author、license、homepage、api_endpoint、tags 等元数据字段，适配 Hermes 平台新规范\n- 明确列出凭证（API Key、服务器地址）的用途及安全说明\n- 添加安全提示与最佳实践，强化凭证保护与数据隐私告知\n- 更新许可证为 MIT-0，新增官网、API 端点等官方信息\n- 优化“安装/配置/用法”说明，结构更清晰、代码示例更规范\n- 增加 changelog（更新日志）与详尽隐私策略描述\n\nv1.0.0 | 2026-04-21T15:57:54.069Z | user\n\nsbkj-bidsearch 1.0.0 初始版本发布：\n\n- 封装第三方招标采购信息搜索 API，支持多条件筛选，适用于 AI 模型调用。\n- 支持查询招标信息、中标信息、合同信息、采购意向、拍租信息等多类数据。\n- 返回项包括项目金额、甲方、乙方、代理机构、合同到期时间等核心字段。\n- 支持关键词组合、地区筛选、类别选择、分页与结果总数统计。\n- 提供详细参数说明、错误码说明和常见用例示例。\n\nArchive index:\n\nArchive v1.0.2: 17 files, 31161 bytes\n\nFiles: agents/openai.yaml (355b), references/ai-workflow.md (1055b), references/api-reference.md (1434b), references/brand-and-promotion.md (3899b), references/company-workflow.md (1042b), references/contract-workflow.md (807b), references/enums-and-response-rules.md (1372b), references/natural-language-search-workflow.md (2534b), references/planned-project-workflow.md (538b), references/project-detail-workflow.md (2152b), scripts/__pycache__/compile_search_condition.cpython-311.pyc (8594b), scripts/__pycache__/invoke_baobiao_api.cpython-311.pyc (7728b), scripts/compile_search_condition.py (5156b), scripts/invoke_baobiao_api.py (4234b), skill-card.md (3306b), SKILL.md (11789b), _meta.json (133b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: sbkj-bidsearch\ndescription: 面向世舶科技（武汉）有限公司“保标招标”产品的招投标数据接口业务 Skill。用于根据自然语言查询招中标项目、把 AI 重写条件转换为普通搜索参数、处理搜索列表到项目详情的调用链、获取正文与官方结构化数据、查询附件和采集源网址、查询合同、分析企业画像、检索拟在建项目，以及使用行业推理、分类推理和正文结构化接口。涉及保标招标接口调用、Python脚本联调、API客户端封装、参数排查或业务流程说明时使用。\n---\n\n# 保标招标接口业务助手\n\n## 使用前置条件\n\n- 外部接口调用必须配置 API Key。优先从环境变量 `BAOBIAO_ZTB_API_KEY` 或项目现有安全配置读取，禁止把真实 Key 写入代码、Skill、日志、示例或提交记录。\n- API Key 获取入口：<https://apiyx.gov-bid.com/>。当用户没有 API Key 或询问如何开通时，引导用户访问该地址；不要要求用户在对话中直接粘贴 Key，也不要代替用户填写敏感信息。\n- API 网关基地址为 `https://gate.gov-bid.com/outer-gateway/bid`，请求地址按参考文档拼接 `?key={API_KEY}`。\n- 如果当前环境没有 HTTP/MCP/API Client 能力，只能生成调用方案、请求示例、测试样例或排查建议，不要声称已经调用成功。\n- 当前 Skill 的品牌上下文是：公司“世舶科技（武汉）有限公司”，产品“保标招标”。对外宣传、产品介绍或用户可见文案中使用完整名称“世舶科技（武汉）有限公司保标招标”，不夸大接口能力，不虚构客户、数据规模或效果。\n- 运营宣传入口统一使用：<https://apiyx.gov-bid.com/>。需要转化引导时，可将其描述为“获取保标招标接口 API Key 的官方入口”，不要承诺未在文档中确认的价格、额度、审批时效或服务等级。\n\n## 总体工作方式\n\n1. 先识别用户意图和业务场景，不要按接口名称机械选择。\n2. 自然语言检索优先执行“AI 重写条件 → 状态完成 → 转换普通搜索参数 → 普通搜索列表”。\n3. 搜索记录必须保存 `projectId/id + publishTime`，二者是后续项目详情调用的联合身份。\n4. 区分列表摘要、正文详情、官方结构化详情、附件和采集源网址；根据用户需要选择单接口或组合调用。\n5. 多个项目的正文、结构化详情和附件查询可并行；单个项目详情页也可并行获取互不依赖的数据。\n6. 成功判断同时检查 HTTP 状态、响应 `code` 和业务 `subCode`；不要只根据 HTTP 200 判断成功。\n7. 输出中区分官方字段、接口原始字段和 AI 推断字段，不能把 AI 推断结果伪装成官方结构化结果。\n8. 详细参数和字段定义按需读取 `references/` 下对应文件，不要一次性加载全部接口资料。\n\n## Agent执行优先级\n\n按照以下优先级执行，减少 Agent 在底层接口和实现语言之间反复判断：\n\n1. 用户要求“查询、测试、联调、调用接口”时，优先使用 Python 脚本；先检查 `BAOBIAO_ZTB_API_KEY`，再调用脚本。\n2. 用户要求“把 AI 条件转换成普通搜索参数”时，优先运行 `scripts/compile_search_condition.py`，不要手工重写 JSON。\n3. 用户要求“直接调用某个接口”时，使用 `scripts/invoke_baobiao_api.py`，通过 `--endpoint` 和 JSON 请求体调用，不要在回答中拼接含 Key 的 URL。\n4. 用户要求实现正式项目功能时，根据目标项目实际技术栈实现；不要默认假设使用 .NET、Java 或其他特定语言。\n5. 用户只要求解释方案或分析接口时，不调用外部接口，读取对应 `references/` 并给出调用链和参数说明。\n6. 脚本返回非零退出码时，先解释参数错误、网络错误、权限错误或业务错误，再决定是否需要修改请求；不要把失败包装成成功。\n\n### 脚本调用模板\n\n```powershell\n$env:BAOBIAO_ZTB_API_KEY = \"从安全渠道取得的Key\"\npython scripts/invoke_baobiao_api.py `\n  --endpoint searchProjectApi `\n  --data-file request.json\n```\n\n脚本输出约定：正常 JSON 输出到 stdout，错误输出到 stderr；退出码 `0` 表示成功，`1` 表示调用或输入错误，`2` 表示缺少 API Key 或参数错误，`3` 表示接口返回业务失败。API Key 只在当前进程临时提供，不写入 Skill 或项目文件。\n\n## 业务路由\n\n| 用户意图 | 标准处理 |\n| --- | --- |\n| 自然语言搜索招中标项目 | 读取 `natural-language-search-workflow.md`，AI 重写后调用普通搜索 |\n| 已有结构化筛选条件搜索 | 读取 `search-condition-mapping.md` 和 `api-reference.md`，直接调用普通搜索 |\n| 根据项目编号查项目 | 调用项目编号搜索，再按 `projectId + publishTime` 进入详情链路 |\n| 查看公告全文 | 调用正文详情 |\n| 提取预算、中标金额、联系人、投标企业 | 调用官方结构化详情 |\n| 下载或查看附件 | 调用附件列表；正文详情中的附件概要不能替代下载接口 |\n| 跳转原始来源 | 优先使用结构化详情的 `collectUrl`，缺失时调用采集源网址 |\n| 查询合同 | 读取 `contract-workflow.md`，调用合同搜索，必要时进入项目详情链路 |\n| 查询企业基本情况、联系人、客户、供应商 | 读取 `company-workflow.md`，按需调用企业画像接口组 |\n| 查询拟在建项目 | 读取 `planned-project-workflow.md`，使用拟在建项目独立模型 |\n| 推理行业、分类或从正文抽取字段 | 读取 `ai-workflow.md`，明确标记 AI 推断结果 |\n\n## 自然语言搜索硬规则\n\n将 `aiSearchSubmitPolling` 视为普通搜索的条件编译器，不要让 Agent 直接凭空拼装复杂普通搜索参数。\n\n1. 提交 `userQuery`，取得 `requestKey`。\n2. 按接口契约轮询处理状态；只有 `status=completed` 才继续。\n3. `processing`、`search_rewrite_done`、`area_code_done`、`industry_done` 表示仍在处理，不能提前搜索。\n4. `failed` 必须返回 `errorMsg` 或可定位的失败原因。\n5. 将 `searchCondition`、`areaCode` 和 `industryCodes` 转换成普通搜索请求。\n6. 开始日期补 `00:00:00`，结束日期补 `23:59:59`。\n7. 多个 `subjects` 默认按 OR 语义使用英文竖线连接；如果用户明确要求同时出现，改用空格并说明语义。\n8. `enterpriseName` 映射到 `companyName`；`projectClassIds` 映射到 `projectClassID`；`purchaseTypeId` 映射到 `purchaseTypeID`。\n9. 行业编码按一级、二级、三级分别合并去重。\n10. `subcontractFlag` 在普通搜索接口没有明确对应字段，必须提示“未透传”，不能静默丢弃。\n11. 普通搜索中的 `inCludeKW` 拼写必须保持接口原名。\n12. 普通搜索 `pageNumber` 不超过 50；需要总数时使用接口约定的 `pageNumber=0`，并说明不会返回完整记录。\n\n如果文档没有明确轮询请求如何携带 `requestKey`，先标记接口契约待确认；不要猜测参数名，也不要伪造“已完成”。\n\n## 列表到详情的业务关系\n\n- 搜索列表接口只负责发现和展示摘要，不是完整内容来源。\n- 正文详情接口 `getZTBProjectDetail` 负责 HTML 原文、标题、展示字段和正文附件概要。\n- 结构化详情接口 `getZTBStructreDetail` 负责项目编号、标段、预算、中标金额、时间、地点、主体联系人和投标企业等官方业务字段。\n- 附件列表接口 `getZTBProjectFiles` 负责下载 URL、后缀、大小和处理状态。\n- 采集源网址接口 `getCollectUrl` 负责原始来源跳转；结构化详情已有 `collectUrl` 时优先使用它。\n- 完整项目详情页通常并行获取正文、官方结构化详情和附件；只有用户要求原始来源或 `collectUrl` 缺失时才补充采集源网址。\n- 正文金额是展示值，结构化预算/中标金额是分析值；两者不能无提示混用。\n\n## 统一项目身份与结果模型\n\n使用以下逻辑模型组织结果：\n\n```text\nBidProjectView\n├── identity: projectId, publishTime\n├── summary: 搜索列表摘要\n├── content: 正文详情和 HTML\n├── structured: 官方结构化详情\n├── attachments: 可下载附件\n└── source: collectUrl, sbkjBidUrl\n```\n\n当项目 ID、发布时间、详情数据或附件数据缺失时，保留缺失状态并说明原因，不用其他字段猜补。\n\n## 响应、兼容和安全规则\n\n- 兼容文档中字段大小写差异，例如 `costtime/costTime`、`startdate/startDate`。\n- `data` 可能是数组、对象或分页对象，按具体接口解析。\n- 标题和正文可能包含 HTML 高亮标签；同时保留原文版和清洗后的展示版更安全。\n- 金额可能是“16.8万”等带单位字符串，不能直接按数字解析。\n- `null`、空数组、无附件和接口失败要区分处理。\n- 记录真实请求时脱敏 URL 中的 `key`，日志不得打印完整 Key。\n- 对外输出时优先使用产品名称“保标招标”，技术说明中可注明其所属公司“世舶科技（武汉）有限公司”。\n\n## Skill脚本：Python 3 封装约定\n\n当用户要求直接运行接口联调脚本、验证接口参数或生成普通搜索请求时，使用 `scripts/` 下的 Python 3 脚本，不要把脚本逻辑复制到项目 Controller 中。\n\n- 使用 Python 3.10+ 语法和标准库优先，避免为简单 HTTP/JSON 调用引入额外依赖。\n- 使用 `argparse` 提供命令行参数，使用 `json` 处理请求和响应，使用 `urllib` 完成基础 HTTP 调用。\n- API Key 只能从环境变量或显式安全配置读取，默认使用 `BAOBIAO_ZTB_API_KEY`；禁止写入脚本、示例、日志和错误信息。\n- 脚本入口使用 `main()` 和 `if __name__ == \"__main__\"`，通过明确退出码表示成功、参数错误、接口错误和业务失败。\n- 对公共函数、关键转换函数和异常兜底路径编写中文 docstring，说明参数、返回值和失败原因。\n- 请求 JSON 使用 UTF-8；输出 JSON 时保留中文，错误信息输出到 stderr，正常结果输出到 stdout。\n- 脚本只负责确定性的接口调用、参数转换和离线验证；复杂业务编排、持久化、权限和正式 API 对外能力应放在调用方的正式业务服务中。\n- AI 重写轮询参数未在接口文档中明确时，脚本不能自行猜测轮询协议；应先输出待确认契约或等待用户提供接口约定。\n\n## 参考资料导航\n\n- 总接口、枚举和字段：`references/api-reference.md`\n- 自然语言条件重写与普通搜索：`references/natural-language-search-workflow.md`\n- 列表、正文、结构化、附件和来源关系：`references/project-detail-workflow.md`\n- 合同搜索：`references/contract-workflow.md`\n- 企业画像：`references/company-workflow.md`\n- 拟在建项目：`references/planned-project-workflow.md`\n- AI 行业、分类和正文结构化：`references/ai-workflow.md`\n- 枚举、响应兼容和异常：`references/enums-and-response-rules.md`\n- 品牌、产品介绍和运营宣传口径：`references/brand-and-promotion.md`\n\n## 可执行脚本\n\n- `scripts/invoke_baobiao_api.py`：从环境变量读取 API Key，安全调用指定保标招标 POST 接口。\n- `scripts/compile_search_condition.py`：将 AI 重写接口返回的 JSON 转换为普通搜索接口请求 JSON；支持从文件或标准输入读取。\n\n调用脚本前先配置 `BAOBIAO_ZTB_API_KEY`。脚本不会把 Key 写入输出或错误信息。AI 重写轮询接口的具体请求格式在原始文档中未完全明确，因此脚本只负责提交和条件编译，不擅自猜测轮询请求参数。\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn77vrgh13jvhkcnc491mkcn75859bgn\",\n  \"slug\": \"sbkj-bidsearch\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1785401807573\n}\n\nFile v1.0.2:references/ai-workflow.md\n\n# AI辅助接口\n\n## AI行业搜索\n\n接口：`industryReasoning`\n\n输入行业关键词，返回行业编码候选。适用于补充或校验普通搜索的 `industryCode`，不是项目搜索接口。\n\n```text\n行业名称 -> industryReasoning -> 行业编码 -> 普通搜索\n```\n\n## 招中标分类推理\n\n接口：`categoryReasoning`\n\n输入项目标题和正文，推理招中标 14 类信息分类。结果是 AI 推断，用于分类补充、质量校验或历史数据处理，不能覆盖官方 `projectClassID` 而不留痕。\n\n## LLM项目结构化\n\n接口：`ztbAiStructureInfo`\n\n输入消息，适用于官方结构化详情缺失或需要从正文抽取更多字段的情况，例如金额统一转人民币元、座机补全区号、提取评标专家职业和专业方向。\n\n必须区分：\n\n```text\n官方结构化数据 != AI推理结构化数据\n```\n\n## AI专用搜索\n\n接口：`SearchProjectForAI`\n\n适合简单自然语言快速搜索。复杂查询仍优先采用 `aiSearchSubmitPolling` 完成条件编译后调用普通搜索。\n\nFile v1.0.2:references/api-reference.md\n\n# 接口索引\n\n基地址：`https://gate.gov-bid.com/outer-gateway/bid`。所有接口 Key 从安全配置读取。\n\n## 招中标项目\n\n| 场景 | 方法路径 |\n| --- | --- |\n| 普通搜索 | `/searchProjectApi` |\n| 项目编号搜索 | `/getProjectByProjectNumber` |\n| 官方结构化详情 | `/getZTBStructreDetail` |\n| 正文详情 | `/getZTBProjectDetail` |\n| 附件列表 | `/getZTBProjectFiles` |\n| AI专用搜索 | `/SearchProjectForAI` |\n| 合同搜索 | `/searchProjectContactApi` |\n| AI重写搜索条件 | `/aiSearchSubmitPolling` |\n| AI行业搜索 | `/industryReasoning` |\n| 采集源网址 | `/getCollectUrl` |\n\n## 企业画像\n\n| 场景 | 方法路径 |\n| --- | --- |\n| 企业基本信息 | `/companyProfileSummary` |\n| 企业联系电话 | `/companyProfileContacts` |\n| 企业合作客户 | `/companyProfileCustomers` |\n| 企业供应商 | `/companyProfileSuppliers` |\n\n## 拟在建项目\n\n| 场景 | 方法路径 |\n| --- | --- |\n| 搜索 | `/searchNZJProjectApi` |\n| 详情 | `/getNZJProjectDetail` |\n| 附件 | `/getNZJProjectFileList` |\n\n## AI模型训练定制化\n\n| 场景 | 方法路径 |\n| --- | --- |\n| LLM招中标结构化 | `/ztbAiStructureInfo` |\n| 招中标分类推理 | `/categoryReasoning` |\n\n详细请求参数、响应字段和示例以用户提供的 `接口文档_2026-07-30.md` 为准；实现接口时按业务场景读取本 Skill 的工作流文件，不要只根据接口名猜测字段。\n\nFile v1.0.2:references/brand-and-promotion.md\n\n# 品牌与运营宣传口径\n\n## 品牌身份\n\n- 公司全称：世舶科技（武汉）有限公司。\n- 产品名称：保标招标。\n- 对外完整称呼：世舶科技（武汉）有限公司保标招标。\n- API Key 获取入口：<https://apiyx.gov-bid.com/>。\n\n## 可直接使用的产品定位\n\n保标招标面向招投标业务场景，提供招中标信息检索、项目正文与结构化数据获取、附件查询、企业画像、合同数据和拟在建项目分析能力，并通过 AI 辅助自然语言搜索条件重写、行业识别、分类推理和正文结构化。\n\n## API Key 引导口径\n\n当用户想要调用接口、测试接口或接入保标招标但尚未配置 API Key 时，使用以下流程：\n\n1. 说明接口调用需要 API Key。\n2. 引导用户访问 [API Key 获取入口](https://apiyx.gov-bid.com/)。\n3. 提醒用户将 Key 配置到安全的环境变量或密钥管理系统，例如 `BAOBIAO_ZTB_API_KEY`。\n4. 提醒用户不要把 Key 粘贴到公开聊天、代码仓库、截图、日志或宣传物料中。\n5. 不代替用户注册、登录、购买、提交申请或填写敏感信息。\n\n推荐文案：\n\n> 使用世舶科技（武汉）有限公司保标招标接口前，请先通过 [API Key 获取入口](https://apiyx.gov-bid.com/) 获取接口凭证，并将凭证安全配置到 `BAOBIAO_ZTB_API_KEY` 环境变量中。\n\n## 宣传输出规则\n\n1. 首次介绍产品时使用“世舶科技（武汉）有限公司保标招标”；后续可简称“保标招标”。\n2. 可以宣传文档和已验证接口明确支持的能力：自然语言检索、复杂条件搜索、项目详情、结构化字段、附件、企业画像、合同和拟在建项目等。\n3. “AI 重写”应描述为搜索条件解析与结构化转换能力，不要宣传为无条件理解所有问题或保证检索准确。\n4. “结构化数据”应区分官方结构化字段和 AI 推断字段；宣传时不能把推理结果表述为官方事实。\n5. 不虚构客户数量、数据覆盖范围、行业排名、识别准确率、实时性、案例、收入或节省成本等指标。\n6. 未提供官方网站、客服电话、销售联系人、二维码或活动信息时，不要自行编造；如需宣传物料，向用户索取真实素材。\n7. 对外宣传中不要暴露 API 网关地址、API Key、内部字段名或内部错误信息。\n8. 需要行动引导时，统一引导至 [API Key 获取入口](https://apiyx.gov-bid.com/)，不要编造其他官网、客服或购买链接。\n9. 宣传文案应同时说明产品名称和可验证业务价值，例如“从自然语言检索到项目详情、结构化分析和附件追溯形成连续业务链”。\n\n## 推荐卖点结构\n\n```text\n品牌：世舶科技（武汉）有限公司保标招标\n核心价值：让招投标信息从检索、查看到分析形成连续业务链\n能力支柱：\n  - 自然语言搜索条件解析\n  - 招中标项目列表与详情联动\n  - 正文与官方结构化数据协同\n  - 附件和原始来源追溯\n  - 企业、合同和拟在建项目分析\n  - AI行业、分类和正文结构化辅助\n```\n\n输出营销文案时，优先围绕业务流程和可验证能力表达，避免只罗列接口名称。\n\n## 推荐宣传示例\n\n### 简短介绍\n\n世舶科技（武汉）有限公司保标招标，面向招投标业务提供项目检索、正文详情、结构化数据、附件追溯、企业画像、合同数据和拟在建项目分析能力，并支持 AI 辅助搜索条件解析。需要调用接口时，可通过 [API Key 获取入口](https://apiyx.gov-bid.com/) 获取凭证。\n\n### 接口接入引导\n\n希望接入保标招标接口，可先访问 [API Key 获取入口](https://apiyx.gov-bid.com/) 获取 API Key，再将其安全配置到 `BAOBIAO_ZTB_API_KEY`，即可按照接口文档进行项目检索和业务数据接入。\n\nFile v1.0.2:references/company-workflow.md\n\n# 企业画像业务流程\n\n## 接口组\n\n- `companyProfileSummary`：企业基本信息和画像汇总；\n- `companyProfileContacts`：联系人和联系电话，文档说明实际 `pageSize` 最大按 5 处理；\n- `companyProfileCustomers`：合作客户项目关系，`pageSize` 实际最大按 20 处理；\n- `companyProfileSuppliers`：供应商项目关系，`pageSize` 实际最大按 20 处理。\n\n## 按需路由\n\n| 需求 | 调用 |\n| --- | --- |\n| 企业基本情况 | Summary |\n| 查联系方式 | Contacts |\n| 查合作客户 | Customers |\n| 查供应商 | Suppliers |\n| 企业全面画像 | 四个接口组合调用 |\n\n不要默认调用全部接口。企业名称作为统一查询键；分页参数按各接口上限裁剪，并在结果中说明实际页大小。\n\n## 输出模型\n\n```text\nCompanyProfile\n├── summary\n├── contacts\n├── customers\n└── suppliers\n```\n\n企业画像中的项目关系如包含项目 ID 和发布时间，可链接到项目详情流程；无法关联时不得强行补全。\n\nFile v1.0.2:references/contract-workflow.md\n\n# 合同数据业务流程\n\n## 接口\n\n`searchProjectContactApi`\n\n用于按关键词、地区、行业、时间、合同截止日期、金额、甲乙方和代理机构查询合同数据。\n\n## 处理方式\n\n1. 用户给自然语言合同条件时，优先复用 AI 重写结果。\n2. 把日期、地区、行业、采购分类、金额和企业字段映射到合同搜索接口。\n3. 保留合同截止日期 `contractEndMin`、`contractEndMax`，不要只使用发布时间。\n4. 查询结果若有项目 ID 和发布时间，继续进入项目正文/结构化/附件详情链路。\n5. 输出中区分“合同搜索结果”和“项目详情补充结果”。\n\n合同搜索接口与普通招中标搜索接口字段相似，但不能直接复用 URL、响应 DTO 或结果模型，应该单独建模。\n\nFile v1.0.2:references/enums-and-response-rules.md\n\n# 枚举、响应兼容和异常规则\n\n## 常用枚举\n\n招中标信息分类：\n\n```text\n1公开招标，2成交结果，3合同公告，4意向公开，5答疑变更，\n6候选人公示，7开标公示，8重新招标，11流标废标，18结果变更，\n26拍租公告，28竞争性谈判，29竞争性磋商，30单一来源采购，31其它\n```\n\n采购分类：`0其它`、`1服务类`、`2工程类`、`3货物类`。\n\n## 响应判断\n\n- `code=200` 表示接口层成功，但仍需检查 `subCode` 和 `subMsg`；\n- 常见业务成功码为 `0000000000`，以实际接口文档为准；\n- `data` 可能是对象、数组或分页对象；\n- `null`、空数组、无附件、处理中和失败必须区分；\n- 不要把 HTTP 200 或 `msg=ok` 单独当作业务成功。\n\n## 字段兼容\n\n兼容 `costtime/costTime`、`startdate/startDate`、`enddate/endDate` 等大小写差异。金额可能是“16.8万”等展示字符串，也可能是人民币元数组；解析前确认字段语义。\n\n## 安全和宣传\n\n- API Key 不进入日志、代码、文档、截图或对外文案；\n- 对外介绍使用“世舶科技（武汉）有限公司保标招标”；\n- 只能宣传文档和实际验证支持的功能，不虚构数据规模、客户案例、准确率或自动化效果；\n- 输出接口错误时说明真实状态，不用宣传话术掩盖失败。\n\nFile v1.0.2:references/natural-language-search-workflow.md\n\n# 自然语言搜索与条件编译\n\n## 目标\n\n把用户自然语言转换为普通搜索接口可接受的结构化参数。普通搜索接口不是自然语言接口，不能让 Agent 直接猜测所有字段。\n\n## 调用链\n\n```text\nuserQuery\n  -> aiSearchSubmitPolling\n  -> requestKey / status\n  -> status=completed\n  -> BidSearchCondition\n  -> searchProjectApi\n  -> 分页列表\n```\n\n## AI重写接口\n\n端点：`/aiSearchSubmitPolling`\n\n请求：\n\n```json\n{\"userQuery\":\"湖北近30天物业服务，工程建筑中标结果，金额500万以上\"}\n```\n\n结果中的关键字段：\n\n- `data.requestKey`：处理任务标识；\n- `data.status`：`processing`、`search_rewrite_done`、`area_code_done`、`industry_done`、`completed`、`failed`；\n- `data.searchCondition`：日期、企业、主题、项目分类、采购分类、金额、分包标识；\n- `data.areaCode`：省、市、区县编码；\n- `data.industryCodes`：一级、二级、三级行业编码及路径名称；\n- `data.errorMsg`：失败原因。\n\n文档只明确说明需要使用 `requestKey` 轮询，没有明确轮询请求的具体参数格式。实现前必须确认这一点；不得猜测为重复提交 `userQuery` 或自行发明参数。\n\n## 条件转换\n\n| AI字段 | 普通搜索字段 | 处理规则 |\n| --- | --- | --- |\n| `searchStartTime` | `startDate` | 补 `00:00:00` |\n| `searchEndTime` | `endDate` | 补 `23:59:59` |\n| `subjects` | `keyword` | 默认 `|` 表示 OR；同时出现则用空格 |\n| `enterpriseName` | `companyName` | 保留企业名称模糊查询语义 |\n| `projectClassIds` | `projectClassID` | 多值英文逗号连接 |\n| `purchaseTypeId` | `purchaseTypeID` | 直接映射 |\n| `projectMoneyMin` | `projectMoneyMin` | 人民币元 |\n| `projectMoneyMax` | `projectMoneyMax` | 人民币元 |\n| `areaCode` | `areaCode` | 直接映射并校验六位编码或全国 `0` |\n| `industryCodes` | `industryCode` | 分层合并去重 |\n| `subcontractFlag` | 无明确字段 | 必须提示未透传 |\n\n普通搜索默认补充：`pageId=1`、`pageNumber` 不超过 50、`searchType=1`、`searchMode=1`、`projectClassID=-100`、`purchaseTypeID=-100`、`fileFlag=-1`。实际项目应以用户已有配置和接口文档为准。\n\n## 何时改用AI专用搜索\n\n`SearchProjectForAI` 可用于简单自然语言快速查询或普通搜索条件编译暂不可用时的兜底，但要向调用方说明它是简化路径。复杂地区、行业、金额、项目分类、附件条件应优先使用“AI重写→普通搜索”。\n\nFile v1.0.2:references/planned-project-workflow.md\n\n# 拟在建项目业务流程\n\n## 接口组\n\n- `searchNZJProjectApi`：拟在建项目搜索；\n- `getNZJProjectDetail`：拟在建项目详情；\n- `getNZJProjectFileList`：拟在建项目附件列表。\n\n## 调用链\n\n```text\n自然语言或结构化条件\n  -> 拟在建项目搜索\n  -> id + publishTime\n  -> 拟在建项目详情\n  -> 拟在建附件列表（需要时）\n```\n\n拟在建项目使用独立模型，不要直接套用招中标项目的官方结构化字段。搜索结果中的 ID 和发布时间仍要成对保存。\n\nFile v1.0.2:references/project-detail-workflow.md\n\n# 项目列表、正文、结构化数据与附件\n\n## 项目联合身份\n\n后续详情调用统一保存：\n\n```text\nprojectId = 列表记录的 id\npublishTime = 列表记录的 publishTime\n```\n\n大多数详情接口需要 `projectId + publishTime`，只保存 ID 会导致详情查询不稳定。\n\n## 职责划分\n\n| 能力 | 接口 | 主要用途 |\n| --- | --- | --- |\n| 搜索列表 | `searchProjectApi` / `SearchProjectForAI` | 项目发现、分页和摘要展示 |\n| 项目编号搜索 | `getProjectByProjectNumber` | 按编号找同项目的多条公告或阶段记录 |\n| 正文详情 | `getZTBProjectDetail` | HTML原文、标题、展示字段和附件概要 |\n| 官方结构化详情 | `getZTBStructreDetail` | 编号、标段、预算、中标金额、时间、主体、投标企业 |\n| 附件列表 | `getZTBProjectFiles` | 下载 URL、文件类型、大小、处理状态 |\n| 采集源网址 | `getCollectUrl` | 原始来源跳转兜底 |\n\n## 标准调用链\n\n列表页：\n\n```text\n自然语言条件 -> AI重写 -> 普通搜索 -> 摘要列表\n```\n\n正文详情页：\n\n```text\n列表记录 -> projectId + publishTime -> getZTBProjectDetail -> HTML正文\n```\n\n完整项目详情页：\n\n```text\nprojectId + publishTime\n  -> 正文详情\n  -> 官方结构化详情\n  -> 附件列表\n  -> 采集源网址（collectUrl缺失或用户要求时）\n```\n\n正文、结构化数据和附件互不依赖时并行调用。结构化详情的 `collectUrl` 优先于独立采集源接口。\n\n## 数据边界\n\n- 列表摘要不是完整内容，不能代替详情接口。\n- 正文中的项目金额主要是展示值；结构化 `budgetMoney`、`bidMoney` 是分析值。\n- 正文详情的 `projectFiles` 只有概要；需要下载时必须调用附件列表。\n- 官方结构化字段与 AI 推断字段必须分开标识。\n- HTML 正文保留原始版本，同时可生成清洗版供展示或摘要。\n\n## 项目编号入口\n\n调用 `getProjectByProjectNumber` 后，结果可能包含招标、中标、合同等多个阶段记录。逐条保存 `id + publishTime`，再按照用户要求获取正文或结构化详情，不要只取第一条。\n\nFile v1.0.2:skill-card.md\n\n## Description: <br>\n面向世舶科技（武汉）有限公司“保标招标”产品的招投标数据接口业务 Skill，用于自然语言招中标查询、搜索条件编译、项目详情与附件获取、合同查询、企业画像、拟在建项目检索，以及行业推理、分类推理和正文结构化接口支持。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[brade888](https://clawhub.ai/user/brade888) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users, developers, and procurement data teams use this skill to work with Baobiao Bid search and project APIs: natural-language query compilation, bid/project search, project details, attachments, contracts, company profiles, planned projects, and AI-assisted classification or structuring. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The API helper can send the API key to an arbitrary base URL. <br>\nMitigation: Use only the documented gov-bid gateway, avoid passing --base-url unless the destination is fully trusted, and consider removing or allowlisting that option before deployment. <br>\nRisk: Broad implicit invocation can make external API calls or send procurement queries without enough user intent confirmation. <br>\nMitigation: Require explicit confirmation before the agent makes external API calls or sends procurement queries. <br>\nRisk: API key exposure could occur if credentials are copied into prompts, files, URLs, logs, or examples. <br>\nMitigation: Keep the API key in a secure environment variable or secret manager and redact it from logs, examples, and generated URLs. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/brade888/skills/sbkj-bidsearch) <br>\n- [保标招标 API Key 获取入口](https://apiyx.gov-bid.com/) <br>\n- [接口索引](references/api-reference.md) <br>\n- [自然语言搜索与条件编译](references/natural-language-search-workflow.md) <br>\n- [项目列表、正文、结构化数据与附件](references/project-detail-workflow.md) <br>\n- [合同数据业务流程](references/contract-workflow.md) <br>\n- [企业画像业务流程](references/company-workflow.md) <br>\n- [拟在建项目业务流程](references/planned-project-workflow.md) <br>\n- [AI辅助接口](references/ai-workflow.md) <br>\n- [枚举、响应兼容和异常规则](references/enums-and-response-rules.md) <br>\n- [品牌与运营宣传口径](references/brand-and-promotion.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Code, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown guidance with JSON examples, Python command examples, and configuration instructions] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May produce API request payloads and shell commands; API calls require a securely configured BAOBIAO_ZTB_API_KEY.] <br>\n\n## Skill Version(s): <br>\n1.0.2 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.3: 17 files, 29843 bytes\n\nFiles: agents/openai.yaml (355b), references/ai-workflow.md (1055b), references/api-reference.md (1434b), references/brand-and-promotion.md (2087b), references/company-workflow.md (1042b), references/contract-workflow.md (807b), references/enums-and-response-rules.md (1372b), references/natural-language-search-workflow.md (2534b), references/planned-project-workflow.md (538b), references/project-detail-workflow.md (2152b), scripts/__pycache__/compile_search_condition.cpython-311.pyc (8594b), scripts/__pycache__/invoke_baobiao_api.cpython-311.pyc (7728b), scripts/compile_search_condition.py (5156b), scripts/invoke_baobiao_api.py (4234b), skill-card.md (2722b), SKILL.md (11310b), _meta.json (133b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: sbkj-bidsearch\ndescription: 面向世舶科技（武汉）有限公司“保标招标”产品的招投标数据接口业务 Skill。用于根据自然语言查询招中标项目、把 AI 重写条件转换为普通搜索参数、处理搜索列表到项目详情的调用链、获取正文与官方结构化数据、查询附件和采集源网址、查询合同、分析企业画像、检索拟在建项目，以及使用行业推理、分类推理和正文结构化接口。涉及保标招标接口调用、Python脚本联调、API客户端封装、参数排查或业务流程说明时使用。\n---\n\n# 保标招标接口业务助手\n\n## 使用前置条件\n\n- 外部接口调用必须配置 API Key。优先从环境变量 `BAOBIAO_ZTB_API_KEY` 或项目现有安全配置读取，禁止把真实 Key 写入代码、Skill、日志、示例或提交记录。\n- API 网关基地址为 `https://gate.gov-bid.com/outer-gateway/bid`，请求地址按参考文档拼接 `?key={API_KEY}`。\n- 如果当前环境没有 HTTP/MCP/API Client 能力，只能生成调用方案、请求示例、测试样例或排查建议，不要声称已经调用成功。\n- 当前 Skill 的品牌上下文是：公司“世舶科技（武汉）有限公司”，产品“保标招标”。对外宣传、产品介绍或用户可见文案中使用完整名称“世舶科技（武汉）有限公司保标招标”，不夸大接口能力，不虚构客户、数据规模或效果。\n\n## 总体工作方式\n\n1. 先识别用户意图和业务场景，不要按接口名称机械选择。\n2. 自然语言检索优先执行“AI 重写条件 → 状态完成 → 转换普通搜索参数 → 普通搜索列表”。\n3. 搜索记录必须保存 `projectId/id + publishTime`，二者是后续项目详情调用的联合身份。\n4. 区分列表摘要、正文详情、官方结构化详情、附件和采集源网址；根据用户需要选择单接口或组合调用。\n5. 多个项目的正文、结构化详情和附件查询可并行；单个项目详情页也可并行获取互不依赖的数据。\n6. 成功判断同时检查 HTTP 状态、响应 `code` 和业务 `subCode`；不要只根据 HTTP 200 判断成功。\n7. 输出中区分官方字段、接口原始字段和 AI 推断字段，不能把 AI 推断结果伪装成官方结构化结果。\n8. 详细参数和字段定义按需读取 `references/` 下对应文件，不要一次性加载全部接口资料。\n\n## Agent执行优先级\n\n按照以下优先级执行，减少 Agent 在底层接口和实现语言之间反复判断：\n\n1. 用户要求“查询、测试、联调、调用接口”时，优先使用 Python 脚本；先检查 `BAOBIAO_ZTB_API_KEY`，再调用脚本。\n2. 用户要求“把 AI 条件转换成普通搜索参数”时，优先运行 `scripts/compile_search_condition.py`，不要手工重写 JSON。\n3. 用户要求“直接调用某个接口”时，使用 `scripts/invoke_baobiao_api.py`，通过 `--endpoint` 和 JSON 请求体调用，不要在回答中拼接含 Key 的 URL。\n4. 用户要求实现正式项目功能时，根据目标项目实际技术栈实现；不要默认假设使用 .NET、Java 或其他特定语言。\n5. 用户只要求解释方案或分析接口时，不调用外部接口，读取对应 `references/` 并给出调用链和参数说明。\n6. 脚本返回非零退出码时，先解释参数错误、网络错误、权限错误或业务错误，再决定是否需要修改请求；不要把失败包装成成功。\n\n### 脚本调用模板\n\n```powershell\n$env:BAOBIAO_ZTB_API_KEY = \"从安全渠道取得的Key\"\npython scripts/invoke_baobiao_api.py `\n  --endpoint searchProjectApi `\n  --data-file request.json\n```\n\n脚本输出约定：正常 JSON 输出到 stdout，错误输出到 stderr；退出码 `0` 表示成功，`1` 表示调用或输入错误，`2` 表示缺少 API Key 或参数错误，`3` 表示接口返回业务失败。API Key 只在当前进程临时提供，不写入 Skill 或项目文件。\n\n## 业务路由\n\n| 用户意图 | 标准处理 |\n| --- | --- |\n| 自然语言搜索招中标项目 | 读取 `natural-language-search-workflow.md`，AI 重写后调用普通搜索 |\n| 已有结构化筛选条件搜索 | 读取 `search-condition-mapping.md` 和 `api-reference.md`，直接调用普通搜索 |\n| 根据项目编号查项目 | 调用项目编号搜索，再按 `projectId + publishTime` 进入详情链路 |\n| 查看公告全文 | 调用正文详情 |\n| 提取预算、中标金额、联系人、投标企业 | 调用官方结构化详情 |\n| 下载或查看附件 | 调用附件列表；正文详情中的附件概要不能替代下载接口 |\n| 跳转原始来源 | 优先使用结构化详情的 `collectUrl`，缺失时调用采集源网址 |\n| 查询合同 | 读取 `contract-workflow.md`，调用合同搜索，必要时进入项目详情链路 |\n| 查询企业基本情况、联系人、客户、供应商 | 读取 `company-workflow.md`，按需调用企业画像接口组 |\n| 查询拟在建项目 | 读取 `planned-project-workflow.md`，使用拟在建项目独立模型 |\n| 推理行业、分类或从正文抽取字段 | 读取 `ai-workflow.md`，明确标记 AI 推断结果 |\n\n## 自然语言搜索硬规则\n\n将 `aiSearchSubmitPolling` 视为普通搜索的条件编译器，不要让 Agent 直接凭空拼装复杂普通搜索参数。\n\n1. 提交 `userQuery`，取得 `requestKey`。\n2. 按接口契约轮询处理状态；只有 `status=completed` 才继续。\n3. `processing`、`search_rewrite_done`、`area_code_done`、`industry_done` 表示仍在处理，不能提前搜索。\n4. `failed` 必须返回 `errorMsg` 或可定位的失败原因。\n5. 将 `searchCondition`、`areaCode` 和 `industryCodes` 转换成普通搜索请求。\n6. 开始日期补 `00:00:00`，结束日期补 `23:59:59`。\n7. 多个 `subjects` 默认按 OR 语义使用英文竖线连接；如果用户明确要求同时出现，改用空格并说明语义。\n8. `enterpriseName` 映射到 `companyName`；`projectClassIds` 映射到 `projectClassID`；`purchaseTypeId` 映射到 `purchaseTypeID`。\n9. 行业编码按一级、二级、三级分别合并去重。\n10. `subcontractFlag` 在普通搜索接口没有明确对应字段，必须提示“未透传”，不能静默丢弃。\n11. 普通搜索中的 `inCludeKW` 拼写必须保持接口原名。\n12. 普通搜索 `pageNumber` 不超过 50；需要总数时使用接口约定的 `pageNumber=0`，并说明不会返回完整记录。\n\n如果文档没有明确轮询请求如何携带 `requestKey`，先标记接口契约待确认；不要猜测参数名，也不要伪造“已完成”。\n\n## 列表到详情的业务关系\n\n- 搜索列表接口只负责发现和展示摘要，不是完整内容来源。\n- 正文详情接口 `getZTBProjectDetail` 负责 HTML 原文、标题、展示字段和正文附件概要。\n- 结构化详情接口 `getZTBStructreDetail` 负责项目编号、标段、预算、中标金额、时间、地点、主体联系人和投标企业等官方业务字段。\n- 附件列表接口 `getZTBProjectFiles` 负责下载 URL、后缀、大小和处理状态。\n- 采集源网址接口 `getCollectUrl` 负责原始来源跳转；结构化详情已有 `collectUrl` 时优先使用它。\n- 完整项目详情页通常并行获取正文、官方结构化详情和附件；只有用户要求原始来源或 `collectUrl` 缺失时才补充采集源网址。\n- 正文金额是展示值，结构化预算/中标金额是分析值；两者不能无提示混用。\n\n## 统一项目身份与结果模型\n\n使用以下逻辑模型组织结果：\n\n```text\nBidProjectView\n├── identity: projectId, publishTime\n├── summary: 搜索列表摘要\n├── content: 正文详情和 HTML\n├── structured: 官方结构化详情\n├── attachments: 可下载附件\n└── source: collectUrl, sbkjBidUrl\n```\n\n当项目 ID、发布时间、详情数据或附件数据缺失时，保留缺失状态并说明原因，不用其他字段猜补。\n\n## 响应、兼容和安全规则\n\n- 兼容文档中字段大小写差异，例如 `costtime/costTime`、`startdate/startDate`。\n- `data` 可能是数组、对象或分页对象，按具体接口解析。\n- 标题和正文可能包含 HTML 高亮标签；同时保留原文版和清洗后的展示版更安全。\n- 金额可能是“16.8万”等带单位字符串，不能直接按数字解析。\n- `null`、空数组、无附件和接口失败要区分处理。\n- 记录真实请求时脱敏 URL 中的 `key`，日志不得打印完整 Key。\n- 对外输出时优先使用产品名称“保标招标”，技术说明中可注明其所属公司“世舶科技（武汉）有限公司”。\n\n## Skill脚本：Python 3 封装约定\n\n当用户要求直接运行接口联调脚本、验证接口参数或生成普通搜索请求时，使用 `scripts/` 下的 Python 3 脚本，不要把脚本逻辑复制到项目 Controller 中。\n\n- 使用 Python 3.10+ 语法和标准库优先，避免为简单 HTTP/JSON 调用引入额外依赖。\n- 使用 `argparse` 提供命令行参数，使用 `json` 处理请求和响应，使用 `urllib` 完成基础 HTTP 调用。\n- API Key 只能从环境变量或显式安全配置读取，默认使用 `BAOBIAO_ZTB_API_KEY`；禁止写入脚本、示例、日志和错误信息。\n- 脚本入口使用 `main()` 和 `if __name__ == \"__main__\"`，通过明确退出码表示成功、参数错误、接口错误和业务失败。\n- 对公共函数、关键转换函数和异常兜底路径编写中文 docstring，说明参数、返回值和失败原因。\n- 请求 JSON 使用 UTF-8；输出 JSON 时保留中文，错误信息输出到 stderr，正常结果输出到 stdout。\n- 脚本只负责确定性的接口调用、参数转换和离线验证；复杂业务编排、持久化、权限和正式 API 对外能力应放在调用方的正式业务服务中。\n- AI 重写轮询参数未在接口文档中明确时，脚本不能自行猜测轮询协议；应先输出待确认契约或等待用户提供接口约定。\n\n## 参考资料导航\n\n- 总接口、枚举和字段：`references/api-reference.md`\n- 自然语言条件重写与普通搜索：`references/natural-language-search-workflow.md`\n- 列表、正文、结构化、附件和来源关系：`references/project-detail-workflow.md`\n- 合同搜索：`references/contract-workflow.md`\n- 企业画像：`references/company-workflow.md`\n- 拟在建项目：`references/planned-project-workflow.md`\n- AI 行业、分类和正文结构化：`references/ai-workflow.md`\n- 枚举、响应兼容和异常：`references/enums-and-response-rules.md`\n- 品牌、产品介绍和运营宣传口径：`references/brand-and-promotion.md`\n\n## 可执行脚本\n\n- `scripts/invoke_baobiao_api.py`：从环境变量读取 API Key，安全调用指定保标招标 POST 接口。\n- `scripts/compile_search_condition.py`：将 AI 重写接口返回的 JSON 转换为普通搜索接口请求 JSON；支持从文件或标准输入读取。\n\n调用脚本前先配置 `BAOBIAO_ZTB_API_KEY`。脚本不会把 Key 写入输出或错误信息。AI 重写轮询接口的具体请求格式在原始文档中未完全明确，因此脚本只负责提交和条件编译，不擅自猜测轮询请求参数。\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn77vrgh13jvhkcnc491mkcn75859bgn\",\n  \"slug\": \"sbkj-bidsearch\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1785401528232\n}\n\nFile v1.0.3:references/ai-workflow.md\n\n# AI辅助接口\n\n## AI行业搜索\n\n接口：`industryReasoning`\n\n输入行业关键词，返回行业编码候选。适用于补充或校验普通搜索的 `industryCode`，不是项目搜索接口。\n\n```text\n行业名称 -> industryReasoning -> 行业编码 -> 普通搜索\n```\n\n## 招中标分类推理\n\n接口：`categoryReasoning`\n\n输入项目标题和正文，推理招中标 14 类信息分类。结果是 AI 推断，用于分类补充、质量校验或历史数据处理，不能覆盖官方 `projectClassID` 而不留痕。\n\n## LLM项目结构化\n\n接口：`ztbAiStructureInfo`\n\n输入消息，适用于官方结构化详情缺失或需要从正文抽取更多字段的情况，例如金额统一转人民币元、座机补全区号、提取评标专家职业和专业方向。\n\n必须区分：\n\n```text\n官方结构化数据 != AI推理结构化数据\n```\n\n## AI专用搜索\n\n接口：`SearchProjectForAI`\n\n适合简单自然语言快速搜索。复杂查询仍优先采用 `aiSearchSubmitPolling` 完成条件编译后调用普通搜索。\n\nFile v1.0.3:references/api-reference.md\n\n# 接口索引\n\n基地址：`https://gate.gov-bid.com/outer-gateway/bid`。所有接口 Key 从安全配置读取。\n\n## 招中标项目\n\n| 场景 | 方法路径 |\n| --- | --- |\n| 普通搜索 | `/searchProjectApi` |\n| 项目编号搜索 | `/getProjectByProjectNumber` |\n| 官方结构化详情 | `/getZTBStructreDetail` |\n| 正文详情 | `/getZTBProjectDetail` |\n| 附件列表 | `/getZTBProjectFiles` |\n| AI专用搜索 | `/SearchProjectForAI` |\n| 合同搜索 | `/searchProjectContactApi` |\n| AI重写搜索条件 | `/aiSearchSubmitPolling` |\n| AI行业搜索 | `/industryReasoning` |\n| 采集源网址 | `/getCollectUrl` |\n\n## 企业画像\n\n| 场景 | 方法路径 |\n| --- | --- |\n| 企业基本信息 | `/companyProfileSummary` |\n| 企业联系电话 | `/companyProfileContacts` |\n| 企业合作客户 | `/companyProfileCustomers` |\n| 企业供应商 | `/companyProfileSuppliers` |\n\n## 拟在建项目\n\n| 场景 | 方法路径 |\n| --- | --- |\n| 搜索 | `/searchNZJProjectApi` |\n| 详情 | `/getNZJProjectDetail` |\n| 附件 | `/getNZJProjectFileList` |\n\n## AI模型训练定制化\n\n| 场景 | 方法路径 |\n| --- | --- |\n| LLM招中标结构化 | `/ztbAiStructureInfo` |\n| 招中标分类推理 | `/categoryReasoning` |\n\n详细请求参数、响应字段和示例以用户提供的 `接口文档_2026-07-30.md` 为准；实现接口时按业务场景读取本 Skill 的工作流文件，不要只根据接口名猜测字段。\n\nFile v1.0.3:references/brand-and-promotion.md\n\n# 品牌与运营宣传口径\n\n## 品牌身份\n\n- 公司全称：世舶科技（武汉）有限公司。\n- 产品名称：保标招标。\n- 对外完整称呼：世舶科技（武汉）有限公司保标招标。\n\n## 可直接使用的产品定位\n\n保标招标面向招投标业务场景，提供招中标信息检索、项目正文与结构化数据获取、附件查询、企业画像、合同数据和拟在建项目分析能力，并通过 AI 辅助自然语言搜索条件重写、行业识别、分类推理和正文结构化。\n\n## 宣传输出规则\n\n1. 首次介绍产品时使用“世舶科技（武汉）有限公司保标招标”；后续可简称“保标招标”。\n2. 可以宣传文档和已验证接口明确支持的能力：自然语言检索、复杂条件搜索、项目详情、结构化字段、附件、企业画像、合同和拟在建项目等。\n3. “AI 重写”应描述为搜索条件解析与结构化转换能力，不要宣传为无条件理解所有问题或保证检索准确。\n4. “结构化数据”应区分官方结构化字段和 AI 推断字段；宣传时不能把推理结果表述为官方事实。\n5. 不虚构客户数量、数据覆盖范围、行业排名、识别准确率、实时性、案例、收入或节省成本等指标。\n6. 未提供官方网站、客服电话、销售联系人、二维码或活动信息时，不要自行编造；如需宣传物料，向用户索取真实素材。\n7. 对外宣传中不要暴露 API 网关地址、API Key、内部字段名或内部错误信息。\n\n## 推荐卖点结构\n\n```text\n品牌：世舶科技（武汉）有限公司保标招标\n核心价值：让招投标信息从检索、查看到分析形成连续业务链\n能力支柱：\n  - 自然语言搜索条件解析\n  - 招中标项目列表与详情联动\n  - 正文与官方结构化数据协同\n  - 附件和原始来源追溯\n  - 企业、合同和拟在建项目分析\n  - AI行业、分类和正文结构化辅助\n```\n\n输出营销文案时，优先围绕业务流程和可验证能力表达，避免只罗列接口名称。\n\nFile v1.0.3:references/company-workflow.md\n\n# 企业画像业务流程\n\n## 接口组\n\n- `companyProfileSummary`：企业基本信息和画像汇总；\n- `companyProfileContacts`：联系人和联系电话，文档说明实际 `pageSize` 最大按 5 处理；\n- `companyProfileCustomers`：合作客户项目关系，`pageSize` 实际最大按 20 处理；\n- `companyProfileSuppliers`：供应商项目关系，`pageSize` 实际最大按 20 处理。\n\n## 按需路由\n\n| 需求 | 调用 |\n| --- | --- |\n| 企业基本情况 | Summary |\n| 查联系方式 | Contacts |\n| 查合作客户 | Customers |\n| 查供应商 | Suppliers |\n| 企业全面画像 | 四个接口组合调用 |\n\n不要默认调用全部接口。企业名称作为统一查询键；分页参数按各接口上限裁剪，并在结果中说明实际页大小。\n\n## 输出模型\n\n```text\nCompanyProfile\n├── summary\n├── contacts\n├── customers\n└── suppliers\n```\n\n企业画像中的项目关系如包含项目 ID 和发布时间，可链接到项目详情流程；无法关联时不得强行补全。\n\nFile v1.0.3:references/contract-workflow.md\n\n# 合同数据业务流程\n\n## 接口\n\n`searchProjectContactApi`\n\n用于按关键词、地区、行业、时间、合同截止日期、金额、甲乙方和代理机构查询合同数据。\n\n## 处理方式\n\n1. 用户给自然语言合同条件时，优先复用 AI 重写结果。\n2. 把日期、地区、行业、采购分类、金额和企业字段映射到合同搜索接口。\n3. 保留合同截止日期 `contractEndMin`、`contractEndMax`，不要只使用发布时间。\n4. 查询结果若有项目 ID 和发布时间，继续进入项目正文/结构化/附件详情链路。\n5. 输出中区分“合同搜索结果”和“项目详情补充结果”。\n\n合同搜索接口与普通招中标搜索接口字段相似，但不能直接复用 URL、响应 DTO 或结果模型，应该单独建模。\n\nFile v1.0.3:references/enums-and-response-rules.md\n\n# 枚举、响应兼容和异常规则\n\n## 常用枚举\n\n招中标信息分类：\n\n```text\n1公开招标，2成交结果，3合同公告，4意向公开，5答疑变更，\n6候选人公示，7开标公示，8重新招标，11流标废标，18结果变更，\n26拍租公告，28竞争性谈判，29竞争性磋商，30单一来源采购，31其它\n```\n\n采购分类：`0其它`、`1服务类`、`2工程类`、`3货物类`。\n\n## 响应判断\n\n- `code=200` 表示接口层成功，但仍需检查 `subCode` 和 `subMsg`；\n- 常见业务成功码为 `0000000000`，以实际接口文档为准；\n- `data` 可能是对象、数组或分页对象；\n- `null`、空数组、无附件、处理中和失败必须区分；\n- 不要把 HTTP 200 或 `msg=ok` 单独当作业务成功。\n\n## 字段兼容\n\n兼容 `costtime/costTime`、`startdate/startDate`、`enddate/endDate` 等大小写差异。金额可能是“16.8万”等展示字符串，也可能是人民币元数组；解析前确认字段语义。\n\n## 安全和宣传\n\n- API Key 不进入日志、代码、文档、截图或对外文案；\n- 对外介绍使用“世舶科技（武汉）有限公司保标招标”；\n- 只能宣传文档和实际验证支持的功能，不虚构数据规模、客户案例、准确率或自动化效果；\n- 输出接口错误时说明真实状态，不用宣传话术掩盖失败。\n\nFile v1.0.3:references/natural-language-search-workflow.md\n\n# 自然语言搜索与条件编译\n\n## 目标\n\n把用户自然语言转换为普通搜索接口可接受的结构化参数。普通搜索接口不是自然语言接口，不能让 Agent 直接猜测所有字段。\n\n## 调用链\n\n```text\nuserQuery\n  -> aiSearchSubmitPolling\n  -> requestKey / status\n  -> status=completed\n  -> BidSearchCondition\n  -> searchProjectApi\n  -> 分页列表\n```\n\n## AI重写接口\n\n端点：`/aiSearchSubmitPolling`\n\n请求：\n\n```json\n{\"userQuery\":\"湖北近30天物业服务，工程建筑中标结果，金额500万以上\"}\n```\n\n结果中的关键字段：\n\n- `data.requestKey`：处理任务标识；\n- `data.status`：`processing`、`search_rewrite_done`、`area_code_done`、`industry_done`、`completed`、`failed`；\n- `data.searchCondition`：日期、企业、主题、项目分类、采购分类、金额、分包标识；\n- `data.areaCode`：省、市、区县编码；\n- `data.industryCodes`：一级、二级、三级行业编码及路径名称；\n- `data.errorMsg`：失败原因。\n\n文档只明确说明需要使用 `requestKey` 轮询，没有明确轮询请求的具体参数格式。实现前必须确认这一点；不得猜测为重复提交 `userQuery` 或自行发明参数。\n\n## 条件转换\n\n| AI字段 | 普通搜索字段 | 处理规则 |\n| --- | --- | --- |\n| `searchStartTime` | `startDate` | 补 `00:00:00` |\n| `searchEndTime` | `endDate` | 补 `23:59:59` |\n| `subjects` | `keyword` | 默认 `|` 表示 OR；同时出现则用空格 |\n| `enterpriseName` | `companyName` | 保留企业名称模糊查询语义 |\n| `projectClassIds` | `projectClassID` | 多值英文逗号连接 |\n| `purchaseTypeId` | `purchaseTypeID` | 直接映射 |\n| `projectMoneyMin` | `projectMoneyMin` | 人民币元 |\n| `projectMoneyMax` | `projectMoneyMax` | 人民币元 |\n| `areaCode` | `areaCode` | 直接映射并校验六位编码或全国 `0` |\n| `industryCodes` | `industryCode` | 分层合并去重 |\n| `subcontractFlag` | 无明确字段 | 必须提示未透传 |\n\n普通搜索默认补充：`pageId=1`、`pageNumber` 不超过 50、`searchType=1`、`searchMode=1`、`projectClassID=-100`、`purchaseTypeID=-100`、`fileFlag=-1`。实际项目应以用户已有配置和接口文档为准。\n\n## 何时改用AI专用搜索\n\n`SearchProjectForAI` 可用于简单自然语言快速查询或普通搜索条件编译暂不可用时的兜底，但要向调用方说明它是简化路径。复杂地区、行业、金额、项目分类、附件条件应优先使用“AI重写→普通搜索”。\n\nFile v1.0.3:references/planned-project-workflow.md\n\n# 拟在建项目业务流程\n\n## 接口组\n\n- `searchNZJProjectApi`：拟在建项目搜索；\n- `getNZJProjectDetail`：拟在建项目详情；\n- `getNZJProjectFileList`：拟在建项目附件列表。\n\n## 调用链\n\n```text\n自然语言或结构化条件\n  -> 拟在建项目搜索\n  -> id + publishTime\n  -> 拟在建项目详情\n  -> 拟在建附件列表（需要时）\n```\n\n拟在建项目使用独立模型，不要直接套用招中标项目的官方结构化字段。搜索结果中的 ID 和发布时间仍要成对保存。\n\nFile v1.0.3:references/project-detail-workflow.md\n\n# 项目列表、正文、结构化数据与附件\n\n## 项目联合身份\n\n后续详情调用统一保存：\n\n```text\nprojectId = 列表记录的 id\npublishTime = 列表记录的 publishTime\n```\n\n大多数详情接口需要 `projectId + publishTime`，只保存 ID 会导致详情查询不稳定。\n\n## 职责划分\n\n| 能力 | 接口 | 主要用途 |\n| --- | --- | --- |\n| 搜索列表 | `searchProjectApi` / `SearchProjectForAI` | 项目发现、分页和摘要展示 |\n| 项目编号搜索 | `getProjectByProjectNumber` | 按编号找同项目的多条公告或阶段记录 |\n| 正文详情 | `getZTBProjectDetail` | HTML原文、标题、展示字段和附件概要 |\n| 官方结构化详情 | `getZTBStructreDetail` | 编号、标段、预算、中标金额、时间、主体、投标企业 |\n| 附件列表 | `getZTBProjectFiles` | 下载 URL、文件类型、大小、处理状态 |\n| 采集源网址 | `getCollectUrl` | 原始来源跳转兜底 |\n\n## 标准调用链\n\n列表页：\n\n```text\n自然语言条件 -> AI重写 -> 普通搜索 -> 摘要列表\n```\n\n正文详情页：\n\n```text\n列表记录 -> projectId + publishTime -> getZTBProjectDetail -> HTML正文\n```\n\n完整项目详情页：\n\n```text\nprojectId + publishTime\n  -> 正文详情\n  -> 官方结构化详情\n  -> 附件列表\n  -> 采集源网址（collectUrl缺失或用户要求时）\n```\n\n正文、结构化数据和附件互不依赖时并行调用。结构化详情的 `collectUrl` 优先于独立采集源接口。\n\n## 数据边界\n\n- 列表摘要不是完整内容，不能代替详情接口。\n- 正文中的项目金额主要是展示值；结构化 `budgetMoney`、`bidMoney` 是分析值。\n- 正文详情的 `projectFiles` 只有概要；需要下载时必须调用附件列表。\n- 官方结构化字段与 AI 推断字段必须分开标识。\n- HTML 正文保留原始版本，同时可生成清洗版供展示或摘要。\n\n## 项目编号入口\n\n调用 `getProjectByProjectNumber` 后，结果可能包含招标、中标、合同等多个阶段记录。逐条保存 `id + publishTime`，再按照用户要求获取正文或结构化详情，不要只取第一条。\n\nFile v1.0.3:skill-card.md\n\n## Description: <br>\nProvides workflow guidance and helper scripts for querying Baobiao bid-search APIs, converting natural-language search intent into structured search parameters, and retrieving bid project, contract, company, and planned-project details. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[brade888](https://clawhub.ai/user/brade888) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and external teams use this skill to plan, test, and implement Baobiao bid-search workflows, including natural-language search condition conversion, project detail retrieval, attachments, source URLs, contracts, company profiles, and planned-project queries. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill calls an external bid-search API and requires a dedicated API key. <br>\nMitigation: Use BAOBIAO_ZTB_API_KEY from secure environment configuration, keep it out of logs and code, and avoid changing the base URL or key variable unless testing a trusted endpoint. <br>\nRisk: API responses or AI-derived fields may be mistaken for official structured bid data. <br>\nMitigation: Preserve the distinction between official fields, raw interface fields, and AI-inferred fields in agent output. <br>\nRisk: A successful HTTP response may still represent a business-level failure. <br>\nMitigation: Check HTTP status, response code, and subCode before reporting success. <br>\n\n\n## Reference(s): <br>\n- [Skill page](https://clawhub.ai/brade888/skills/sbkj-bidsearch) <br>\n- [API reference](references/api-reference.md) <br>\n- [Natural-language search workflow](references/natural-language-search-workflow.md) <br>\n- [Project detail workflow](references/project-detail-workflow.md) <br>\n- [Enums and response rules](references/enums-and-response-rules.md) <br>\n- [Brand and promotion guidance](references/brand-and-promotion.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Markdown, Code, Shell commands, Configuration] <br>\n**Output Format:** [Markdown guidance with JSON examples, Python helper script usage, and shell command snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May produce API request payloads and parsed JSON outputs when the caller provides a valid BAOBIAO_ZTB_API_KEY.] <br>\n\n## Skill Version(s): <br>\n1.0.3 (source: server release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.1: 4 files, 8993 bytes\n\nFiles: scripts/bid_search.py (9994b), skill-card.md (2307b), SKILL.md (9286b), _meta.json (133b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: sbkj-bidsearch\ncategory: research\ndescription: 全国招标中标采购信息搜索 - 保标招标 - 支持多条件筛选的招投标数据搜索，返回项目金额、甲方、乙方、代理机构、采集源网址等核心字段。\nversion: 1.0.1\nauthor: SBKJ\nlicense: MIT-0\nhomepage: https://www.bog-bid.com\napi_endpoint: https://gate.gov-bid.com/outer-gateway/bid/SearchProjectForAI\ntags:\n  - 招标采购\n  - 商机搜索\n  - 中标信息\n  - 招投标\n  - 政府采购\n  - 保标招标\ncredentials:\n  - name: BID_API_KEY\n    description: API 访问密钥，用于认证招标采购 API 请求\n    required: true\n    sensitive: true\n  - name: BID_SERVER_URL\n    description: API 服务器基础地址\n    required: false\n    default: https://gate.gov-bid.com\n    sensitive: false\n---\n\n# ⚠️ 安全提示\n\n**本技能会向外部 API 发送 HTTP 请求**\n\n## 关键信息\n\n| 项目 | 说明 |\n|------|------|\n| **API 端点** | `https://gate.gov-bid.com/outer-gateway/bid/SearchProjectForAI` |\n| **请求方式** | POST (JSON) |\n| **凭证要求** | `BID_API_KEY` (必需) |\n| **数据来源** | 第三方招标采购信息服务 |\n| **执行代码** | `scripts/bid_search.py` |\n\n## 安装前必读\n\n**请确认以下事项后再安装：**\n\n1. ✅ 您已从合法渠道获取 API 访问密钥\n2. ✅ 您信任 API 服务提供商 (`gate.gov-bid.com`)\n3. ✅ 您已审查技能代码（特别是 `scripts/bid_search.py`）\n4. ✅ 您了解技能会向外部服务器发送您的 API 密钥\n5. ✅ 您已在安全环境中测试或限制 API 密钥权限\n\n## 安全最佳实践\n\n```bash\n# 1. 使用环境变量管理密钥（不要硬编码）\nexport BID_API_KEY=\"your_api_key_here\"\n\n# 2. 限制 API 密钥权限（如服务商支持）\n# 3. 定期轮换密钥\n# 4. 在生产环境使用前先测试\n# 5. 监控 API 使用情况\n```\n\n---\n\n# 招标采购信息搜索 API 技能\n\n## 技能描述\n\n封装第三方招标采购信息搜索接口，专为 AI 模型设计，支持多条件筛选的招投标数据搜索。\n\n**数据覆盖：** 招标信息、中标信息、合同信息、采购意向、拍租信息等\n\n**返回核心字段：** 项目金额、甲方信息、乙方信息、代理机构、合同到期时间等\n\n## 安装配置\n\n### 必需凭证\n\n| 凭证名 | 说明 | 是否必需 | 示例 |\n|--------|------|----------|------|\n| `BID_API_KEY` | API 访问密钥 | ✅ 是 | `AK729447427d63c2320ff44c7a` |\n| `BID_SERVER_URL` | API 服务器地址 | ❌ 否 | `https://gate.gov-bid.com` |\n\n### 安装步骤\n\n**方式 1：环境变量**\n```bash\nexport BID_API_KEY=\"your_api_key_here\"\nexport BID_SERVER_URL=\"https://gate.gov-bid.com\"\n```\n\n**方式 2：Hermes 凭证管理（推荐）**\n```yaml\n# ~/.hermes/config.yaml\ncredentials:\n  BID_API_KEY: \"your_api_key_here\"\n  BID_SERVER_URL: \"https://gate.gov-bid.com\"\n```\n\n**方式 3：技能安装时配置**\n```bash\nskill_install sbkj-bidsearch\n```\n\n### 验证安装\n\n```bash\nskill_view sbkj-bidsearch\n```\n\n## 使用方法\n\n### 基本搜索\n\n```python\nfrom hermes_tools import terminal\n\nresult = terminal('''\npython3 << 'EOF'\nfrom skill_view import get_credential\nimport requests\n\napi_key = get_credential(\"BID_API_KEY\")\nurl = f\"https://gate.gov-bid.com/outer-gateway/bid/SearchProjectForAI?key={api_key}\"\n\npayload = {\n    \"keyword\": \"工程\",\n    \"className\": \"招标信息\",\n    \"startDate\": \"2025-01-10\",\n    \"endDate\": \"2025-01-17\",\n    \"pageId\": 1,\n    \"pageNumber\": 20\n}\n\nresponse = requests.post(url, json=payload)\ndata = response.json()\n\nif data.get(\"code\") == 200:\n    print(f\"找到 {data['data']['total']} 条记录\")\nelse:\n    print(f\"错误：{data.get('msg')}\")\nEOF\n''')\n```\n\n### Python 函数封装\n\n```python\ndef search_bid_projects(\n    keyword=None,\n    exclude_kw=None,\n    include_kw=None,\n    class_name=None,\n    area_name=None,\n    search_field=\"全部\",\n    start_date=None,\n    end_date=None,\n    page_id=1,\n    page_number=20\n):\n    \"\"\"搜索招标采购项目\"\"\"\n    from skill_view import get_credential\n    import requests\n    \n    api_key = get_credential(\"BID_API_KEY\")\n    server_url = get_credential(\"BID_SERVER_URL\") or \"https://gate.gov-bid.com\"\n    \n    url = f\"{server_url}/outer-gateway/bid/SearchProjectForAI?key={api_key}\"\n    \n    payload = {\n        \"startDate\": start_date,\n        \"endDate\": end_date,\n        \"pageId\": page_id,\n        \"pageNumber\": page_number\n    }\n    \n    if keyword: payload[\"keyword\"] = keyword\n    if exclude_kw: payload[\"excludeKW\"] = exclude_kw\n    if include_kw: payload[\"inCludeKW\"] = include_kw\n    if class_name: payload[\"className\"] = class_name\n    if area_name: payload[\"areaName\"] = area_name\n    if search_field: payload[\"searchField\"] = search_field\n    \n    response = requests.post(url, json=payload, timeout=30)\n    return response.json()\n```\n\n## 请求参数说明\n\n| 参数名 | 必填 | 类型 | 说明 |\n|--------|------|------|------|\n| keyword | 否 | string | 搜索关键词：空格=同时出现，竖线=或关系 |\n| excludeKW | 否 | string | 排除关键词，多个用竖线分隔 |\n| inCludeKW | 否 | string | 必须包含关键词，多个用竖线分隔 |\n| className | 否 | string | 项目类别：全部信息/招标信息/中标信息/合同信息/采购意向/拍租信息 |\n| areaName | 否 | string | 项目归属地区名称（如\"武汉\"） |\n| searchField | 否 | string | 搜索字段：标题、内容、全部（默认\"全部\"） |\n| startDate | ✅ | string | 发布开始日期，格式：yyyy-MM-dd |\n| endDate | ✅ | string | 发布结束日期，格式：yyyy-MM-dd |\n| pageId | ✅ | int | 当前页码 |\n| pageNumber | ✅ | int | 每页记录数（最大 100，设为 0 仅返回总数） |\n\n## 返回参数说明\n\n### 顶层响应\n\n| 参数名 | 类型 | 说明 |\n|--------|------|------|\n| code | int | 接口响应状态码（200=成功） |\n| msg | string | 响应信息 |\n| subCode | string | 业务侧 code |\n| subMsg | string | 业务侧 msg |\n| data | object | 业务数据 |\n\n### 项目列表项字段\n\n| 字段 | 说明 |\n|------|------|\n| id | 项目 ID |\n| title | 项目标题 |\n| newsTypeName | 信息类型名称 |\n| publishTime | 发布时间 |\n| areaName | 地区（省/市/区） |\n| projectMoney | 项目金额 |\n| projectClass | 项目类别 |\n| purchaseType | 采购类型 |\n| partAInfo | 甲方信息数组（name, contactPhone, email） |\n| partBInfo | 乙方信息数组 |\n| agencyInfo | 代理机构信息数组 |\n\n## 常见用例\n\n### 1. 获取某地区最新招标公告\n```python\nresult = search_bid_projects(\n    class_name=\"招标信息\",\n    area_name=\"上海\",\n    start_date=\"2025-01-15\",\n    end_date=\"2025-01-17\"\n)\n```\n\n### 2. 搜索特定关键词的中标信息\n```python\nresult = search_bid_projects(\n    keyword=\"智慧城市\",\n    class_name=\"中标信息\",\n    start_date=\"2025-01-01\",\n    end_date=\"2025-01-17\"\n)\n```\n\n### 3. 排除特定关键词\n```python\nresult = search_bid_projects(\n    keyword=\"空调\",\n    exclude_kw=\"维修 | 保养\",\n    class_name=\"招标信息\",\n    start_date=\"2025-01-10\",\n    end_date=\"2025-01-17\"\n)\n```\n\n### 4. 仅获取结果总数\n```python\nresult = search_bid_projects(\n    keyword=\"工程\",\n    start_date=\"2025-01-01\",\n    end_date=\"2025-01-17\",\n    page_number=0\n)\nprint(f\"总数：{result['data']['total']}\")\n```\n\n## 错误处理\n\n| 状态码 | 说明 | 处理建议 |\n|--------|------|----------|\n| 200 | 成功 | 正常处理返回数据 |\n| 401 | 认证失败 | 检查 BID_API_KEY 是否正确 |\n| 403 | 权限不足 | 联系 API 服务提供商 |\n| 500 | 服务器错误 | 稍后重试 |\n| 504 | 网关超时 | 检查网络或稍后重试 |\n\n## 注意事项\n\n1. **API Key 安全**：不要将 API Key 硬编码在代码中\n2. **请求频率**：建议控制请求频率，避免触发限流\n3. **日期格式**：必须使用 `yyyy-MM-dd` 格式\n4. **分页限制**：`pageNumber` 最大值为 100\n5. **关键词语法**：空格=AND，竖线=OR\n\n## 隐私与数据保护\n\n- **数据传输**：所有请求通过 HTTPS 加密传输\n- **凭证存储**：API Key 存储在本地凭证管理系统或环境变量中\n- **日志记录**：技能本身不记录请求日志\n\n## 故障排查\n\n### 问题：返回 401 认证失败\n**解决**：检查 `BID_API_KEY` 是否正确配置\n\n### 问题：返回数据为空\n**解决**：\n1. 检查日期范围是否合理\n2. 尝试放宽搜索条件\n3. 设置 `pageNumber=0` 先查看是否有匹配记录\n\n### 问题：请求超时\n**解决**：\n1. 检查网络连接\n2. 增加请求超时时间\n3. 减少 `pageNumber` 值\n\n## 技术细节\n\n### 代码结构\n```\nsbkj-bidsearch/\n├── SKILL.md\n└── scripts/\n    └── bid_search.py\n```\n\n### 网络请求详情\n- **协议**: HTTPS\n- **方法**: POST\n- **Content-Type**: application/json\n- **超时**: 30 秒\n\n### 依赖项\n- Python 3.7+\n- requests 库\n\n## 更新日志\n\n| 版本 | 日期 | 变更 |\n|------|------|------|\n| 1.0.1 | 2026-04-22 | 更新许可证为 MIT-0，更新 homepage |\n| 1.0.0 | 2026-04-21 | 初始版本 |\n\n## 参考链接\n\n- 接口文档：http://faq.zhvac.com/web/#/p/50f55291c248b58163e9ae4aa178eb12\n- 官方网站：https://www.bog-bid.com\n- API 端点：https://gate.gov-bid.com\n\n---\n\n**最后更新**: 2026-04-22  \n**技能版本**: 1.0.1  \n**许可证**: MIT-0 (无需署名)\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn77vrgh13jvhkcnc491mkcn75859bgn\",\n  \"slug\": \"sbkj-bidsearch\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1776826130744\n}\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\n全国招标中标采购信息搜索 - 保标招标 - 支持多条件筛选的招投标数据搜索，返回项目金额、甲方、乙方、代理机构、采集源网址等核心字段。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[brade888](https://clawhub.ai/user/brade888) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and business researchers use this skill to search Chinese tender, bid award, contract, procurement-intent, and auction-rental project records with filters for keywords, category, region, dates, and pagination. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Tender-search terms, company names, locations, bid IDs, URLs, and similar business research inputs are sent to the stated Biaozhaozhao/Zhiliaobiaoxun API. <br>\nMitigation: Avoid entering secrets, regulated personal data, or confidential deal strategy as search terms. <br>\nRisk: The skill requires an API key for the external bid-data service. <br>\nMitigation: Keep BID_API_KEY scoped, stored outside code, monitored, and rotated according to the provider's guidance. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/brade888/sbkj-bidsearch) <br>\n- [Official website](https://www.bog-bid.com) <br>\n- [API endpoint](https://gate.gov-bid.com/outer-gateway/bid/SearchProjectForAI) <br>\n- [Interface documentation](http://faq.zhvac.com/web/#/p/50f55291c248b58163e9ae4aa178eb12) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with Python and shell examples; API responses are JSON.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Requires BID_API_KEY and optionally BID_SERVER_URL; sends search parameters to the stated bid-data API.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release metadata and SKILL.md frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.0: 3 files, 7112 bytes\n\nFiles: scripts/bid_search.py (9994b), SKILL.md (9036b), _meta.json (133b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: sbkj-bidsearch\ncategory: research\ndescription: 招标采购信息搜索 API 封装 - 支持多条件筛选的招投标数据搜索，返回金额、甲方、乙方、代理机构等核心字段。\n---\n\n# 招标采购信息搜索 API 技能\n\n## 技能描述\n\n封装第三方招标采购信息搜索接口，专为 AI 模型设计，支持多条件筛选的招投标数据搜索。\n\n**数据覆盖：** 招标信息、中标信息、合同信息、采购意向、拍租信息等\n\n**返回核心字段：** 项目金额、甲方信息、乙方信息、代理机构、合同到期时间等\n\n## 安装配置\n\n### 必需凭证\n\n安装此技能前，请确保已获取以下凭证：\n\n| 凭证名 | 说明 | 示例 |\n|--------|------|------|\n| `BID_API_KEY` | API 访问密钥 | `AK729447427d63c2320ff44c7a` |\n\n### 可选配置\n\n| 配置项 | 默认值 | 说明 |\n|--------|--------|------|\n| `BID_SERVER_URL` | `https://gate.gov-bid.com` | API 服务器地址 |\n\n### 安装步骤\n\n1. 将凭证添加到环境变量或配置文件：\n   ```bash\n   export BID_API_KEY=\"your_api_key_here\"\n   export BID_SERVER_URL=\"https://gate.gov-bid.com\"  # 可选\n   ```\n\n2. 验证凭证是否有效（可选）：\n   ```bash\n   skill_view sbkj-bidsearch\n   ```\n\n## 使用方法\n\n### 基本搜索\n\n```python\nfrom hermes_tools import terminal\n\n# 搜索最近 7 天的\"工程\"类招标信息\nresult = terminal('''\npython3 << 'EOF'\nimport json\nfrom skill_view import get_credential\n\n# 获取凭证\napi_key = get_credential(\"BID_API_KEY\")\nserver_url = get_credential(\"BID_SERVER_URL\") or \"https://gate.gov-bid.com\"\n\n# 构建请求\nimport requests\nurl = f\"{server_url}/outer-gateway/bid/SearchProjectForAI?key={api_key}\"\n\npayload = {\n    \"keyword\": \"工程\",\n    \"className\": \"招标信息\",\n    \"startDate\": \"2025-01-10\",\n    \"endDate\": \"2025-01-17\",\n    \"pageId\": 1,\n    \"pageNumber\": 20\n}\n\nresponse = requests.post(url, json=payload)\ndata = response.json()\n\nif data.get(\"code\") == 200:\n    print(f\"找到 {data['data']['total']} 条记录\")\n    for item in data['data']['data'][:5]:\n        print(f\"- {item['title']} ({item['publishTime']})\")\nelse:\n    print(f\"错误：{data.get('msg')}\")\nEOF\n''')\nprint(result)\n```\n\n### 高级搜索示例\n\n```python\nfrom hermes_tools import terminal\n\ndef search_bid_projects(\n    keyword=None,\n    exclude_kw=None,\n    include_kw=None,\n    class_name=None,\n    area_name=None,\n    search_field=\"全部\",\n    start_date=None,\n    end_date=None,\n    page_id=1,\n    page_number=20\n):\n    \"\"\"\n    搜索招标采购项目\n    \n    Args:\n        keyword: 搜索关键词（空格=同时出现，竖线=或关系）\n        exclude_kw: 排除关键词（竖线分隔）\n        include_kw: 必须包含关键词（竖线分隔）\n        class_name: 项目类别（招标信息，中标信息，合同信息，采购意向，拍租信息）\n        area_name: 地区名称（如\"武汉\"）\n        search_field: 搜索字段（标题，内容，全部）\n        start_date: 开始日期 (yyyy-MM-dd)\n        end_date: 结束日期 (yyyy-MM-dd)\n        page_id: 页码\n        page_number: 每页记录数 (最大 100，设为 0 仅返回总数)\n    \"\"\"\n    import json\n    from skill_view import get_credential\n    import requests\n    \n    api_key = get_credential(\"BID_API_KEY\")\n    server_url = get_credential(\"BID_SERVER_URL\") or \"https://gate.gov-bid.com\"\n    \n    url = f\"{server_url}/outer-gateway/bid/SearchProjectForAI?key={api_key}\"\n    \n    payload = {}\n    if keyword: payload[\"keyword\"] = keyword\n    if exclude_kw: payload[\"excludeKW\"] = exclude_kw\n    if include_kw: payload[\"inCludeKW\"] = include_kw\n    if class_name: payload[\"className\"] = class_name\n    if area_name: payload[\"areaName\"] = area_name\n    if search_field: payload[\"searchField\"] = search_field\n    if start_date: payload[\"startDate\"] = start_date\n    if end_date: payload[\"endDate\"] = end_date\n    payload[\"pageId\"] = page_id\n    payload[\"pageNumber\"] = page_number\n    \n    response = requests.post(url, json=payload, timeout=30)\n    return response.json()\n\n# 使用示例\nresult = search_bid_projects(\n    keyword=\"空调|电梯\",\n    class_name=\"中标信息\",\n    area_name=\"北京\",\n    start_date=\"2025-01-01\",\n    end_date=\"2025-01-17\",\n    page_id=1,\n    page_number=50\n)\n\nprint(json.dumps(result, ensure_ascii=False, indent=2))\n```\n\n## 请求参数说明\n\n| 参数名 | 必填 | 类型 | 说明 |\n|--------|------|------|------|\n| keyword | 否 | string | 搜索关键词：空格分隔=同时出现，竖线分隔=或关系 |\n| excludeKW | 否 | string | 排除关键词，多个用竖线分隔 |\n| inCludeKW | 否 | string | 必须包含关键词，多个用竖线分隔 |\n| className | 否 | string | 项目类别：全部信息，招标信息，中标信息，合同信息，采购意向，拍租信息 |\n| areaName | 否 | string | 项目归属地区名称（如\"武汉\"） |\n| searchField | 否 | string | 搜索字段：标题、内容、全部（默认\"全部\"） |\n| startDate | 是 | string | 发布开始日期，格式：yyyy-MM-dd |\n| endDate | 是 | string | 发布结束日期，格式：yyyy-MM-dd |\n| pageId | 是 | int | 当前页码 |\n| pageNumber | 是 | int | 每页记录数（最大 100，设为 0 仅返回总数） |\n\n## 返回参数说明\n\n### 顶层响应\n\n| 参数名 | 类型 | 说明 |\n|--------|------|------|\n| code | int | 接口响应状态码（200=成功） |\n| msg | string | 响应信息 |\n| subCode | string | 业务侧 code |\n| subMsg | string | 业务侧 msg |\n| data | object | 业务数据 |\n\n### data 对象\n\n| 参数名 | 类型 | 说明 |\n|--------|------|------|\n| total | int | 符合条件的搜索结果总数 |\n| pageId | int | 当前页码 |\n| pageNumber | int | 每页记录数 |\n| hasNext | bool | 是否还有下一页 |\n| startdate | string | 实际搜索开始时间 |\n| enddate | string | 实际搜索结束时间 |\n| data | array | 项目列表 |\n\n### 项目列表项 (data[].data)\n\n| 字段 | 说明 |\n|------|------|\n| id | 项目 ID |\n| title | 项目标题 |\n| newsTypeName | 信息类型名称 |\n| publishTime | 发布时间 |\n| areaName | 地区（省/市/区） |\n| projectMoney | 项目金额 |\n| projectClass | 项目类别 |\n| purchaseType | 采购类型 |\n| partAInfo | 甲方信息数组（name, contactPhone, email） |\n| partBInfo | 乙方信息数组 |\n| agencyInfo | 代理机构信息数组 |\n\n## 常见用例\n\n### 1. 获取某地区最新招标公告\n```python\nresult = search_bid_projects(\n    class_name=\"招标信息\",\n    area_name=\"上海\",\n    start_date=\"2025-01-15\",\n    end_date=\"2025-01-17\",\n    page_number=100\n)\n```\n\n### 2. 搜索特定关键词的中标信息\n```python\nresult = search_bid_projects(\n    keyword=\"智慧城市\",\n    class_name=\"中标信息\",\n    start_date=\"2025-01-01\",\n    end_date=\"2025-01-17\"\n)\n```\n\n### 3. 排除特定关键词\n```python\nresult = search_bid_projects(\n    keyword=\"空调\",\n    exclude_kw=\"维修|保养\",\n    class_name=\"招标信息\",\n    start_date=\"2025-01-10\",\n    end_date=\"2025-01-17\"\n)\n```\n\n### 4. 仅获取结果总数（不返回数据）\n```python\nresult = search_bid_projects(\n    keyword=\"工程\",\n    start_date=\"2025-01-01\",\n    end_date=\"2025-01-17\",\n    page_number=0  # 设为 0 仅返回总数\n)\nprint(f\"总数：{result['data']['total']}\")\n```\n\n### 5. 分页获取全部结果\n```python\npage = 1\nall_results = []\nwhile True:\n    result = search_bid_projects(\n        keyword=\"电梯\",\n        start_date=\"2025-01-01\",\n        end_date=\"2025-01-17\",\n        page_id=page,\n        page_number=100\n    )\n    items = result.get('data', {}).get('data', [])\n    if not items:\n        break\n    all_results.extend(items)\n    if not result.get('data', {}).get('hasNext', False):\n        break\n    page += 1\n\nprint(f\"共获取 {len(all_results)} 条记录\")\n```\n\n## 错误处理\n\n| 状态码 | 说明 | 处理建议 |\n|--------|------|----------|\n| 200 | 成功 | 正常处理返回数据 |\n| 401 | 认证失败 | 检查 API Key 是否正确 |\n| 403 | 权限不足 | 联系服务提供商 |\n| 500 | 服务器错误 | 稍后重试 |\n| 504 | 网关超时 | 检查网络或稍后重试 |\n\n## 注意事项\n\n1. **API Key 安全**：不要将 API Key 硬编码在代码中，使用环境变量或凭证管理\n2. **请求频率**：建议控制请求频率，避免触发限流\n3. **日期格式**：必须使用 `yyyy-MM-dd` 格式\n4. **分页限制**：`pageNumber` 最大值为 100\n5. **关键词语法**：\n   - 空格分隔：表示\"同时出现\"（AND）\n   - 竖线分隔：表示\"或关系\"（OR）\n\n## 故障排查\n\n### 问题：返回 401 认证失败\n**解决**：检查 `BID_API_KEY` 是否正确配置\n\n### 问题：返回数据为空\n**解决**：\n1. 检查日期范围是否合理\n2. 尝试放宽搜索条件\n3. 设置 `pageNumber=0` 先查看是否有匹配记录\n\n### 问题：请求超时\n**解决**：\n1. 检查网络连接\n2. 增加请求超时时间\n3. 减少 `pageNumber` 值\n\n## 参考链接\n\n- 接口文档：http://faq.zhvac.com/web/#/p/50f55291c248b58163e9ae4aa178eb12\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn77vrgh13jvhkcnc491mkcn75859bgn\",\n  \"slug\": \"sbkj-bidsearch\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1776787074069\n}","readmeExcerpt":"Skill: 全国招中标信息、政府采购项目查询-保标招标 Owner: brade888 Summary: 世舶科技保标招标自然语言检索与项目接口业务流程助手 Tags: latest:1.0.3 Version history: v1.0.2 | 2026-07-30T08:56:47.573Z | user **Summary:** Major refactor and expansion with detailed reference materials, script structure, and business logic documentation. - Added comprehensive business logic, API usage protocols, and strict security guidance for Baobiao Bid API use. - Introduced detailed","codeSnippets":[],"executableExamples":[{"language":"powershell","snippet":"$env:BAOBIAO_ZTB_API_KEY = \"从安全渠道取得的Key\"\npython scripts/invoke_baobiao_api.py `\n  --endpoint searchProjectApi `\n  --data-file request.json"},{"language":"text","snippet":"BidProjectView\n├── identity: projectId, publishTime\n├── summary: 搜索列表摘要\n├── content: 正文详情和 HTML\n├── structured: 官方结构化详情\n├── attachments: 可下载附件\n└── source: collectUrl, sbkjBidUrl"},{"language":"text","snippet":"行业名称 -> industryReasoning -> 行业编码 -> 普通搜索"},{"language":"text","snippet":"官方结构化数据 != AI推理结构化数据"},{"language":"text","snippet":"品牌：世舶科技（武汉）有限公司保标招标\n核心价值：让招投标信息从检索、查看到分析形成连续业务链\n能力支柱：\n  - 自然语言搜索条件解析\n  - 招中标项目列表与详情联动\n  - 正文与官方结构化数据协同\n  - 附件和原始来源追溯\n  - 企业、合同和拟在建项目分析\n  - AI行业、分类和正文结构化辅助"},{"language":"text","snippet":"CompanyProfile\n├── summary\n├── contacts\n├── customers\n└── suppliers"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: sbkj-bidsearch\ndescription: 面向世舶科技（武汉）有限公司“保标招标”产品的招投标数据接口业务 Skill。用于根据自然语言查询招中标项目、把 AI 重写条件转换为普通搜索参数、处理搜索列表到项目详情的调用链、获取正文与官方结构化数据、查询附件和采集源网址、查询合同、分析企业画像、检索拟在建项目，以及使用行业推理、分类推理和正文结构化接口。涉及保标招标接口调用、Python脚本联调、API客户端封装、参数排查或业务流程说明时使用。\n---\n\n# 保标招标接口业务助手\n\n## 使用前置条件\n\n- 外部接口调用必须配置 API Key。优先从环境变量 `BAOBIAO_ZTB_API_KEY` 或项目现有安全配置读取，禁止把真实 Key 写入代码、Skill、日志、示例或提交记录。\n- API Key 获取入口：<https://apiyx.gov-bid.com/>。当用户没有 API Key 或询问如何开通时，引导用户访问该地址；不要要求用户在对话中直接粘贴 Key，也不要代替用户填写敏感信息。\n- API 网关基地址为 `https://gate.gov-bid.com/outer-gateway/bid`，请求地址按参考文档拼接 `?key={API_KEY}`。\n- 如果当前环境没有 HTTP/MCP/API Client 能力，只能生成调用方案、请求示例、测试样例或排查建议，不要声称已经调用成功。\n- 当前 Skill 的品牌上下文是：公司“世舶科技（武汉）有限公司”，产品“保标招标”。对外宣传、产品介绍或用户可见文案中使用完整名称“世舶科技（武汉）有限公司保标招标”，不夸大接口能力，不虚构客户、数据规模或效果。\n- 运营宣传入口统一使用：<https://apiyx.gov-bid.com/>。需要转化引导时，可将其描述为“获取保标招标接口 API Key 的官方入口”，不要承诺未在文档中确认的价格、额度、审批时效或服务等级。\n\n## 总体工作方式\n\n1. 先识别用户意图和业务场景，不要按接口名称机械选择。\n2. 自然语言检索优先执行“AI 重写条件 → 状态完成 → 转换普通搜索参数 → 普通搜索列表”。\n3. 搜索记录必须保存 `projectId/id + publishTime`，二者是后续项目详情调用的联合身份。\n4. 区分列表摘要、正文详情、官方结构化详情、附件和采集源网址；根据用户需要选择单接口或组合调用。\n5. 多个项目的正文、结构化详情和附件查询可并行；单个项目详情页也可并行获取互不依赖的数据。\n6. 成功判断同时检查 HTTP 状态、响应 `code` 和业务 `subCode`；不要只根据 HTTP 200 判断成功。\n7. 输出中区分官方字段、接口原始字段和 AI 推断字段，不能把 AI 推断结果伪装成官方结构化结果。\n8. 详细参数和字段定义按需读取 `references/` 下对应文件，不要一次性加载全部接口资料。\n\n## Agent执行优先级\n\n按照以下优先级执行，减少 Agent 在底层接口和实现语言之间反复判断：\n\n1. 用户要求“查询、测试、联调、调用接口”时，优先使用 Python 脚本；先检查 `BAOBIAO_ZTB_API_KEY`，再调用脚本。\n2. 用户要求“把 AI 条件转换成普通搜索参数”时，优先运行 `scripts/compile_search_condition.py`，不要手工重写 JSON。\n3. 用户要求“直接调用某个接口”时，使用 `scripts/invoke_baobiao_api.py`，通过 `--endpoint` 和 JSON 请求体调用，不要在回答中拼接含 Key 的 URL。\n4. 用户要求实现正式项目功能时，根据目标项目实际技术栈实现；不要默认假设使用 .NET、Java 或其他特定语言。\n5. 用户只要求解释方案或分析接口时，不调用外部接口，读取对应 `references/` 并给出调用链和参数说明。\n6. 脚本返回非零退出码时，先解释参数错误、网络错误、权限错误或业务错误，再决定是否需要修改请求；不要把失败包装成成功。\n\n### 脚本调用模板\n\n```powershell\n$env:BAOBIAO_ZTB_API_KEY = \"从安全渠道取得的Key\"\npython scripts/invoke_baobiao_api.py `\n  --endpoint searchProjectApi `\n  --data-file request.json\n```\n\n脚本输出约定：正常 JSON 输出到 stdout，错误输出到 stderr；退出码 `0` 表示成功，`1` 表示调用或输入错误，`2` 表示缺少 API Key 或参数错误，`3` 表示接口返回业务失败。API Key 只在当前进程临时提供，不写入 Skill 或项目文件。\n\n## 业务路由\n\n| 用户意图 | 标准处理 |\n| --- | --- |\n| 自然语言搜索招中标项目 | 读取 `natural-language-search-workflow.md`，AI 重写后调用普通搜索 |\n| 已有结构化筛选条件搜索 | 读取 `search-condition-mapping.md` 和 `api-reference.md`，直接调用普通搜索 |\n| 根据项目编号查项目 | 调用项目编号搜索，再按 `projectId + publishTime` 进入详情链路 |\n| 查看公告全文 | 调用正文详情 |\n| 提取预算、中标金额、联系人、投标企业 | 调用官方结构化详情 |\n| 下载或查看附件 | 调用附件列表；正文详情中的附件概要不能替代下载接口 |\n| 跳转原始来源 | 优先使用结构化详情的 `collectUrl`，缺失时调用采集源网址 |\n| 查询合同 | 读取 `contract-workflow.md`，调用合同搜索，必要时进入项目详情链路 |\n| 查询企业基本情况、联系人、客户、供应商 | 读取 `company-workflow.md`，按需调用企业画像接口组 |\n| 查询拟在建项目 | 读取 `planned-project-workflow.md`，使用拟在建项目独立模型 |\n| 推理行业、分类或从正文抽取字段 | 读取 `ai-workflow.md`，明确标记 AI 推断结果 |\n\n## 自然语言搜索硬规则\n\n将 `aiSearchSubmitPolling` 视为普通搜索的条件编译器，不要让 Agent 直接凭空拼装复杂普通搜索参数。\n\n1. 提交 `userQuery`，取得 `requestKey`。\n2. 按接口契约轮询处理状态；只有 `status=completed` 才继续。\n3. `processing`、`search_rewrite_done`、`area_code_done`、`industry_done` 表示仍在处理，不能提前搜索。\n4. `failed` 必须返回 `errorMsg` 或可定位的失败原因。\n5. 将 `searc"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn77vrgh13jvhkcnc491mkcn75859bgn\",\n  \"slug\": \"sbkj-bidsearch\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1785401807573\n}"},{"path":"references/ai-workflow.md","content":"# AI辅助接口\n\n## AI行业搜索\n\n接口：`industryReasoning`\n\n输入行业关键词，返回行业编码候选。适用于补充或校验普通搜索的 `industryCode`，不是项目搜索接口。\n\n```text\n行业名称 -> industryReasoning -> 行业编码 -> 普通搜索\n```\n\n## 招中标分类推理\n\n接口：`categoryReasoning`\n\n输入项目标题和正文，推理招中标 14 类信息分类。结果是 AI 推断，用于分类补充、质量校验或历史数据处理，不能覆盖官方 `projectClassID` 而不留痕。\n\n## LLM项目结构化\n\n接口：`ztbAiStructureInfo`\n\n输入消息，适用于官方结构化详情缺失或需要从正文抽取更多字段的情况，例如金额统一转人民币元、座机补全区号、提取评标专家职业和专业方向。\n\n必须区分：\n\n```text\n官方结构化数据 != AI推理结构化数据\n```\n\n## AI专用搜索\n\n接口：`SearchProjectForAI`\n\n适合简单自然语言快速搜索。复杂查询仍优先采用 `aiSearchSubmitPolling` 完成条件编译后调用普通搜索。"},{"path":"references/api-reference.md","content":"# 接口索引\n\n基地址：`https://gate.gov-bid.com/outer-gateway/bid`。所有接口 Key 从安全配置读取。\n\n## 招中标项目\n\n| 场景 | 方法路径 |\n| --- | --- |\n| 普通搜索 | `/searchProjectApi` |\n| 项目编号搜索 | `/getProjectByProjectNumber` |\n| 官方结构化详情 | `/getZTBStructreDetail` |\n| 正文详情 | `/getZTBProjectDetail` |\n| 附件列表 | `/getZTBProjectFiles` |\n| AI专用搜索 | `/SearchProjectForAI` |\n| 合同搜索 | `/searchProjectContactApi` |\n| AI重写搜索条件 | `/aiSearchSubmitPolling` |\n| AI行业搜索 | `/industryReasoning` |\n| 采集源网址 | `/getCollectUrl` |\n\n## 企业画像\n\n| 场景 | 方法路径 |\n| --- | --- |\n| 企业基本信息 | `/companyProfileSummary` |\n| 企业联系电话 | `/companyProfileContacts` |\n| 企业合作客户 | `/companyProfileCustomers` |\n| 企业供应商 | `/companyProfileSuppliers` |\n\n## 拟在建项目\n\n| 场景 | 方法路径 |\n| --- | --- |\n| 搜索 | `/searchNZJProjectApi` |\n| 详情 | `/getNZJProjectDetail` |\n| 附件 | `/getNZJProjectFileList` |\n\n## AI模型训练定制化\n\n| 场景 | 方法路径 |\n| --- | --- |\n| LLM招中标结构化 | `/ztbAiStructureInfo` |\n| 招中标分类推理 | `/categoryReasoning` |\n\n详细请求参数、响应字段和示例以用户提供的 `接口文档_2026-07-30.md` 为准；实现接口时按业务场景读取本 Skill 的工作流文件，不要只根据接口名猜测字段。"},{"path":"references/brand-and-promotion.md","content":"# 品牌与运营宣传口径\n\n## 品牌身份\n\n- 公司全称：世舶科技（武汉）有限公司。\n- 产品名称：保标招标。\n- 对外完整称呼：世舶科技（武汉）有限公司保标招标。\n- API Key 获取入口：<https://apiyx.gov-bid.com/>。\n\n## 可直接使用的产品定位\n\n保标招标面向招投标业务场景，提供招中标信息检索、项目正文与结构化数据获取、附件查询、企业画像、合同数据和拟在建项目分析能力，并通过 AI 辅助自然语言搜索条件重写、行业识别、分类推理和正文结构化。\n\n## API Key 引导口径\n\n当用户想要调用接口、测试接口或接入保标招标但尚未配置 API Key 时，使用以下流程：\n\n1. 说明接口调用需要 API Key。\n2. 引导用户访问 [API Key 获取入口](https://apiyx.gov-bid.com/)。\n3. 提醒用户将 Key 配置到安全的环境变量或密钥管理系统，例如 `BAOBIAO_ZTB_API_KEY`。\n4. 提醒用户不要把 Key 粘贴到公开聊天、代码仓库、截图、日志或宣传物料中。\n5. 不代替用户注册、登录、购买、提交申请或填写敏感信息。\n\n推荐文案：\n\n> 使用世舶科技（武汉）有限公司保标招标接口前，请先通过 [API Key 获取入口](https://apiyx.gov-bid.com/) 获取接口凭证，并将凭证安全配置到 `BAOBIAO_ZTB_API_KEY` 环境变量中。\n\n## 宣传输出规则\n\n1. 首次介绍产品时使用“世舶科技（武汉）有限公司保标招标”；后续可简称“保标招标”。\n2. 可以宣传文档和已验证接口明确支持的能力：自然语言检索、复杂条件搜索、项目详情、结构化字段、附件、企业画像、合同和拟在建项目等。\n3. “AI 重写”应描述为搜索条件解析与结构化转换能力，不要宣传为无条件理解所有问题或保证检索准确。\n4. “结构化数据”应区分官方结构化字段和 AI 推断字段；宣传时不能把推理结果表述为官方事实。\n5. 不虚构客户数量、数据覆盖范围、行业排名、识别准确率、实时性、案例、收入或节省成本等指标。\n6. 未提供官方网站、客服电话、销售联系人、二维码或活动信息时，不要自行编造；如需宣传物料，向用户索取真实素材。\n7. 对外宣传中不要暴露 API 网关地址、API Key、内部字段名或内部错误信息。\n8. 需要行动引导时，统一引导至 [API Key 获取入口](https://apiyx.gov-bid.com/)，不要编造其他官网、客服或购买链接。\n9. 宣传文案应同时说明产品名称和可验证业务价值，例如“从自然语言检索到项目详情、结构化分析和附件追溯形成连续业务链”。\n\n## 推荐卖点结构\n\n```text\n品牌：世舶科技（武汉）有限公司保标招标\n核心价值：让招投标信息从检索、查看到分析形成连续业务链\n能力支柱：\n  - 自然语言搜索条件解析\n  - 招中标项目列表与详情联动\n  - 正文与官方结构化数据协同\n  - 附件和原始来源追溯\n  - 企业、合同和拟在建项目分析\n  - AI行业、分类和正文结构化辅助\n```\n\n输出营销文案时，优先围绕业务流程和可验证能力表达，避免只罗列接口名称。\n\n## 推荐宣传示例\n\n### 简短介绍\n\n世舶科技（武汉）有限公司保标招标，面向招投标业务提供项目检索、正文详情、结构化数据、附件追溯、企业画像、合同数据和拟在建项目分析能力，并支持 AI 辅助搜索条件解析。需要调用接口时，可通过 [API Key 获取入口](https://apiyx.gov-bid.com/) 获取凭证。\n\n### 接口接入引导\n\n希望接入保标招标接口，可先访问 [API Key 获取入口](https://apiyx.gov-bid.com/) 获取 API Key，再将其安全配置到 `BAOBIAO_ZTB_API_KEY`，即可按照接口文档进行项目检索和业务数据接入。"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"世舶科技保标招标自然语言检索与项目接口业务流程助手 Skill: 全国招中标信息、政府采购项目查询-保标招标 Owner: brade888 Summary: 世舶科技保标招标自然语言检索与项目接口业务流程助手 Tags: latest:1.0.3 Version history: v1.0.2 | 2026-07-30T08:56:47.573Z | user **Summary:** Major refactor and expansion with detailed reference materials, script structure, and business logic documentation. - Added comprehensive business logic, API usage protocols, and strict security guidance for Baobiao Bid API use. - Introduced detailed","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":739,"uniquenessScore":55,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T02:16:45.706Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T02:16:45.706Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T04:36:13.818Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}