Scraper Agent Setup Guide
This section is for scraper-agent-specific setup only.
Use this guide to configure the Hermes profile that handles job scraping, scheduling, and upstream job-description collection for the resume workflow.
Profile model
Run the scraper in a dedicated Hermes profile such as scraper.
Do not run it in the same Hermes profile as the resume agent. The scraper profile should stay isolated because it owns:
- scraping credentials
- scraper ingest secrets
- browser automation dependencies
- cron scheduling for job collection
The resume profile should stay focused on candidate-profile, pool content, and resume-pipeline-orchestrator.
Files in this repo
The current scraper files are:
scraper/jobright.pyscraper/tiny_fish_job_description.pyscraper/.env.example
The repository currently gives you the scraper scripts and the env template. The Hermes wrapper skill for prompts like scrape 20 jobs should be created inside the dedicated scraper profile.
jobright.py is the main batch-ingest scraper. It logs into Jobright, collects jobs, opens each detail page in the same browser session, and posts those jobs to the dashboard ingest endpoint.
tiny_fish_job_description.py is a utility fetcher for individual job-description URLs. It requires a paid Tiny Fish API key and writes Markdown output locally.
Environment configuration
Create a real .env file for the scraper profile based on scraper/.env.example.
Current variables:
JOBRIGHT_EMAIL=""
JOBRIGHT_PASSWORD=""
TINYFISH_API_KEY=your_tinyfish_api_key_here
SCRAPER_INGEST_URL="https://your-dashboard.example.com/api/job-descriptions"
SCRAPER_INGEST_SECRET=your_scraper_ingest_secret_here
Rules:
- keep real values out of git
- set
SCRAPER_INGEST_URLto your real dashboard ingest endpoint - set
SCRAPER_INGEST_SECRETto the backend secret or token used for scraper ingestion - only set
TINYFISH_API_KEYif you plan to use Tiny Fish
Jobright scraper usage
Use jobright.py when you want to collect a batch of Jobright jobs and ingest them into the dashboard queue.
Typical manual commands:
python scraper/jobright.py --xvfb --jobs 20
python scraper/jobright.py --xvfb --jobs 5 --debug
python scraper/jobright.py --xvfb --jobs 3 --dry-run
Operational notes:
--jobscontrols target batch size--xvfbis the normal VPS mode because the scraper is not reliably usable as a true headless browser flow--dry-runcollects links without scraping job details--debughelps when the site layout or login flow changes
Tiny Fish usage
Use tiny_fish_job_description.py when you already have a specific job URL and want to fetch its content outside Jobright.
Example:
python scraper/tiny_fish_job_description.py --url https://example.com/job/123
Important tradeoff:
- Tiny Fish is more general but paid
- Jobright is free but limited to the Jobright platform
Hermes skill pattern
For day-to-day operation, add a scraper skill inside the scraper Hermes profile that acts as a thin wrapper around the script.
The intended operator experience is:
- you tell Hermes
scrape 20 jobs - the scraper profile invokes the Jobright scraper skill
- the skill runs the correct command for that environment
That wrapper skill should:
- accept the requested job count
- run
scraper/jobright.pywith--xvfbin VPS environments - use the scraper profile's env file and secrets
- report how many jobs were ingested, skipped, or failed
This is the preferred path over manually typing the full Python command every time.
Keep the division clear:
- repository assets: scraper scripts, env template, docs
- scraper profile asset: the Hermes skill that invokes those scripts
Cron mode
The scraper profile is a good cron target because it is isolated from the resume agent and can run independently.
Typical operating pattern:
- schedule the scraper profile in the morning
- ingest fresh jobs into the dashboard queue
- run the resume profile later against those queued JDs
This separation makes failures easier to diagnose. If scraping breaks, resume generation is still isolated. If resume generation breaks, scraping can continue to keep the queue fresh.
VPS requirement
The current Jobright scraper uses browser automation and should not be documented as a pure headless flow.
For VPS deployment:
- install Hermes on the VPS
- use the dedicated scraper profile there
- make sure the machine can provide a browser display context
- run the scraper with
--xvfb
If you are using the reference always-on Hermes VPS setup, this scraper belongs there rather than on a laptop that may go offline.
If you want the actual scraper files behind this setup guide, use the public source repository.
hermes-autonomous-resume on GitHub