JSON-LD 構造化データの作成や更新日の表現方法

公開・更新日時を表現するためのJSON-LD

  • 「T」が日付と時間の区切り。ZがタイムゾーンがUTCという事を示す。
    • 2022-07-27T1:23:45Z は、日本時間(JST)2022年7月27日 1時23分45秒 を示す
  • 日本時間の表現
    • +0900+09:00 を用いて、 2022-07-27T01:23:45+09:00 と記載する
https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators
https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators
https://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators
Notice: You are in development mode or could not get the remote server

下記のコードは Hugo の Partial Template で呼び出すことを想定している。

{{ if .IsPage }}
    {{ $tags := .Params.tags | default (slice) }}
    {{ $cats := .Params.categories | default (slice) }}
    {{ $keys := .Params.keywords | default (slice) }}
    {{ $anyKeywords := (or (gt (len $cats) 0) (gt (len $tags) 0) (gt (len $keys) 0) ) }}
    {{ $joinKeywords := (slice) }}
    {{ $joinKeywords = ($joinKeywords | append $cats | append $tags | append $keys) | uniq }}
    {{ $eyecatchImage := "" }}
    {{ if .Params.featured_image }}
        {{ $eyecatchImage = .Params.featured_image | absURL }}
    {{ else if .Params.images }}
        {{ $eyecatchImage = index .Params.images 0 | absURL }}
    {{ else if $.Site.Params.noimageDefaultEyecatch }}
        {{ $eyecatchImage = $.Site.Params.noimageDefaultEyecatch| absURL }}
    {{ else if $.Site.Params.images }}
        {{ $eyecatchImage = index $.Site.Params.images 0 | absURL }}
    {{ end -}}

    <script type="application/ld+json">
    {
        "@context" : "http://schema.org",
        "@type" : "BlogPosting",
        "articleSection" : {{ .Section }},
        "name" : {{ .Title }},
        "headline" : {{ .Title }},
        "description" : {{ if .Description }}{{ .Description }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ end }}{{ end }},
        "inLanguage" : {{ .Site.LanguageCode }},
        "creator" : {{ .Params.author }},
        "accountablePerson" : {{ .Params.author }},
        "copyrightHolder" : {{ .Params.author }},
        "copyrightYear" : {{ .Date.Format "2006" }},
        "datePublished": {{ .PublishDate.Format "2006-01-02T15:04:05+09:00" }},
        "dateModified" : {{ .Lastmod.Format "2006-01-02T15:04:05+09:00" }},
        "url" : {{ .Permalink }},
        "mainEntityOfPage" : {{ .Permalink }},
        {{- with $eyecatchImage }}"image": {
            "@type": "ImageObject",
            "url": {{ . }}
        },{{ end }}
        {{- if $anyKeywords }}"keywords" : [{{ delimit $joinKeywords ", " }}],{{ end }}
        "author" : {
            "@type": "Person",
            "name": {{ .Params.author }}
        },
        {{- with .Site.Params.publisher -}}
        "publisher": {
            "@type": "Organization",
            "url": {{ $.Site.BaseURL }},
            {{ with index $.Site.Params.images 0 -}}
            "logo": {
                "@type": "ImageObject",
                "url": {{ . }}
            },
            {{- end }}
            "name": {{ $.Site.Params.author }}
        },
        {{- end }}
        "wordCount" : {{ .WordCount }}
    }
    </script>
{{ end }}

Google検索結果での取り扱い方法

ウェブページや動画の公開日や更新日を Google が判定できる状態にあり、その情報がユーザーの役に立つと判断された場合は、検索結果に日付が表示されることがあります。

上記の通り「判断された場合は」とあり、Googleのアルゴリズムに依存するので、コンテンツやサイトの管理者が明示的に指定することは困難といえる。ほか、1 つの日付要素だけに依存すると問題が生じやすいとのことで、複数の要素で日付を表現することで複合的推定断してくれる、つまり日付情報を捉えてくれる可能性が高くなると考えらる。

JSON-LDでの構造表現はもちろんのこと、記事でも正確な表現を工夫することが望ましい。以下、Google検索セントラルで例示されている表現方法。

  • 2019 年 2 月 4 日投稿
  • 2019 年 2 月 4 日公開
  • 最終更新日: 2018 年 2 月 14 日
  • 2019 年 2 月 14 日午後 8 時(東部標準時)更新
Google 検索結果に公開日付を表示する | Google 検索セントラル  |  ドキュメント  |  Google Developers
Google 検索結果に公開日付を表示する | Google 検索セントラル  |  ドキュメント  |  Google Developers
https://developers.google.com/search/docs/appearance/publication-dates?hl=ja
有用とみなされた場合、公開日が Google 検索結果で表示されることがあります。このガイドでは、Google に対して公開日を指定する方法について説明しています。