EN
Copied
Modules

PageSpeed

PageSpeed

Lance un audit officiel Google PageSpeed Insights sur le site de chaque prospect. La sortie classe la liste par qualité de site, expose les performeurs les plus faibles, et fait remonter un angle de pitch concret : un site lent ou cassé est une amélioration à proposer.

Le module ne crawle jamais un site directement. La mesure est déléguée à Google, ce qui garde le signal comparable d'un prospect à l'autre.

Entrées

Le job accepte un tableau de dictionnaires POI. Seul site_web est réellement utilisé ; tout autre champ est repassé tel quel à la sortie.

Champ Type Requis Notes
items list[dict] oui 1 à 10 000 POI. Les lignes sans site_web sont conservées et marquées.
source_job_id string non UUID du job amont (typiquement un scrap Google Maps).
{
  "nom": "Studio Exemple",
  "adresse": "1 rue de l'Exemple, 00000 Exempleville",
  "site_web": "https://example.com"
}

Sorties

Une ligne par ligne d'entrée, colonnes d'origine conservées. Des cellules vides signifient que l'URL n'a pas pu être notée (voir Erreurs). Le test tourne avec le profil mobile.

Colonne Type Description
tested_url, strategy, fetch_time string URL testée, profil utilisé (mobile) et heure du test.
perf_score int 0-100 Score de performance Lighthouse.
seo_score int 0-100 Score SEO Lighthouse.
a11y_score int 0-100 Score d'accessibilité Lighthouse.
best_practices_score int 0-100 Score de bonnes pratiques Lighthouse.
perf_verdict string À refondre sous 50, À améliorer sous 90, OK sinon.
lcp_ms, fcp_ms, tti_ms, tbt_ms, speed_index_ms, ttfb_lab_ms int Mesures de laboratoire en millisecondes. Un bon LCP est sous 2500.
cls float Cumulative Layout Shift. Bon sous 0,1.
crux_overall, crux_lcp_p75_ms, crux_fcp_p75_ms, crux_cls_p75, crux_inp_p75_ms mixte Données terrain de vrais utilisateurs Chrome pour cette URL, quand Google a assez de trafic. L'INP n'existe qu'ici.
origin_crux_overall, origin_crux_lcp_p75_ms mixte Mêmes données terrain pour l'ensemble du site.
top_opportunity_1, top_opportunity_2, top_opportunity_3 string Les trois audits en échec au gain estimé le plus fort, prêts à citer dans un message.
error string Raison pour laquelle la ligne n'a pas pu être notée, le cas échéant.

Le fichier porte aussi le poids de la page (total_byte_weight_kb, weight_*_kb), les gains estimés (savings_*), des indicateurs techniques (uses_*, has_*), les en-têtes HTTP et de sécurité, les cookies, le certificat TLS, les balises meta et comptages du DOM, les enregistrements DNS (MX, SPF, DMARC), une note de sécurité (mozilla_grade, mozilla_score) et la présence de robots.txt et sitemap.xml. Le registre liste accessibility_score, lcp et inp sous produces : ce sont des noms de signaux pour a11y_score, lcp_ms et crux_inp_p75_ms.

Cycle de vie

Cycle de vie standard des jobs outsend ; voir /docs/fr/concepts/jobs-lifecycle. La progression est reportée en sites ; le compteur de résultats en audits.

Pipeline

needs:     site_web
produces:  perf_score, accessibility_score, seo_score,
           best_practices_score, lcp, cls, inp

PageSpeed est un module check : il consomme une liste et retourne la même liste enrichie. Schéma typique : partir d'un job scrap, puis lancer pagespeed sur les POI résultants.

Endpoints

Créer un job

POST /api/jobs/pagespeed
Content-Type: application/json
{
  "items": [
    { "nom": "Studio Exemple", "site_web": "https://example.com" }
  ],
  "source_job_id": "8b1f...-uuid"
}

Réponse : enveloppe JobPublic portant l'UUID du job, son statut et le coût EF réservé pour le suivi.

Lire un job

GET  /api/jobs/{job_id}
GET  /api/jobs/{job_id}/results
GET  /api/jobs/{job_id}/export.csv

L'export CSV est disponible une fois le job en completed.

Limites

Voir /docs/fr/concepts/limits. L'amont est l'offre gratuite de Google PSI v5 (une URL par requête) ; les pics au-dessus du quota par clé sont reprogrammés dans le job plutôt qu'échoués.

Erreurs

Condition Comportement
POI sans site_web Ligne conservée, colonnes d'audit vides, error vaut URL absente ou invalide.
URL injoignable ou réponse non-HTML Ligne conservée, scores vides, erreur notée sur la ligne.
Quota PSI épuisé Les URL touchées sont remises en file dans le job ; si le quota reste épuisé la ligne est marquée failed et le reste continue.
Site bloque le fetcher PSI Ligne marquée failed avec le code d'erreur amont ; le job reste sain.
items vide 400 Bad Request, aucun job créé.
PAGESPEED_API_KEY absente côté serveur Job créé mais bascule immédiatement en failed.

Une ligne en échec ne bloque jamais le job : le contrat est « chaque POI d'entrée reçoit une ligne de sortie, scorée ou expliquée ».

Pour aller plus loin