你的岗位推送, 只为你调频。

说出你想要的。它读遍每个岗位,帮你打分,好的直接推到你手机上。

  • 自托管
  • 开源
  • 无遥测
一分钟看懂 Job Radar 1:07
示例
  • NEW Senior Applied AI Engineer · Fernwerk AI · Berlin · €95–120k · 88/100
  • NEW Forward Deployed Engineer · Kobalt Health · München · 未写薪资 · 81/100
  • NEW ML Engineer, Perception · Lumen Robotics · Garching · €78–92k · 76/100
  • NEW NLP Engineer, Search & Ranking · Nordlicht Systems · Berlin · €85–100k · 74/100
  • NEW AI Solutions Architect, DACH · Hafen Data · Hamburg · €140–170k · 68/100
  • NEW Data Scientist, Pricing · Talwerk Labs · Remote · €58–66k · 54/100

它做什么

它替你做四件事。

说一次你想要什么。之后按你定的时间,剩下的交给它。

  1. 一处发现

    所有来源,汇成一条。

    挑你在乎的招聘网站和公司招聘页,全部汇进一个列表。同一个岗位发在五个网站,只出现一次;中介和已下线的岗位会标出来;JD 里藏着想左右 AI 的文字,在你的 AI 读到之前就被清掉。

    • LinkedIn、Indeed、Google Jobs;德国市场另有 StepStone、XING、Arbeitsagentur
    • Greenhouse、Lever、Ashby、Personio、SmartRecruiters 上的公司招聘页
    • Gmail 里你自己的职位提醒邮件
  2. 按你定制 核心

    你的规则说了算。

    定好薪资底线、城市、合同类型、不想去的公司。再用大白话(什么语言都行)写下你最看重什么、什么算加分、什么绝不接受。碰上“绝不接受”的岗位,直接沉到最底下。

    • 薪资底线、城市、合同类型、拉黑公司
    • 用自己的话写打分标准
    • 自定义信号类别和保存的视图
  3. AI 帮你读

    每个岗位它都读,你不用。

    每份 JD 都有 0–100 的匹配分,写明为什么合适、差在哪。埋在正文里的薪资被找出来、附上原文、换算成年薪。长 JD 能拆成工作内容、技术栈和硬性要求,看你的技能命中几条,还能翻成你的语言。

    • 匹配分,附理由和差距
    • 找出薪资、附原文、换算年薪
    • 岗位拆解、技能对照、翻译
  4. 推到手机

    好的,直接送到你手上。

    每轮处理完,过线的岗位推到 Telegram,带着分数、薪资和标签。直接点 👍 感兴趣、🚫 忽略 或 📄 定制简历,申请看板跟着更新。申请没动静了,它会提醒你。

    • 带按钮的推送、静默时段
    • 申请看板和跟进提醒
    • 来源出问题时告警

自托管 开源,AGPL-3.0 数据留在你自己的机器上 用你已有的 AI 订阅或 API key 不用注册 没有遥测

工作原理

跑在你的机器上,用你自己的 AI。

  1. 01

    采集

    按你定的时间,runner 从你开启的来源抓新岗位,每条都原样存下。

  2. 02

    清理

    读出薪资、办公方式、语言和合同类型,重复的合并,再按你的硬条件过滤。

  3. 03

    打分

    你电脑上的 ai-worker 把岗位交给你的 AI:用你自己登录的 claude 或 codex,或者 API key。

  4. 04

    推送

    过线的岗位推到你的 Telegram;所有岗位都在 127.0.0.1:3000 的看板上。

每部分在哪儿跑

招聘来源

招聘网站、公司招聘页、提醒邮件

你的机器

docker compose

  • web看板,127.0.0.1:3000
  • runner定时、采集、处理、备份
  • jobspy抓取辅助服务
  • dbPostgres:你的全部数据

在宿主机上

  • ai-worker打分、翻译、推送

容器里没有任何 AI 凭据。

你的 AI

用你登录的 claude / codex,或 API key

Telegram

你自己的 bot

你

浏览器或手机

还没接 AI?它照样采集、去重、过滤、展示岗位,只有打分、翻译和拆解要等 AI。

安装

三步跑起来。

