Skip to content

🤗 每日最新招聘信息,使用 Google AI 提取摘要

Notifications You must be signed in to change notification settings

hehehai/x-hiring

Repository files navigation

X-Hiring

🤗 每日最新招聘信息,使用 Google AI 提取摘要

image image

Tip

如果有合适的职位数据源,欢迎👏提 issues, 我们将视情况开发。

当前已支持

⌨️ 安装&运行

项目使用 Monorepo、turbo、pnpm 管理

pnpm install
.
├── apps
│   ├── jobs
│   └── www
├── package.json
├── packages
│   ├── db
│   ├── eslint-config
│   └── tsconfig
├── pnpm-workspace.yaml
└── turbo.json
  • jobs:抓取任务
  • www:网站
  • db:公共数据服务

数据抓取独立服务(和 apps/jobs 同步-支持 node 16), x-hiring grab

  • apps/jobs.env.example 文件复制,名称修改为 .env 内容自行修改
  • apps/www.env.example 文件复制,名称修改为 .env 内容自行修改
  • packages/db.env.example 文件复制,名称修改为 .env 内容自行修改(为了 prisma migrate)
# Prisma postgresql 数据库
DATABASE_URL="postgresql://x-hiring:password@0.0.0.0:5432/x-hiring"

# Google Gemini AI
GEMINI_AI_API_KEY="api_token"

# GithubToken
GITHUB_TOKEN="ghp_xxx"

# 本地代理 (可选)
LOCAL_FETCH_PROXY="http://127.0.0.1:7890"

# Redis Upstash
# https://upstash.com/blog/nextjs-ratelimiting
UPSTASH_REDIS_REST_URL="https://xxx.upstash.io"
UPSTASH_REDIS_REST_TOKEN="xxx"
pnpm run dev:web
pnpm run dev:jobs

打开 http://localhost:3000

Q&A

网站和抓取分析,为什么分为了两个服务?

  1. 抓取是长时运行任务, @vercel 免费版最大运行时长 10s, cron 的是每日一次,最小单位为小时,任务运行时长也有最大限制
  2. #Gemini 有地域限制,且未直接在业务中使用,所以结合抓取实现摘要保存更合适

接下来的计划是什么?

  1. RSS 服务: https://x-hiring.hehehai.cn/feed.xml
  2. (搁置)相关职位推荐 - 每个职位详情下方展示最新 6 个类似职位
  3. 上次查看标识 - 下一次打开时,列表滚动到上次打开时的第一条数据时,标记上次查看标识
  4. 新增 team 入口, 展示中文社区开发团队和独立开发者列表
  5. 支持登录 - 使用 clerk 登录账号
  6. 支持职位信息发布 - 发布职位后默认状态为待审核, 审核成功或失败将发送邮件到发布人邮箱

反馈建议/职位交流 📢

  • 职位群请加我的微信,不直接放二维码了,有乱打广告的!
职位群