This repository is designed to generate an XML feed based on job posting structured data using a Python script. It automates the process of generating an XML file for job postings, ensuring compliance with structured data standards and facilitating integrations with third-party systems.
The script performs the following steps:
- Loads the main jobs page and extracts links to individual job postings.
- Fetches and parses each job posting page to retrieve job details.
- Extracts relevant information from the JSON-LD script embedded in each job posting.
- Compiles the job details into an RSS feed format.
- Saves the RSS feed to an XML file.
- Generates an XML feed (
feed.xml
) for job postings. - Scheduled updates using GitHub Actions.
- Customizable logic for parsing and generating structured data.
- Lightweight and efficient.
- Python 3.7 or higher.
- Required Python dependencies (see
requirements.txt
). - GitHub Actions configured with appropriate permissions for automation.
The repository includes a GitHub Actions workflow to automate the generation and commit of the feed.xml
file:
The workflow is triggered by:
- Scheduled runs (every hour).
- Manual dispatch.
- The script runs via GitHub Actions.
- The
feed.xml
file is updated with the latest job posting data. - Changes are committed and pushed to the repository.
Ensure the following secrets are added to your GitHub repository:
GH_TOKEN
: A GitHub token withwrite
permissions to allow automated commits.
The schedule is defined in the workflow file (.github/workflows/run-main.yml
). To update the schedule:
schedule:
- cron: '0 * * * *' # Runs every hour
Modify the cron expression as needed.
├── main.py # Python script to generate the XML feed
├── feed.xml # Generated XML file
├── requirements.txt # Python dependencies
├── .github/workflows # GitHub Actions workflow configuration
├── README.md # Project documentation
This project is licensed under the MIT License. See the LICENSE file for details.
If you encounter any issues or have questions, feel free to open an issue in this repository.