構造化データの文法の一つ、JSON-LD

フィードやトラックバックが流行ったころも似たようなことが言われていた気がするが、最近はセマンティック・ウェブな世の中らしい。そこで、Nibbleblogの初期テーマの一つであるGoogleSimpleの以下の2つのスクリプトを次のとおり弄って、SEO的に期待されているJSON-LDを追加した。

  • /themes/google_simple/views/blog/includes/post.bit(記事一覧表示用スクリプト)
  • /themes/google_simple/views/post/includes/post.bit(個別記事表示用スクリプト)

コードの修正内容

2つのスクリプトへ追加する内容は同じ。

<script type="application/ld+json" charset="UTF-8">
{
  "@context": "http://schema.org",
  "@type": "BlogPosting",
  "@id": "<?php echo htmlspecialchars(Post::permalink(true), ENT_COMPAT, 'UTF-8') ?>",
  "url": "<?php echo htmlspecialchars(Post::permalink(true), ENT_COMPAT, 'UTF-8') ?>",
  "headline": "<?php echo htmlspecialchars(Post::title(), ENT_COMPAT, 'UTF-8') ?>",
  "description": "<?php echo htmlspecialchars(Post::description(), ENT_COMPAT, 'UTF-8') ?>",
  "articleSection": "<?php echo htmlspecialchars(Post::category(), ENT_COMPAT, 'UTF-8') ?>",
  "datePublished": "<?php echo htmlspecialchars(Post::published(), ENT_COMPAT, 'UTF-8') ?>",
  "isPartOf": {
    "@type": "Blog",
    "@id": "<?php echo htmlspecialchars(Blog::url(false), ENT_COMPAT, 'UTF-8') ?>",
    "url": "<?php echo htmlspecialchars(Blog::url(false), ENT_COMPAT, 'UTF-8') ?>",
    "name": "<?php echo htmlspecialchars(Blog::name(), ENT_COMPAT, 'UTF-8') ?>",
    "description": "<?php echo htmlspecialchars(Blog::slogan(), ENT_COMPAT, 'UTF-8') ?>"
  }
}
</script>

設定->地域->タイムスタンプ書式->カスタムで%Y-%m-%dと設定したら、上のコードを</header>の直下に追加するだけの簡単なお仕事。

構造化データの文法の一つ、RDF

これってトラックバックが流行っていたころ、その自動検知用の構造化データ(メタデータ)をRDF形式で以下のようにHTMLへ埋め込んでいたのと情報的にあまり変わらない気がする。メタデータの埋め込みといった手法は手を変え品を変え出てくるけど、長続きしないのかも。

<!--
<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
  rdf:about="記事のパーマリンク"
  dc:identifier="記事のパーマリンク"
  dc:title="記事の題名"
  dc:description="記事の要約"
  dc:creator="記事の著者"
  dc:date="記事の発行年月日・時間"
  trackback:ping="記事のトラックバックURL" />
</rdf:RDF>
-->