晴歩雨描

晴れた日は外に出て歩き、雨の日は部屋で絵を描く

「Google Search Console」のサイトマップ登録の進展がないので、はてなブログのHTMLサイトマップを生成するスクリプト(JScript)を作成した。

先日、「Google Search Console」で、はてなブログサイトマップ(「sitemap.xml」、「sitemap.xml?page=???」)を登録したが、いくつかが「取得できませんでした」のエラー状態のまま進展がない。

そこで、はてなブログのHTMLサイトマップを作ってみる。

※ HTMLサイトマップを作成しても、はてなブログは無料タイプで利用しているので、固定ページを置くことができず、はてなブログの本来のHTMLサイトマップとしては使えないが、インターネット上に作成したHTMLサイトマップを置くことで、はてなブログの各記事のURLをGoogleクローラーに認識してもらえるかもしれない。

サイトマップ作成の元データは、はてなブログのエクスポートデータを使う。「詳細設定」の「記事のバックアップと製本サービス」で、エクスポートデータをダウンロードして使う。

f:id:art2nd:20190623083221p:plain

f:id:art2nd:20190621210314j:plain

エクスポートデータは、「xxxxx.hatenablog.com.export.txt」という名前でダウンロードされる。中身は、以下のようなテキストファイル。

f:id:art2nd:20190621214654j:plain

エクスポートデータの中の、TITLEとBASENAMEだけを利用する。

.....
TITLE: ×××××××××
BASENAME: 2019/01/01/123456
.....

作成するHTMLサイトマップは、シンプルな<a>タグの記事一覧HTMLとして作成。

<ol>
<li><a href="https://xxxxx.hatenablog.com/entry/2019/01/01/123456">×××××××××</a></li>
<li>.....</li>
</ol>
1.ヘッダー用のHTMLを用意する。

【i-header.html】

<html lang="ja">
<head>
<meta charset="utf-8">
<title>はてなブログ ××××× 記事一覧</title>
</head>
<body>
<h1>はてなブログ「×××××」記事一覧</h1>
2.スクリプト(JScript)、サンプル。

【htmlmap.jse】

※補足:UTF-8のテキストファイルを入出力するには、ADODB.Streamを使う必要がある。

var adTypeText = 2;
var adSaveCreateOverWrite = 2;	// 上書き
var adReadAll = -1;		// 全行

var sr1 = new ActiveXObject("ADODB.Stream");
sr1.Type = adTypeText;
sr1.charset = "utf-8";
sr1.Open();
sr1.LoadFromFile("i-header.html");
var html = sr1.ReadText(adReadAll);
sr1.Close();

var sr2 = new ActiveXObject("ADODB.Stream");
sr2.Type = adTypeText;
sr2.charset = "utf-8";
sr2.Open();
sr2.LoadFromFile("xxxxx.hatenablog.com.export.txt");	//  はてなブログ エクスポート・ファイル
//               ↑↑↑ 名前を変えて使う。

var str = sr2.ReadText( adReadAll );
sr2.Close();

var stw = new ActiveXObject("ADODB.Stream");
stw.type = adTypeText;
stw.charset = "utf-8";
stw.Open();

stw.WriteText(html);	// i-header.html → hatena-sitemap.html

stw.WriteText('\n<ol>\n');
str = str.replace(/\r/g, '');
var line_ary = str.split(/\n/);
var title;
var url;
for (var i=0; i<line_ary.length; i++) {
	if (line_ary[i].substring(0,6) == 'TITLE:') {
		title = line_ary[i].slice(7);
	}
	if (line_ary[i].substring(0,9) == 'BASENAME:') {
		url = line_ary[i].slice(10);
	}
	if (line_ary[i].substring(0,15) == 'STATUS: Publish') {
		stw.WriteText('<li><a href="https://xxxxx.hatenablog.com/entry/' + url + '">' + title + '</a></li>\n');
//              				 ↑↑↑ 名前を変えて使う。
	}
}
stw.WriteText('</ol>\n</body>\n</html>\n');
stw.SaveToFile("hatena-sitemap.html", adSaveCreateOverWrite);
stw.Close();
3.スクリプト(JScript)を実行する。

