Skip to main content
Glama

JD-PULL · JD クロール · 分析 · MCP ツール

Python 3.10+ License: MIT MCP Tests

オープンソースの求人 JD クロール + ルール分析 + 職種群像 + MCP サーバーツール。 誰でもローカルに clone して、自分のデータをクロール・分析し、MCP(Model Context Protocol) を通じて Claude / DeepSeek agent / Pi agent / Cursor など MCP に対応した外部 AI にデータを公開できます。

┌──────────────────────────┐      ┌──────────────────────────┐
│  外部 AI(任何 MCP 客户端) │ ───► │  本机 jd-mcp 服务器        │
│  Claude / DeepSeek / Pi  │  MCP  │  ┌────────────────────┐  │
│  / Cursor …              │       │  │ 只读查询 · 写操作     │  │
└──────────────────────────┘       │  └────────┬───────────┘  │
                                    └──────────┼───────────────┘
                                               │ 读写
                                    ┌──────────▼───────────────┐
                                    │  你的数据目录(JD_DATA_DIR)│
                                    │  本地文件夹 或 私有 git 仓库 │
                                    └──────────────────────────┘

クロール結果は、あなたのローカル data/ ディレクトリまたは自分で指定したデータリポジトリにのみ保存されます。

特徴

  • JD クロール:51job(Playwright 実ブラウザ駆動、デフォルトはシステム Edge)を低頻度・丁寧に取得;Boss直聘 / 拉勾 / 猎聘はインターフェースのみ予約(ログイン/署名が必要、今回は未実装);

  • ルール分析:分類辞書に基づいて JD を職種カテゴリに分類し、スキルと職務の高頻度語を抽出;

  • LLM 精細分類(オプション、マルチベンダー):Claude / OpenAI / Gemini / DeepSeek / Qwen / Ollama の6ベンダーに対応し、「能力ラダー」で各社の構造化出力に自動適応;

  • 職種群像:カテゴリ別にスキル / 給与 / 経験 / 学歴の分布と職務の高頻度語レポートを生成(JSON + Markdown);

  • MCP サーバー:stdio と streamable-http の二重トランスポート、読み取り専用ツールは常時利用可能、書き込みツールはデフォルト有効(--no-write-tools で無効化)、HTTP はオプションで Bearer token 認証;

  • データは完全ローカル:JD_DATA_DIR で任意のディレクトリや git リポジトリを指定可能;データディレクトリが独立した git リポジトリでない場合、sync は自動的にスキップされ、データの誤コミットを防止。

Related MCP server: MCP Job Search Server

技術スタック

カテゴリ

技術

言語

Python ≥ 3.10

クロール

httpx + BeautifulSoup4(静的解析);Playwright 実ブラウザ駆動(51job SPA、デフォルトはシステム Edge channel=msedge、chromium のダウンロード不要)

分析

jieba 分かち書き + ルール辞書分類;LLM 精細分類は anthropic SDK / httpx のマルチベンダー適応

データ

ローカル JSON ファイル保存;フィンガープリント重複排除(dedup);ディレクトリ構造 raw → classified → reports → site

出力

静的 HTML レポートサイト(インライン CSS、フロントエンドフレームワーク非依存)

MCP

mcp>=1.26(FastMCP)· stdio + streamable-http 二重トランスポート · Pydantic v2 データ検証

設定

YAML(PyYAML)、サイト/辞書/LLM すべてコード変更なしで設定可能

テスト

pytest(51 ケース)

サイト

51job(現在有効);Boss直聘 / 拉勾 / 猎聘(予約のみ未実装)

インストール

要件 Python ≥ 3.10。

git clone https://github.com/NaoYUN77/JD-PULL.git
cd JD-PULL
python -m venv .venv && .venv\Scripts\activate      # Windows;macOS/Linux 用 source .venv/bin/activate
pip install -e .[dev]
# 51job 爬取走真实浏览器(默认系统 Edge,无需额外下载 chromium)
# 若想用捆绑 chromium:删除 config/settings.yaml 中 crawl.browser.channel 一行后
#   playwright install chromium

クイックスタート(まずデータを用意)

求人サイトには一般的にアンチクロール対策があります。低頻度・実ブラウザ・必要な分だけ取得してください;ブロックされたら停止し、回避を試みないでください。

# 1) 生成样本 JD(验证全链路;51job 被 WAF 拦截时用)
jdcollector seed

# 2) 真实爬取(按 config/sites.yaml 的关键词/城市;51job 需本机有 Edge 且有头窗口)
jdcollector crawl

