I’ve opted to use both JSON-LD and Microdata, and ignore RDFa which seems to have fallen out of fashion with XML.
The reason I’m using Microdata is I’ve found it an aid in keeping my HTML templates logical and neat, though it does sometimes confuse Google’s scrapers in that two different Metadata formats on the same page invites contradictions. For me, Microdata is in lieu of cluttering the HTML code with classes. I get the CSS to reference elements by itemprop rather than class.
Most Search structured data uses schema.org vocabulary, but you should rely on the Google Search Central documentation as definitive for Google Search behavior, rather than the schema.org documentation. There are more attributes and objects on schema.org that aren’t required by Google Search; they may be useful for other search engines, services, tools, and platforms. — Introduction to structured data markup in Google Search
schema.org type hierarchy https://schema.org/docs/datamodel.html
Types T ├ ├ ├ ├ ├ ├ ├ ├ │ ├ ├ └ h ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ i ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ n g A B C E I M O P └ P P T c i r v n e r e ─ l r a t o e e t d g r ─ a o x i C a n a i a s c d o o h t t n c n o P e u n n e i g a i n a c m v i l z t t E e b E a i n W l n t e t o e t i n i r i o t t k t n y y Google schema.
Homepage
W3 Spec
Validator
Google page on Event structured data
JSON-LD keywords start with an ampersand.
@context Every JSON-LD entry must have a "@context": "https://schema.org" at the top level. The @context is assumed to be inheritted by all descendents, so only needs to appear once.
@type Something like "@type": "MusicEvent", ie something in the schema.org vocabulary.
but each child object must have "@type" : "Place" or "@type" : "Offer" etc.
header tags
application-name author description generator Hugo inserts <meta name="generator" content="Hugo 0.122.0"> keywords referrer theme-color color-scheme https://www.dublincore.org/specifications/dublin-core/dc-html/
Using lighthouse output, these are what Google considers important:
Has a <meta name="viewport"> tag with width or initial-scale +34m The document does not use <meta http-equiv="refresh"> +26ms [user-scalable="no"] is not used in the <meta name="viewport"> element and the [maximum-scale] attribute is not less than 5. +77ms Document has a meta description +6ms
History
Every element is repeatable, so have to handle array, object, or atom. 15 Elements rfc5013
Contributor Coverage Creator Date Description Format Identifier Language Publisher Relation Rights Source Subject Title Type https://www.dublincore.org/specifications/dublin-core/dc-html/