文档

定制化招标信息采集

试用

Automated government procurement bid discovery engine. Scans multiple Chinese procurement platforms, matches configurable keywords, tracks bid statuses, and delivers deadline-aware reports. Users configure their own keywords and monitoring targets; built-in adapters cover 5 major platforms with an extensible plugin model for adding more.

它能做什么

Automated government procurement bid discovery engine. Scans multiple Chinese procurement platforms, matches configurable keywords, tracks bid statuses, and delivers deadline-aware reports. Users configure their own keywords and monitoring targets; built-in adapters cover 5 major platforms with an extensible plugin model for adding more.

技能文档

Bidding Hunter — 投标发掘引擎

A config-driven, reusable bid discovery engine that automates the tedious process of monitoring Chinese government procurement platforms.

Compatible with any AI assistant that can execute CLI tools: OpenClaw, Claude Code, Codex CLI, Cursor Agent, and similar platforms. The skill is platform-agnostic — all operations are exposed through the bidding-hunter CLI and standard shell commands.

🚨 MANDATORY TOOL DISCIPLINE — READ FIRST

ANY bidding-hunter task MUST use the existing tools below. You are FORBIDDEN from writing ad-hoc scripts, inline Node.js, curl, web_fetch, or any other approach.

Existing Tools (the ONLY allowed tools for bidding-hunter work)

