Hugoで構造化データ(JSON-LD)に対応する【Google推奨SEO】

thumbnail for this post

GoogleのWebマスター向けガイドラインの中の一つに「構造化データ: Google 検索デベロッパー ガイド」というものがあります。

構造化データは、検索エンジンが読みやすいように「json-ld」というデータ形式でそのページの概要等を記述したもので、ページのヘッダ内に記述します。

WordPressはこのあたりも考えて作られていますが、僕の使っているHugoというブログ作成ソフトは未対応のようなので、対応することにしました。

これで、このブログもGoogleに好かれる!

先に中身を磨け!

Googleの推奨する構造化データとは

Google 検索では、ページのコンテンツを理解するよう取り組んでいます。ページに構造化データを含めて、ページの内容についての明確な判断材料を提供すると、Google でそのページをより正確に理解できるようになります。構造化データとは、ページに関する情報を提供し、ページ コンテンツ(たとえばレシピのページでは、材料、加熱時間と加熱温度、カロリーなど)を分類するための標準化されたデータ形式です。
web 構造化データの仕組みについて | Google 検索デベロッパー ガイド | Google Developers

マークアップした情報は検索時に表示されるため、検索ユーザーの目を引くのにも役立ちますね。
(検索順位が上の方じゃないと表示されないようですが。。)

Hugoへの構造化データ導入

構造化データは「schema.org」というところで定義されていて、「json-ld」という書き方で書きます。
ブログの場合使える構造データは、
記事に対して

  • 「BlogPosting(ブログ記事)」
  • 「BreadcrumbList(パンくずリスト)」

サイト全体を通して

  • 「Organization(組織)」

といったあたりです。

schema.htmlの作成

/layouts/partials/schema.htmlというファイルを作成して構造データのテンプレートを作ります。
今回は「ブログ記事」と「ブログ記事が属するカテゴリ=パンくずリスト」としてデータを作ります。

<script type="application/ld+json">
[
	{{ if .IsPage }}
	{
	  "@context": "https://schema.org",
	  "@type": "BlogPosting",
	  "headline": {{ .Title }},
	  "image": {{ .Params.image | absURL }},
	  "datePublished": {{ .PublishDate }},
	  "dateModified": {{ .Lastmod }},
	  "author": {
	    "@type": "Person",
	    "name": {{ .Site.Params.author.name }}
	  },
	  "mainEntityOfPage": { "@type": "WebPage" },
	  "publisher": {
	    "@type": "Organization",
	    "name": {{ .Site.Params.header }},
	    "logo": {
	      "@type": "ImageObject",
	      "url": {{ .Site.Params.logo }}
	    }
	  },
	  "description": {{ .Summary | plainify | safeHTML }},
	  "keywords": [{{ range $i, $e := .Params.tags }}{{ if $i }}, {{ end }}{{ $e }}{{ end }}]
	},
	{
	  "@context": "https://schema.org",
	  "@type": "BreadcrumbList",
	  "itemListElement": [{
	    "@type": "ListItem",
	    "position": 1,
	    "name": {{ index .Params.categories 0 }},
	    "item": {{ path.Join (.Site.BaseURL) ("/categories/" | relLangURL) (index .Params.categories 0 | urlize) }}
	  }]
	},
	{{ end }}
	{
	  "@context": "https://schema.org",
	  "@type": "Organization",
	  "name": {{ .Site.Params.header }},
	  "url": {{ .Site.BaseURL }},
	  "sameAs": [
	    "https://twitter.com/{{ .Site.Params.twitter }}"
	  ]
	}
]
</script>

“@type”: “BlogPosting”, “@type”: “BreadcrumbList”, “@type”: “Organization”、のそれぞれのデータ構造を作っています。

.htmlの作成

/layouts/partials/_shared/head.htmlのヘッダ部分()/head»)にschema.htmlを読み込みます。

<head>
 ...
 ...
<!-- json-ld -->
    {{- partial "schema.html" . -}}
<!-- json-ld -->
</head>

config.tomlへのパラメータ設定

テンプレートで使うパラメータをconfig.tomlに設定しておきます。

 [params]
  logo = "/images/logo.png"
  header="enjoyall"
  twitter="heisakusaku"
 [params.author]
  name = "へーさく"

構造化データ(json-ld)が正しく動いているか試す

Googleがテスト用のサイトを用意しています。
構造化データ テストツール

ここに新しく生成されたページのURLを入れて右側に設定した構造化データが表示されればOKです。

enjoy!!

投げ銭していただける場合は、amazonで15円からできます。宛先はheisakuあっとcomichi.comで。

マイナスは入れられないの?

comments powered by Disqus