連載「技術ブログの収益化準備」第2回

個人ブログのプライバシーポリシーと Amazon アソシエイトの表記|アドセンス・GA4 の要件を確認して Astro で表示する

この回でやること

連載「技術ブログの収益化準備」の第2回です。広告やアフィリエイトを始める前に、サイトに次の2つを用意しました。

  • プライバシーポリシーのページ(/privacy-policy/)
  • 全ページのフッターに出す、Amazon アソシエイトの表記

この記事では、Google アドセンス・Google アナリティクス・Amazon アソシエイトの規約で何が求められているかを公式ページで確認し、プライバシーポリシーにどんな項目を入れたかをまとめます。後半では、Markdown で書いたポリシーを Astro で表示する方法と、日本語の文中に書いた URL のリンクが崩れた件を紹介します。

なお、アドセンスはまだ審査に申し込む前ですが、使う前提で先にポリシーを書いておきました。規約の解釈や法律上の判断を示すものではないので、実際の要件は記事内でリンクしている公式ページを確認してください。

前回の記事:ステマ規制に対応したブログの PR 表記

各サービスで求められていること

Google アナリティクス

Google アナリティクスの利用規約の第7条(プライバシー)では、利用者に次のことを求めています。

  • プライバシーポリシーを公開し、Cookie などデータの収集に使われる技術の使用について、そのポリシーで通知すること
  • Google アナリティクスを使っていることと、Google アナリティクスでデータが収集・処理される仕組みについても開示すること

参考:Google アナリティクス利用規約(Google Analytics Terms of Service)

Google アドセンス

アドセンスのヘルプ「必須コンテンツ」では、プライバシーポリシーに次の内容を入れるよう案内しています(要約)。

  • Google などの第三者配信事業者が Cookie を使用して、ユーザーがそのサイトや他のサイトに過去にアクセスした際の情報に基づいて広告を配信すること
  • Google が広告 Cookie を使用することにより、Google やそのパートナーが、ユーザーのアクセス情報に基づいて適切な広告を表示できること
  • ユーザーは広告設定でパーソナライズド広告を無効にできること(aboutads.info で第三者配信事業者の Cookie を無効にできることも案内する)

参考:必須コンテンツ - Google AdSense ヘルプ

Amazon アソシエイト

Amazon アソシエイト・プログラム運営規約の第5条では、サイト上のどこかに、次の文言を目立つように明示することを求めています。

Amazonのアソシエイトとして、[乙の名称を挿入]は適格販売により収入を得ています。

「乙の名称」には、自分のサイト名などを入れます。このサイトでは「Amazonのアソシエイトとして、cyber-blow は適格販売により収入を得ています。」としています。

参考:Amazonアソシエイト・プログラム運営規約

プライバシーポリシーに入れた項目

ポリシーは15の項目で構成しています。全文はプライバシーポリシーのページにあるので、ここでは何を書いたかだけを紹介します。

#

項目

書いたこと

1

運営者情報

サイト名、運営者(ハンドルネーム)、連絡先のメールアドレス。住所は請求があれば開示

2

取得する情報

会員登録の機能はないこと。お問い合わせの際の情報と、閲覧時のアクセス情報

3

利用目的

問い合わせへの回答、サイトの改善、広告の配信、不正アクセスの防止

4

個人情報の安全管理

取り扱う人を運営者に限定、二段階認証、SSL/TLS など

5

個人情報の第三者提供

法令に基づく場合を除き、本人の同意なしに提供しない

6

外部サービスの利用と利用者情報の外部送信

送信先・サービス・送信される情報・利用目的の表。広告の配信とアクセス解析の説明

7

アフィリエイトプログラムと広告表記

アフィリエイトに参加していること、Amazon アソシエイトの文言、PR表記の方針

8

Cookie について

Cookie とは何か、ブラウザの設定で無効にできること

9

個人情報の開示・訂正・利用停止等

本人からの請求に対応すること

10

お問い合わせ・苦情の窓口

1 の連絡先

11

免責事項

情報の正確性、コードや手順は執筆時点の環境で確認したものであること

12

著作権・肖像権

無断転載の禁止、引用のルール

13

リンクについて

リンクフリー

14

本ポリシーの変更

変更後はページに掲載した時点から有効

15

制定日・改定日

制定日

このうち、前の章で確認した各サービスの要件に対応しているのは、主に6〜8です。

外部送信の表

6 では、閲覧時に利用者の情報が送られる先を表にしました。

送信先

サービス

利用目的

Google LLC

Google アドセンス

広告の配信・効果測定

Google LLC

Google アナリティクス

アクセス解析

Cloudflare, Inc.

Cloudflare

サイトの配信・セキュリティ対策

実際のポリシーには「送信される主な情報」(Cookie、閲覧ページの URL、IP アドレスなど)の列もあります。表の下には、各事業者のプライバシーポリシーへのリンクを並べています。

広告の配信とアクセス解析

6 の中に「広告の配信について」「アクセス解析について」の小見出しを作り、次のことを書いています。

  • 広告の配信:アドセンスの「必須コンテンツ」で案内されている3点(第三者配信事業者の Cookie、広告 Cookie、パーソナライズド広告の無効化)と、Google の広告設定・aboutads.info へのリンク
  • アクセス解析:Google アナリティクスを使っていること、Cookie でアクセス情報を集めていること、オプトアウト アドオンへのリンク

