Meta itemprop keywords populated with all keywords

When I use:

{{ template "_internal/twitter_cards.html" . }}
{{ template "_internal/opengraph.html" . }}
{{ template "_internal/schema.html" . }}
{{ template "_internal/google_news.html" . }}

I get a

<meta itemprop="keywords" content="foo, bar, baz" />

populated with all keywords ever used on the site.

I think this is a bug.

And there is an old bug for this.

Any new when this will be fixed?

Commented in the issue. Please consider list case when commenting. Metadata may appear more than once per page: https://search.google.com/structured-data/testing-tool/u/0/#url=https%3A%2F%2Fhackcabin.com.

In the meantime, you can copy the internal template to your own theme and modify it.

if .IsPage then use .Params.keywords (from front matter)
else use all tags on the site as keywords.

You can even use in config.toml [params.keywords] and use .Site.Params.keywords for the main site’s keywords.

{{if .IsPage}}
    {{ with .Params.keywords }}
    <meta itemprop="keywords" content="{{ range $i, $kw := first 10 . }}{{ if $i }},{{ end }}{{ $kw }}{{ end }}" />
    {{ end }}
{{ else }}
    <meta itemprop="keywords" content="{{ range $plural, $terms := .Site.Taxonomies }}{{ range $term, $val := $terms }}{{ printf "%s," $term }}{{ end }}{{ end }}" />
{{ end}} 

Any new when this will be fixed?

Sure. It’s a simple fix, if you are inclined to include it. I might take this up and submit a PR for it soon. I’m kind of busy these days. But it’s a very simple fix to propose.

https://github.com/spf13/hugo/blob/master/tpl/tplimpl/template_embedded.go#L225

Please follow the instructions here on how to contribute to Hugo: https://gohugo.io/contribute/