یه ربات رایگان که هر روز صبح آگهیهای شغلی سئو رو از سایتهایی مثل LinkedIn، Indeed، Glassdoor و بقیه جمعآوری میکنه و مستقیم برات توی تلگرام میفرسته.
نیازی به سرور یا هزینهای نیست — همه چیز روی GitHub Actions رایگان اجرا میشه.
- 🔍 جستجوی روزانه خودکار در تمام سایتهای شغلی بزرگ دنیا
- 📱 ارسال مستقیم به تلگرام شخصی یا گروهت
- ⛔ فیلتر هوشمند آگهیهای نامناسب (Senior، US only، Agency و غیره)
- 💰 نمایش حقوق اگر در آگهی ذکر شده باشد
- 🔁 جلوگیری از ارسال تکراری آگهیهای قبلی
- 📊 آرشیو اختیاری در Google Sheets
فقط ۳ چیز لازم داری — همه رایگان:
| ابزار | چیه؟ | رایگانه؟ |
|---|---|---|
| اکانت GitHub | جایی که کد ربات ذخیره و اجرا میشه | ✅ کاملاً رایگان |
| اکانت RapidAPI (JSearch) | سرویسی که آگهیهای شغلی رو میکشه | ✅ ۲۰۰ درخواست رایگان در ماه |
| ربات تلگرام | ربات شخصیات که پیام میفرسته | ✅ کاملاً رایگان |
Fork یعنی چی؟ وقتی یه پروژه رو Fork میکنی، GitHub یه کپی کامل از اون پروژه توی اکانت خودت میسازه. این کپی کاملاً مال خودته و میتونی هر تغییری بدی بدون اینکه پروژه اصلی تغییر کنه.
چرا Fork میکنیم؟ چون میخوایم ربات روی GitHub Actions اکانت خودت اجرا بشه، نه اکانت کس دیگهای.
مراحل Fork کردن:
مرحله ۱.۱ — بالای همین صفحه، دکمه Fork رو پیدا کن:
📍 محل دکمه Fork: بالا سمت راست صفحه — کنار دکمههای Star و Watch
مرحله ۱.۲ — بعد از کلیک روی Fork، یه صفحه جدید باز میشه:
✏️ Repository name: میتونی اسم رو عوض کنی یا همونطور بذاری
📝 Description: اختیاریه
☑️ Copy the main branch only: تیکش بزن
مرحله ۱.۳ — روی دکمه سبز Create fork کلیک کن
مرحله ۱.۴ — چند ثانیه صبر کن. الان توی اکانت خودتی و آدرس URL صفحه شده:
https://github.com/نام-اکانت-خودت/seo-job-bot
✅ Fork شد! یه کپی از پروژه توی اکانت خودت داری.
این کلید چیه؟ JSearch یه سرویسه که آگهیهای شغلی رو از سراسر اینترنت جمع میکنه. برای استفاده از این سرویس، باید یه API Key داشته باشی — مثل یه رمز عبور اختصاصی که به ربات تو میگه "این آدم مجوز استفاده داره".
مرحله ۲.۱ — ساخت اکانت در RapidAPI
- برو به سایت rapidapi.com
- روی Sign Up کلیک کن
- میتونی با Google Account یا ایمیل ثبتنام کنی
- اگه با ایمیل ثبتنام کردی، ایمیل تأییدیه رو چک کن
💡 اگه از ایران هستی و سایت لود نمیشه، از VPN استفاده کن.
مرحله ۲.۲ — رفتن به صفحه JSearch
بعد از ورود به RapidAPI، مستقیم برو به این لینک:
👉 https://rapidapi.com/letscrape-6bRBa3QguO5/api/jsearch
مرحله ۲.۳ — Subscribe کردن به پلن رایگان
- بالای صفحه، سمت راست، دکمه آبیرنگ Subscribe to Test رو میبینی — روش کلیک کن
📍 محل دکمه: نوار بالای صفحه، کنار عنوان JSearch
- صفحهای باز میشه که پلنهای مختلف رو نشون میده. پلن BASIC رو انتخاب کن:
📦 پلن BASIC (رایگان) — جزئیات:
├── 💰 قیمت: $0 در ماه — کاملاً رایگان
├── 📊 ۲۰۰ ریکوئست در ماه
├── ⚡ حداکثر ۵ ریکوئست در ثانیه
├── 🔄 هر ماه ریست میشه (اول هر ماه دوباره ۲۰۰ تا داری)
└── 💳 نیازی به کارت بانکی نیست
💡 با ۵ کوئری روزانه × ۳۰ روز = ۱۵۰ ریکوئست در ماه. کاملاً در محدوده رایگان.
-
زیر پلن BASIC، روی دکمه Subscribe کلیک کن
-
یه پنجره تأیید میاد — دوباره Subscribe بزن
مرحله ۲.۴ — پیدا کردن API Key
بعد از subscribe کردن، به صفحه JSearch برمیگردی.
- نگاه کن به ستون سمت راست صفحه — یه بخش با عنوان Header Parameters یا Code Snippet هست
- دنبال این خط بگرد:
X-RapidAPI-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - اون رشته طولانی بعد از
X-RapidAPI-Key:— این API Key توئه - روش کلیک کن و کپی کن
شکل API Key اینطوریه (این یه نمونه تستیه، مال خودت فرق داره):
47f9099b54ntiYYYYYYYYYYYYYYYYYYYYY
⚠️ مهم: این کلید رو مثل پسورد نگه دار. به کسی نشونش نده و توی کد مستقیم ننویسش — بعداً توی GitHub Secrets ذخیرش میکنیم.
ربات تلگرام چیه؟ توی تلگرام میشه اکانتهای خودکار ساخت که بهشون "ربات" میگن. ربات میتونه پیام بفرسته، بگیره، و کارهای مختلف انجام بده. ربات ما فقط یه کار میکنه: هر روز صبح آگهیهای شغلی رو برات میفرسته.
مرحله ۳.۱ — ساخت ربات با BotFather
-
توی تلگرام، به @BotFather برو (این یه ربات رسمی خود تلگرامه)
-
دکمه Start رو بزن یا
/startبفرست -
دستور زیر رو بفرست:
/newbot -
BotFather میپرسه: What's the name of your bot?
- یه اسم فارسی یا انگلیسی بده (این اسمیه که توی پروفایل ربات نشون داده میشه)
- مثلاً:
Job Alert Botیاربات آگهی شغلی
-
بعد میپرسه: What's the username?
- این username باید به
botختم بشه - مثلاً:
my_seo_job_alert_bot - اگه username قبلاً گرفته شده بود، یه اسم دیگه امتحان کن
- این username باید به
-
BotFather یه توکن بهت میده — شبیه این (این یه نمونه تستیه):
8923345284:AAHp_M8RQn4zMqo8gcd9QjnovSc7gFq7UsVاین توکن رو کپی کن و یه جای امن ذخیره کن ✅
⚠️ خیلی مهم: این توکن مثل کلید ربانیه. هر کسی این توکن رو داشته باشه میتونه با ربات تو پیام بفرسته. هیچوقت پابلیک نکنش.
مرحله ۳.۲ — پیدا کردن Chat ID خودت
ربات باید بدونه پیامها رو برای کی بفرسته. این کار با "Chat ID" انجام میشه — یه عدد یکتا که مشخص میکنه تو کی هستی.
- توی تلگرام به @userinfobot برو
- دکمه Start رو بزن
- ربات بلافاصله یه عدد بهت میده — این Chat ID توئه
مثلاً: 482647831 - این عدد رو کپی کن ✅
مرحله ۳.۳ — فعال کردن ربات
این مرحله خیلی مهمه و اکثر افراد فراموش میکنن:
- توی تلگرام، روی Search کلیک کن و username ربات خودت رو سرچ کن
- وارد چت ربات بشو
- دکمه Start رو بزن یا
/startبفرست
❗ اگه این کار رو نکنی، ربات نمیتونه برات پیام بفرسته و خطا میگیری.
Secrets چیه و چرا لازمه؟ اگه API Key و توکن تلگرام رو مستقیم توی کد بنویسی، هر کسی که پروژه رو میبینه میتونه اونها رو بخونه. GitHub Secrets یه گاوصندوق رمزنگاریشده است که کلیدهای محرمانهات رو توش نگه میداره. حتی خودت هم بعد از ذخیره کردن نمیتونی ببینیشون — فقط GitHub Actions موقع اجرا بهشون دسترسی داره.
مراحل اضافه کردن Secrets:
مرحله ۴.۱ — برو به ریپوی Fork شدهات در GitHub (همون صفحهای که Fork کردی)
مرحله ۴.۲ — روی تب Settings کلیک کن:
📍 Settings آخرین تب در نوار بالاست — بعد از Insights
⚠️ اگه Settings رو نمیبینی، یعنی داری ریپوی اصلی رو میبینی نه Fork خودت. آدرس URL رو چک کن — باید اسم خودت توش باشه.
مرحله ۴.۳ — از منوی سمت چپ صفحه Settings، برو به:
Security
└── Secrets and variables
└── Actions ← اینجا رو کلیک کن
مرحله ۴.۴ — صفحهای باز میشه با دو تب: Secrets و Variables. مطمئن شو روی تب Secrets هستی.
مرحله ۴.۵ — روی دکمه سبز New repository secret کلیک کن
حالا باید ۳ تا Secret یکی یکی اضافه کنی:
🔑 Secret اول — کلید RapidAPI:
Name: RAPIDAPI_KEY
Secret: [کلید API که از صفحه JSearch کپی کردی]
روی Add secret کلیک کن ✅
🔑 Secret دوم — توکن ربات تلگرام:
Name: TELEGRAM_BOT_TOKEN
Secret: [توکنی که BotFather داد — مثلاً 8923345284:AAHp_M8...]
روی Add secret کلیک کن ✅
🔑 Secret سوم — Chat ID تلگرام:
Name: TELEGRAM_CHAT_ID
Secret: [عدد Chat ID که از userinfobot گرفتی — مثلاً 482647831]
روی Add secret کلیک کن ✅
بعد از اضافه کردن هر سه، باید اینا رو ببینی:
Repository secrets (3)
✅ RAPIDAPI_KEY Updated just now
✅ TELEGRAM_BOT_TOKEN Updated just now
✅ TELEGRAM_CHAT_ID Updated just now
💡 اگه اسم Secret رو اشتباه نوشتی (مثلاً RAPIDAPI_KEYS به جای RAPIDAPI_KEY)، ربات کار نمیکنه. اسمها حساس به حروف بزرگ و کوچک هستن.
GitHub Actions چیه؟ GitHub Actions یه سرویس رایگانه که کد رو طبق زمانبندی یا دستی اجرا میکنه. ربات ما از این سرویس استفاده میکنه تا هر روز صبح اتوماتیک اجرا بشه — بدون اینکه تو هیچ کاری بکنی.
مرحله ۵.۱ — در ریپوی خودت روی تب Actions کلیک کن
مرحله ۵.۲ — احتمالاً یه پیام زرد رنگ میبینی:
⚠️ Workflows aren't being run on this forked repository
روی دکمه I understand my workflows, enable them کلیک کن.
این یه اقدام امنیتی GitHub است که از اجرای ناخواسته کد جلوگیری میکنه. چون پروژه رو خودت Fork کردی و میدونی چیه، کلیک کن.
مرحله ۵.۳ — از منوی سمت چپ، روی Job Search Bot 🤖 کلیک کن
مرحله ۵.۴ — سمت راست، دکمه Run workflow رو بزن
مرحله ۵.۵ — یه Dropdown باز میشه:
Use workflow from: Branch: main ✓
[Run workflow] ← این دکمه رو کلیک کن
مرحله ۵.۶ — چند ثانیه صبر کن، بعد صفحه رو Refresh کن (F5)
مرحله ۵.۷ — باید یه ردیف جدید ببینی. اگه:
- 🟡 دایره زرد: هنوز داره اجرا میشه — صبر کن
- ✅ تیک سبز: موفق بود! برو تلگرام رو چک کن
- ❌ ضربدر قرمز: خطا داره — بخش عیبیابی رو بخون
مرحله ۵.۸ — تلگرام رو چک کن — باید پیامهایی از ربات خودت دریافت کرده باشی! 🎉
فایل bot.py رو در GitHub باز کن و این بخش رو پیدا کن:
SEARCH_QUERIES = [
"Junior SEO remote",
"Technical SEO remote",
"SEO Content Editor remote",
"SEO Python remote",
"WordPress SEO Specialist remote",
]چطور ویرایش کنی؟
- روی فایل
bot.pyکلیک کن - دکمه ✏️ (Edit this file — شکل مداد) رو در بالا راست پیدا کن و بزن
- متن رو تغییر بده
- پایین صفحه، روی Commit changes کلیک کن
- دوباره Commit changes رو تأیید کن
نمونه کوئریهای مختلف:
# برای دیجیتال مارکتینگ
"digital marketing specialist remote"
"social media manager remote"
"content marketing remote"
# برای طراحی
"UI UX designer remote"
"graphic designer remote"
# برای توسعه
"python developer remote"
"react developer remote"
"frontend developer remote"
# برای داده
"data analyst remote"
"data scientist remote"
# جستجو در پلتفرم خاص
"SEO specialist remote via linkedin"
"marketing manager remote via indeed"💡 نکته محاسباتی: هر کوئری = ۱ ریکوئست در روز. با ۵ کوئری × ۳۰ روز = ۱۵۰ ریکوئست در ماه — در محدوده پلن رایگان (۲۰۰ تا).
این بخش رو در bot.py پیدا کن:
BLACKLIST_KEYWORDS = [
"us residents only",
"must reside in us",
"senior",
"director",
"agency",
"full stack",
]هر کلمهای که اضافه کنی، آگهیهایی که اون کلمه رو در هر جایی از متنشون دارن، فیلتر و حذف میشن.
نمونههای بیشتر برای فیلتر:
# موقعیتهای ارشد
"manager",
"lead",
"head of",
"vp of",
"vice president",
# محدودیت جغرافیایی
"uk only",
"europe only",
"australia only",
"must be based in",
# نوع قرارداد نامناسب
"unpaid",
"internship",
"volunteer",
"commission only",ربات الان هر روز ساعت ۷ صبح به وقت ایران اجرا میشه.
برای تغییر، فایل .github/workflows/run.yml رو باز کن و این خط رو پیدا کن:
- cron: "30 3 * * *"جدول زمانها (توجه: GitHub از ساعت UTC استفاده میکنه — ایران UTC+3:30 هست):
| ساعت ایران | مقدار cron |
|---|---|
| ۶ صبح | "30 2 * * *" |
| ۷ صبح (پیشفرض) | "30 3 * * *" |
| ۸ صبح | "30 4 * * *" |
| ۹ صبح | "30 5 * * *" |
| ۱۲ ظهر | "30 8 * * *" |
اگه میخوای ۲ بار در روز اجرا بشه (مثلاً ۷ صبح و ۵ عصر):
schedule:
- cron: "30 3 * * *"
- cron: "30 13 * * *"اگه میخوای آگهیها علاوه بر تلگرام توی یه فایل آنلاین مثل اکسل هم ذخیره بشن، فایل SETUP_GSHEET.md رو بخون.
وقتی ربات خطا میده، اول باید لاگها رو ببینی:
- برو به تب Actions در GitHub
- روی آخرین Run کلیک کن (ردیف اول)
- روی run-bot کلیک کن
- لاگها رو بخون — معمولاً خطا با رنگ قرمز مشخصه و پیام واضحی داره
ربات پیامی نفرستاد:
- چک کن که به ربات
/startفرستادی (گام ۳.۳) - TELEGRAM_CHAT_ID رو دوباره از @userinfobot بگیر و مطمئن شو درسته
خطای 401 Unauthorized برای تلگرام:
- توکن ربات رو اشتباه وارد کردی
- Secret رو حذف و دوباره اضافه کن — مطمئن شو کل توکن رو کپی کردی (شامل اون اعداد اول و دونقطه)
خطای RAPIDAPI_KEY یا 403:
- API Key رو اشتباه وارد کردی یا هیچ فاصله یا کاراکتر اضافهای نباشه
- برو به RapidAPI و چک کن هنوز به پلن subscribe هستی
آگهیهای تکراری میاد:
- این طبیعیه در اجرای اول. فایل
seen_jobs.txtبعد از اولین اجرا ساخته میشه و از اجرای دوم به بعد تکراری نمیاد
ربات ران میشه ولی هیچ آگهیای پیدا نمیکنه:
- کوئریهای جستجوت خیلی محدود هستن — کمتر فیلتر بزن
- Blacklist رو چک کن — شاید کلمهای اضافه کردی که همه آگهیها رو فیلتر میکنه
Workflow اجرا نمیشه (هیچ Run جدیدی نمیاد):
- مطمئن شو Workflows رو enable کردی (گام ۵.۲)
- فایل
.github/workflows/run.ymlرو چک کن که دست نخورده باشه
آیا واقعاً رایگانه؟ بله. GitHub Actions برای ریپوهای عمومی کاملاً رایگانه. RapidAPI هم ۲۰۰ ریکوئست رایگان در ماه میده. تلگرام هم که رایگانه.
آیا وقتی کامپیوترم خاموشه هم کار میکنه؟ بله! کد روی سرورهای GitHub اجرا میشه، نه کامپیوتر تو. حتی اگه گوشیت خاموش باشه هم ربات کار میکنه.
چند نفر میتونن از یه ربات استفاده کنن؟ میتونی TELEGRAM_CHAT_ID یه گروه تلگرام رو وارد کنی — اینطوری همه اعضای گروه آگهیها رو میگیرن. Chat ID گروه رو از @userinfobot بگیر.
اگه اشتباهی کردم چیکار کنم؟ Secret رو میتونی هر وقت خواستی Update کنی — کافیه دوباره روی اسم Secret کلیک کنی و مقدار جدید بدی.
این پروژه از سرویسهای رایگان زیر استفاده میکنه:
- جستجوی آگهیهای شغلی: JSearch API توسط OpenWeb Ninja
- اجرای خودکار: GitHub Actions
- ارسال پیام: Telegram Bot API