BloggerからPelican + github pageに移行する方法

Bloggerは高負荷にも耐えられる、という理由から選んだんだけど、Googleさんが全然アップデートしてくれないから困っていた。 WordPressは使いたくないし、かといって知らないサービスも使いたくない。 ブログを長くやっているとこういう事がとても重要なんだって気づいた。

  • サービスが停止しない
  • 安価で運用可能
  • 高負荷になっても問題ないインフラ
  • テーマなどデザイン性に優れている

一番はサービスが停止しない。今のところこれが一番で、10年ごえでブログやっていると、デザイン以外にも色々悩み事が出てくるだな〜と思い 原点回帰として静的HTMLで運用してみようと思い立って作業してみました。

調べたところ、PelicanではWordPressのXMLからMarkdown形式のフォーマットにしてくれる仕組みがありましたが、Bloggerのはありませんでした。XMLを読み解いてPelican用のplugin作ればいいのかもしれませんが、時間がなかったのでちょっとダサいですが以下の通りのフローを行いました。

  • Blogger XML
  • WordPress XML
  • Pelicanでmarkdownに変更
  • 手組みで少しmarkdown変更
  • Pelicanで静的HTML出力

ローカルの事前準備

ローカルにPelicanを入れます。

pip install lxml BeautifulSoup4 pelican

Bloggerから投稿内容をエクスポートする

やり方は以下の通り

Wordpressでデータをインポートする

最初wordpress.comでやっていたのですが、Permalinks設定がなぜかSaaS版にはないので、 自分のローカルか、サーバーにインストールする必要があります。 https://wordpress.com/

WordPressインストール、設定等は割愛 Permalinks設定を Post name設定にします。 Using Permalinks « WordPress Codex

Bloggerを取り込むプラグインBlogger Importer — WordPress プラグイン をインストールしたのち、importファイルを少し修正します。

blog/blogger-entry.php at master · popowa/blog

WordPressからデータをエクスポートする

Blogger importプラグイン経由でBlogger XMLをImportしたのち、すぐにWordPressからExportします。 出力する際はPostsStatus: Publishedのみとします こういうファイル名のXMLがダウンロード出来ると思います。 {Blog name}.wordpress.{YYYY-MM-DD}.xml

PelicanでWordPressファイルを変換する

ローカルにダウントードしたXMLファイルを変換します。

$ pelican-import --wpfile --strip-raw --markup markdown ./migration/wordpress.2017-12-09.xml -o ./content-markdown/

その後少しMarkdownファイルを修正します。

$ python xml-convert.py

blog/xml-convert.py at master · popowa/blog

そしてPelicanのOutput機能を使って静的HTMLに出力します。

$ pelican path_content

Github page + 独自ドメイン

あとはoutputされたコンテンツをGithub pageとして公開し、独自ドメインを設定します。

  • [Custom domain redirects for GitHub Pages sites - User Documentation] (https://help.github.com/articles/custom-domain-redirects-for-github-pages-sites/)
  • [Using a custom domain with GitHub Pages - User Documentation] (https://help.github.com/articles/using-a-custom-domain-with-github-pages/)

まとめ

Blogger->WorkPress->Pelicanで簡単にいけるんじゃね!?と思ったのですが、意外とハマりどころがあったので、今思えば普通のBloggerのXMLを よしなにパースすればよかったなぁ・・というのが感想です🙈 はてなブログ時代のコンテンツもあったので、完全に綺麗に持って行けた訳ではありませんが、ある程度時間帯短縮になったかと思います!