# 3) 规则分析(可选加 LLM 精分,见下文「LLM 多供应商精分」)
jdcollector analyze

# 4) 岗位群像报告
jdcollector portrait

# 5) 静态 HTML 报告站(输出到数据目录 site/)
jdcollector view

データはデフォルトでリポジトリルートの data/ に保存されます(.gitignore で除外済み、リポジトリには入りません)。

MCP サーバーとして使用

起動後、外部 AI が MCP 経由でデータを呼び出せるようになります。

# stdio(默认,给本地桌面客户端用)
jd-mcp

# 只读模式(只暴露查询,不暴露爬取/分析等写工具)
jd-mcp --no-write-tools

# HTTP(streamable-http,给远程客户端 / 其它进程用,可带 Bearer token)
jd-mcp --transport http --host 0.0.0.0 --port 8000 --token 你的token

Claude Desktop

claude_desktop_config.json を編集:

{
  "mcpServers": {
    "jdcollector": {
      "command": "jd-mcp",
      "args": ["--transport", "stdio"]
    }
  }
}

Claude Code

claude mcp add jdcollector -- jd-mcp --transport stdio
claude mcp list   # 验证已连接

Cursor

Settings → MCP → + Add global MCP server、command に以下を入力:

jd-mcp --transport stdio

MCP ツール一覧

タイプ

ツール

説明

読み取り専用

get_stats

データ集計統計(総数 / カテゴリ別件数)

読み取り専用

list_categories

職種カテゴリとそのサンプル数を一覧表示

読み取り専用

search_jobs

キーワード / カテゴリ / 都市 / 会社で JD を検索(タイトル、給与、スキル等を返す)

読み取り専用

get_job

job_id で単一 JD の完全レコードを取得

読み取り専用

get_portrait

指定カテゴリの群像レポート(JSON)

読み取り専用

get_portrait_markdown

指定カテゴリの群像レポート(Markdown)

書き込み

crawl_jobs

ローカルで JD をクロール(Playwright / ブラウザが必要);構造化結果 {added, elapsed_s, per_site, warnings} を返し、_meta.progressToken を渡すとタスク単位の進捗通知を受信可能

書き込み

run_analysis

ルール分析(オプションで LLM 精細分類)

書き込み

run_portrait

各カテゴリの群像レポートを生成

書き込み

build_site

静的 HTML レポートサイトを生成

書き込み

sync_data

データディレクトリをその git リポジトリにコミット / プッシュ

読み取り専用リソースも登録済み:jd://stats、jd://portrait/{category}。

HTTP デプロイと認証

jd-mcp --transport http --host 0.0.0.0 --port 8000 --token 你的token
# 环境变量亦可:JD_MCP_TRANSPORT / JD_MCP_HOST / JD_MCP_PORT / JD_MCP_TOKEN

クライアントは http://127.0.0.1:8000/mcp に接続し、リクエストヘッダーに Authorization: Bearer あなたのtoken を含めます。 本番環境ではリバースプロキシ(Nginx / Caddy)の背後に配置し TLS を有効化することを推奨します;パブリックな平文ポートを直接公開しないでください。

データディレクトリと git 同期

データルートディレクトリは環境変数 JD_DATA_DIR で指定し、デフォルトは <リポジトリルート>/data(gitignored):

環境変数

役割

JD_DATA_DIR

データルートディレクトリ;通常のフォルダでも独立した git リポジトリでも可

JD_DATA_REPO

sync/push のターゲットリポジトリ URL を上書き(未指定の場合はデータリポジトリの origin を使用)

JD_GIT_TOKEN

HTTPS 埋め込みトークン、今回の push のみ使用(git 設定には書き込まれない)

sync_data / jdcollector sync の判定ロジック:

  • データディレクトリがgit リポジトリでない → ローカル保存のみ、git はスキップ;

  • データディレクトリが他のリポジトリ内に埋め込まれている(例:ツールリポジトリ自身の ./data)→ git をスキップし、データが公開リポジトリにコミットされるのを防止;

  • データディレクトリが独立した git リポジトリ → add → commit → pull --rebase → push。

例:データをプライベート GitHub リポジトリに置く場合

set JD_DATA_DIR=D:\jd-data
cd D:\jd-data && git init && git remote add origin git@github.com:you/jd-data.git
# 推送时可用
set JD_GIT_TOKEN=ghp_xxx

LLM マルチベンダー精細分類

config/settings.yaml の llm: セクション:

