Optimiser les liens internes d'un site web avec les extensions TYPO3

Auteurs : Wolfangel Cyril
Traduit par : Léo - W-Seils

Lire l’article complet en version originale

L'optimisation de la structure des sites web et la pertinence du contenu sont des éléments cruciaux pour une expérience utilisateur optimale et un bon référencement. Dans cet article, je vais partager mon parcours dans le développement d'une suite d'extensions TYPO3 conçues pour améliorer les liens internes des sites web.

Mon parcours dans l'optimisation sémantique

Mon aventure avec le web sémantique a commencé en 2008 avec l'extension TYPO3 Solr, une plateforme de recherche open-source. Alors que je me concentrais initialement sur l'amélioration des capacités de recherche, j'ai rapidement compris l'importance cruciale des liens internes - la façon dont les pages sont interconnectées au sein d'un site.

Les méthodes traditionnelles de création manuelle de liens ne sont pas seulement chronophages, elles sont aussi souvent inefficaces pour garantir une structure optimale. Cette constatation m'a amené à explorer l'utilisation des technologies sémantiques et de l'intelligence artificielle pour automatiser et optimiser les connexions entre les pages sur la base de la similarité du contenu.

Après des années de recherche et de développement, j'ai présenté la solution logicielle ATLAS (Automated Topological Link Analysis System) lors de la 25e édition de la Conférence Extraction and Knowledge Management (EGC25) en 2025.

Des résultats probants

Des études de cas ont démontré l'efficacité d'ATLAS :

  • Sur un site non optimisé de 50 pages :
    • Réduction du nombre de pages orphelines de 50 % à 0 %.
    • Augmentation de la densité des liens de 0,04% à 0,47%.
  • Sur un site déjà optimisé par un expert (60+ pages) :
    • Reproduction d'environ 50 % de la structure de liens de l'expert
    • Confirmation de la capacité à maintenir des structures de qualité

« ATLAS est un outil conçu pour automatiser la création de liens internes sur les sites web en utilisant des techniques avancées d'intelligence artificielle. Cette recherche s'inscrit dans un effort d'optimisation du référencement naturel par l'amélioration structurelle des sites web ».

Le travail présenté dans cet article a abouti au développement d'une suite d'extensions TYPO3 complémentaires, permettant l'application pratique des concepts théoriques explorés dans notre recherche.

Cette suite comprend trois extensions principales :

  • Page Link Insights (page_link_insights) : Un module de visualisation interactive des relations entre les pages, offrant une représentation graphique des liens internes et des mesures avancées (PageRank, centralité, détection des liens brisés).
  • Suggestion sémantique (semantic_suggestion) : Le cœur du système ATLAS est mis en œuvre sous la forme d'une extension TYPO3, proposant automatiquement des liens pertinents entre les pages sur la base de la similarité du contenu par le biais d'une analyse vectorielle.
  • Outils NLP (nlp_tools) : Une extension fondamentale fournissant les capacités de traitement du langage naturel nécessaires à l'analyse sémantique, y compris la détection de la langue, le filtrage des mots vides et la vectorisation du texte.

Ensemble, ces extensions forment une solution complète pour optimiser les liens internes des sites TYPO3.

Examinons chacune d'entre elles en détail.

Semantic-Suggestion est en production depuis le début du mois de mars 2025, et les résultats de Google Search Console sont impressionnants.

Page Link Insights : Visualisation et analyse

Page Link Insights est un module backend qui offre une visualisation interactive de la structure des liens internes d'un site web.

Caractéristiques principales

  • Visualisation D3.js : Représente les relations entre les pages à l'aide d'un graphique interactif orienté par la force.
  • Détection de liens : Identifie les différents types de liens (HTML, typolink, éléments de contenu).
  • Métriques avancées :
    • Calcul du PageRank pour déterminer les pages les plus influentes.
    • Scores de centralité pour identifier les pages pivots.
    • Détection des liens brisés.
  • Analyse thématique :
    • Extraction automatique de mots-clés significatifs.
    • Regroupement des pages par thèmes.
  • Statistiques globales :
    • Densité du réseau.
    • Identification des pages orphelines.
    • Nombre moyen de liens par page.

Présentation du module backend

Le module backend offre une interface claire et intuitive pour visualiser et comprendre la structure de votre site :