ToolPurposeCommand
bidding-hunter CLIAll operations: scan, report, list, status, stats, export, remind, init, create-adapter, test-platform, config-validatebidding-hunter
scripts/explore-platform.jsExplore a new platform's structure before writing an adapternode scripts/explore-platform.js --url [--recon]
templates/platform-adapter.jsTemplate for creating new platform adaptersUsed by bidding-hunter create-adapter
Platform adapterssrc/platforms/*.js — scan() methods executed by the scannerCalled internally by bidding-hunter scan
Core modulesscanner, matcher, database, reporter, detail-fetcher, reminder, notifierCalled internally by the CLI

Rules (ZERO EXCEPTIONS)

  1. Use tools, don't replace them. A bidding-hunter task is a tool-execution task, NOT a coding task.
  2. No ad-hoc scripts. Do NOT write scrape_*.js, fetch_*.js, test_*.js, inline node -e "...", curl, web_fetch, or any one-off scraping code.
  3. No browser shortcuts. Do NOT use Playwright/Selenium directly unless you are inside a platform adapter's scan() method. All browser orchestration is handled by the scanner.
  4. No manual dedup/matching. Do NOT copy-paste from the matcher or database modules. Use bidding-hunter scanbidding-hunter report.

Escalation Path (when something breaks)

Existing tool fails
  → Read the tool's source code
  → Fix the bug in the tool itself (edit src/*.js, bin/*.js, scripts/*.js, templates/*.js)
  → Run tests: node --test tests/*.test.js
  → Re-run the tool
  → If the tool is fundamentally broken beyond repair: refactor the tool, record in memory/YYYY-MM-DD.md

Key principle: Fix the tool, don't work around it. Every workaround creates technical debt that compounds across sessions.

Memory requirement: After ANY code change to the bidding-hunter project (including bug fixes, adapter changes, config schema updates), write a note to memory/YYYY-MM-DD.md recording what was changed and why.


When to Use This Skill

  • You need to discover relevant bidding opportunities across multiple Chinese procurement platforms
  • You want automated keyword matching against daily procurement announcements
  • You need deadline tracking and reminders for approaching bid deadlines
  • You want to add a new procurement platform and let the agent figure out the scraping

Quick Start

# Create initial config
bidding-hunter init

# Edit config with YOUR keywords
# vim ~/.bidding-hunter/config.yaml

# Run a scan
bidding-hunter scan

# View results
bidding-hunter report

Core Workflow

1. Configure Your Keywords

Edit ~/.bidding-hunter/config.yaml — this is where YOU define what to search for:

matching:
  search_queries:        # What to type into platform search boxes
    - "建筑工程"
    - "信息化"
    
  tiers:                 # Multi-tier keyword matching
    high:
      label: "L1"
      keywords: ["建筑工程", "土建施工", "信息系统"]
    medium:
      label: "L2"  
      keywords: ["系统集成", "运维服务"]
    low:
      label: "L3"
      keywords: ["市政工程", "园林绿化"]
      
  blacklist:             # Filter these out
    - "中标"
    - "成交"
    - "废标"
    - "更正"

Important: The agent should NOT decide keywords — the user provides them via config.

2. Choose Your Platforms

platforms:
  enabled:
    - beijing    # 北京公共资源交易平台
    - hebei      # 河北省招标投标公共服务平台
    - liaoning   # 辽宁省公共资源交易平台
    - dalian     # 大连市公共资源交易平台
    - national   # 全国公共资源交易平台 (6 data sources)

3. Run the Scan

bidding-hunter scan

This runs a deterministic pipeline: scan → match → ingest → detail fetch → reminders → report.

4. Review & Manage Matches

# List tracked entries
bidding-hunter list --status tracked

# Mark as tracked
bidding-hunter status --id 5 --status tracked

# Update bid progress  
bidding-hunter status --id 5 --bid-status submitted

# Check reminders
bidding-hunter remind

Agent Usage Pattern

When a user asks you to run or manage bidding discovery:

  1. First time setup: Run bidding-hunter init, then guide the user to configure keywords
  2. Daily scan: Run bidding-hunter scan — this is deterministic, no LLM needed
  3. Review results: Run bidding-hunter report and present findings to the user
  4. Status updates: When user says "track #5" or "discard #3", use bidding-hunter status
  5. Adding platforms: When user wants to monitor a new site:
    # Let the agent explore
    node scripts/explore-platform.js --url https://new-site.ggzy.gov.cn/ --recon
    # Then create adapter from findings
    bidding-hunter create-adapter --name new-site
    # Implement extraction logic based on exploration results
    # Test it
    bidding-hunter test-platform --name new-site
    

Key Design Principles (For Agent)

  • Deterministic core: Scanning, matching, and ingestion do not depend on LLM availability
  • Config over code: All keywords, sites, and schedules are in user-editable YAML
  • One adapter per platform: Adding a new site = writing one ~50-line adapter file
  • Idempotent: Safe to re-run; URL-based dedup and checkpoint system
  • Graceful degradation: One failing site doesn't block others
  • No privacy leakage: All data stays local; no telemetry or cloud uploads

Built-in Platform Adapters

IDPlatformStrategy
beijing北京公共资源交易平台URL pagination, extraction
hebei河北省招标投标公共服务平台fullsearch.html URL search + filter
liaoning辽宁省公共资源交易平台API-based extraction + session cookie
dalian大连市公共资源交易平台URL pagination
national全国公共资源交易平台6 data sources via UI interaction

Adding a New Platform

  1. Explore the platform structure:

    node scripts/explore-platform.js --url https://new-site.gov.cn/ --recon
    

    This navigates to the site and captures structural hints.

  2. Create adapter template:

    bidding-hunter create-adapter --name new-site
    
  3. Implement the scan() method with:

    • Navigation logic (URL-based or search-based)
    • extractItems() function with correct CSS selectors
    • Pagination handling
    • Error handling for site-specific edge cases
  4. Test:

    bidding-hunter test-platform --name new-site
    
  5. Enable in config:

    platforms:
      enabled:
        - new-site
    

Operations

Checking Status

# View database stats
bidding-hunter stats

# Export for analysis
bidding-hunter export --format csv > bids.csv

Scheduling

Add to crontab:

0 16 * * * bidding-hunter scan --config ~/.bidding-hunter/config.yaml

Or use OpenClaw cron with the bidding-hunter scan command.

Notifications

Configure webhook channels in config:

notifications:
  channels:
    - type: feishu
      webhook: "${FEISHU_WEBHOOK_URL}"
    - type: slack
      webhook: "${SLACK_WEBHOOK_URL}"

Troubleshooting

ProblemSolution
Platform returns no dataSite may have changed — run test-platform to debug selectors
Browser launch failsEnsure Chromium is installed: npx playwright install chromium
Database lockedAnother scan is running — wait or remove ~/.bidding-hunter/.lock
Network timeoutsIncrease scan.retry_stairs timeouts in config

Files

  • Config: ~/.bidding-hunter/config.yaml
  • Database: ~/.bidding-hunter/data.db (SQLite)
  • Scan results: ~/.bidding-hunter/scan_results/YYYY-MM-DD/
  • Custom adapters: ~/.bidding-hunter/platforms/*.js

See Also

  • DESIGN.md — Full architecture and extension guide
  • README.md — User-facing documentation
  • CONTRIBUTING.md — How to contribute adapters

相关技能

Multi-platform bidding monitor: scan 50+ sites and filter power/electric bidding notices only.

国央企招投标信息监控与研判技能。自动采集多平台公告,按资质规则比对可投性(可投/不可投/需确认),生成带研判简报并多通道推送。v1.5 起新增:资质匹配度评分(0-100)、投标日历与开标倒计时、金额/地区/行业多维筛选、零代码规则编辑器、诊断中心、示例模式、集中FAQ、统一命令入口;v2.0 本地AI增强(招标文件AI速读+风险条款识别,零云成本);v2.5 投标策略建议生成;v3.0 本地开放API+签名webhook。边界感知智能匹配防子串误匹配,规则库健康检查,钉钉/企业微信/邮件推送。触发词:抓招投标、今日哪些能投、标讯监控、标书研判、招投标公告、央企招标、投标资质匹配、AI读标书、投标建议。

1 次安装1 星标

招投标商机采集 — 监控全网公开招投标信息,按业务赛道智能筛选高价值商机线索。能力与副作用完整披露:(1) 通过 WebSearch/WebFetch 向各级政府公共资源交易平台、国企采购平台、行业招投标网站及第三方聚合平台发起出站 HTTP 请求,仅采集公开信息,不读取用户环境变量/API Key/敏感配置;(2) scan/monitor 结果默认写入本地 leads-output/bid/ 目录(HTML/JSON/Markdown/log),不静默写入其他位置;(3) monitor 子命令通过 CronCreate 创建定时任务(会修改宿主调度),周期性发起出站请求并发送 PushN

5 次安装

全国采购与招标信息查询与分析助手。当用户涉及以下任何场景时,必须使用此SKILL:跨省份/跨行业全盘检索招标采购公告、查询招标/中标/采购意向/合同公告、综合企业画像分析、查询公司主营业务与上下游合作客户/供应商、分析竞争对手、查询Top采购单位/Top中标单位/Top中标品牌、招中标数据多维统计分析(按月/季/年/省份/行业/品牌等维度)、查询品牌型号历史中标单价、市场分析/采购寻源/渠道拓展等场景。即使用户没有提到「中国采购与招标网」,只要涉及招投标、采购、中标、供应商、竞争对手等关键词,都应使用本SKILL。

2 次安装1 星标

全国招标采购信息一站式查询与分析助手。当用户涉及以下任何场景时,必须使用此SKILL:搜索招标/中标/采购公告、查找临期/即将到期项目、商机预测、推荐潜在投标供应商、分析公司主营业务/历史中标、查询公司上下游合作客户与供应商、分析竞争对手、查询Top采购单位/Top中标单位/Top中标品牌、招中标数据统计分析、查询品牌型号历史中标单价、市场分析/采购寻源/渠道拓展等场景。即使用户没有提到「中国招标网」,只要涉及招投标、采购、中标、供应商、竞争对手等关键词,都应使用本SKILL。

2 次安装1 星标

企业级招标采购与供应商寻源助手。当用户涉及以下任何场景时,必须使用此SKILL:检索招标/采购/中标公告、查找企业集中采购项目、核验供应商资质与历史中标业绩、寻找潜在投标供应商、分析公司主营业务与上下游合作客户/供应商、查询竞争对手、查询Top采购单位/Top中标单位/Top中标品牌、招中标数据统计分析、查询品牌型号历史中标单价、采购寻源/渠道拓展/客户开发等采购与投标相关场景。即使用户没有提到「必联网」,只要涉及招投标、企业采购、中标、供应商寻源、客户开发等关键词,都应使用本SKILL。

1 星标