世界のことを知りたい

読書習慣を付けたい。…マンガも本だよね?

はてなブログでPROになる前の記事のキーワードリンクを一気に削除する

ついにはてなブログのPROになりました。はてなによる広告を消せる魅力が大きく見えたのです。キーワードリンクも消えますし…。

f:id:arityk:20161216000605j:plain

そのキーワードリンク(正確には「キーワード自動リンク」)ですが、これから投稿する記事に対してはキーワードリンクが付かなくなるのですが、これまでに投稿した記事のキーワードリンクは消えません

過去の記事を「編集」して、何もせずに記事の保存をするとその記事のキーワードリンクが消せるのですが、たくさん記事がある人にはこれは現実的な方法ではありません。

これは非常に煩わしい。メンドクサイ。

もっと楽な方法はないの?

ということで、ちょっと試してみました。

結果、うまく行きましたよ!

失敗談

うまくいった方法を話す前に、ちょっと失敗談を。

キーワードリンクを消す方法はないかと検索したところ、HatenaBlogTools という素晴らしいツールを発見しました。

はてなブログ用ツール - Works/Tools - 総武ソフトウェア推進所 

このツールを使うと、過去の記事の本文を検索して置換ができます。

最初これを使って置換を行おうとしたのですが、キーワードリンクはこれではヒットしません。

はてなブログAtomPub API を使うため、Wordpress などのデータベースを弄るようには自由になりません。

色々とやってみましたが、この API ではキーワードリンクが付く前の記事データを対象とするので無理なようです。

このツールを使えるとすごく楽に終わる話だったのですが。

でもこのツールははてなブログの本文を楽に弄れるツールです。一気に URL を置き換えたいときなどに是非覚えておきたいツールです。

PROじゃないけどキーワードリンクを消したい人は

はてなブログを無料で使っていて、キーワードリンクを消したい人は私が以前書いた JavaScript を使う方法が楽です。

この方法は本質的にキーワードリンクを消すことはできませんが、表面上消えます。

一気にキーワードリンクを消すには

さて、本題に入ります。

私が行った方法は、

  1. 記事をバックアップ(エクスポート)
  2. バックアップからキーワードリンクを消す
  3. 記事を全部削除
  4. 同じブログに編集したバックアップをインポート

という方法です。

常人はためらう方法でしょう…!

記事の全削除は怖い!

はてなブログは「記事のインポートするとはてなスター、はてなブックマーク、コメントが消える」と書かれたり言われたりしていますが、システムを考えるとこれには条件があります。

はてなスター、はてなブックマーク、コメントはURLに対して保存されるため、URLさえ一致していれば記事を消してからインポートしても問題ありません。

つまり記事のインポートをするとスターとかが消えるというのは、URL が違う場合を想定しているのです。

記事を削除して同じ記事(同じURL構造を持つ記事)をインポートするわけですから、URL は一致します。

さすがに憶測だけで行うのは私も怖かったので、新しいはてなブログを作って試しました。うまく行きましたよ。全部元通りになります。

やってみる?

では、やってみましょう! 何か失敗しても自己責任で!

このページを見ながらやるよりは、一度全部確認してもらった方が作業が素早く終わるかと思います。

1. エクスポート

まずは全ての記事のバックアップをします。

f:id:arityk:20161216002808j:plain

ブログの「設定」→「詳細設定」の中に「エクスポート」があります。ここを押して記事のエクスポートをしてください。

txtファイルがダウンロードされます。

2. キーワードリンクを消す

エクスポートしたファイルをちょっと高度なテキストエディタで開きます。

私は Sublime Text を使いました。「正規表現」というものを扱えるテキストエディタなら何でもいいです。Atom とか、秀丸とか、Notepad++ とか。

ファイルを開いてキーワードリンクがあるか確認します。

私の書いた記事を例にします。

この記事の「探偵!ナイトスクープ」に下線が引かれていて、キーワードリンクだと分かります。この箇所を見てます。

f:id:arityk:20161216003011j:plain

ここがエクスポートしたファイルでは、こうなっています。

f:id:arityk:20161216003555j:plain

「探偵!ナイトスクープ」という文字に見事に <a> タグが掛かっています。