<?php
// Exemple de représentation d'un lien entre deux pages
$link = [
    'sourcePageId' => $sourceId,
    'targetPageId' => $targetId,
    'contentElement' => [
        'uid' => $element['uid'],
        'type' => $element['CType'],
        'header' => $element['header']
    ]
] ;

L'extension utilise un graphe D3.js pour visualiser les connexions entre les pages, avec des couleurs différentes représentant les différents types de liens et une taille de nœud proportionnelle à leur importance.

Suggestion sémantique : Automatisation intelligente des liens

La suggestion sémantique est le cœur du système, proposant automatiquement des liens pertinents entre les pages sur la base de la similarité du contenu.

Fonctionnement de la suggestion sémantique

  1. Analyse du contenu : L'extension extrait le contenu des pages du site.
  2. Vectorisation : Elle crée des vecteurs TF-IDF (Term Frequency-Inverse Document Frequency) pour représenter le contenu de chaque page.
  3. Calcul de similarité : La similarité cosinus est calculée entre les vecteurs des pages.
  4. Stockage dans la base de données : Les résultats sont stockés pour une performance optimale.
  5. Affichage frontal : Les suggestions les plus pertinentes sont affichées aux utilisateurs.
  6. Tâches programmées : Les calculs sont effectués en arrière-plan à intervalles réguliers.

Configuration flexible via TypoScript

plugin.tx_semanticsuggestion {
    settings {
        parentPageId = 1
        proximityThreshold = 0.7
        maxSuggestions = 3
        excerptLength = 150
        recursive = 1
        excludePages = 8,9,3456
        recencyWeight = 0.2

        analyzedFields {
            titre = 1.5
            description = 1.0
            keywords = 2.0
            résumé = 1.2
            contenu = 1.0
        }
    }
}

Cette configuration vous permet de :

  • Définir une page parente pour limiter l'analyse.
  • Ajuster le seuil de similarité (proximityThreshold).
  • Limiter le nombre de suggestions.
  • Pondérer les différents champs du contenu (titre, mots-clés, etc.).
  • Intégrer un facteur de récence pour favoriser les contenus récents.

Outils NLP : Le moteur d'analyse linguistique fondamental

L'extension NLP Tools constitue la base technique de l'analyse sémantique avancée au sein de la suite. Actuellement en 'beta' et compatible avec TYPO3 v12/v13, elle fournit un ensemble de services modulaires utilisables par d'autres extensions via l'injection de dépendances de TYPO3.

Ces services prennent en charge les opérations essentielles de traitement du langage naturel (NLP) :

  • Détection de la langue : Le service LanguageDetectionService identifie automatiquement la langue d'un texte (parmi FR, EN, DE, ES) sur la base d'une analyse n-gram des mots vides. Il peut également exploiter le contexte linguistique du frontend TYPO3 (sys_language_uid) s'il est disponible.
  • Prétraitement du texte : Le TextAnalysisService nettoie le texte (minuscules, suppression des accents), le segmente en mots (tokenisation) en gérant l'Unicode, et filtre les mots vides spécifiques à la langue détectée en utilisant la StopWordsFactory.
  • La troncature : Plutôt que la lemmatisation, l'extension effectue le stemming via le TextAnalysisService, qui utilise la bibliothèque externe wamania/php-stemmer pour réduire les mots à leur racine (supporte FR, EN, DE, ES).
  • Vectorisation du texte : Le service TextVectorizerService transforme les textes prétraités en représentations numériques :
    • Calcul des vecteurs TF-IDF (Term Frequency-Inverse Document Frequency) normalisés.
    • Création de matrices Document-Term (DTM).
    • Calcul de la similarité cosinus entre les vecteurs pour évaluer la proximité sémantique.
  • Regroupement : Le service TextClusteringService permet de regrouper des textes similaires à l'aide de différentes méthodes :
    • K-Means (basée sur les vecteurs TF-IDF).
    • Regroupement hiérarchique agglomératif (basé sur une matrice de distance).
    • Regroupement simple basé sur un seuil de similarité.
  • Modélisation des sujets : Le TopicModelingService offre des fonctionnalités permettant d'extraire des informations thématiques :
    • Extraction des termes les plus représentatifs d'un groupe de textes (basée sur TF-IDF).
    • Extraction de thèmes (approche simplifiée utilisant K-Means sur les textes).
    • Extraction de phrases clés d'un document.
  • Performance : Les services sont conçus pour être performants et intègrent la possibilité d'utiliser le système de cache de TYPO3 pour accélérer les calculs répétitifs.