需要 Docker 和 Compose v2Node 22 和 pnpm 11gitmacOS 或 Linux(已测试)

  1. 启动

    clone 仓库,切到最新发布版,一条命令起来看板、runner、抓取服务和数据库。Linux 上先跑多出来的两行。

    ~/job-radar
    git clone https://github.com/Joevonlong/job-radar.git
    cd job-radar
    git checkout v2.0.1  # 最新发布版;main 是开发分支
    # 只在 Linux 上、第一次 docker compose up 之前做(容器要以你的用户运行):
    [ -f .env ] || cp .env.example .env
    sed -i.bak -e "s/^PUID=.*/PUID=$(id -u)/" -e "s/^PGID=.*/PGID=$(id -g)/" .env && rm .env.bak
    mkdir -p data/config data/profile data/backups data/exports data/logs .auth
    docker compose up -d --build  # db、web、runner、jobspy;第一次构建要几分钟
    
  2. 说出你想要的

    打开 127.0.0.1:3000,设置向导问你 8 个小问题:语言、市场、画像、想找什么、来源、AI、Telegram、跑第一轮。没有浏览器?同样的问题在终端里也能答。

    ~/job-radar
    # 打开 http://127.0.0.1:3000,设置向导会自己出来
    # 没有浏览器?在终端里答同样的 8 个问题:
    pnpm install && pnpm run setup
    
  3. 接上你的 AI

    打分在你电脑上的一个小 worker 里跑,用你登录的 claude 或 codex,或者写在 .env 里的 API key。在终端里开着就行,也可以用一条脚本把它装成后台服务(macOS 用 launchd,Linux 用 systemd 用户单元)。

    ~/job-radar
    pnpm install
    pnpm ai-worker  # 让它一直开着
    # 或者装成后台服务(macOS 用 launchd,Linux 用 systemd 用户单元):
    scripts/ops/install-ai-worker.sh
    pnpm run doctor  # 全面体检,告诉你该修什么
    

.env 密钥和 token 只写在 .env 里,向导从来不问。

完整设置指南 → macOS 宿主机清单 看完整演示 →

隐私

你的机器,你的数据,你的 AI。

  • 不用注册 没有账号可注册。一次安装,一个人用。
  • 没有遥测 它不往外报任何东西,也没有什么托管服务可报。
  • 你的机器 岗位、画像和申请记录都在你电脑上 Docker 里的 Postgres 数据库中。
  • 你的 AI 用你已经付费的 claude 或 codex 订阅(不按 token 计费),或者设了月预算的 API key。
  • 你的文件 每项设置都是你自己的、带注释的纯文本 YAML 文件,拉取更新从不覆盖它。

会离开你机器的只有

  • 岗位文字,以及打分用到的画像部分(技能、语言、目标职位、地点、薪资底线、排除项) 你选的 AI 服务
  • 可选功能会多发一些:每周建议(你标记过的岗位及其状态)、薪资查询(公司、职位、城市、国家、资历;默认关闭)、找来源的网络搜索 你开启的 AI 和搜索服务
  • 推送消息 你自己的 Telegram bot(如果你设置了)
  • 拉取岗位的请求,以及确认岗位是否还在线的检查 你开启的来源

按服务商逐项说明见隐私页。 隐私页 →

常见问题

大家常问的。

要钱吗?

不要。Job Radar 免费、开源(AGPL-3.0),你自己运行。可能花钱的都在它之外:你的 AI 订阅或 API 用量(API 调用到你设的月预算就停),以及可选的付费来源,比如抓 LinkedIn 用的 Bright Data 或 Apify。

一定要有 AI 订阅吗?

不一定,但有了才好用。没接 AI 时它照样采集、去重、过滤、展示岗位;接上 claude 或 codex(用你已有的登录)或 API key(Anthropic、DeepSeek 或 MiMo)之后,打分、翻译和岗位拆解才开始工作。

我的数据去哪儿了?

就留在你的机器上,在 Docker 里的 Postgres 数据库中。你选的 AI 会收到岗位文字和打分用到的画像部分;每周建议、薪资查询这类可选功能会多发一些;推送消息发给你自己的 Telegram bot。不用注册,没有遥测,没有托管服务。

支持哪些招聘网站?

LinkedIn、Indeed、通过 JSearch 的 Google Jobs、德国的 StepStone、XING 和联邦就业局(Arbeitsagentur;这三个只在德国市场下运行)、Greenhouse / Lever / Ashby / Personio / SmartRecruiters 上的公司招聘页,以及 Gmail 里你自己的职位提醒邮件。开哪些由你决定,少数需要 key。

关于来源 →

我不在德国,能用吗?

能。默认配置不预设国家,界面有中文和英文。随附一个德国 / 欧盟市场包(本地招聘网站、德语等级规则、欧元);别的国家复制一个包改一改就行。

市场包 →

它会替我投简历吗?

不会。它负责找、读、打分、跟进;决定和投递是你的事。需要定制简历时,它把岗位交给 resume-kit(一个独立工具)。

抓取招聘网站合规吗?

有些来源读的是公开网页或非官方接口,有的网站条款禁止自动访问。Job Radar 会限速,从不尝试绕过登录墙或验证码,一个来源老是失败就停用它。你开启的每个网站都请先看它的条款,控制请求量,尽量用官方接口和你自己的提醒邮件。

运行它需要什么?

一台能跑 Docker 的 macOS 或 Linux 电脑(都已测试;Windows 的 WSL2 还没测过),再加上 Node 22 和 pnpm 11,用来跑辅助命令和 AI worker。它是给一个人在一台机器上用的;Telegram 不需要开任何端口。

宿主机清单 →