これを正規表現を使って一気に消します。

f:id:arityk:20161216003738j:plain

私が使った正規表現パターンはこれです。キーワードリンクは全部同じ形を取っているので簡単です。

検索: <a class="keyword" href="[^"]+">(.*?)</a>
置換: $1

たぶんこれでうまく行くと思いますが、もう少し安全に行きたい人は href="~" を詳しくして、

検索: <a class="keyword" href="http://d\.hatena\.ne\.jp/[^"]+">(.*?)</a>
置換: $1

とかやってみてください。(.*?) も [^<]+? とかでもいいかも。

これで置換してみますと、

f:id:arityk:20161216004238j:plain

こんな感じにうまく行きました。リンクだけ消えています。

これで上書きしないように、別名で保存。保存をする際にはエンコードを変えない方が良いです。

3. 全記事を削除

ここは時間との勝負です。記事を削除するとその記事にアクセスできない人が出ますから、早めに復旧させたいところです。

はてなブログはメンテナンスモードがありません。

アクセスが少ない早朝などに作業を行ってみるのも良いかもしれませんね。

何故記事を消すのかというと、インポートした記事と重複すると URL が重複を避けるように変わってしまうからです。上書きされません。

ちなみに記事を削除してもアップロードした画像は消えないので大丈夫です。

f:id:arityk:20161216005441j:plain

記事の削除は「記事の管理」から行います。表示された記事を左上のチェックボックスで全選択して削除。

一度に20件ほどしか削除できません。何度もページを変えて削除するのは面倒ですが、他に記事を全部削除する手がなさそうです。(はてなブログAtomPub API を使う手もあるのかも)

記事はゴミ箱から消さなくても大丈夫です。消せませんし。

4. インポート

インポートする前に、はてなブログの設定を再確認して下さい。

「設定」→「詳細設定」→「キーワードリンクを付与しない」にチェックボックスが入っていますか?

f:id:arityk:20161216005945j:plain

新しく作ったブログで試したときに失敗したのですが、このチェックが入っていないと、新しくインポートした記事にまたキーワードリンクが付いてしまいます。

チェックを入れていない人はチェックを入れて設定を保存し、いざインポートします。

f:id:arityk:20161216010223j:plain

インポートは簡単です。キーワードリンクを消したファイルを選択するだけ。

ちょっとした弊害

これで終わりなのですが、ちょっと弊害があります。

私もインポートした後で気付いたのですが、記事の「アイキャッチ画像」(サムネイル画像)が表示されなくなってしまった記事があります。

f:id:arityk:20161216010510j:plain

こんな感じ。前はサムネイル画像が表示されていたのに、画像が読み込めないようです。

これはサムネイル画像に Amazon の画像を指定していた記事でした。小説の書評を書いた記事などで Amazon のリンクを張るので、同時にサムネイル画像もそのリンクを使っていました。

画像が表示されないのは Amazon の画像URLが hatena の CDN にリンクが置き換わっていたためです。

ここは私の場合、サムネイル画像が表示されない記事の数が限られていたので手作業で編集しました。記事を開いてサムネイル画像を指定し直すだけです。

キーワードリンクを消すために全部の記事を編集して保存しているよりは随分楽です。

サムネイル画像が表示されるかどうかを確かめるには、自分のブログで何かカテゴリーを押してみると楽です。

f:id:arityk:20161216011121j:plain

カテゴリーページではサムネイルが表示されるため、表示されていなければ簡単に気づけます。

ブログで使っている全ての画像が自分のはてなフォトライフにある人は問題が無いはずです。

うまく行ったかな?

お疲れ様でした。

私はこの方法で全部のキーワードリンクを消せました。アクセスしても記事が表示できなかった時間は10分にも満たないでしょう。

f:id:arityk:20161216011344j:plain

もっとアクセスの多いブログでは、この方法でもダウンタイムが長くてためらってしまうのかもしれません。

そういう人は取りあえず JavaScript などでキーワードリンクを表面的に消しておくと良いかもしれません。

たぶんこの方法が現段階で一番楽だと思います。何か他にも良い方法があるなら教えて下さい。

はてなブログはもう少しユーザーフレンドリーになると嬉しいです。