Skip to content
 
 

Latest commit

 

History

11 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 ربات تلگرامی جستجوی شغل سئو

یه ربات رایگان که هر روز صبح آگهی‌های شغلی سئو رو از سایت‌هایی مثل LinkedIn، Indeed، Glassdoor و بقیه جمع‌آوری میکنه و مستقیم برات توی تلگرام میفرسته.

نیازی به سرور یا هزینه‌ای نیست — همه چیز روی GitHub Actions رایگان اجرا میشه.


✨ امکانات

  • 🔍 جستجوی روزانه خودکار در تمام سایت‌های شغلی بزرگ دنیا
  • 📱 ارسال مستقیم به تلگرام شخصی یا گروهت
  • ⛔ فیلتر هوشمند آگهی‌های نامناسب (Senior، US only، Agency و غیره)
  • 💰 نمایش حقوق اگر در آگهی ذکر شده باشد
  • 🔁 جلوگیری از ارسال تکراری آگهی‌های قبلی
  • 📊 آرشیو اختیاری در Google Sheets

📋 چی نیاز داری؟

فقط ۳ چیز لازم داری — همه رایگان:

ابزار چیه؟ رایگانه؟
اکانت GitHub جایی که کد ربات ذخیره و اجرا میشه ✅ کاملاً رایگان
اکانت RapidAPI (JSearch) سرویسی که آگهی‌های شغلی رو میکشه ✅ ۲۰۰ درخواست رایگان در ماه
ربات تلگرام ربات شخصی‌ات که پیام میفرسته ✅ کاملاً رایگان

🚀 راه‌اندازی گام به گام

🟢 گام ۱ — Fork کردن این پروژه در GitHub

Fork یعنی چی؟ وقتی یه پروژه رو Fork میکنی، GitHub یه کپی کامل از اون پروژه توی اکانت خودت میسازه. این کپی کاملاً مال خودته و میتونی هر تغییری بدی بدون اینکه پروژه اصلی تغییر کنه.

چرا Fork میکنیم؟ چون میخوایم ربات روی GitHub Actions اکانت خودت اجرا بشه، نه اکانت کس دیگه‌ای.


مراحل Fork کردن:

مرحله ۱.۱ — بالای همین صفحه، دکمه Fork رو پیدا کن:

📍 محل دکمه Fork: بالا سمت راست صفحه — کنار دکمه‌های Star و Watch

Fork button location

مرحله ۱.۲ — بعد از کلیک روی Fork، یه صفحه جدید باز میشه:

✏️  Repository name: میتونی اسم رو عوض کنی یا همونطور بذاری
📝  Description: اختیاریه
☑️  Copy the main branch only: تیکش بزن

مرحله ۱.۳ — روی دکمه سبز Create fork کلیک کن

مرحله ۱.۴ — چند ثانیه صبر کن. الان توی اکانت خودتی و آدرس URL صفحه شده:

https://github.com/نام-اکانت-خودت/seo-job-bot

✅ Fork شد! یه کپی از پروژه توی اکانت خودت داری.


🟡 گام ۲ — گرفتن API Key از RapidAPI

این کلید چیه؟ JSearch یه سرویسه که آگهی‌های شغلی رو از سراسر اینترنت جمع میکنه. برای استفاده از این سرویس، باید یه API Key داشته باشی — مثل یه رمز عبور اختصاصی که به ربات تو میگه "این آدم مجوز استفاده داره".


مرحله ۲.۱ — ساخت اکانت در RapidAPI

  1. برو به سایت rapidapi.com
  2. روی Sign Up کلیک کن
  3. میتونی با Google Account یا ایمیل ثبت‌نام کنی
  4. اگه با ایمیل ثبت‌نام کردی، ایمیل تأییدیه رو چک کن

💡 اگه از ایران هستی و سایت لود نمیشه، از VPN استفاده کن.


مرحله ۲.۲ — رفتن به صفحه JSearch

بعد از ورود به RapidAPI، مستقیم برو به این لینک:

👉 https://rapidapi.com/letscrape-6bRBa3QguO5/api/jsearch


مرحله ۲.۳ — Subscribe کردن به پلن رایگان

  1. بالای صفحه، سمت راست، دکمه آبی‌رنگ Subscribe to Test رو میبینی — روش کلیک کن
📍 محل دکمه: نوار بالای صفحه، کنار عنوان JSearch
  1. صفحه‌ای باز میشه که پلن‌های مختلف رو نشون میده. پلن BASIC رو انتخاب کن:
📦 پلن BASIC (رایگان) — جزئیات:
├── 💰 قیمت: $0 در ماه — کاملاً رایگان
├── 📊 ۲۰۰ ریکوئست در ماه
├── ⚡ حداکثر ۵ ریکوئست در ثانیه
├── 🔄 هر ماه ریست میشه (اول هر ماه دوباره ۲۰۰ تا داری)
└── 💳 نیازی به کارت بانکی نیست

💡 با ۵ کوئری روزانه × ۳۰ روز = ۱۵۰ ریکوئست در ماه. کاملاً در محدوده رایگان.

  1. زیر پلن BASIC، روی دکمه Subscribe کلیک کن

  2. یه پنجره تأیید میاد — دوباره Subscribe بزن


