x-hiring
x-hiring copied to clipboard
🤗 每日最新招聘信息,使用 Google AI 提取摘要
X-Hiring
🤗 每日最新招聘信息,使用 Google AI 提取摘要
[!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:[email protected]: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
网站和抓取分析,为什么分为了两个服务?
- 抓取是长时运行任务, @vercel 免费版最大运行时长 10s, cron 的是每日一次,最小单位为小时,任务运行时长也有最大限制
- #Gemini 有地域限制,且未直接在业务中使用,所以结合抓取实现摘要保存更合适
接下来的计划是什么?
- [x] RSS 服务:
https://x-hiring.hehehai.cn/feed.xml
- [x] (搁置)相关职位推荐 - 每个职位详情下方展示最新 6 个类似职位
- [x] 上次查看标识 - 下一次打开时,列表滚动到上次打开时的第一条数据时,标记上次查看标识
- [ ] 新增 team 入口, 展示中文社区开发团队和独立开发者列表
- [ ] 支持登录 - 使用 clerk 登录账号
- [ ] 支持职位信息发布 - 发布职位后默认状态为待审核, 审核成功或失败将发送邮件到发布人邮箱
反馈建议/职位交流 📢
- 职位群请加我的微信,不直接放二维码了,有乱打广告的!
职位群 |
---|
![]() |