Architecture modulaire et utilisation

L'extension suit les meilleures pratiques de TYPO3 avec une architecture basée sur des services injectables, facilitant son intégration :

  • Entrée : Commence par un texte brut.
  • Détection de la langue : LanguageDetectionService identifie la langue (peut utiliser le contexte TYPO3).
  • Noyau d'analyse de texte : TextAnalysisService prend le texte brut et la langue détectée pour :
    • Nettoyer le texte.
    • Le tokeniser en mots.
    • Supprimer les mots vides spécifiques à la langue (à l'aide de StopWordsFactory).
    • Dériver les mots (à l'aide de wamania/php-stemmer).
  • Le résultat est un texte traité (généralement une liste de tokens tronqués).
  • Traitement avancé (utilisation du texte traité et de la langue) :
    • TextVectorizerService : Convertit le texte traité provenant de plusieurs documents en vecteurs numériques (TF-IDF ou DTM) et calcule la similarité cosinus entre eux.
    • TextClusteringService : Utilise les vecteurs (provenant de TextVectorizerService) pour regrouper les documents similaires à l'aide d'algorithmes tels que K-Means.
    • TopicModelingService : Utilise le texte ou les vecteurs traités pour extraire des termes représentatifs, des thèmes (souvent par regroupement) ou des phrases clés.
  • Sorties directes : Les résultats de base tels que les tokens ou les n-grammes peuvent également être obtenus directement à partir de TextAnalysisService.
  • Préoccupations transversales :
    • Tous les services sont typiquement obtenus et utilisés via l'injection de dépendance de TYPO3.
    • La plupart des services à forte intensité de calcul (TextAnalysisService, TextVectorizerService, TextClusteringService, TopicModelingService) peuvent tirer parti de la structure de mise en cache de TYPO3 pour stocker et réutiliser les résultats, améliorant ainsi les performances.
  • Résultats : Les résultats (scores de similarité, clusters, sujets, etc.) sont alors disponibles pour être utilisés par l'application ou l'extension appelante (comme Semantic Suggestion ou PageLink Insights).
<?php

// Exemple d'injection et d'utilisation dans un autre service TYPO3
use Cywolf\NlpTools\Service\TextAnalysisService ;
use Cywolf\NlpTools\Service\LanguageDetectionService ;

class MyContentProcessor
{
    private TextAnalysisService $textAnalyzer ;
    private LanguageDetectionService $languageDetector ;

    public function __construct(
        Service d'analyse de texte $textAnalyzer,
        LanguageDetectionService $languageDetector
    ) {
        $this->textAnalyzer = $textAnalyzer ;
        $this->languageDetector = $languageDetector ;
    }

    public function analyze(string $rawText) : array
    {
        $language = $this->languageDetector->detectLanguage($rawText) ;

        // Nettoie, tokenise et supprime les mots vides.
        $cleanedText = $this->textAnalyzer->removeStopWords($rawText, $language) ;

        // Réduit les mots à leur racine (stemming)
        $stemmedWords = $this->textAnalyzer->stem($cleanedText, $language) ;

        // Retourne un tableau de mots tronqués
        return [
            'langue' => $language,
            'texte_traité' => implode(' ', $stemmedWords)
            // ... autres analyses possibles
        ] ;
    }
}

Grâce à cette base solide et à ses fonctionnalités étendues (qui vont au-delà de la simple suppression des mots vides pour inclure la vectorisation, le clustering et la modélisation des sujets), NLP Tools permet à d'autres extensions comme Semantic Suggestion d'effectuer des analyses sémantiques complexes et pertinentes.

Support multilingue

Un aspect particulièrement important de NLP Tools est sa prise en charge de plusieurs langues. L'extension comprend des dictionnaires de mots vides et des règles spécifiques pour plusieurs langues européennes :

  • Français
  • Anglais
  • Allemand
  • Espagnol

La détection automatique des langues permet de traiter correctement les sites multilingues sans configuration supplémentaire.

Intégration avec Solr pour une recherche améliorée

Outre l'optimisation des liens internes, la suite d'extensions s'intègre parfaitement à Apache Solr pour améliorer les résultats de recherche.

Pondération des résultats de recherche

Les métriques calculées par Page Link Insights (PageRank, centralité) sont utilisées pour pondérer les résultats de recherche :

plugin.tx_solr {
    search {
        pertinence {
            multiplicateur {
                pagerank = 2.0
                inboundLinks = 1.5
            }

            formula = sum(
                mul(queryNorm(dismax(v:1)), 1.0),
                mul(fieldValue(pagerank_f), 2.0),
                mul(fieldValue(inbound_links_i), 1.5)
            )
        }
    }
}

Cette configuration augmente la pertinence des pages importantes dans la structure du site lors des recherches effectuées par les utilisateurs.

Cas pratiques d'utilisation des extensions

Pour les sites web d'actualités

Sur les sites d'actualités, l'extension Semantic Suggestion peut générer automatiquement des sections « Articles connexes » en identifiant les articles partageant des thèmes similaires. Cela permet aux lecteurs de rester plus longtemps sur le site en leur offrant un contenu supplémentaire pertinent.

 

Pour les sites E-Commerce

Dans un contexte d'e-commerce, la suite d'extensions peut améliorer les recommandations de produits en analysant les descriptions et les catégories pour suggérer des produits complémentaires ou alternatifs, augmentant ainsi les opportunités de ventes croisées.

 

Pour les sites institutionnels

Pour les sites institutionnels comportant de nombreuses pages d'information, l'analyse thématique permet de créer des sections « Voir aussi » cohérentes, facilitant la navigation de l'utilisateur vers des informations connexes sans intervention manuelle.

Performance et optimisation

L'un des défis majeurs du traitement sémantique est la gestion des performances, en particulier sur les sites de grande taille. La suite d'extensions utilise plusieurs stratégies pour maintenir des performances optimales :

  • Stockage dans la base de données : Les calculs de similitude sont effectués par une tâche planifiée et stockés dans la base de données.
  • Mise en cache : les résultats intermédiaires sont mis en cache pour éviter les calculs inutiles.
  • Traitement asynchrone : Les calculs intensifs sont effectués en arrière-plan.
  • Optimisation des algorithmes : Les algorithmes de similarité sont optimisés pour les grands volumes de données.

Perspectives de développement futur

Les prochaines étapes de développement sont les suivantes

  • Intégration de calculs de similarité externes : Ajout de la possibilité d'utiliser un module externe.
  • Un support plus complet de nlp_tools pour alléger semantic_suggestion et page_link_insight.
  • De nouvelles visualisations pour représenter les groupes thématiques et les parcours optimaux des utilisateurs.
  • Mise au point d'une version stable.

Approche innovante de l'optimisation automatisée des liens internes

La suite d'extensions Page Link Insights, Semantic Suggestion, et NLP Tools pour TYPO3 représente une approche innovante pour l'optimisation automatique des liens internes des sites web. En combinant des techniques d'analyse linguistique, de vectorisation de contenu et de visualisation interactive, elle offre une solution complète pour améliorer la structure du site, l'expérience utilisateur et le référencement naturel (SEO).

Ces extensions transforment une tâche traditionnellement manuelle et chronophage en un processus semi-automatisé guidé par l'analyse sémantique du contenu. Le résultat est un site web plus cohérent, mieux structuré et offrant une meilleure expérience de navigation aux utilisateurs.

Dans un monde où le contenu ne cesse de croître et de se complexifier, ces outils offrent aux administrateurs de sites TYPO3 un avantage significatif dans le maintien d'une architecture de contenu optimale, favorisant ainsi un meilleur engagement de l'utilisateur et une visibilité accrue dans les moteurs de recherche.

Impliquez-vous !

Vous voulez optimiser la structure de liens internes de votre site TYPO3 ? Essayez ces extensions dès aujourd'hui :

Ce projet évolue activement, et j'apprécie les contributions, les commentaires et les tests de la part de la communauté TYPO3. Que vous ayez des idées d'amélioration, que vous ayez besoin d'aide pour la mise en œuvre ou que vous souhaitiez contribuer au code, n'hésitez pas à me contacter !

Rejoignez la conversation

Connectez-vous avec moi sur TYPO3 Slack dans le canal #semantic_suggestion pour discuter de ces extensions, partager vos expériences ou poser des questions.

Contact direct

N'hésitez pas à me contacter directement :

Travaillons ensemble pour améliorer la structure des sites web grâce à des liens internes intelligents et automatisés !

Do you want to publish
a guest blog post?

 

Contact us

Do you want to publish
your own case study?

 

Get in touch