💼 Offres d'emploi (sites directs)
Outil protégé par mot de passe
Cet outil interroge des sites tiers depuis le serveur (analyse d'une page carrière, prospection, moisson). Utilise le même mot de passe que l'Audit de Sécurité (celui de l'assistant IA externe).
Recherche les offres d'emploi publiées sur le site des employeurs eux-mêmes
(ex. herculepro.com, u-emploi.com) — aucun job board,
aucun agrégateur. Pour chaque offre trouvée : le titre et le
département. Choisis un département, lance la recherche : chaque site du
catalogue est interrogé en direct et le tableau se remplit au fur et à mesure. Lecture seule.
🔍 Analyser une page carrière non cataloguée
Colle l'URL de la page « offres d'emploi » d'une entreprise : l'outil détecte tout seul comment la lire (JSON-LD, API WordPress, flux, sitemap, HTML) et en extrait les offres.
🤖 Prospection automatique — l'outil constitue lui-même sa liste
Plutôt que de lui fournir des URL, tu désignes un département : le prospecteur énumère les entreprises qui y ont leur siège (données SIRENE), retrouve leur site, prouve qu'il leur appartient (SIREN dans les mentions légales), cherche leur page emploi et n'ajoute la source que si de vraies offres y sont lisibles. Les employeurs trouvés alimentent automatiquement la recherche ci-dessus.
🌾 Moisson des portails carrière (journaux de certificats)
Second moteur de découverte, qui part des sites et non des entreprises. Tout certificat
TLS émis étant publié, une recherche par motif (recrutement.%,
nosoffres.%, %-recrute.fr…) énumère tous les
portails ainsi nommés, sans connaître les marques à l'avance. Chaque candidat est ensuite
vérifié puis ajouté s'il livre de vraies offres. La moisson elle-même tourne au cron
(crt.sh est lent) ; le bouton ci-dessous vérifie les candidats en attente.
Principe
L'outil ne consulte jamais un job board. Il lit uniquement les offres là où
l'employeur les publie lui-même, sur son propre domaine : page « nos offres »,
flux d'offres, sitemap. Le catalogue des sites est le fichier
data/offres-emploi-sources.json.
Comment le département est déterminé
- Code postal de l'offre (flux, JSON-LD, ou code postal présent dans l'URL de l'offre) — le plus fiable ;
- Ville de l'offre, résolue sur l'index des 36 000 communes françaises (homonymes : la commune la plus peuplée) ;
- Ville devinée dans le slug de l'URL de l'offre ;
- Page de l'offre relue quand la liste ne dit rien du lieu (nombre borné par recherche, résultat gardé 7 jours) ;
- Département déclaré par la source pour un employeur mono-site.
La colonne Source du dept. indique pour chaque ligne d'où vient l'information.
Ajouter un site au catalogue
Teste-le d'abord avec « Analyser une page carrière non cataloguée » :
la stratégie qui a fonctionné est affichée. Ajoute ensuite une entrée dans
data/offres-emploi-sources.json (le fichier documente ses propres champs en tête).
Prospection automatique
Le prospecteur (cron/prospect_departement.php) travaille en tâche de fond, un
département à la fois :
- Énumérer les entreprises du département via l'API publique Recherche d'entreprises (données SIRENE, sans clé), en écartant les agences d'intérim et de placement (NAF 78.xx) qui diffusent les offres des autres ;
- Retrouver le site : table SIREN → site officiel de Wikidata, sinon
domaines déduits du nom, du sigle et de l'enseigne, avec des règles pour les formulations
institutionnelles (Commune de Nantes →
nantes.fr) ; - Prouver l'appartenance : le SIREN doit apparaître dans la page ou ses mentions légales. Sans cette preuve, seule une concordance nom + domaine est acceptée, sinon le site est rejeté ;
- Trouver la page emploi (liens de l'accueil, chemins courants, second niveau), y compris un portail dédié hébergé chez un éditeur d'ATS ;
- Vérifier avant d'ajouter : la source n'est retenue que si au moins deux intitulés ressemblent vraiment à des postes. Sans ce garde-fou, une page « nos offres et services » serait prise pour une liste d'emplois.
Civilité : robots.txt respecté (une URL interdite n'est jamais
lue), une requête par seconde et par hôte, budget de requêtes et de durée borné
par passe, résultats mis en cache. Le prospecteur s'annonce comme robot ; certains sites derrière
un pare-feu applicatif refusent alors la page publique (403) — dans ce seul cas il retente une fois avec
un User-Agent de navigateur, ce qui est tracé dans la fiche.
Les découvertes sont écrites dans
data/offres-emploi-sources-decouvertes.json. Le catalogue curé
(offres-emploi-sources.json) n'est jamais modifié par le code et gagne toujours en cas de
doublon.
Accès protégé
Même mot de passe que l'Audit de Sécurité, le MCP Audit et l'assistant de documentation : celui de l'assistant IA externe. Il est échangé une fois contre un jeton valable 2 heures, partagé avec ces outils ; ensuite c'est le jeton qui accompagne chaque appel. Trois erreurs bloquent l'adresse IP 60 secondes, puis davantage.
Le contrôle est fait côté serveur sur chaque appel : sans jeton valide, aucune action n'aboutit, ni la recherche, ni la prospection, ni la moisson. Les tâches planifiées ne sont pas concernées : elles s'exécutent en ligne de commande et refusent d'être appelées par le web.
Limites
Certains sites (Cloudflare, pare-feu applicatif) renvoient une page de vérification au serveur : ils sont signalés bloqué et restés désactivés dans le catalogue avec la raison. D'autres chargent leurs offres en JavaScript depuis un outil externe : hors périmètre « site direct ». Les listes sont mises en cache 1 h (6 h par source) pour ne pas marteler les sites.