アフィリエイトと PR 表記

7 では、アフィリエイトに参加していることと、Amazon アソシエイトの文言を書いています。あわせて、広告を含む記事には冒頭に「本記事にはプロモーション(広告)が含まれています」と表記する方針も書きました。この表記の仕組みは前回の記事で紹介しています。

実装

Markdown で書いて Astro で表示する

ポリシーの本文は、記事のように microCMS では管理せず、リポジトリの docs/privacy-policy.md に Markdown で書いています。文言を直したいときは、この Markdown を編集するだけです。

Astro では、Markdown ファイルを import すると、本文を HTML にしたコンポーネント Content を受け取れます。

src/pages/privacy-policy.astro
---
// 本文は docs/privacy-policy.md を編集する
import { Content } from '../../docs/privacy-policy.md';
import BaseLayout from '../layouts/BaseLayout.astro';
---

<BaseLayout
	title="プライバシーポリシー"
	description="cyber-blow のプライバシーポリシー。個人情報の取り扱い、広告・アクセス解析・アフィリエイト、免責事項などについて。"
>
	<article class="post policy">
		<div class="prose">
			<Content />
		</div>
	</article>
</BaseLayout>

src/pages/ の外にある Markdown でも、このように読み込めば任意のレイアウトで表示できます。記事本文と同じ prose クラスを付けているので、見出しや表のスタイルも記事と揃います。

参考:Markdown in Astro | Astro Docs

フッターにリンクとアソシエイトの表記を出す

フッターのリンクは定数にまとめ、そこから生成しています。ページを増やすときは、この配列に足すだけです。

src/consts.ts
/** フッターのリンク */
export const FOOTER_NAV_ITEMS = [{ href: '/privacy-policy/', label: 'プライバシーポリシー' }];

Amazon アソシエイトの表記は、全ページ共通のレイアウトのフッターに入れました。サイト名は定数 SITE_NAME から入れています。

src/layouts/BaseLayout.astro
		<footer class="site-footer">
			<div class="container">
				<nav class="footer-nav">
					{FOOTER_NAV_ITEMS.map((item) => <a href={item.href}>{item.label}</a>)}
				</nav>
				<!-- Amazonアソシエイト・プログラム運営規約で、サイト上への表示が必須の文言 -->
				<p class="footer-note">Amazonのアソシエイトとして、{SITE_NAME} は適格販売により収入を得ています。</p>
				<small>&copy; {new Date().getFullYear()} {SITE_NAME}</small>
			</div>
		</footer>

共通レイアウトに入れておけば、記事ページを含むすべてのページに表記が出ます。

ハマったこと:日本語の文中の URL が、後ろの文章ごとリンクになった

ポリシーの冒頭には、もともと次のように書いていました。

当サイト(https://cyber-blow.com)における利用者の個人情報および…

これを表示すると、URL だけでなく、後ろの「)における利用者の個人情報および…」までがリンクになってしまいました。

原因は、GitHub Flavored Markdown(GFM)の URL 自動リンクのルールです。GFM の仕様では、ドメインの後ろは「空白と < 以外の文字」が続く限り URL の一部とみなします。

After a valid domain, zero or more non-space non-< characters may follow

末尾の ? ! . , : * _ ~ は URL から外すルールもありますが、全角の「)」や日本語の文字は対象外です。日本語の文は空白を入れずに続くので、次の空白や行末までが全部 URL と判定されます。

< > で囲むと、リンクの範囲がはっきりして直ります。

当サイト(<https://cyber-blow.com>)における利用者の個人情報および…

参考:GitHub Flavored Markdown Spec

日本語の文中に URL を書くときは、< > で囲むか、[テキスト](URL) の形でリンクにしておくと安全です。

注意点

  • 規約やヘルプの内容は変わることがあります。この記事の内容は執筆時点で各公式ページを確認したものです
  • この記事は、各サービスの要件を確認して自分のサイトに入れた項目を紹介したもので、どのサイトにもこれで十分だというものではありません。サイトで使うサービスや、扱う情報に合わせて内容を見直してください
  • 新しい外部サービス(広告やアクセス解析など)を追加したら、6 の表と説明も更新する必要があります

まとめ

  • Google アナリティクスの利用規約では、プライバシーポリシーの公開と、Cookie などの使用・Google アナリティクスの利用についての開示が求められている
  • アドセンスの「必須コンテンツ」では、第三者配信事業者の Cookie、広告 Cookie、パーソナライズド広告の無効化について書くよう案内されている
  • Amazon アソシエイトの運営規約では、「Amazonのアソシエイトとして…」の文言をサイト上に目立つように明示することが求められている
  • ポリシーは Markdown で書き、Astro で import { Content } して表示した。アソシエイトの表記は共通レイアウトのフッターに入れた
  • 日本語の文中の URL は、GFM の自動リンクで後ろの文章までリンクになることがある。< > で囲むと直る

次回は、Google アナリティクス 4 のタグを、Cloudflare Pages の本番ビルドのときだけ出す方法です。