Aller au contenu

Speakable et SearchAction

unschema-graph fournit des helpers pour les types Schema.org SpeakableSpecification et SearchAction. Ces helpers valident et normalisent le balisage ; ils ne garantissent pas son utilisation par un moteur de recherche, un assistant ou un système d’IA.


La propriété speakable indique les sections d’une page adaptées à la synthèse vocale. La fonctionnalité correspondante de Google reste une bêta limitée, avec ses propres critères d’éligibilité et de disponibilité, sans garantie d’affichage. Consultez la documentation Google Search à jour avant d’en dépendre.

unschema-graph accepte des sélecteurs CSS directs qui sont automatiquement convertis en structures SpeakableSpecification valides.

import { Article } from '@unschema-graph/core';
const article = Article({
headline: 'Tendances Web en 2026',
image: 'https://mon-site.fr/cover.jpg',
datePublished: 'today',
author: 'Ada Lovelace',
// Chaîne unique de sélecteur CSS
speakable: '.resume-intro',
});

Sortie JSON-LD générée :

{
"@type": "Article",
"headline": "Tendances Web en 2026",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".resume-intro"]
}
}

Passez un tableau de sélecteurs ciblant les paragraphes audios essentiels :

const article = Article({
headline: 'Tendances Web en 2026',
image: 'https://mon-site.fr/cover.jpg',
datePublished: 'today',
author: 'Ada Lovelace',
speakable: ['h1.titre', '.chapo-lead', '#points-cles'],
});

Vous pouvez également passer un objet complet avec des expressions xpath :

const article = Article({
headline: 'Tendances Web en 2026',
image: 'https://mon-site.fr/cover.jpg',
datePublished: 'today',
author: 'Ada Lovelace',
speakable: {
'@type': 'SpeakableSpecification',
xpath: ['/html/head/title', '/html/body/main/article/p[1]'],
},
});

SearchAction décrit une opération de recherche dans Schema.org. Google a supprimé le champ de recherche Sitelinks de ses résultats en novembre 2024 : ce balisage ne doit donc pas être présenté comme un moyen d’activer cette fonctionnalité. Consultez l’annonce de dépréciation de Google.

unschema-graph simplifie cela grâce à la propriété raccourcie searchUrl ou au helper createSearchAction :

import { WebSite } from '@unschema-graph/core';
const site = WebSite({
'@id': '#website',
name: 'Rootage Media',
url: 'https://mon-site.fr',
// Raccourci avec variable de template :
searchUrl: 'https://mon-site.fr/recherche?q={search_term_string}',
});

Sortie JSON-LD générée :

{
"@type": "WebSite",
"@id": "https://mon-site.fr/#website",
"name": "Rootage Media",
"url": "https://mon-site.fr",
"potentialAction": {
"@type": "SearchAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://mon-site.fr/recherche?q={search_term_string}"
},
"query-input": "required name=search_term_string"
}
}

Vous pouvez aussi instancier une action de recherche personnalisée indépendamment :

import { createSearchAction } from '@unschema-graph/core';
const action = createSearchAction({
urlTemplate: 'https://mon-site.fr/recherche?terme={q}',
queryInput: 'required name=q',
});