「xxxxx.hatenablog.com.export.txt」、「i-header.html」、「htmlmap.jse」を同じフォルダーに入れる。

「htmlmap.jse」をダブルクリックで実行すると、「hatena-sitemap.html」という名前でHTMLサイトマップ・ファイルが作成される。

作成されたHTMLサイトマップを、とりあえず、GitHubに置いた。

このブログ記事で、以下のURLをリンクすることで、Googleクローラーに、このHTML内でリンクしているブログ全記事のURLをインデックス登録してもらえる事を期待する。

https://ok2nd.github.io/sitemap/hatena-sitemap.html

f:id:art2nd:20190621213324j:plain

【「hatena-sitemap.html」のHTMLソース】

f:id:art2nd:20190621213326j:plain

今後、随時、このHTMLサイトマップを更新する予定。

4.この記事のURLのインデックス登録をリクエスト。

Google Search Console」で、この記事のURLのインデックス登録リクエストをする。

翌日、この記事がGoogleで検索されることを確認。

はてなブログ 晴歩雨描 記事一覧」も、Googleで検索されることを確認。

https://ok2nd.github.io/sitemap/hatena-sitemap.html

5.効果の確認(1週間後)。

その後、1週間程経っても、本ブログ「晴歩雨描」の記事でGoogleインデックス未登録の記事は未登録のまま。効果はなさそう。

 

※ ここから以下の手順は、やることに意味があるかどうかは不明。

6.「はてなブログ 晴歩雨描 記事一覧」サイトを「Google Search Console」に登録。

はてなブログ 晴歩雨描 記事一覧」(https://ok2nd.github.io/sitemap/)を「Google Search Console」の「URLプレフィックス」として登録。※ 登録については、下の記事参照。

「Google Search Console」でインデックス登録とサイトマップ登録をやってみる。

「所有権の確認」は、HTMLファイルを使用。

f:id:art2nd:20190622094038j:plain

「sitemap.xml」を作成して、「Google Search Console」にサイト登録する。

https://ok2nd.github.io/sitemap/sitemap.xml

f:id:art2nd:20190622100056j:plain

京都福知山)丹州観音寺(丹波あじさい寺)。福知山城とまちなか。

6月20日。京都福知山の丹州観音寺(丹波あじさい寺)。JR福知山駅から東へ1駅の石原(いさ)駅から歩いて15分。あじさいが見頃。

その後、観音寺バス停からバス(2時間に1本)で、福知山城公園前バス停。福知山城(周辺が工事中だった)とまちなか散策。今日の福知山は最高気温30度の真夏日。暑かった。

f:id:art2nd:20190620213619j:plain

f:id:art2nd:20190620213622j:plain

f:id:art2nd:20190620213625j:plain

f:id:art2nd:20190620213628j:plain

f:id:art2nd:20190620213631j:plain

f:id:art2nd:20190620213634j:plain

f:id:art2nd:20190620213638j:plain

f:id:art2nd:20190620213641j:plain

f:id:art2nd:20190620213644j:plain

f:id:art2nd:20190620213647j:plain

f:id:art2nd:20190620213654j:plain

f:id:art2nd:20190620213658j:plain

f:id:art2nd:20190620213708j:plain

f:id:art2nd:20190620213718j:plain

f:id:art2nd:20190620213721j:plain

f:id:art2nd:20190620213728j:plain

f:id:art2nd:20190620213735j:plain

f:id:art2nd:20190620213737j:plain

f:id:art2nd:20190620213742j:plain

「Google Search Console」に続き「Bing - Web マスター ツール」で、サイトマップ登録をやってみる。

先日、「Google Search Console」でサイトマップ登録をやってみた。

今回、「Bing - Web マスター ツール」で、サイトマップ登録をやってみる。

「Bing - Web マスター ツール」のサイトにアクセスする。

サインインの画面が表示されるが、なんとGoogleアカウントでサインインできる。Microsoftの大人(?)な対応。