llm:
  enabled: true        # 关闭即纯规则分析
  provider: deepseek   # 选供应商

ベンダー

provider

環境変数

デフォルトモデル

能力レベル

Anthropic Claude

claude

ANTHROPIC_API_KEY

claude-sonnet-5

L3 schema 厳格

OpenAI

openai

OPENAI_API_KEY

gpt-4o

L3 schema 厳格

Google Gemini

gemini

GEMINI_API_KEY

gemini-2.5-flash

L3 schema 厳格

DeepSeek

deepseek

DEEPSEEK_API_KEY

deepseek-chat

L2 JSON モード

通義千問

qwen

DASHSCOPE_API_KEY

qwen-plus

L2 JSON モード

Ollama(ローカル)

ollama

なし

qwen2.5:7b

L2 JSON モード

能力ラダー:統一 LlmClient 抽象化により、ベンダーの能力に応じて構造化出力の形式を自動選択——L3 は各社のネイティブ schema 厳格モード(Claude output_config / OpenAI response_format.json_schema / Gemini response_schema)、L2 は JSON モード(DeepSeek / Qwen の response_format.json_object、Ollama の format:"json")、L1 は純粋な prompt によるフォールバック;現在のレベルで失敗した場合は自動的にダウングレード。出力は統一して Pydantic で検証され、欠落 / 不正な場合はエラーフィードバック付きで1回再試行、それでも失敗した場合はルール結果にフォールバックし、フローを中断しません。

provider: claude の場合、トップレベルの model / api_key_env は後方互換としてプリセットを上書きします;その他のベンダーは llm.providers.<name> の下で設定してください(各フィールドの意味はファイル内コメント参照)。

プロジェクト構造

config/            # YAML 配置:settings / sites / categories / skills
src/jdcollector/
  crawler/         # 各站点爬虫
  analysis/        # 规则分类 + llm_client 能力梯子 + llm 精分
  portrait/        # 岗位群像报告
  view/            # 静态 HTML 报告站
  mcp_server.py    # MCP 服务器(工具注册 + CLI 入口)
  sync_github.py   # 数据目录 git 同步(独立仓库保护)
tests/             # pytest 单元测试

免責事項(Disclaimer)

⚠️ 本プロジェクトを使用する前に必ず以下の条項をお読みください。

  1. 用途制限:本プロジェクトは個人の学習、データ分析、技術交流のみを目的としており、商業用途を構成せず、求職 / 採用判断の根拠にもなりません。

  2. データは利用者自身が用意し、責任を負う:クロール行為はあなた自身のマシン上で発生し、すべてのデータコンプライアンス責任は利用者が負います。対象サイトの利用規約と robots.txt、および所在地の法令(例:《個人情報保護法》《データ安全法》《反不正競争法》)を遵守してください。

  3. クロールの境界:公開ページのみをクロールします;ログインが必要な非公開の個人情報はクロールしません;CAPTCHA を解読せず、WAF / ブロックを回避せず、プロキシプールや大規模収集を使用せず、いかなる方法でも対象サイトの通常サービスを妨害しません。ブロックされたら即停止し、決して対抗手段をエスカレートさせません。

  4. データの正確性:JD の内容はサイトの公開情報であり、期限切れや不正確な場合があります。作者はその真実性、完全性、有用性を保証しません;内蔵の seed サンプルデータは全チェーンの検証のみを目的としており、実際の求人情報を表すものではありません。

  5. AI 出力は参考のみ:LLM 精細分類 / 群像の結論はサードパーティモデルによって生成され、偏りが存在する可能性があります。人手による再確認の上で使用してください。

  6. 自己責任:本プロジェクトは MIT License でオープンソース提供されており、作者は本プロジェクトの使用によって生じたいかなる直接的・間接的損害、データ漏洩、法的リスクについても責任を負いません。

License

MIT © 2026 NaoYun777

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables searching over 1 million enriched job listings from 20,000+ companies directly from MCP-compatible AI tools. Provides tools for job search, company profiles, and AI-powered similar job recommendations with real-time data updates.
    4
    76 npm
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to scrape job offers and filter them based on user-defined criteria, using MCP resources, prompts, and tools.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for job search and application tracking, enabling AI agents to search jobs, get details, manage applications, and find contacts across 128K+ jobs and 1,900+ companies.
    849 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI clients to serve as a personal career analyst by searching, matching, and explaining job recommendations, managing job applications, and syncing public job boards through standardized MCP tools.
    MIT