Ouvrir le Studio

Fasterize SEO Recommendations

Le node Fasterize SEO Recommendations applique des recettes SEO avancées (ciblage CSS, variables, datasets, CSR) à un site accéléré par Fasterize via l'API SEO Recommendation.

À quoi sert le node Fasterize SEO Recommendations ?

Le node Fasterize SEO Recommendations envoie des recettes SEO avancées à l’API Fasterize SEO Recommendation (/v2/configs/{id}/apps/seo-recommendation). Contrairement à Bulk SEO qui applique une règle par URL, ce node transmet des transformations basées sur des recettes avec ciblage par sélecteur CSS, substitution de variables, lookups dans des datasets et exécution côté client (CSR) optionnelle. Chaque recommandation déclare les URLs auxquelles elle s’applique et les recettes qui modifient le HTML à l’edge.

Cas d’usage typiques :

  • Injecter des données structurées (schema.org, OpenGraph) par sélecteur sur des templates de pages sans redéployer l’origine.
  • Réécrire des titres, ancres ou balises canonical à partir d’un dataset par URL (titres, descriptions, liens internes).
  • Mener des tests SEO contextuels qui dépendent du CSR pour modifier du HTML dynamique.
  • Déployer des correctifs au niveau du template (fil d’Ariane, hreflang, robots) sur une liste d’URLs en un seul appel.

Configuration rapide

Connecter votre intégration Fasterize

Ouvrez les paramètres du node et choisissez votre intégration Fasterize. Si elle n’existe pas, ajoutez le token API Fasterize dans Settings > Integrations.

Fournir les recommandations

Reliez un node amont (LLM, JSON Path Extractor, Input texte) qui produit le JSON des recommandations à l’entrée Recommendations. Le node accepte une liste de recommandations simplifiées, un objet de recommandation unique, ou l’export complet de l’API Fasterize avec settings.parameters.recommendations.

Exécuter et inspecter la réponse

Lancez le workflow. Le node retourne la réponse de l’API Fasterize sous forme de dict. Utilisez un JSON Path Extractor en aval pour lire quelles recettes ont été acceptées ou rejetées.

Connecter la sortie

Reliez le port de sortie au node suivant (notification, log, LLM aval) et nommez la variable de réception sur ce node pour capturer la réponse.

Paramètres de configuration

Champs requis

integration_id integration required

Intégration Fasterize — Sélectionne le workspace Fasterize et le token API utilisés pour authentifier l’appel. Le token détermine sur quel site Fasterize les recettes sont appliquées.

recommendations string required

Recommendations (JSON) — La charge utile des recettes. Trois formats sont acceptés et normalisés en interne :

  1. Une liste de recommandations simplifiées : [ { name, description, enabled, csr, datasets, variables, recipes, urls } ].
  2. Un objet de recommandation unique (avec url, urls, ou target.request_url.in). Il est automatiquement encapsulé dans une liste.
  3. L’export complet de l’API Fasterize contenant settings.parameters.recommendations — les recettes sont extraites et la liste d’URLs target.request_url.in est aplatie dans urls.

Chaque recommandation doit exposer au moins une URL via url, urls, ou target.request_url.in. Une chaîne JSON invalide déclenche une erreur avant l’appel API.

Tip

Si le node amont retourne déjà un dict structuré (par exemple un JSON Path Extractor ou un LLM en mode JSON), branchez-le directement — le node se charge de la sérialisation. Ne stringifiez la charge utile manuellement que si vous devez l’éditer avant l’envoi.

Que renvoie le node ?

Le node renvoie les données brutes de la réponse du service Fasterize SEO Recommendation. En cas de succès, la réponse décrit les recettes enregistrées pour les URLs ciblées ; en cas d’échec, elle retourne un dict d’erreur structuré sur lequel vous pouvez brancher de la logique.

Comment récupérer l’output ?

Tirez un lien depuis la sortie du node, connectez-le à l’entrée du node suivant et nommez votre propre variable (par exemple reco_response) sur ce node pour récupérer automatiquement la réponse.

output object

La réponse de l’API Fasterize SEO Recommendation sous forme de dict. Inspectez-la avec un JSON Path Extractor ou un LLM pour compter les recettes acceptées ou faire remonter les avertissements par URL.

Forme d’erreur quand la charge utile est manquante ou vide :

{ "error": "No recommendations provided" }

Forme d’erreur quand le JSON est mal formé :

{ "error": "Invalid JSON format for recommendations" }

Forme d’erreur quand aucun champ URL n’est trouvé :

{ "error": "Recommendations must include 'url' or 'urls' field or 'target.request_url.in' structure" }

Forme d’erreur quand l’appel au service échoue :

{ "error": "Failed to execute Fasterize SEO Recommendation" }

Exemples d’utilisation