f:id:art2nd:20190619091306j:plain

サインインすると、以下のような画面が表示されるので、「サイトを追加」ボタンを押す。

f:id:art2nd:20190619091448j:plain

入力欄がたくさん表示されるが、URLとメールアドレスだけ入れればOK。

f:id:art2nd:20190619092306j:plain

所有権の確認画面が表示される。オプション2の<meta>タグを使うことにする。

f:id:art2nd:20190619092852j:plain

「所有権の確認」で表示された<meta>タグを、はてなブログの「詳細設定」の「headに要素を追加」欄に追加する。

f:id:art2nd:20190619092731j:plain

「所有権の確認」画面で、「確認」ボタンを押す。

f:id:art2nd:20190619093126j:plain

ダッシュボード」が表示される。

Google Search Console」に比べてメニューが豊富。

f:id:art2nd:20190619093247j:plain

サイトマップの送信」ボタンを押す。

f:id:art2nd:20190619093350j:plain

ブログのサイトマップのURLを入れて、送信ボタンを押す。

f:id:art2nd:20190619093509j:plain

以下のような画面が表示される。保留中と表示された。

f:id:art2nd:20190619093511j:plain

サイトマップが階層構造になっているので、「sitemap.xml?page=1」から「sitemap.xml?page=7」までを追加で登録する。1つは成功と表示される。

f:id:art2nd:20190619093848j:plain

10秒程経った時点で再度確認すると、3つが成功になっている。

f:id:art2nd:20190619093852j:plain

翌朝、確認すると、全てが成功になっている。

f:id:art2nd:20190619093854j:plain

Google Search Console」では、数日たっても状況が変わっていないのに比べて、速やかに処理されている。

JavaScript)「デジカメ・スナップ写真 ブログ記事一覧」にjQueryプラグイン「DataTables」で検索機能追加。

Webページ「晴歩雨描 デジカメ・スナップ写真 ブログ記事一覧」

に、JavaScriptでテーブル行の検索機能を追加。

jQueryプラグイン「DataTables」を使用。

【注意事項】

1.<thead></thead>、<tbody></tbody>がないと正常動作しない。

2.<table>に、width:100%を指定しないと、ブラウザウインドウの幅を変更した際に、テーブルの幅が自動的にリサイズされない。

<table id="dataTable" style="width:100%">

ページングやソートをしないようにした。

≪ソース≫

<script type="text/javascript" src="//code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="//cdn.datatables.net/1.10.18/js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
$(function() {
	var table = $('#dataTable').DataTable({
		language: {	// 日本語化
			url: "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Japanese.json"
		},
		paging: false,	// ページングしない。
		ordering: false	// ソートしない
	});
});
</script>
<table id="dataTable" style="width:100%">
<thead>.....</thead>
<tbody>.....</tbody>
</table>

検索文字列をハイライトするようにした。「datatables.mark.js」を使用。

ハイライトの色はCSSで指定できる。

≪ソース≫

<style>
mark {
	background: gold;
	color: black;
}
</style>
<script type="text/javascript" src="//code.jquery.com/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="//cdn.datatables.net/1.10.18/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="//cdn.jsdelivr.net/g/mark.js(jquery.mark.min.js),datatables.mark.js"></script>
<script type="text/javascript">
$(function() {
	var table = $('#dataTable').DataTable({
		language: {	// 日本語化
			url: "//cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Japanese.json"
		},
		paging: false,		// ページングしない。
		ordering: false,	// ソートしない
		mark: true		// 検索文字列ハイライト (by mark.js)
	});
});
</script>

f:id:art2nd:20190618131023j:plain

検索キーワードは複数入れることも可能。

f:id:art2nd:20190618131027j:plain

はてなブログの記事がGoogle検索になかなか反映されない。「Google Search Console」でインデックス登録とサイトマップ登録をやってみる。

最近、はてなブログの記事がGoogle検索になかなか反映されない。Googleにインデックスされていない気がする。

Google Search Console」を使えば、インデックス登録が出来そうなので、やってみた。

まず、「Google Search Console」に登録する。

Google Search Console 登録】

Google Search Consoleにアクセスし、「今すぐ開始」ボタンを押して、Google アカウントでログインする。

Google Search Console
https://www.google.com/webmasters/tools/home?hl=ja

次のような画面が表示される。

f:id:art2nd:20190617214609j:plain

はてなブログ独自ドメインで運用していないので、「URLプレフィックス」で登録する。ブログのトップページのURLを入れて「続行」ボタンを押す。

f:id:art2nd:20190617214634j:plain

所有権の確認方法がいくつか提示される。「HTMLタグ」での確認を選択。メタタグが表示される。

f:id:art2nd:20190617214923j:plain

「所有権の確認」で表示されたHTMLメタタグを、はてなブログの「詳細設定」の「headに要素を追加」欄に追加する。

f:id:art2nd:20190617215258j:plain

Google Search Consoleの「所有権の確認」画面で「確認」ボタンを押す。以下のような画面が表示される。

f:id:art2nd:20190617215500j:plain

【URL検査とインデックス登録リクエスト】

ブログ記事がインデックス登録されているかのチェックをする。

「URL 検査」を選んで、最近のブログ記事のURLを一つ入れて[Enter]する。

「URLがGoogleに登録されていません」という画面が表示される。登録されていない原因はよく分からない。

1ヶ月以上前の記事でもインデックス登録されていないものがある。

f:id:art2nd:20190617220619j:plain

「インデックス登録をリクエスト」を押す。「公開URLがインデックスに登録可能かどうかをテストする」という画面が表示される。

f:id:art2nd:20190618085519j:plain

しばらくして、「インデックス登録をリクエスト済み」という画面が表示される。

f:id:art2nd:20190617221600j:plain

翌日、同じURLを入れて「URL 検査」を実行すると、次のような画面が表示された。

この状態で、ブログ記事タイトルでGoogle検索すると、検索される。

f:id:art2nd:20190617222033j:plain

サイトマップの登録】

上記の方法では、ブログ記事URLを一つずつ登録する必要がある。

サイトマップの登録を使えば、ブログ記事を一括してインデックス登録できそう。

はてなブログサイトマップは、{はてなブログトップURL}/sitemap.xml なので、「新しいサイトマップの追加」で、「sitemap.xml」と入れて、送信ボタンを押す。

以下のように「成功しました」と表示されればOK。

f:id:art2nd:20190617223630j:plain

しかし、はてなブログサイトマップ「sitemap.xml」の中は以下のようになっていて、更に複数のサイトマップが階層構造になっている。

f:id:art2nd:20190617224012j:plain

【2020/4/30 追記】※「sitemap.xml」の形式が変更されている。

https://2ndart.hatenablog.com/sitemap.xml

f:id:art2nd:20200430102928j:plain

「sitemap.xml?page=???」の中に、実際のブログ各記事のURLが入っている。これら下位構造のサイトマップを個別に登録する必要がありそうだ。

f:id:art2nd:20190617224015j:plain

そこで、「sitemap.xml?page=1」から「sitemap.xml?page=7」まで登録してみたが、3個が「取得できませんでした」のエラーになる。

原因は分からない。

インターネットで対策を探したが、しばらく(数日?)待つしかないらしい。

成功したサイトマップの「最終読み込み日時」を見ると、数日以上前に読み込みがされている。今回の登録によって、読み込みがされたわけではなさそう。

f:id:art2nd:20190617224626j:plain

【後日追記】7月8日サイトマップの登録を行なってから3週間程経って、エラーになっていた内の1つが成功していた。この頻度だと全てが処理されるまで1か月以上かかりそう。

サイトマップがpage=1から最新順の階層構造になっている場合、全てを同時に処理してもらわないと、一部の記事のインデックス登録に漏れが生じる可能性がある。

f:id:art2nd:20190708090325j:plain

【後日追記】11月21日、約半年経ってようやく、全てが成功していた(↓)。時間かかりすぎ。

f:id:art2nd:20191121155454j:plain

↓ その後、HTMLサイトマップ作成などを試した。