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します。
出力する際はPosts
でStatus: 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を よしなにパースすればよかったなぁ・・というのが感想です🙈 はてなブログ時代のコンテンツもあったので、完全に綺麗に持って行けた訳ではありませんが、ある程度時間帯短縮になったかと思います!