SEOに使えるGoogleスプレッドシート関数とXPath

SEOで重要とされる要素と、これを抽出するためのGoogleスプレッドシート関数。
自分の[Qiitaプロフィール](https://qiita.com/AQRiL_1132)のソースなどをサンプルに解説。

#SEOで重要とされるタグとその説明

##titleタグ

```html:titleタグ
<title>AQRiL_1132 - Qiita</title>
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/e6b33b45-5cd3-53ce-6e18-03f868e34c85.png)



検索エンジンで表示されるページタイトル。([設定した内容から書き換えられて表示されることがある](https://seopack.jp/internal-seo/basic/rewritten-page-title.php))
検索したユーザーが「このページが自分が求めていたページだ」と一目でわかる簡潔な内容にすることが推奨される。クリック率に大きく影響するため重要。

その他にも以下のようなものに使われる。

- ブラウザタブに表示されるページ名

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/ac0f7eb8-1df3-d96b-9f49-7c94f9badd13.png)

- 履歴に表示されるページ名

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/e14f12f3-69b5-6187-2332-63784d6542d6.png)

- ブックマーク登録時のデフォルトのページ名

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/f805a2b8-a449-eead-a0ee-61c07b80a8f0.png)


- SNSでページがシェアされたときのページタイトル名([OGPタグを設定](https://qiita.com/sutara79/items/d7a45f6c4796c1ee1590)しない場合)

###抽出するためのスプレッドシート関数
A1セルにURLが入っているとき、以下の数式でタイトルを抽出可能。

```:
=IMPORTXML(A1,"//title")
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/b7362d2f-6bc0-a8c1-d98e-40bdea42fcb6.png)

