最近好多小伙伴私信我:
"怎么才能快速找到远程工作?"
"有没有靠谱的远程岗位推荐?"
远程岗位招聘平台非常多,但说实话,每天手动刷十几个平台,不仅费时费力,还总是慢人一步------优质远程岗位往往刚发布就被抢光,偶尔上去搜一搜,根本赶不上热乎的!
为了省下每天手动刷十几个平台的时间,我自己撸了一个 远程工作收集 bot ,每天 24 小时自动抓取国内外多个渠道的最新岗位,并推送到 TG 频道。
今天就一次性把渠道和实现过程分享出来,算是送给大家的开源"秘密武器"~
1. 远程工作渠道汇总
找远程工作,最重要的是信息源要多、更新要快,我自己整理的清单如下👇
国内远程渠道
- BOSS直聘:搜索「远程办公」
- 拉勾网:筛选"远程"标签
- 电鸭社区 : eleduck.com(专注国内远程)
- V2EX远程版块 : v2ex.com/go/remote
海外远程渠道
🌍 专业远程平台
- We Work Remotely(科技/设计岗多)
- RemoteOK(全行业覆盖)
- FlexJobs(高可信度职位,需付费)
- Wellfound(初创公司机会)
🌍 综合求职平台
- LinkedIn:搜 "Remote" + 职位关键词
- Indeed / Glassdoor:用 "remote" 筛选
💼 自由职业(适合新手)
2. 我的秘密武器:远程工作收集 bot
光有渠道还不够,关键是 第一时间获取最新岗位 。
于是我做了一个 TG 频道 + 爬虫 bot :@WorkRemotoChannel, 可以直接去掉空格访问 https:/ /t . me/ WorkRemotoChannel 加入 channel 即可
功能特点:
- 自动化:24 小时无人值守抓取
- 多平台覆盖:BOSS直聘、电鸭、V2EX、RemoteOK、We Work Remotely...(海外平台在开发中)
- 实时推送:岗位一发布,频道立刻更新
- 分类清晰:编程 / 设计 / 运营 / 产品等标签
现在找远程工作,就像刷朋友圈一样随手看看,不怕错过。
3. bot 的大体实现过程
整个项目分成三部分:
爬虫抓取 → 数据过滤 → TG 推送
3.1 爬虫抓取
- 使用 Puppeteer 模拟浏览器打开网页,解决反爬、动态加载问题
- 对静态页面(如 RemoteOK)用 axios + cheerio 直接解析 HTML
- 支持多关键词匹配("remote"、"远程办公"等)
- 定时各个平台抓取最新 10 条,去掉重复信息
示例(爬 BOSS直聘):
dart
const puppeteer = require("puppeteer");
async function crawlBoss() {
const url = "https://www.zhipin.com/web/geek/job?query=远程&city=100010000";
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto(url, { waitUntil: "networkidle2" });
const jobs = await page.evaluate(() => {
return Array.from(document.querySelectorAll(".job-card-box"))
.slice(0, 5)
.map(el => ({
title: el.querySelector(".job-name")?.textContent.trim(),
company: el.querySelector(".company-name")?.textContent.trim(),
salary: el.querySelector(".salary")?.textContent.trim(),
link: el.querySelector("a")?.href
}));
});
await browser.close();
return jobs;
}
3.2 数据过滤
- 过滤掉已暂停、已结束、重复的岗位
- 用提取薪资、要求等关键信息
- 加入发布时间判断,保证都是最新的岗位
3.3 推送到 Telegram
- 使用 node-telegram-bot-api 发送消息到频道
- 支持 Markdown 格式美化(标题加粗、链接可点)
- 防止 TG API 限制,加入发送延时
javascript
const TelegramBot = require("node-telegram-bot-api");
const bot = new TelegramBot(process.env.TELEGRAM_TOKEN);
async function pushToTG(jobs) {
for (const job of jobs) {
const text = `*${job.title}*
${job.company} | ${job.salary}
[查看详情](${job.link})`;
await bot.sendMessage(process.env.TELEGRAM_CHAT_ID, text, { parse_mode: "Markdown" });
}
}
3.4 自动化部署
- 使用 GitHub Actions 定时运行(每 4 小时一次)
- 无需服务器,代码推到 GitHub 就能跑
- 爬虫结果自动推送到 TG
.github/workflows/crawl.yml
:
yaml
name: Run Remote Job Crawler
on:
schedule:
- cron: "0 */4 * * *"
workflow_dispatch:
jobs:
crawl:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- run: npm install
- run: node index.js
env:
TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
4.最后
做这个 bot 后,我再也不用每天手动刷十几个平台了。
它不光帮我自己找到过心仪的工作,还帮不少朋友第一时间抓到好机会。
如果你也在找远程工作,可以直接关注我的TG频道:@WorkRemotoChannel ,去掉空格访问 https:/ /t . me/ WorkRemotoChannel 如果你想自己动手做一个,这篇文章的思路就可以直接拿去复用~
这么掏心掏肺跟大家分享居然说我是骗子,真的很母语啊家人们!😂