مرحله ۲.۴ — پیدا کردن API Key

بعد از subscribe کردن، به صفحه JSearch برمیگردی.

  1. نگاه کن به ستون سمت راست صفحه — یه بخش با عنوان Header Parameters یا Code Snippet هست
  2. دنبال این خط بگرد:
    X-RapidAPI-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
  3. اون رشته طولانی بعد از X-RapidAPI-Key: — این API Key توئه
  4. روش کلیک کن و کپی کن

شکل API Key اینطوریه (این یه نمونه تستیه، مال خودت فرق داره):

47f9099b54ntiYYYYYYYYYYYYYYYYYYYYY

⚠️ مهم: این کلید رو مثل پسورد نگه دار. به کسی نشونش نده و توی کد مستقیم ننویسش — بعداً توی GitHub Secrets ذخیرش میکنیم.


🟠 گام ۳ — ساخت ربات تلگرام

ربات تلگرام چیه؟ توی تلگرام میشه اکانت‌های خودکار ساخت که بهشون "ربات" میگن. ربات میتونه پیام بفرسته، بگیره، و کارهای مختلف انجام بده. ربات ما فقط یه کار میکنه: هر روز صبح آگهی‌های شغلی رو برات میفرسته.


مرحله ۳.۱ — ساخت ربات با BotFather

  1. توی تلگرام، به @BotFather برو (این یه ربات رسمی خود تلگرامه)

  2. دکمه Start رو بزن یا /start بفرست

  3. دستور زیر رو بفرست:

    /newbot
    
  4. BotFather میپرسه: What's the name of your bot?

    • یه اسم فارسی یا انگلیسی بده (این اسمیه که توی پروفایل ربات نشون داده میشه)
    • مثلاً: Job Alert Bot یا ربات آگهی شغلی
  5. بعد میپرسه: What's the username?

    • این username باید به bot ختم بشه
    • مثلاً: my_seo_job_alert_bot
    • اگه username قبلاً گرفته شده بود، یه اسم دیگه امتحان کن
  6. BotFather یه توکن بهت میده — شبیه این (این یه نمونه تستیه):

    8923345284:AAHp_M8RQn4zMqo8gcd9QjnovSc7gFq7UsV
    

    این توکن رو کپی کن و یه جای امن ذخیره کن ✅

⚠️ خیلی مهم: این توکن مثل کلید ربانیه. هر کسی این توکن رو داشته باشه میتونه با ربات تو پیام بفرسته. هیچ‌وقت پابلیک نکنش.


مرحله ۳.۲ — پیدا کردن Chat ID خودت

ربات باید بدونه پیام‌ها رو برای کی بفرسته. این کار با "Chat ID" انجام میشه — یه عدد یکتا که مشخص میکنه تو کی هستی.

  1. توی تلگرام به @userinfobot برو
  2. دکمه Start رو بزن
  3. ربات بلافاصله یه عدد بهت میده — این Chat ID توئه
    مثلاً: 482647831
    
  4. این عدد رو کپی کن ✅

مرحله ۳.۳ — فعال کردن ربات

این مرحله خیلی مهمه و اکثر افراد فراموش میکنن:

  1. توی تلگرام، روی Search کلیک کن و username ربات خودت رو سرچ کن
  2. وارد چت ربات بشو
  3. دکمه Start رو بزن یا /start بفرست

❗ اگه این کار رو نکنی، ربات نمیتونه برات پیام بفرسته و خطا میگیری.


🔵 گام ۴ — ذخیره کردن کلیدها در GitHub Secrets

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",
]

چطور ویرایش کنی؟

  1. روی فایل bot.py کلیک کن
  2. دکمه ✏️ (Edit this file — شکل مداد) رو در بالا راست پیدا کن و بزن
  3. متن رو تغییر بده
  4. پایین صفحه، روی Commit changes کلیک کن
  5. دوباره 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"

💡 نکته محاسباتی: هر کوئری = ۱ ریکوئست در روز. با ۵ کوئری × ۳۰ روز = ۱۵۰ ریکوئست در ماه — در محدوده پلن رایگان (۲۰۰ تا).


تغییر فیلتر Blacklist

این بخش رو در 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 * * *"

📊 اضافه کردن Google Sheets (اختیاری)

اگه میخوای آگهی‌ها علاوه بر تلگرام توی یه فایل آنلاین مثل اکسل هم ذخیره بشن، فایل SETUP_GSHEET.md رو بخون.


🔧 عیب‌یابی — وقتی چیزی کار نمیکنه

اولین قدم: دیدن لاگ‌ها

وقتی ربات خطا میده، اول باید لاگ‌ها رو ببینی:

  1. برو به تب Actions در GitHub
  2. روی آخرین Run کلیک کن (ردیف اول)
  3. روی run-bot کلیک کن
  4. لاگ‌ها رو بخون — معمولاً خطا با رنگ قرمز مشخصه و پیام واضحی داره

❓ مشکلات رایج و راه‌حل‌شون

ربات پیامی نفرستاد:

  • چک کن که به ربات /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 کلیک کنی و مقدار جدید بدی.


🙏 Credits

این پروژه از سرویس‌های رایگان زیر استفاده میکنه:

About

No description, website, or topics provided.

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages