Zバッファ

元システムエンジニア(SE)でファイナンシャルプランナーの管理人がおくるiPhoneやAndroidスマホなど家電ガジェット系各種レビューと、秘境スポットなどの旅行ネタやロボアドバイザーなどの資産運用関係の体験談を語るライフハックブログ。

はてなブログの過去記事全てのリンクや文字を簡単に一括置換する方法

このはてなブログを3月末に独自ドメインにしました。

www.zbuffer3dp.com

その結果、ブログのURLがzbuffer.hateblo.jpからwww.zbuffer3dp.comに変わりました。

このようにURLが変わった時に問題となるのが、各記事に挿入している内部リンクや画像リンクの修正です。

内部リンクのURL修正作業は大変で面倒

関連記事など内部リンクについては、はてなブログ側で301リダイレクト処理が行われるため、訪問者がリンクをクリックした時にページにアクセス出来ないという状態にはならないのですが、Googlebotに負担なくリンクを認識してもらうためにもURLは修正したいところです。

しかし、ここで問題となるのが過去の膨大な記事に対して1つ1つ修正するのは時間が非常にかかるということです。

はてなブログには、標準で全ての記事に対して一括でリンクを修正したり、文字を置換するという機能がないので、記事数が多い人はとても大変です。

尚、ブログをはてなブログではなく、WordPressで運営しているならば、このようなリンクの修正作業は、「Search Regex」というプラグインを利用すれば、過去記事のリンクURLや文字を一括で置き換え修正することが可能です。

WordPressで過去記事のリンクを一括置換するプラグイン

はてなブログで過去記事内部を一括置換する方法

先程、はてなブログの公式機能としては一括置換機能が無いことを言及しました。

当ブログは2014年の10月に開設したのですが、これまでに公開した記事数は330を超えていて、これらの1つ1つの記事を編集画面開いてURLを修正するなんて作業は、非常に生産性がない非効率な作業です。

そこで何らかのITツールを活用できなかと調査しました。

その結果、はてなブログでも過去記事内部を探索して、別の文字に置き換える事が簡単に出来ることが分かりました。

外部ツール「ReplaceEntryContent」を使って一括置換 

今回私が利用したのが下記サイトで「はてなブログ向けツール」として紹介されている「ReplaceEntryContent」です。

smdn.jp

因みに、上記サイトでは、はてなブログ向けツールとして、下記機能を持つツールを公開してくれています。

  • すべてのブロク記事をダンプ・エクスポートするツール
  • ブログに新規記事を投稿するツール
  • ブログ内の全記事の内容を一括置換・削除するツール
  • ブログ記事のカテゴリを一括変更するツール

この中で、「ブログ内の全記事の内容を一括置換・削除する」ツールが「ReplaceEntryContent」です。

Windowsのコマンドラインで使うツールになっているので、普段ブログとかでしかパソコンに触れない人だと敷居を高く感じてしまうかもしれませんが、ここから紹介する手順に従えば誰でも使うことが出来ますよ。

ReplaceEntryContentの使い方

ここからは、先程紹介した「ReplaceEntryContent」というツールの使い方について解説していきます。

まず、先程初回したリンク先のページからHatenaBlogToolsの最新バージョンをダウンロードします。

はてなブログ一括置換ツール

 

zipファイルでダウンロードされるので、任意の場所に解凍します。

解凍すると、HatenaBlogToolsというフォルダが作成され、そのフォルダ内には4つのexeファイルがあります。

  1. DumpAllEntries.exe
  2. ModifyCategory.exe
  3. PostNewEntry.exe
  4. ReplaceContentText.exe

ReplaceContentText.exe

今回はこの4つのうち"ReplaceContentText.exe"を利用します。

ここから先は、HatenaBlogToolsというフォルダがCドライブの直下にある前提で話を進めていきます。

このツールの使い方はについては、既に先程紹介したリンク先に記載があります。

従ってここではより実際に私が使った事例を交えて使い方を説明していきたいと思います。

既にコマンドラインを使ったりした事がある人は読み飛ばしてもらって大丈夫です。

Windowsのコマンドプロンプトを起動

なにわともあれ、まずはコマンドプロンプトを起動する必要があります。

Windows10であれば、スタートボタン横にある検索窓にcmdと入力し、そのままEnterキーを押せばコマンドプロンプトが起動します。

Windows10コマンドプロンプト起動方法

コマンドプロンプト画面

コマンドプロンプトが起動したら、ReplaceContentText.exeのファイルをコマンドプロンプトの画面にドラッグ・アンド・ドロップしてください。

すると、下のような状態なります。

ReplaceContentText.exeの使い方

次に、ReplaceContentText.exeの後に半角スペースで空白をあけて、下記情報を入力します。

  • -id はてなのユーザーIDを指定します。
  • -blogid はてなブログのドメインを指定します。
  • -apikey はてなブログの詳細設定ページに記載されているAtomPubのAPIキーを指定します。
  • -from 置き換えたい文字を指定します。
  • -to 置き換え後の文字を指定します。

今回は、旧ドメインから新ドメインへのリンク先変更なので以下の文となります。

ReplaceContentText.exe -id Uranff -blogid www.zbuffer3dp.com -apikey *** -from "zbuffer.hateblo.jp" -to "www.zbuffer3dp.com" -v -n

ReplaceContentText.exeの-vと-nの意味を解説

上では-vと-nが書かれていますが、-vと-nは必ずしも記載する必要はありません。

-vと書くと、置換前後の内容がコマンドプロンプトに表示出来ます。

そのため、置換前後の内容を確認したい場合には指定しましょう。

また、-nは実際にはてなブログの内容を書き換えずに置換した事前に正常に置換できるかを確認する場合に指定します。

そのため、まずは、-vと-nを指定した状態で実行して、意図した結果になるかを確かめることをオススメします。

ReplaceContentText.exeで一括置換を開始

前項で-nを指定して実行した結果が問題なければ、今度は実際にはてなブログの過去記事全ての内容を一括で置き換える処理を実行します。

実際に実行する場合は、先程の文から-nを削除してEnterキーを押すだけです。

-id Uranff -blogid www.zbuffer3dp.com -apikey *** -from "zbuffer.hateblo.jp" -to "www.zbuffer3dp.com" -v

-nを指定して実行した時とは異なり、今度ははてなブログの内容を実際に書き換える処理を行うので、処理完了まで数分かかります。

-vを指定している場合は、1つ1つ処理が行われる毎に下記のように置換前後の文章が表示されます。

枠で囲った部分は以前は"zbuffer.hateblo.jp"というドメインだったのですが、それが独自ドメインの"www.zbuffer3dp.com"に変わっている事が分かります。

はてなブログ過去記事を一括置換した結果

コマンドプロンプトに何も表示されなくなったら、処理完了です。

正常に置き換えが出来たか確認

ReplaceContentText.exeを使ったはてなブログの過去全記事一括修正が完了したら、正常に置き換えが出来たかを確認しましょう。

確認方法ですが、直接いくつかの記事を直接確認するとともに、はてなブログの記事の管理画面で置換前の文字を入力して検索ボタンを押して、記事が1つもヒットしないことを確認しましょう。

はてなブログの過去記事内を検索する方法

 

SSL化(https)やリンク切れ対応にも使える

今回紹介したはてなブログの過去記事一括修正機能は色んな場面で大活躍します。

どんな時に活躍するのか一例を挙げると、例えば、掲載が終了したアフィリエイト広告のリンクを一括で削除したり、別のURLに置換する時です。

また、今後はてなブログではSSL化も予定されていますが、SSL化されるとURLが

http://www.zbuffer3dp.com

から

https://www.zbuffer3dp.com

とhttpからhttpsに変わります。

そのため、SSL化の際は全てのはてなブログ利用者が影響を受けます。

その際は、今回紹介した一括置換ツールが大活躍するはずです。

尚、今回のツールに限らない話ですが、ブログ全体に対する処理を行う際は、事前にバックアップをとっておくことを忘れないようにしましょう。

ツールにバグはつきものですからね。

また、はてなブログの仕様変更などによっては、今回紹介したツールが今後正常に動作しないこともありえることは理解しておいてくださいね。