Cas 1 : Injecter du schema.org via une recette

Vous voulez que chaque page produit d’une liste reçoive un bloc Product schema.org, généré par un LLM amont et injecté via Fasterize sans toucher au CMS.

Configuration :

  • Intégration Fasterize : Production
  • Recommendations (JSON) : branché sur la sortie du LLM

Charge utile (format simplifié) :

[
  {
    "name": "product-schema-org",
    "description": "Injecte le JSON-LD Product sur les pages produit",
    "enabled": true,
    "csr": false,
    "datasets": [],
    "variables": {},
    "recipes": [
      {
        "type": "html-target",
        "selector": "head",
        "position": "beforeend",
        "value": "<script type=\"application/ld+json\">{...}</script>"
      }
    ],
    "urls": [
      "https://example.com/product/widget-a",
      "https://example.com/product/widget-b"
    ]
  }
]

Le node encapsule la charge utile si nécessaire et la POST sur /v2/configs/{id}/apps/seo-recommendation.

Cas 2 : Rejouer un export complet de l’API Fasterize

Vous avez exporté les recommandations actives d’un autre environnement Fasterize et vous voulez les rejouer dans un environnement cible.

Configuration :

  • Recommendations (JSON) :
{
  "installed": true,
  "settings": {
    "parameters": {
      "recommendations": [
        {
          "name": "blog-canonical-fix",
          "description": "Force la canonical sur les pages catégorie du blog",
          "enabled": true,
          "csr": false,
          "datasets": [],
          "variables": {},
          "recipes": [
            { "type": "canonical", "value": "{{absolute_url}}" }
          ],
          "target": {
            "request_url": {
              "in": [
                "https://example.com/blog/category/news",
                "https://example.com/blog/category/guides"
              ]
            }
          }
        }
      ]
    }
  }
}

Le node détecte la structure settings.parameters.recommendations, extrait chaque recette et aplatit target.request_url.in dans le tableau urls avant l’envoi.

Problèmes courants

Le node retourne : No recommendations provided

Cause : L’entrée recommendations était vide, manquante, ou résolue à {}.

Solution : Vérifiez la connexion amont qui alimente Recommendations. Si le producteur est un LLM, placez un Find and Replace avant ce node pour retirer les fences Markdown (backticks) afin que le JSON parsé ne soit pas vide.

Le node retourne : Invalid JSON format for recommendations

Cause : La chaîne passée au node n’a pas pu être parsée en JSON — typiquement un préfixe parasite, un suffixe, ou un caractère non échappé laissé par un LLM.

Solution : Faites passer la sortie du LLM par un Find and Replace ou un HTML Cleaner d’abord, ou contraignez le prompt en mode JSON pour que le modèle renvoie strictement du JSON valide.

Le node retourne une erreur sur l'absence de champ url ou urls

Cause : Au moins une recommandation de la charge utile n’a aucune information de ciblage — ni url, ni urls, ni target.request_url.in.

Solution : Assurez-vous que chaque recommandation déclare les URLs auxquelles elle s’applique. Lors d’une conversion depuis un export Fasterize, conservez le tableau target.request_url.in intact ; le node l’aplatira pour vous.

Les recettes sont acceptées mais la page reste inchangée dans le navigateur

Cause : Fasterize met le HTML en cache à l’edge, donc les réponses cachées peuvent masquer les nouvelles recettes jusqu’à expiration du TTL.

Solution : Déclenchez une invalidation du cache Fasterize sur les URLs concernées après l’appel, ou attendez le TTL configuré avant de valider dans le navigateur. Pour des mutations DOM qui dépendent de la page vivante, mettez csr: true sur la recommandation pour que la recette s’exécute côté client.

Bonnes pratiques et pièges à éviter

Tip

Validez la charge utile en amont. Faites passer le JSON par un JSON Path Extractor ou une étape de validation avant ce node — Fasterize rejette tout le batch si une seule recette est mal formée ou référence un sélecteur inconnu.

Warning

Le CSR a un coût d’exécution. Les recettes marquées csr: true s’exécutent dans le navigateur et peuvent décaler la mise en page ou entrer en concurrence avec l’hydratation. N’utilisez le CSR que si le DOM ciblé n’est pas disponible dans le HTML rendu côté serveur.

Comment s’intègre-t-il dans un workflow ?

Fasterize SEO Recommendations est typiquement la dernière étape d’un pipeline de génération de recettes mêlant données structurées, lookups dans des datasets et contenu rédigé par LLM.

graph LR
    Source[Liste d'URLs] --> LLM[LLM rédige les recettes]
    LLM --> FR[Find and Replace nettoie le JSON]
    FR --> Reco[Fasterize SEO Recommendations]
    Reco --> Notify[Email Sender notifie l'équipe]

Nodes complémentaires