Dati strutturati per informazioni sui corsi (Course
e CourseInstance
)
![Illustrazione di come le informazioni relative a un corso potrebbero apparire nella Ricerca Google](https://developers-dot-devsite-v2-prod.appspot.com/static/search/docs/images/course-info-rich-result.png?authuser=6&hl=it)
Puoi aiutare le persone a trovare i contenuti dei tuoi corsi comunicando a Google informazioni in merito tramite i dati strutturati per informazioni sui corsi. Quando fornisci informazioni più dettagliate su un corso, come valutazioni dei recensori, prezzi e dettagli, Google può comprenderlo meglio e offrire un'esperienza completa alle persone tramite il risultato avanzato per informazioni sui corsi.
Sono disponibili due funzionalità per risultati avanzati di corsi che utilizzano lo stesso tipo di Course
di schema.org.
Se il tuo sito fornisce informazioni su dei corsi, puoi avere l'idoneità per tutte e due le funzionalità seguendo entrambe le guide all'implementazione:
- Elenco di corsi: un risultato avanzato che elenca i corsi dello stesso sito web.
- Informazioni sui corsi: un carosello che mostra informazioni dettagliate sui corsi da una varietà di siti web.
Disponibilità della funzionalità
Il risultato avanzato di informazioni sui corsi è disponibile in inglese in tutte le regioni in cui è disponibile la Ricerca Google. Ci auguriamo di supportare altri corsi in lingue diverse dall'inglese in futuro.
Come aggiungere dati strutturati
I dati strutturati sono un formato standardizzato per fornire informazioni su una pagina e classificarne i contenuti. Se non li hai mai utilizzati, scopri di più su come funzionano i dati strutturati.
Ecco una panoramica su come creare, testare e rilasciare i dati strutturati. Per una guida passo per passo su come aggiungere dati strutturati a una pagina web, consulta il codelab sui dati strutturati.
- Aggiungi le proprietà obbligatorie. In base al formato che utilizzi, scopri dove inserire i dati strutturati nella pagina.
- Segui le linee guida.
- Convalida il codice utilizzando lo strumento di Test dei risultati avanzati e correggi eventuali errori critici. Prendi in considerazione anche la possibilità di correggere eventuali problemi non critici che potrebbero essere segnalati nello strumento, in quanto possono contribuire a migliorare la qualità dei tuoi dati strutturati (tuttavia, questo non è necessario per l'idoneità per i risultati avanzati).
- Implementa alcune pagine che includono dati strutturati e utilizza lo strumento Controllo URL per verificare come Google vede la pagina. Assicurati che la pagina sia accessibile per Google e che non venga bloccata da file robots.txt, tag
noindex
o requisiti di accesso. Se la pagina non presenta problemi, puoi chiedere a Google di ripetere la scansione degli URL. - Per tenere Google informata delle future modifiche, ti consigliamo di inviare una Sitemap. Puoi automatizzare questa operazione con l'API Search Console Sitemap.
Esempio
Ecco un esempio di pagina di informazioni su un singolo corso.
<html> <head> <title>Introduction to Computer Science and Programming</title> <script type="application/ld+json"> { "@context": "https://schema.org/", "@id": "https://www.example.com/advancedCpp", "@type": "Course", "name": "Learn Advanced C++ Topics", "description": "Improve your C++ skills by learning advanced topics.", "publisher": { "@type": "Organization", "name": "CourseWebsite", "url": "www.examplecoursewebsite.com" }, "provider": { "@type": "Organization", "name": "Example University", "url": "www.example.com" }, "image": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ], "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4, "ratingCount": 1234, "reviewCount": 450 }, "offers": [{ "@type": "Offer", "category": "Paid", "priceCurrency": "EUR", "price": 10.99 }], "totalHistoricalEnrollment": 12345, "datePublished": "2024-03-21", "educationalLevel": "Advanced", "about": ["C++ Coding", "Backend Engineering"], "teaches": ["Practice and apply systems thinking to plan for change", "Understand how memory allocation works."], "financialAidEligible": "Scholarship Available", "inLanguage": "en", "availableLanguage": ["fr", "es"], "syllabusSections": [ { "@type": "Syllabus", "name": "Memory Allocation", "description": "Learn how memory is allocated when creating C++ variables.", "timeRequired": "PT6H" }, { "@type": "Syllabus", "name": "C++ Pointers", "description": "Learn what a C++ pointer is and when they are used.", "timeRequired": "PT11H" } ], "review": [ { "@type": "Review", "author": { "@type": "Person", "name": "Lou S." }, "datePublished": "2024-08-31", "reviewRating": { "@type": "Rating", "bestRating": 10, "ratingValue": 6 } }], "coursePrerequisites": [ "Basic understanding of C++ up to arrays and functions.", "https://www.example.com/beginnerCpp" ], "educationalCredentialAwarded": [{ "@type": "EducationalOccupationalCredential", "name": "CourseProvider Certificate", "url": "www.example.com", "credentialCategory": "Certificate", // offers only needed if the credential costs extra money. "offers": [{ "@type": "Offer", "category": "Paid", "price": 5, "priceCurrency": "USD" }] }], "video": { "@type": "VideoObject", "name": "Video name", "description": "A video previewing this course.", "uploadDate": "2024-03-28T08:00:00+08:00", "contentUrl": "www.example.come/mp4", "thumbnailUrl": "www.example.com/thumbnailurl.jpg" }, "hasCourseInstance": [ { // Blended, instructor-led course meeting 3 hours per day in July. "@type": "CourseInstance", "courseMode": "Blended", "location": "Example University", "courseSchedule": { "@type": "Schedule", "duration": "PT3H", "repeatFrequency": "Daily", "repeatCount": 31, "startDate": "2024-07-01", "endDate": "2024-07-31" }, "instructor": [{ "@type": "Person", "name": "Ira D.", "description": "Professor at X-University", "image": "http://example.com/person.jpg" }] }, { // Online self-paced course that takes 2 days to complete. "@type": "CourseInstance", "courseMode": "Online", "courseWorkload": "P2D" }], // Only required for course programs that link to child courses. "hasPart": [{ "@type": "Course", "name": "C++ Algorithms", "url": "https://www.example.com/cpp-algorithms", "description": "Learn how to code base algorithms in c++.", "provider": { "@type": "Organization", "name": "Example University", "url": "www.example.com" } }, { "@type": "Course", "name": "C++ Data Structures", "url": "https://www.example.com/cpp-data-structures", "description": "Learn about core c++ data structures.", "provider": { "@type": "Organization", "name": "Example University", "url": "www.example.com" } }] } </script> </head> <body> </body> </html>
Linee guida
Devi seguire queste linee guida affinché il tuo corso sia idoneo a essere mostrato come risultato avanzato di informazioni sui corsi nella Ricerca Google.
- Linee guida relative ai contenuti
- Nozioni di base sulla Ricerca
- Linee guida generali sui dati strutturati
Linee guida relative ai contenuti
Solo i contenuti formativi che rientrano nella seguente definizione di corso sono idonei per il risultato avanzato di informazioni sui corsi: una serie o un'unità di apprendimento che contiene seminari, lezioni o moduli su una particolare materia o argomento.
Il markup Course
deve essere su una pagina web che offre un corso completo e singolo oppure un programma di corsi. I
seguenti esempi non sono idonei per il risultato avanzato di informazioni sui corsi:
- Una pagina di riepilogo di titoli accademici
- Una pagina autonoma di un'esame
- Un evento pubblico generico come la "Giornata dell'astronomia"
- Un singolo video di 2 minuti del tipo "Come fare un panino"
Definizioni dei tipi di dati strutturati
Affinché i tuoi contenuti siano idonei per essere mostrati come risultato
avanzato sulla Ricerca Google, devi includere le proprietà obbligatorie Course
e CourseInstance
. Puoi anche includere le proprietà consigliate per aggiungere ulteriori informazioni sui contenuti e offrire così un'esperienza utente migliore.
Course
Un corso è una singola unità del programma che può essere seguita da sola o come parte di un percorso.
La definizione completa di Course
è disponibile all'indirizzo schema.org/Course.
Proprietà obbligatorie | |
---|---|
name |
Il titolo completo del corso. "name": "Intro to Statistics" |
description |
La descrizione del corso.
"description": "This course teaches the basics of statistical thinking." |
provider |
Informazioni sull'organizzazione che ha creato i contenuti del corso. "provider": { "@type": "Organization", "name": "Example University", "url": "www.exampleuniversity.com" } |
provider.name |
Text
Il nome del fornitore del corso. |
offers |
Informazioni sul prezzo totale per completare il corso, incluse le commissioni di servizio. Non indicare un prezzo idoneo solo per alcuni utenti (ad esempio, 20% di sconto per i nuovi utenti). Non includere in questo campo costi aggiuntivi per ottenere un certificato. Se è previsto, aggiungilo alla proprietà "offers": [{ "@type": "Offer", "category": "Paid", "priceCurrency": "EUR", "price": 10.99 }] |
offers.category |
Text
La categoria dei prezzi del corso. Usa uno dei seguenti valori:
|
hasCourseInstance |
Ogni corso deve avere almeno un'istanza del corso con informazioni che descrivano nel dettaglio l'offerta formativa. Consulta le proprietà obbligatorie e consigliate nella sezione "hasCourseInstance": [{ // Onsite, instructor-led class meeting weekly in August 2023 "@type": "CourseInstance", "courseMode": "Onsite", "location": "Example University", "courseSchedule": { "@type": "Schedule", "duration": "PT5H", "repeatCount": 4, "repeatFrequency": "Weekly", "startDate": "2023-08-01", "endDate": "2023-8-31" }, "instructor": [{ "@type": "Person", "name": "Kai S.", "description": "Professor at X-University", "image": "http://examplePerson.jpg" }] }] |
Proprietà consigliate | |
---|---|
about |
Descrive le competenze che l'utente svilupperà seguendo il corso, se applicabili. "about": ["Quantitative Analysis", "Critical Thinking"] |
aggregateRating |
Informazioni sulla valutazione media del corso in base alle valutazioni lasciate dagli utenti che lo hanno seguito, se applicabile. Segui le linee guida sugli snippet recensione e l'elenco di proprietà "aggregateRating": { "@type": "AggregateRating", "ratingValue": 4.8, "ratingCount": 255, "reviewCount": 189 } |
availableLanguage |
Sottotitoli, sottotitoli codificati o altre lingue in cui viene offerto il corso, se applicabile. Utilizza i codici a due lettere dell'elenco di codici ISO 639-1 alpha-2. "availableLanguage": ["fr", "es", "de"] |
coursePrerequisites |
Eventuali conoscenze pregresse necessarie per il corso, se applicabile. Si possono indicare descrivendole direttamente oppure inserendo un link a un altro corso (o entrambe le opzioni). "coursePrerequisites": ["Understanding of Algebra concepts like variables and functions", "https://www.coursewebsite.abc/algebra"] |
datePublished |
La data in cui il corso è stato pubblicato per la prima volta, se applicabile. Utilizza il formato di data 8601 (AAAA-MM-GG). "datePublished": "2019-03-21" |
educationalCredentialAwarded |
Informazioni sul certificato o sulla qualifica che l'utente può ottenere completando il corso, se applicabile. Se il riconoscimento ha un costo extra, specificalo. "educationalCredentialAwarded": [{ "@type": "EducationalOccupationalCredential", "name": "CourseProvider Certificate", "url": "www.examplecertificate.com", "credentialCategory": "Certificate", "offers": [{ "@type": "Offer", "category": "Paid", "priceCurrency": "USD", "price": 5 }] }] |
educationalCredentialAwarded.credentialCategory |
Text
Il tipo di riconoscimento che l'utente riceverà, se applicabile. Usa uno dei seguenti valori:
|
educationalCredentialAwarded.name |
Text
Il nome del riconoscimento, se applicabile. |
educationalCredentialAwarded.offers.category |
Text
Il tipo di prezzo del premio, se applicabile. Utilizza una delle seguenti categorie:
|
educationalCredentialAwarded.offers.price |
Number
Il prezzo numerico del riconoscimento, se applicabile. |
educationalCredentialAwarded.offers.priceCurrency |
Text
La valuta del prezzo del riconoscimento, nel formato di valuta ISO 4217 (codice di 3 lettere), se applicabile. |
educationalCredentialAwarded.url |
URL
Il link alla pagina del riconoscimento, se applicabile. |
educationalLevel |
Il livello di istruzione di riferimento per il corso, se applicabile. Seleziona uno dei seguenti valori.
"educationalLevel": "Beginner" |
financialAidEligible |
Eventuali borse di studio, piani di pagamento speciali o altre opportunità di aiuti finanziari per gli utenti che vogliono seguire il corso, se applicabile. "financialAidEligible": "Scholarships available for eligible users." |
image |
L'URL a un'immagine rappresentativa del corso, se applicabile. Utilizza immagini pertinenti al corso, anziché loghi o sottotitoli codificati. Ulteriori linee guida per le immagini:
Ad esempio: "image": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ] |
inLanguage |
La lingua principale in cui viene offerto il corso, se applicabile. Utilizza i codici a due lettere dell'elenco di codici ISO 639-1 alpha-2. "inLanguage": "en" |
offers.price |
Number
Il prezzo numerico del corso, se applicabile. Non includere altre informazioni in questo campo, come il simbolo della valuta. |
offers.priceCurrency |
Text
La valuta del prezzo del corso, nel formato di valuta ISO 4217 (codice di 3 lettere), se applicabile. |
provider.url |
URL
L'URL che indirizza alla home page del fornitore del corso, se applicabile. |
publisher |
Informazioni sull'organizzazione che pubblica e mette a disposizione il corso, se applicabile. "publisher": { "@type": "Organization", "name": "Course Website", "url": "www.example.com" } |
publisher.name |
Text
Il nome del soggetto che pubblica il corso, se applicabile. |
publisher.url |
URL
L'URL che indirizza alla home page dell soggetto che pubblica il corso, se applicabile. |
review |
Un elenco di recensioni degli utenti sul corso, se applicabile. Per scoprire di più, segui le linee guida sugli snippet recensione. "review": [{ "@type": "Review", "author": { "@type": "Person", "name": "Sasha J." }, "datePublished": "2021-09-22", "reviewRating": { "@type": "Rating", "ratingValue": 4 } }] |
syllabusSections |
Informazioni sui diversi moduli che compongono il corso, se applicabile. "syllabusSections": [{ "@type": "Syllabus", "name": "Algebra Review", "description": "Review prerequisite Algebra concepts.", "timeRequired": "PT2H30M" }, { "@type": "Syllabus", "name": "Statistics Terms", "description": "Learn the definitions of basic statistics terms.", "timeRequired": "PT5H" }] |
syllabusSections.description |
Text
Una descrizione degli argomenti del modulo, se applicabile. |
syllabusSections.name |
Text
Il nome del modulo del corso, se applicabile. |
syllabusSections.timeRequired |
Duration
Utilizza il formato della durata 8601, se applicabile.
Ad esempio, |
teaches |
I risultati formativi o le conoscenze specifiche che l'utente conseguirà seguendo il corso, se applicabile. "teaches": ["How to use visualization tools and graphs", "Why stats is important"] |
totalHistoricalEnrollment |
Il numero totale di utenti che si sono iscritti dalla data di creazione del corso, se applicabile. "totalHistoricalEnrollment": 80032 |
video |
Un'anteprima video o un trailer del corso, se applicabile. Segui le linee guida di "video": { "@type": "VideoObject", "name": "Video name", "description": "A video previewing this course.", "uploadDate": "2022-03-28T08:00:00+08:00", "contentUrl": "www.videourl.mp4", "thumbnailUrl": "www.thumbnailurl.jpg" } |
CourseInstance
La definizione completa di CourseInstance
è disponibile all'indirizzo schema.org/CourseInstance.
Ogni corso deve avere almeno una CourseInstance
con le proprietà obbligatorie compilate.
Proprietà obbligatorie | |
---|---|
courseMode |
Le modalità di erogazione del corso. Usa uno dei seguenti valori:
Se la lezione è "courseMode": "Online" |
courseSchedule |
Informazioni sul tempo che l'utente medio impiega per completare il corso, sulla base di una cadenza suggerita. Includi le date di inizio e di fine per i corsi che hanno un calendario fisso. Di seguito è riportato un esempio di corso a cadenza fissa che può essere iniziato in qualsiasi momento: // This course takes 6 weeks to complete. "courseSchedule": { "@type": "Schedule", "repeatCount": 6 "repeatFrequency": "Weekly", } Di seguito è riportato un esempio di corso a cadenza fissa entro un periodo di tempo prestabilito: // This course expects 1 hour per day during July 2023 "courseSchedule": { "@type": "Schedule", "duration": "PT1H", "repeatCount": 31 "repeatFrequency": "Daily", "startDate": "2023-07-01", "endDate": "2023-07-31" } |
courseSchedule.repeatCount |
Integer
Il valore numerico della durata del corso, espresso in unità |
courseSchedule.repeatFrequency |
Text
Le proprietà
|
courseWorkload |
Text
Questo campo rappresenta il tempo totale necessario per guardare tutti i video e completare tutti i compiti e gli esami del corso. Utilizza il formato di durata 8601. "courseWorkload": "PT22H" |
Proprietà consigliate | |
---|---|
courseSchedule.duration |
Duration
La cadenza consigliata relativa al tempo richiesto previsto per l'utente medio in unità Non specificare l'intera lunghezza del corso con questa proprietà. Utilizza la proprietà |
courseSchedule.endDate |
Date
La data di fine del corso, nel formato di data 8601 (AAAA-MM-GG), se applicabile. |
courseSchedule.startDate |
Date
La data d'inizio del corso, nel formato di data 8601 (AAAA-MM-GG), se applicabile. |
image |
URL
L'URL che rimanda a un'immagine del docente, se applicabile. Ulteriori linee guida per le immagini:
Ad esempio: "image": [ "https://example.com/photos/1x1/photo.jpg", "https://example.com/photos/4x3/photo.jpg", "https://example.com/photos/16x9/photo.jpg" ] |
instructor |
Informazioni sul docente del corso, se applicabile. "instructor": [{ "@type": "Person", "name": "Dana A.", "description": "Professor at X-University", "image": "http://examplePerson.jpg" }] |
instructor.description |
Text
La descrizione del docente e le sue qualifiche, se applicabile. |
instructor.name |
Text
Il nome del docente, se applicabile. |
location |
Il nome o l'indirizzo (o entrambi) della sede fisica in cui si terrà il corso, se applicabile. "courseMode": "Blended", "location": "Example High School" |
Programma di corsi
Un programma di corsi è una raccolta di corsi secondari; questi devono essere corsi indipendenti con pagine di destinazione e URL distinti.
Se la tua pagina web è un programma di corsi, includi le seguenti proprietà obbligatorie (oltre
alle altre proprietà obbligatorie elencate nelle sezioni Course
e
CourseInstance
)).
Proprietà obbligatorie | |
---|---|
hasPart |
L'elenco di corsi secondari che fanno parte di questo programma. "@context": "https://schema.org/", "@type": "Course", "name": "Learning Pathway: Knitting", "url": "www.example.com/knitprogram" // Fill the other required Course and CourseInstance properties "hasPart": [{ "@type": "Course", "name": "Intro to Knitting", "url": "www.example.com/knitbasics", "description": "Learn the basics of how to knit." }, { "@type": "Course", "name": "Knit a Sweater", "url": "www.example.com/knitsweater", "description": "Learn to knit an entire sweater." }] |
hasPart.name |
Text
Il titolo completo del corso secondario. |
hasPart.url |
URL
L'URL che indirizza alla pagina di destinazione del corso secondario. |
Proprietà consigliate | |
---|---|
hasPart.description |
Text
Una breve descrizione degli argomenti trattati nel corso secondario, se applicabile.
|
Monitorare i risultati avanzati con Search Console
Search Console è uno strumento che consente di monitorare il rendimento delle tue pagine in Ricerca Google. Registrarsi in Search Console non è obbligatorio per essere inclusi nei risultati di Ricerca Google, ma può aiutarti a capire e migliorare il modo in cui Google vede il tuo sito. Ti consigliamo di controllare Search Console nei seguenti casi:
- Dopo aver effettuato il deployment dei dati strutturati per la prima volta
- Dopo aver rilasciato nuovi modelli o aggiornato il codice
- Analisi periodica del traffico
Dopo aver effettuato il deployment dei dati strutturati per la prima volta
Dopo che Google ha indicizzato le tue pagine, cerca i problemi utilizzando il report sullo stato dei risultati avanzati pertinente. L'ideale sarebbe un aumento degli elementi validi e nessun aumento di quelli non validi. Se riscontri problemi nei dati strutturati:
- Correggi gli elementi non validi.
- Controlla un URL pubblicato per verificare se il problema persiste.
- Richiedi la convalida utilizzando il report sullo stato.
Dopo aver rilasciato nuovi modelli o aggiornato il codice
Quando apporti modifiche significative al tuo sito web, monitora l'aumento degli elementi non validi dei dati strutturati.- Se vedi un aumento di errori, forse hai reso disponibile un nuovo modello non funzionante oppure il tuo sito interagisce con il modello esistente in modo nuovo, ma non corretto.
- Se noti una diminuzione degli elementi validi (non associata a un aumento di quelli non validi), forse non stai più incorporando dati strutturati nelle tue pagine. Utilizza lo strumento Controllo URL per scoprire la causa del problema.
Analisi periodica del traffico
Analizza il traffico di Ricerca Google utilizzando il rapporto sul rendimento. I dati mostrano la frequenza con cui la pagina viene visualizzata nei risultati multimediali nella Ricerca, la frequenza con cui gli utenti fanno clic e qual è la posizione media che visualizzi nei risultati di ricerca. Puoi anche estrarre automaticamente questi risultati con l'API Search Console.Risoluzione dei problemi
Se hai difficoltà con l'implementazione o il debug dei dati strutturati, ecco alcune risorse che potrebbero esserti utili.
- Se utilizzi un sistema di gestione dei contenuti (CMS) o un'altra persona si sta occupando del tuo sito, chiedile di aiutarti. Assicurati di inoltrarle gli eventuali messaggi di Search Console che illustrano il problema.
- Google non garantisce che le funzionalità che utilizzano dati strutturati vengano visualizzate nei risultati di ricerca. Per un elenco delle cause comuni per cui i tuoi contenuti potrebbero non essere mostrati da Google in un risultato avanzato consulta le linee guida generali sui dati strutturati.
- I tuoi dati strutturati potrebbero contenere un errore. Consulta l'elenco degli errori nei dati strutturati e il report sui dati strutturati non analizzabili.
- Se i dati strutturati della tua pagina sono interessati da un'azione manuale, i dati strutturati sulla pagina verranno ignorati (sebbene la pagina possa ancora essere visualizzata nei risultati della Ricerca Google). Per risolvere i problemi relativi ai dati strutturati, utilizza il report Azioni manuali.
- Consulta nuovamente le linee guida per verificare se i tuoi contenuti non sono conformi. Il problema può essere causato dall'utilizzo di contenuti di spam o di markup di spam. Tuttavia, il problema potrebbe non riguardare la sintassi e perciò non essere identificato dal Test dei risultati avanzati.
- Risolvi i problemi relativi a risultati avanzati mancanti o a un calo del numero totale di risultati avanzati.
- Lascia del tempo per le nuove operazioni di scansione e indicizzazione. Ricorda che possono passare diversi giorni dopo la pubblicazione di una pagina prima che Google la rilevi e la sottoponga a scansione. Per domande generali sulla scansione e sull'indicizzazione, consulta le Domande frequenti (FAQ) relative alla scansione e all'indicizzazione della Ricerca Google.
- Pubblica una domanda nel forum di Google Search Central.