مرجع تهيئة الملف التعريفي
تسرد هذه الصفحة كل إعداد يقبله ملف Sweepy التعريفي. أبقِها مفتوحة أثناء تحرير ملفك التعريفي. وللحصول على جولة إرشادية، راجع إعداد Sweepy بدلًا من ذلك.
مكان الملفات التعريفية
يقرأ Sweepy الملفات التعريفية من مجلد profiles/ داخل دليل Sweepy. ويستخدم كل ملف تعريفي صيغة YAML، وهي صيغة نصية بسيطة تُنظَّم بالإزاحة والنقطتين. افتح أحدها في Notepad أو VS Code أو أي محرر نصوص لديك.
ابدأ من config.sample.yaml أو من ملف جاهز مثل profiles/paralegal_nyc.yaml. انسخ قالبًا، وأعد تسميته، وحرّر القيم:
copy config.sample.yaml profiles\my_search.yaml
notepad profiles\my_search.yaml
ثم وجّه مسحًا إلى ذلك الملف:
sweepy --profile profiles/my_search.yaml
يحمل الملف التعريفي تهيئتك كاملة. أنشئ ما تريد من الملفات التعريفية: ملف لكل مدينة أو عائلة وظيفية. ويحفظ Sweepy حالة المسح خارج الملف التعريفي، في ذاكرة الاكتشاف المؤقتة وقاعدة بيانات السجل ومجلدَي logs/ وresults/.
استخدم المسافات للإزاحة، ولا تستخدم علامات الجدولة قط. يرفض YAML علامات الجدولة، وعلامة جدولة واحدة شاردة تجعل الملف التعريفي كله غير قابل للقراءة.
مثال ملف تعريفي كامل
يعرض المثال أدناه ملف أليكس التعريفي كاملًا. والأسطر التي تبدأ بـ # تعمل كتعليقات، ويتجاهلها Sweepy:
# ─────────────────────────────────────────────────
# Sweepy — Alex's Paralegal Profile (New York City)
# ─────────────────────────────────────────────────
# Your name. It appears in the PDF report header.
name: "Alex Rivera"
# Set true to write rotating debug logs under logs/.
debug: false
# ─── Job search ───────────────────────────────────
search:
# Every title Sweepy searches at the same time.
titles:
- "Paralegal"
- "Legal Assistant"
- "Litigation Support Specialist"
- "Legal Secretary"
# Your target market.
location: "New York, NY"
# true keeps remote roles only. false keeps remote, hybrid, and on-site roles.
remote_only: false
# false removes hybrid roles from every report.
include_hybrid: true
# Annual salary floor. Use 0 to skip salary filtering.
min_salary: 65000
# true reads pay from the posting text when a board omits structured pay.
salary_from_description: true
# ─── Resume ───────────────────────────────────────
resume:
# Path to a PDF or DOCX resume. Forward slashes work on Windows.
path: "Alex_Rivera_Resume.pdf"
# Terms that carry the most weight when Sweepy scores a posting.
must_have_skills:
- "Westlaw"
- "LexisNexis"
- "e-discovery"
- "Contract Review"
- "Legal Research"
# 1.0 is standard. Raise it to reward exact skill matches.
keywords_weight: 1.5
# Interchangeable terms. Sweepy matches every member of a group either way.
synonyms:
- ["e-discovery", "ediscovery", "electronic discovery"]
- ["legal research", "case law research"]
- ["docketing", "case calendaring"]
- ["legal assistant", "legal secretary"]
- ["contract review", "contract analysis", "agreement review"]
# Optional: one resume per role family. Sweepy picks the best fit for each posting.
tracks:
- name: "Paralegal Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Paralegal.pdf"
color: "#1D4ED8"
route_keywords: ["paralegal", "litigation", "e-discovery"]
- name: "Legal Assistant Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Legal_Assistant.pdf"
color: "#7E22CE"
route_keywords: ["legal assistant", "legal secretary", "scheduling"]
# ─── Platforms ────────────────────────────────────
platforms:
greenhouse: true
ashby: true
lever: true
workable: true
aggregators: false
# Extra ATS domains. Sweepy labels matching postings with this name.
custom:
- name: "SmartRecruiters"
domain: "smartrecruiters.com"
enabled: true
- name: "Breezy HR"
domain: "breezy.hr"
enabled: true
# ─── Sources ──────────────────────────────────────
sources:
jobspy:
linkedin: true
indeed: true
glassdoor: true
zip_recruiter: true
# Leave a list empty to fall back to the seed lists in data/sources/.
ashby:
orgs:
- "crosby"
- "normlaw"
- "hargrove-firm"
- "lawhive"
workable:
slugs:
- "shegerianand-associates-1"
- "harper-james"
- "legalvision"
builtinnyc:
enabled: true
categories:
- "jobs/legal"
- "jobs/legal/search/paralegal"
# ─── Cache and history ────────────────────────────
cache:
enabled: true
ttl_seconds: 3600 # reuse discovery results for an hour
history:
enabled: true
retention_days: 4 # hide a reported posting for four days
match: "url+role" # "url" matches only an identical posting address
path: null # null uses ~/.sweepy/history.db
orchestrator:
timeout_per_source_seconds: 180
circuit_breaker:
failure_threshold: 5
cooldown_seconds: 30
# ─── Report layout ────────────────────────────────
report:
style: "cards" # "cards" (default) or "legacy"
cards_per_page: 6 # cards on each PDF page
max_cards: 24 # 0 or less shows every match
destinations: [] # extra folders for a copy of the PDF
assessment: "agent" # "keyword" accepts reports without agent judgments
# ─── Exports ──────────────────────────────────────
export:
format: "pdf,csv,json" # add "png" for page images
output_dir: "results"
tracking: true # job-tracking columns in the CSV
description_chars: 1000 # posting excerpt length in the CSV and JSON
كل الإعدادات
يعود Sweepy إلى القيم الافتراضية أدناه لأي إعداد تتركه. ولا يزال يحتاج إلى search.titles وsearch.location وresume.path ليعيد تطابقات مفيدة.
| القسم | المفتاح | مطلوب | الافتراضي | الوصف |
|---|---|---|---|---|
| المستوى الأعلى | name | لا | "Job Seeker" | اسمك. يظهر في ترويسة تقرير PDF. |
| المستوى الأعلى | debug | لا | false | اضبطه على true لكتابة سجلات تصحيح متغيرة في logs/. |
search | titles | نعم | [] | المسميات الوظيفية التي تستهدفها. يبحث Sweepy عن كل مسمى في وقت واحد. |
search | location | نعم | "" | سوقك، مكتوبًا بالصيغة "City, State". |
search | remote_only | لا | false | اضبطه على true لإبقاء الوظائف عن بُعد فقط. |
search | include_hybrid | لا | true | اضبطه على false لحذف الوظائف الهجينة. |
search | min_salary | لا | 0 | الحد الأدنى للراتب السنوي. القيمة 0 تعطّل المرشح. |
search | salary_from_description | لا | true | يقرأ نطاقات الأجر من نص الإعلان عندما لا تنشر المنصة أجرًا مهيكلًا. اضبطه على false لاستخدام الحقول المهيكلة فقط. |
resume | path | نعم | "" | مسار سيرتك الذاتية بصيغة PDF أو Word (DOCX). |
resume | must_have_skills | لا | [] | المصطلحات التي تحصل على أعلى وزن في الاحتساب. |
resume | keywords_weight | لا | 1.0 | مضاعف تطابقات المهارات. والقيم الأعلى تكافئ التداخل. |
resume | synonyms | لا | [] | مجموعات من المصطلحات المتبادلة. راجع مرادفات السيرة الذاتية. |
resume | tracks | لا | [] | سيرة ذاتية واحدة لكل عائلة وظيفية. راجع مسارات السيرة الذاتية. |
resume.tracks[] | name | نعم | لا ينطبق | التسمية المعروضة على بطاقة التقرير وفي شارة المسار. |
resume.tracks[] | path | نعم | لا ينطبق | مسار السيرة الذاتية لذلك المسار بصيغة PDF أو DOCX. |
resume.tracks[] | color | لا | #1D4ED8 | لون الشارة كرمز سادس عشري أو اسم لون مثل navy. |
resume.tracks[] | route_keywords | لا | [] | كلمات مفتاحية تسند إعلانًا إلى هذا المسار. |
platforms | greenhouse | لا | true | تشغيل عمليات بحث Greenhouse. |
platforms | ashby | لا | true | تشغيل عمليات بحث Ashby. |
platforms | lever | لا | true | تشغيل عمليات بحث Lever. |
platforms | workable | لا | true | تشغيل عمليات بحث Workable. |
platforms | aggregators | لا | false | تشغيل تغذيات المجمّعات المجانية مثل Remotive وAdzuna. |
platforms | custom | لا | [] | نطاقات إضافية لأنظمة تتبع المتقدمين (ATS). ويأخذ كل إدخال name وdomain وenabled. |
sources | jobspy.linkedin | لا | true | الاستعلام من LinkedIn عبر python-jobspy. |
sources | jobspy.indeed | لا | true | الاستعلام من Indeed عبر python-jobspy. |
sources | jobspy.glassdoor | لا | true | الاستعلام من Glassdoor عبر python-jobspy. |
sources | jobspy.zip_recruiter | لا | true | الاستعلام من ZipRecruiter عبر python-jobspy. |
sources | greenhouse.enabled | لا | true | يفتح مصدر Greenhouse أو يغلقه. |
sources | greenhouse.boards | لا | [] | رموز منصات Greenhouse. والفراغ يعود إلى data/sources/greenhouse_boards.txt. |
sources | ashby.enabled | لا | true | يفتح مصدر Ashby أو يغلقه. |
sources | ashby.orgs | لا | [] | معرّفات مؤسسات Ashby. والفراغ يعود إلى data/sources/ashby_orgs.txt. |
sources | lever.enabled | لا | true | يفتح مصدر Lever أو يغلقه. |
sources | lever.companies | لا | [] | رموز شركات Lever. والفراغ يعود إلى data/sources/lever_companies.txt. |
sources | workable.enabled | لا | true | يفتح مصدر Workable أو يغلقه. |
sources | workable.slugs | لا | [] | معرّفات حسابات Workable. والفراغ يعود إلى data/sources/workable_slugs.txt. |
sources | builtinnyc.enabled | لا | true | يفتح مصدر Built In NYC أو يغلقه. |
sources | builtinnyc.categories | لا | [] | مسارات فئات Built In NYC مثل jobs/legal. والفراغ يعود إلى data/sources/builtin_categories.txt. |
sources | builtinnyc.detail_pages | لا | false | يقرأ النص الكامل لكل إعلان من صفحة تفاصيله. وتتصدى Built In لتلك الصفحات بعد بضع طلبات، فيجلب Sweepy صفحة واحدة في كل مرة ويتوقف عند أول تصدٍّ. ولا يزال الإعلان يوفر الشركة والموقع والأجر. |
sources | enabled | لا | ["jobspy", "ats"] | المحركات التي تعمل. أضف hirehunt أو openroles أو jobdrop أو apify بعد تثبيت كل منها. راجع المصادر والمنصات. |
sources | jobspy.sites | لا | ["linkedin", "indeed", "glassdoor", "zip_recruiter"] | منصات JobSpy كقائمة. وتتقدم على القيم المنطقية بنمط jobspy.linkedin. |
sources | jobspy.fetch_descriptions | لا | true | يجلب نص الإعلان كاملًا للاحتساب. اضبطه على false لعمليات مسح أسرع بنتائج أضعف. |
sources | jobspy.proxies | لا | [] | أهداف الوسيط المكتوبة بالصيغة user:pass@host:port. وتبقى بيانات اعتماد الوسيط على جهازك. |
sources | jobspy.user_agent | لا | null | وكيل المستخدم لطلبات JobSpy. اتركه ليُستخدم وكيل Chrome المدمج. |
cache | enabled | لا | true | يعيد استخدام نتائج الاكتشاف بين عمليات المسح. |
cache | ttl_seconds | لا | 3600 | عدد الثواني التي يعيد فيها Sweepy استخدام نتيجة مخزنة. |
cache | path | لا | null | موقع قاعدة بيانات الذاكرة المؤقتة. والقيمة null تستخدم ~/.sweepy/cache.db، ويتجاوز SWEEPY_CACHE_PATH الاثنين. |
history | enabled | لا | true | يخفي الإعلانات التي أبلغت عنها عمليات مسح سابقة. |
history | retention_days | لا | 4 | عدد الأيام التي يخفي فيها Sweepy إعلانًا أُبلغ عنه قبل أن يظهر مرة أخرى. |
history | match | لا | "url+role" | القيمة url تطابق عنوان إعلان مطابقًا فقط. وurl+role تطابق أيضًا المسمى والشركة والموقع أنفسهم على منصة أخرى. |
history | path | لا | null | موقع قاعدة بيانات السجل. والقيمة null تستخدم ~/.sweepy/history.db، ويتجاوز SWEEPY_HISTORY_PATH الاثنين. |
orchestrator | timeout_per_source_seconds | لا | 180 | عدد الثواني التي يجوز لمصدر واحد أن يعمل فيها قبل أن يوقفه Sweepy. |
orchestrator | circuit_breaker.failure_threshold | لا | 5 | عدد الإخفاقات المتتالية قبل أن يتجاوز Sweepy ذلك المصدر. |
orchestrator | circuit_breaker.cooldown_seconds | لا | 30 | عدد الثواني التي ينتظرها Sweepy قبل إعادة محاولة مصدر متجاوَز. |
report | style | لا | "cards" | تخطيط التقرير: cards أو legacy. |
report | cards_per_page | لا | 6 | عدد البطاقات الموضوعة في كل صفحة PDF. |
report | max_cards | لا | 24 | أعلى عدد للبطاقات. والقيمة 0 أو أقل تعرض كل تطابق. |
report | destinations | لا | [] | مجلدات إضافية تتلقى نسخة من ملفات PDF وPNG. |
report | assessment | لا | "agent" | القيمة agent تمنع التقرير ما دامت أي بطاقة تحمل تداخل كلمات مفتاحية وحده. وkeyword تسمح بتقارير دون تقييمات الوكيل. |
export | format | لا | "pdf,csv" | أي مزيج من pdf وcsv وjson وpng، مفصولًا بفواصل. |
export | output_dir | لا | "results" | مجلد ملفات تقريرك. وينشئه Sweepy عند غيابه. |
export | tracking | لا | true | يضيف أعمدة تتبع الوظائف إلى CSV: date_applied وstatus وinterview_stage وoffer_amount وoffer_date وfollow_up_date وcontact وnotes. وينقل Sweepy القيم التي تدخلها إلى عمليات المسح اللاحقة للملف التعريفي نفسه. اضبطه على false للبيانات الخام فقط. |
export | description_chars | لا | 1000 | عدد أحرف نص الإعلان المحفوظة في CSV وJSON. ويقطعها Sweepy عند حد جملة. والقيمة 0 تحفظ الإعلان كاملًا. |
تظهر التفاصيل عن المصادر ودعم المنصات في المصادر والمنصات. وتشرح قواعد الفتح هناك كيف تعمل platforms.* وsources.* معًا. وتعيش الكتل الاختيارية hirehunt وopenroles وjobdrop وapify تحت sources أيضًا، ويسرد مرجع الأوامر المفاتيح التي تضبط مفاتيحها.
مسارات السيرة الذاتية
المسار سيرة ذاتية مسماة. استخدم المسارات عندما تستهدف وظيفتين أو مسمىين مختلفين وتريد احتساب كل إعلان مقابل المستند الصحيح.
resume:
tracks:
- name: "Paralegal Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Paralegal.pdf"
color: "#1D4ED8"
route_keywords: ["paralegal", "litigation", "e-discovery"]
- name: "Legal Assistant Resume"
path: "C:/Users/Alex/Documents/Alex_Rivera_Legal_Assistant.pdf"
color: "#7E22CE"
route_keywords: ["legal assistant", "legal secretary", "scheduling"]
يأخذ كل إدخال أربعة حقول:
nameيسمّي المسار. وتعرض بطاقة التقرير هذه التسمية، فاكتب كلمة أو كلمتين.pathيشير إلى ملف السيرة الذاتية لذلك المسار بصيغة PDF أو DOCX.colorيضبط لون الشارة. استخدم رمزًا سادس عشريًا مثل#1D4ED8، أو اسم لون مثلnavy.route_keywordsتحدد الإعلانات التي يسندها Sweepy إلى هذا المسار.
يوجّه Sweepy كل إعلان بحسب تداخل الكلمات المفتاحية. ويعدّ التطابقات الكاملة للكلمات بين عنوان الإعلان ووصفه وبين route_keywords لكل مسار. ويسند Sweepy الإعلان إلى المسار ذي أعلى عدد. وعندما يتعادل مساران، يستخدم Sweepy الأول في قائمتك.
ترسل route_keywords الإعلان إلى سيرة ذاتية، ولا تغيّر نسبة التطابق قط. أضف العبارات التي تستخدمها كل عائلة وظيفية فعلًا في إعلاناتها.
إذا تركت tracks، استخدم Sweepy resume.path كمسار ضمني واحد.
مرادفات السيرة الذاتية
تحمل resume.synonyms مجموعات من الكلمات التي تعني الشيء نفسه. ويعامل Sweepy كل كلمة في المجموعة كمساوية للأخرى. فتعمل المطابقة في الاتجاهين. راجع إضافة مصطلحات خاصة بمجالك لقائمة التنسيق الأوسع.
resume:
synonyms:
- ["e-discovery", "ediscovery", "electronic discovery"]
- ["legal research", "case law research"]
- ["docketing", "case calendaring"]
- ["legal assistant", "legal secretary"]
- ["contract review", "contract analysis", "agreement review"]
تحتاج المجموعة إلى مصطلحين على الأقل، وإلا تجاهلها Sweepy. ويتجاهل الاحتساب حالة الأحرف ويتعامل مع صيغ المفرد والجمع المنتظمة. ولا يزال المحرك يطابق العبارات كاملة، فاسرد legal research وlegal researcher كمصطلحين منفصلين عندما تريد احتساب الاثنين.
يكتب أليكس e-discovery على سيرة ذاتية. والإعلان الذي يقول electronic discovery يطابقها الآن، لأن المصطلحين ينتميان إلى المجموعة نفسها.
أضف مجموعة كلما لاحظت الخطأ نفسه مرتين. انسخ صياغة الإعلان الحرفية إلى المجموعة بجانب مصطلحك.
أخطاء تنسيق شائعة
تعود معظم الملفات التعريفية المعطوبة إلى خطأين شائعين.
مسارات Windows تحتاج إلى شرطات مائلة أو شرطات مائلة عكسية مزدوجة. يقرأ YAML الشرطة المائلة العكسية الواحدة كمحرف إفلات. ومسار مثل C:\Users\Alex سيفسد الملف.
resume:
path: "C:/Users/Alex/Documents/Alex_Rivera_Resume.pdf" # ✅ works
# path: "C:\\Users\\Alex\\Documents\\Alex_Rivera_Resume.pdf" # ✅ also works
# path: "C:\Users\Alex\Documents\Alex_Rivera_Resume.pdf" # ❌ breaks YAML
شرطة مائلة عكسية واحدة شاردة في مسار تمنع Sweepy من قراءة ملفك التعريفي. ويكتب معالج الإعداد شرطات مائلة لك، فانسخ ذلك النمط عندما تحرّر يدويًا.
التعليقات تبدأ بـ #. يتجاهل Sweepy كل ما يأتي بعد # في ذلك السطر. واستخدم التعليقات لتدوين سبب أهمية قيمة ما، كما يفعل الملف التعريفي المثال.
الإزاحة تحدد البنية. أزح كل مستوى بمسافتين. وعلامة جدولة واحدة في أي مكان بالملف تفسد YAML.