- [IMPORTXML - ドキュメント エディタ ヘルプ](https://support.google.com/docs/answer/3093342?hl=ja)

###余談
Googleで「intitle:●●」と検索することで、そのキーワードがタイトルに入っているWebページを検索することができる。

- [できる人のGoogle検索テクニック：Google入門 - ＠IT](http://www.atmarkit.co.jp/ait/articles/1708/25/news022_2.html)
- [Google の 検索テクニック](http://www.geocities.jp/katsu_immr/Kurino-PC-Class/google-srch.htm)
- [ウェブ検索の精度を高める - Google 検索 ヘルプ](https://support.google.com/websearch/answer/2466433)
- [Google Search Operators - Google Guide](http://www.googleguide.com/advanced_operators_reference.html)


## meta descriptionタグ

```html:meta_descriptionタグ
<meta content="プログラミング趣味のWebマーケッター。時短のために時間を惜しまず、結果として作業時間が伸びる残念な人。投稿記事では主に初心者・ノンプログラマ向けに情報を共有しています。" name="description">
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/e6b33b45-5cd3-53ce-6e18-03f868e34c85.png)

検索エンジンでページタイトルと共に表示されるサイトの概要を示す説明文。クリック率に影響を与えるため、titleタグと同じく重要。
titleタグと同様に、meta descriptionの内容がそのまま検索結果に出てくるとは限らない。

- [【2018年版】meta descriptionの最適な長さは「300文字」または「グーグル任せ」か | Moz - SEOとインバウンドマーケティングの実践情報 | Web担当者Forum](https://webtan.impress.co.jp/e/2018/02/19/28312)

###抽出するためのスプレッドシート関数
A1セルにURLが入っているとき、以下の数式でdescriptionの中身を抽出可能。

```:
=IMPORTXML($A$1,"//meta[@name='description']/@content")
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/cff9b038-5482-aab0-4d9f-5db5103c12b0.png)

##alternateタグ
主にGoogleにスマホ用、タブレット用、ガラケー用など、異なるデバイス向けのURLが存在することを通知するために使用されるタグ。RSSフィード用のURLが存在することを伝えるためにも使われる。

```html:alternateタグ_価格コムのソース
<link href="http://s.kakaku.com/" rel="alternate" type="text/html" media="only screen and (max-width: 640px)">
<link href="http://m.kakaku.com/" rel="alternate" type="text/html" media="handheld">
```

```html:alternateタグ_RSSフィードの通知例
<link rel="alternate" type="application/atom+xml" title="Atom Feed" href="https://qiita.com/AQRiL_1132/feed">
```

- [alternateタグ（link rel="alternate"）でスマホサイトをGoogleに伝える方法とSEO効果 | SEOラボ](https://seolaboratory.jp/41731/)
- [モバイルSEOの各種設定 別々のURL|Google Developers](https://developers.google.com/search/mobile-sites/mobile-seo/separate-urls?hl=ja)
- [RSSフィードが存在することを知らせるためのlinkタグ | TechMemo](http://techmemo.biz/html/rss-feed-link-head-html/)

###抽出するためのスプレッドシート関数

####alternateタグに設定されているmediaを取得
```:
=IMPORTXML($A$1,"/html/head/link[@rel='alternate']/@media")
```

####alternateタグに設定されているURLを取得
```:
=IMPORTXML($A$1,"/html/head/link[@rel='alternate']/@href")
```

複数ヒットしたときは下のセルにも結果が出力される

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/d7e12315-5d85-8279-f289-a4b011882afd.png)

##canonicalタグ

```html:canonicalタグ
<link rel="canonical" href="https://qiita.com/AQRiL_1132">
```

聞き慣れない単語だが、「カノン（canon：正典,基準,正規,規範）」を形容詞化した言葉。日本語に訳すと「基準的な」「標準的な」のような意味。
同じコンテンツを異なるURL(wwwの有無やindex.htmlの有無、スマホ向けURLなど)でも確認できる状態にあるとき、どのURLを正規のものとするか検索エンジンに示すためのタグ。

- [URL正規化タグ「rel="canonical"」に関する12のよくある質問と答（実践者向け） | Moz - SEOとインバウンドマーケティングの実践情報 | Web担当者Forum](https://webtan.impress.co.jp/e/2013/09/30/16142)
- [クロスドメインの「rel="canonical"」をうまく使ってコンテンツのSEO価値を最大化するには | Moz - SEOとインバウンドマーケティングの実践情報 | Web担当者Forum](https://webtan.impress.co.jp/e/2018/04/02/28781)


###抽出するためのスプレッドシート関数

```:
=IMPORTXML($A$1,"/html/head/link[@rel='canonical']/@href")
```


##robotsタグ

```html:robotsタグ
<meta name="robots" content="noindex,follow">
```
主にGoogleのクローラーロボットがサイトの内容を見に来たときに、「こう動いてください」とお願いするために使用されるタグ。ページを検索結果に表示させたくないとき、キャッシュを保存してほしくないときなどに使用する。必ずGoogleがこの指定に従う訳ではないので魔除け程度に考えておいた方が良さげ。

- [意外に知らない、robots meta タグの7つの正しい使い方 | 海外SEO情報ブログ](https://www.suzukikenichi.com/blog/7-correct-ways-of-using-robots-meta-tag/)
- [Robots メタタグと X-Robots-Tag HTTP ヘッダーの仕様|Google Developers](https://developers.google.com/search/reference/robots_meta_tag?csw=1)
- [META Robotsタグ活用完全ガイド noindex nofollow noarchive など まとめ ::SEM R (#SEMR)](http://www.sem-r.com/seo/20150108121812.html)


###抽出するためのスプレッドシート関数

```:
=IMPORTXML($A$1,"//meta[@name='robots']/@content")
```

##h1タグ

```html:Mozillaのトップページのh1タグ
<h1 class="highlight highlight-spanned"><span class="highlight-span">開発者による開発者のためのリソース。</span></h1>
```
![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/9e4cdc13-ccb3-cf60-10b3-e2e4c2f403dc.png)

h1タグからh6タグまで6種類ある見出しタグの中で最も大きい見出しタグ。
検索エンジンにサイトの内容を理解してもらうために重要とされている。h1タグを利用する作法について色々言われていることがあるが、最近のGoogleは以前ほどh1タグの使い方に拘らなくてもサイトの内容を理解してくれるようになっているとのこと。
htmlの文章構造として意味のある使い方を心がけるのが良さそう。
また、画像をh1タグで囲っても良いとされている。(この時は画像がどんな内容かをalt属性で説明した方が良い)

- [H1タグ「何回でも使っていい」とGoogle発言、これほんと？](https://seopack.jp/seoblog/20170414-many-h1s-are-ok/)
- [今どきの見出しとしてのhタグの正しい使い方 | 海外SEO情報ブログ](https://www.suzukikenichi.com/blog/currently-correct-usage-of-h-tags/)

###抽出するためのスプレッドシート関数
複数のh1タグを抽出し、縦方向一列に並ぶように作っている。

```:
=TRANSPOSE(SPLIT(TEXTJOIN("-_-",true,IMPORTXML($A$1,"//h1|//h1//@alt")),"-_-",))
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/5a7722b2-b80d-2f30-7585-28d8ba43a16c.png)

- [TRANSPOSE - ドキュメント エディタ ヘルプ](https://support.google.com/docs/answer/3094262?hl=ja)
- [TEXTJOIN - ドキュメント エディタ ヘルプ](https://support.google.com/docs/answer/7013992?hl=ja)

##prevタグ & nextタグ
```html:nextタグ
<link rel="next" href="https://hogehogeblog.jp/page/2">
```

複数ページにまたがったコンテンツが存在することをGoogleに伝えることができるタグ。使っているサイトを中々見かけない。

- [Google ウェブマスター向け公式ブログ: 複数ページにまたがる記事やコンテンツをお持ちの方へ。rel=”next” と rel=”prev” を使用したページネーションのご紹介](https://webmaster-ja.googleblog.com/2011/12/relnext-relprev.html)
- [コンテンツをページ指定する - Search Console ヘルプ](https://support.google.com/webmasters/answer/1663744?hl=ja)


###抽出するためのスプレッドシート関数

```:
=IMPORTXML($A$1,"/html/head/link[@rel='prev']/@href")
```

```:
=IMPORTXML($A$1,"/html/head/link[@rel='next']/@href")
```



##aタグ(リンクタグ)
aタグのaはanker(船のイカリ)のa。説明するまでもないリンクを作成するためのタグ。
ユーザーにとって有益なリンクをページに追加すればページの評価が上がる。また、他ページから受けたリンクについてもページの評価に影響があるとされている。

[文字色と背景色を同一にした隠しリンクや、極めて小さく見辛いリンク、無意味な大量のリンク](https://support.google.com/webmasters/answer/66353)を設置するとスパムと見なされてページの評価が落ちることがある。

- [特定のリンクに対して rel="nofollow" を使用する - Search Console ヘルプ](https://support.google.com/webmasters/answer/96569?hl=ja)

###抽出するためのスプレッドシート関数
####主に外部サイトへのリンクを抽出するためのスプレッドシート関数
内部リンクをなるべく取り除くため、飛び先がhttpから始まるリンクタグの中身を抽出するように作っている。
また、画像へのリンクを拾わないようにしている。

```:
=UNIQUE(IMPORTXML($A$1,"//a[starts-with(@href,'http') and not(contains(@href,'.jpg') or contains(@href,'.png') or contains(@href,'.gif'))]/@href"))
```

![image.png](https://qiita-image-store.s3.amazonaws.com/0/103957/37180ae2-c409-9ce7-53d8-570ed148aaf3.png)


・
・
・

また後ほど内容を拡充予定。

<!--

##


###抽出するためのスプレッドシート関数

```:

```

##


###抽出するためのスプレッドシート関数

```:

```

##


###抽出するためのスプレッドシート関数

```:

```

##


###抽出するためのスプレッドシート関数

```:

```

##


###抽出するためのスプレッドシート関数

```:

```
-->

# 関連記事
- [Googleスプレッドシートにfaviconを表示する - Qiita](https://qiita.com/aqril_1132/items/ebd350dd0b9b039e8e08)

# 参考になるリンク
- [XPath簡易リファレンス - aqubi+shin1](https://sites.google.com/site/shin1ogawa/xsl/xpath)
- [XPath Syntax](https://www.w3schools.com/xml/xpath_syntax.asp)