I video sono dei contenuti che nel corso degli ultimi anni hanno assistito a un incremento incredibile. Anche nella Ricerca Google è diventato sempre più importante mostrare dei video esplicativi dell’argomento trattato.
In questo modo gli utenti hanno la possibilità di comprendere, fin da subito, quale sia il topic e se si tratta di un contenuto di loro interesse.
Proprio per questo, tra le best pratice di Google per gli e-commerce, è chiaramente indicato che inserire dati strutturati sul proprio sito, anche per quanto riguarda i video, può essere un’ottima strategia.
Tramite questi dati, infatti, il motore di ricerca può comprendere che il formato di quello specifico contenuto è un video e può così mostrarlo agli utenti come risultato di ricerca.
In questo articolo vedremo come inserire il markup relativo i video, quali linee guida rispettare e alcuni esempi.
Indice
Miglioramenti nei risultati di ricerca
Come abbiamo detto, i video sono tipologie di contenuti che possono aiutare tantissimo il sito a mostrare informazioni aggiuntive agli utenti.
Il corretto inserimento del markup relativo i video, inoltre, può fornire anche degli altri miglioramenti nei risultati di ricerca.
Vediamo quali:
- Badge dal vivo: il badge dal vivo è un elemento importantissimo in quanto sta a indicare che un video, di qualsiasi durata, è trasmesso in streaming. Questo tipo di badge è applicabile a diverse tipologie di contenuti come eventi sportivi, dirette di videogiochi, video di influencer, premiazioni.
- Attività da fare da casa: questo è un aiuto per tutte le persone che cercano attività da svolgere da casa. In tal senso Google suggerisce video che in un risultato avanzato immersivo.
- Momenti chiave: la funzione momenti chiave permette agli utenti di vedere i momenti salienti di un video e sfogliarli come fossero i capitoli di un libro, così da poter saltare da uno all’altro. In generale la Ricerca Google cerca di rilevare in autonomia i momenti chiave ma, in alternativa, puoi indicarli tu manualmente.
Esempi
Vediamo alcuni esempi pratici di codice da inserire per far si che Google mostri i video nei Risultati di Ricerca.
Tutti gli esempi sono in formato JSON-ND.
Risultato avanzato video standard
Quello di seguito è il risultato avanzato per un singolo video standard:
<html>
<head> <title>Introducing the self-driving bicycle in the Netherlands</title> <script type=”application/ld+json”> { “@context”: “https://schema.org”, “@type”: “VideoObject”, “name”: “Introducing the self-driving bicycle in the Netherlands”, “description”: “This spring, Google is introducing the self-driving bicycle in Amsterdam, the world’s premier cycling city. The Dutch cycle more than any other nation in the world, almost 900 kilometres per year per person, amounting to over 15 billion kilometres annually. The self-driving bicycle enables safe navigation through the city for Amsterdam residents, and furthers Google’s ambition to improve urban mobility with technology. Google Netherlands takes enormous pride in the fact that a Dutch team worked on this innovation that will have great impact in their home country.”, “thumbnailUrl”: [ “https://example.com/photos/1×1/photo.jpg”, “https://example.com/photos/4×3/photo.jpg”, “https://example.com/photos/16×9/photo.jpg” ], “uploadDate”: “2016-03-31T08:00:00+08:00”, “duration”: “PT1M54S”, “contentUrl”: “https://www.example.com/video/123/file.mp4”, “embedUrl”: “https://www.example.com/embed/123”, “interactionStatistic”: { “@type”: “InteractionCounter”, “interactionType”: { “@type”: “WatchAction” }, “userInteractionCount”: 5647018 }, “regionsAllowed”: “US,NL” } </script> </head> <body> </body> </html> |
Badge dal vivo
Vediamo invece un esempio di badge dal vivo:
html>
<head> <title>Bald Eagle at the Park – Livestream</title> <script type=”application/ld+json”> { “@context”: “https://schema.org”, “@type”: “VideoObject”, “contentURL”: “https://example.com/bald-eagle-at-the-park.mp4”, “description”: “Bald eagle at the park livestream.”, “duration”: “PT37M14S”, “embedUrl”: “https://example.com/bald-eagle-at-the-park”, “expires”: “2018-10-30T14:37:14+00:00”, “regionsAllowed”: “US”, “interactionStatistic”: { “@type”: “InteractionCounter”, “interactionType”: { “@type”: “WatchAction” }, “userInteractionCount”: 4756 }, “name”: “Bald eagle nest livestream!”, “thumbnailUrl”: “https://example.com/bald-eagle-at-the-park”, “uploadDate”: “2018-10-27T14:00:00+00:00”, “publication”: [ { “@type”: “BroadcastEvent”, “isLiveBroadcast”: true, “startDate”: “2018-10-27T14:00:00+00:00”, “endDate”: “2018-10-27T14:37:14+00:00” }, { “@type”: “BroadcastEvent”, “isLiveBroadcast”: true, “startDate”: “2018-10-27T18:00:00+00:00”, “endDate”: “2018-10-27T18:37:14+00:00” } ] } </script> </head> <body> </body> </html> |
Carosello host di video
Qui vediamo un esempio per inserire un carosello host di video. È importante specificare che al momento questa funzionalità non è accessibile a tutti:
<html>
<head> <title>Introducing the self-driving bicycle in the Netherlands</title> <script type=”application/ld+json”> { “@context”: “https://schema.org”, “@type”: “ItemList”, “itemListElement”: [ { “@type”: “VideoObject”, “position”: 1, “name”: “Introducing the self-driving bicycle in the Netherlands”, “url”: “https://www.example.com/video/self-driving-bicycle”, “description”: “This spring, Google is introducing the self-driving bicycle in Amsterdam, the world’s premier cycling city. The Dutch cycle more than any other nation in the world, almost 900 kilometres per year per person, amounting to over 15 billion kilometres annually. The self-driving bicycle enables safe navigation through the city for Amsterdam residents, and furthers Google’s ambition to improve urban mobility with technology. Google Netherlands takes enormous pride in the fact that a Dutch team worked on this innovation that will have great impact in their home country.”, “thumbnailUrl”: [ “https://www.example.com/video/self-driving-bicycle/1×1/photo.jpg”, “https://www.example.com/video/self-driving-bicycle/4×3/photo.jpg”, “https://www.example.com/video/self-driving-bicycle/16×9/photo.jpg” ], “uploadDate”: “2016-03-31T08:00:00+08:00”, “duration”: “PT1M54S”, “contentUrl”: “https://www.example.com/video/self-driving-bicycle/file.mp4”, “embedUrl”: “https://www.example.com/embed/self-driving-bicycle”, “interactionStatistic”: { “@type”: “InteractionCounter”, “interactionType”: { “@type”: “WatchAction” }, “userInteractionCount”: 5647018 } }, { “@type”: “VideoObject”, “position”: 2, “name”: “How to tie a tie”, “url”: “https://www.example.com/video/how-to-tie-a-tie”, “description”: “How to tie a four-in-hand knot.”, “thumbnailUrl”: [ “https://www.example.com/video/how-to-tie-a-tie/1×1/photo.jpg”, “https://www.example.com/video/how-to-tie-a-tie/4×3/photo.jpg”, “https://www.example.com/video/how-to-tie-a-tie/16×9/photo.jpg” ], “uploadDate”: “2019-02-28T08:00:00+08:00”, “duration”: “PT5M01S”, “contentUrl”: “https://www.example.com/video/how-to-tie-a-tie/file.mp4”, “embedUrl”: “https://www.example.com/embed/how-to-tie-a-tie”, “interactionStatistic”: { “@type”: “InteractionCounter”, “interactionType”: { “@type”: “WatchAction” }, “userInteractionCount”: 102111 } } ] } </script> </head> <body> </body> </html> |
Clip
Vediamo l’esempio per una clip:
<html>
<head> <title>Cat jumps over the fence</title> <script type=”application/ld+json”> { “@context”: “https://schema.org/”, “@type”: “VideoObject”, “name”: “Cat video”, “duration”: “P10M”, “uploadDate”: “2019-07-19”, “thumbnailUrl”: “http://www.example.com/cat.jpg”, “description”: “Watch this cat jump over a fence!”, “contentUrl”: “http://www.example.com/cat_video_full.mp4”, “regionsAllowed”: “US”, “hasPart”: [{ “@type”: “Clip”, “name”: “Cat jumps”, “startOffset”: 30, “endOffset”: 45, “url”: “http://www.example.com/example?t=30” }, { “@type”: “Clip”, “name”: “Cat misses the fence”, “startOffset”: 111, “endOffset”: 150, “url”: “http://www.example.com/example?t=111” }] } </script> </head> <body> </body> </html> |
SeekToAction
<html>
<head> <title>John Smith (@johnsmith123) on VideoApp: My daily workout! #stayingfit</title> <script type=”application/ld+json”> { “@context”: “https://schema.org”, “@type”: “VideoObject”, “potentialAction” : { “@type”: “SeekToAction”, “target”: “https://video.example.com/watch/videoID?t={seek_to_second_number}”, “startOffset-input”: “required name=seek_to_second_number” }, “name”: “My daily workout!”, “uploadDate”: “2020-07-19”, “thumbnailUrl”: “http://www.example.com/daily-workout.jpg”, “description”: “My daily workout!”, “embedUrl”: “https://example.com/daily-workout” } </script> </head> <body> </body> </html> |
Linee guida
Come detto, affinché il markup sia riconosciuto e mostrato correttamente da Google, è fondamentale seguire alcune linee guida.
Queste permettono di rientrare nei canoni di gradimento di Google in modo che i tuoi video risultino idonei per i Risultati di Ricerca.
Di seguito vediamo le linee guida specifiche per ogni singolo punto.
Linee guida per i badge dal vivo
Quando aggiungi il markup BroadcastEvent per segnalare a Google che il tuo contenuto è un video in streaming segui queste linee guida:
- Evita linguaggio volgare o offensivo nei dati strutturati.
- Il consiglio che ti do, per assicurarti che Google esegua correttamente la scansione, è di utilizzare l’API Indexing. In particolare quando inizia lo streaming, quando lo streaming si interrompe e ogni volta che si verifica un cambiamento nel markup e Google deve essere informato.
Linee guida per Timestamp su YouTube
Se il video è ospitato su YouTube, Google tenderà a ricavare da solo i momenti chiave del tuo video. Tuttavia, se lo desideri, puoi indicarglieli tu manualmente, in modo che mostri quelli che preferisci.
Per farlo attieniti ad alcune linee guida:
- Nel campo Timestamp indica l’inizio del video.
- Nel campo Etichetta indica il nome del clip.
- Formatta il timestamp nel seguente formato: [hour]:[minute]:[second]. Ricorda che se l’ora non è presente, non è necessario includerla.
- Specifica l’etichetta del timestamp sulla stessa riga del timestamp.
- Inserisci ogni timestamp su una nuova riga nella descrizione del video.
- Collega con precisione il timestamp al punto specifico del video che intendi indicare a Google.
- Assicurati che l’etichetta contenga almeno una parola.
- Elenca i timestamp in ordine cronologico.
Linee guida Clip e SeekToAction
Anche per quanto riguarda i dati strutturati di tipo Clip e SeekToAction esistono delle linee guida ben precise da rispettare.
Vediamo quali sono:
- Nell’URL deve essere necessariamente presente un link diretto che rimandi a un punto specifico del video diverso dall’inizio dello stesso.
- I dati strutturati di tipo VideoObject devono rimandare a una pagina in cui l’utente possa chiaramente guardare il video. Questo perché, nel caso in cui la pagina non presentasse il video, questa rappresenterebbe un’esperienza negativa per l’utente.
- Il video deve avere una durata non inferiore ai 30 secondi.
- Il video deve includere le proprietà obbligatorie inserite nella maniera corretta (come vedremo più avanti).
- Per i dati strutturati Clip: assicurati sempre che all’interno del video non ci siano due elementi Clip definiti in una stessa pagina e che abbiano lo stesso punto di inizio.
- Per i dati strutturati SeekToAction: Google deve essere sempre in grado di recuperare i file dei contenuti video.
Definizioni di tipi di dati strutturati
Oltre alle linee guida fornite da Google, affinché il motore di ricerca possa mostrare correttamente i dati strutturati nei Risultati di Ricerca avanzati, è fondamentale inserire correttamente i vari markup.
I markup presentano infatti delle proprietà obbligatorie che è necessario rispettare per un corretto inserimento. In più alcuni possono presentare anche delle proprietà consigliate, ovvero condizioni non necessarie al corretto funzionamento ma che possono comunque fornire informazioni aggiuntive a Google.
Vediamo insieme i singoli markup con le loro proprietà.
VideoObject
Il markup VideoObject permette a Google di comprendere che quello specifico elemento è un contenuto video.
Vediamo le proprietà obbligatorie:
Proprietà obbligatorie | |
---|---|
description | Text
Indica la descrizione del video. Ricorda che in questo caso i tag HTML vengono ignorati. |
name | Text
Indica il nome del video. |
thumbnailUrl | URL ripetuto.
Indica un URL che rimanda alla miniatura del video. |
uploadDate | Date
Indica la data in cui è stato caricato il video per la prima volta. |
Di seguito invece sono indicate le proprietà consigliate:
Proprietà consigliate | |
---|---|
contentUrl | URL
Indica un URL che rimanda all’effettivo file multimediale del video. Ricorda sempre di non inserire l’URL alla pagina del video ma all’effettivo file multimediale. |
duration | Duration
Indica la durata del video. |
embedUrl | URL
Indica un URL che rimanda a un player che riguarda il video specifico. Anche in questo caso ricorda di non inserire l’URL alla pagina del video ma all’effettivo player. |
expires | Date
Indica, se esiste ed è applicabile, la data dopo la quale il video non sarà più disponibile. |
interactionStatistic | InterationCounter
Indica il numero di volte in cui il video è stato guardato. |
publication | Se il tuo video è trasmesso dal vivo e vuoi che sia idoneo per il badge DAL VIVO, nidifica le proprietà BroadcastEvent in VideoObject. Come nell’esempio seguente:
<script type=”application/ld+json”> { “@context”: “https://schema.org/”, “@type”: “VideoObject”, “name”: “Cat video”, “publication”: { “@type”: “BroadcastEvent”, “name”: “First scheduled broadcast”, “isLiveBroadcast”: true, “startDate”: “2018-10-27T14:00:00+00:00”, “endDate”: “2018-10-27T14:37:14+00:00” } } </script> |
regionsAllowed | Place
Indica le zone geografiche in cui il tuo video è consentito. |
hasPart | Se il tuo video include segmenti importanti, nidifica le proprietà Clip obbligatorie in VideoObject. Come nell’esempio:
<script type=”application/ld+json”> { “@context”: “https://schema.org/”, “@type”: “VideoObject”, “name”: “Cat video”, “hasPart”: { “@type”: “Clip”, “name”: “Cat jumps”, “startOffset”: 30, “url”: “http://www.example.com/example?t=30” } } </script> |
BroadcastEvent
Il markup BroadcastEvent ti permette di ottenere il badge DAL VIVO quando trasmetti in streaming.
Di seguito le proprietà obbligatorie:
Proprietà obbligatorie | |
---|---|
publication | BroadcastEvent
Indica quando il video deve essere trasmesso in streaming. |
publication.endDate | DateTime
Indica ora e data di fine, previste o effettive, del live streaming. Ricorda sempre che endDate deve essere indicato quando il video termina e non mentre è ancora in diretta. |
publication.isLiveBroadcast | Booleano
Indicando con true questo valore, comunicherai che è stato o sarà trasmesso in live. |
publication.startDate | DateTime
Indica ora e data di inizio, previste o effettive del live streaming. Se questa data è nel futuro, il video deve ancora essere trasmesso. |
ItemList (accesso limitato)
ItemList è un markup che può aiutare Google a comprendere in maniera migliore le pagine della tua galleria video.
Come detto il markup ItemList non è al momento disponibile per tutti gli utenti.
Vediamo le proprietà obbligatorie:
Proprietà obbligatorie | |
---|---|
itemListElement | ListItem
Indica un’annotazione per una pagina elemento singola. |
ListItem.position | Integer
Indica la posizione ordinale della pagina elemento nell’elenco. Come nell’esempio di seguito: “itemListElement”: [ { “@type”: “VideoObject”, “position”: 1, … other VideoObject properties … }, { “@type”: “VideoObject”, “position”: 2, … other VideoObject properties … } ] |
ListItem.url | URL
Indica l’URL canonico della pagina elemento. |
Clip
Il markup Clip indica che sono presenti dei momenti chiave all’interno del video.
Vediamo le proprietà obbligatorie:
Proprietà obbligatorie | |
---|---|
name | Text
Indica un contenuto che descriva il contenuto della clip. |
startOffset | Number
Indica l’inizio della clip tramite il numero di secondi dall’inizio. |
url | URL
Indica un URL che rimanda all’inizio esatto della clip. |
Qui invece sono presenti le proprietà consigliate:
Proprietà consigliate | |
---|---|
endOffset | Number
Indica il punto in cui finisce la clip, espresso come secondi dall’inizio della stessa. |
SeekToAction
Infine l’ultimo markup è SeekToAction
Vediamo le proprietà obbligatorie:
Proprietà obbligatorie | |
---|---|
potentialAction | SeekToAction
Indica una potenziale azione. |
potentialAction.startOffset-input | Text
Indica la stringa segnaposto che Google indentificherà come la struttura del timestamp. |
potentialAction.target | EntryPoint
Indica l’URL della pagina che contiene questo VideoObject, incluso un segnaposto nella struttura dell’URL che indica dove Google può inserire il numero di secondi a cui saltare nel video. Ecco come Google comprende la struttura dell’URL e come formattare i tuoi timestamp. |
Hai bisogno di inserire i dati strutturati video sul tuo sito? Chiedi a Unidevs!
I dati strutturati video sono senza dubbio utilissimi in quanto permettono a Google di mostrare, nei Risultati di Ricerca avanzati gli elementi video all’utente.
In questo modo, lo stesso utente, può farsi un’idea più precisa del contenuto che andrà a visualizzare o del prodotto presente sul sito.
Come abbiamo visto, però, per inserire questo tipo di dati strutturati è fondamentale avere delle competenze tecniche ben precise. Anche il più piccolo errore nell’inserimento potrebbe infatti compromettere la corretta visualizzazione del risultati.
Hai bisogno di inserire i dati strutturati video sul tuo sito?
Chiedi a Unidevs! Analizzeremo il tuo sito in modo da comprendere come inserire al meglio i dati strutturati, per Google e per i tuoi clienti.