Help us understand the problem. What is going on with this article?

HexoにWordPressの記事をマイグレートする

More than 5 years have passed since last update.

はじめに

こんにちは。インフラエンジニアレベル1のf_prgです。
今までWordPressでブログを構築し運用していたのですが
ログインのブルートフォースアタックなどセキュリティ面を考え、
Hexoでデプロイ静的ファイルのサイトに移行しようと思います。

HexoにWordPressの記事をマイグレートする

ブログを新規構築する

ブログを新規構築します。
既に記事を作っている場合、マイグレートすると記事が混ざりそうなので
ブログを構築してファイルを移動していきたいと思います。
新規構築のブログにWordPressの記事をマイグレートすれば、比較もしやすいと考えました。

[08:33:08][f_prg@mba:node-hexo-blog]# hexo init my-wp-migrate
[info] Copying data
[info] You are almost done! Don't forget to run `npm install` before you start blogging with Hexo!

WordPressのmigratorプラグインをインストールします。

hexoのドキュメントはコチラです。
http://hexo.io/docs/migration.html
npmのページはこちらです。
https://www.npmjs.org/package/hexo-migrator-wordpress

インストールは下のコマンドで実行できます。

[08:35:18][f_prg@mba:node-hexo-blog]# cd my-wp-migrate/
[08:39:01][f_prg@mba:my-wp-migrate]# npm install hexo-migrator-wordpress --save
npm http GET https://registry.npmjs.org/hexo-migrator-wordpress
npm http 304 https://registry.npmjs.org/hexo-migrator-wordpress
npm http GET https://registry.npmjs.org/xml2js/0.4.2
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/to-markdown/0.0.1
npm http GET https://registry.npmjs.org/request
npm http 200 https://registry.npmjs.org/async
npm http 200 https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/to-markdown/0.0.1
npm http 200 https://registry.npmjs.org/xml2js/0.4.2
npm http GET https://registry.npmjs.org/xml2js/-/xml2js-0.4.2.tgz
npm http 200 https://registry.npmjs.org/xml2js/-/xml2js-0.4.2.tgz
npm http GET https://registry.npmjs.org/sax
npm http GET https://registry.npmjs.org/xmlbuilder
npm http 304 https://registry.npmjs.org/sax
npm http GET https://registry.npmjs.org/qs
npm http GET https://registry.npmjs.org/json-stringify-safe
npm http GET https://registry.npmjs.org/mime-types
npm http GET https://registry.npmjs.org/forever-agent
npm http GET https://registry.npmjs.org/node-uuid
npm http GET https://registry.npmjs.org/form-data
npm http GET https://registry.npmjs.org/tough-cookie
npm http GET https://registry.npmjs.org/tunnel-agent
npm http GET https://registry.npmjs.org/http-signature
npm http GET https://registry.npmjs.org/oauth-sign
npm http GET https://registry.npmjs.org/hawk/1.1.1
npm http GET https://registry.npmjs.org/aws-sign2
npm http GET https://registry.npmjs.org/stringstream
npm http 304 https://registry.npmjs.org/json-stringify-safe
npm http 304 https://registry.npmjs.org/forever-agent
npm http 304 https://registry.npmjs.org/node-uuid
npm http 200 https://registry.npmjs.org/qs
npm http 304 https://registry.npmjs.org/form-data
npm http 304 https://registry.npmjs.org/tough-cookie
npm http 304 https://registry.npmjs.org/tunnel-agent
npm http 304 https://registry.npmjs.org/oauth-sign
npm http 304 https://registry.npmjs.org/http-signature
npm http 304 https://registry.npmjs.org/aws-sign2
npm http 304 https://registry.npmjs.org/stringstream
npm http 200 https://registry.npmjs.org/xmlbuilder
npm http 304 https://registry.npmjs.org/mime-types
npm http 304 https://registry.npmjs.org/hawk/1.1.1
npm http GET https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.4.3.tgz
npm http 200 https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.4.3.tgz
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/combined-stream
npm http 304 https://registry.npmjs.org/combined-stream
npm http 200 https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/ctype/0.5.2
npm http GET https://registry.npmjs.org/assert-plus/0.1.2
npm http GET https://registry.npmjs.org/asn1/0.1.11
npm http GET https://registry.npmjs.org/delayed-stream/0.0.5
npm http 304 https://registry.npmjs.org/assert-plus/0.1.2
npm http 304 https://registry.npmjs.org/ctype/0.5.2
npm http GET https://registry.npmjs.org/punycode
npm http 304 https://registry.npmjs.org/delayed-stream/0.0.5
npm http 304 https://registry.npmjs.org/punycode
npm http GET https://registry.npmjs.org/sntp
npm http GET https://registry.npmjs.org/hoek
npm http GET https://registry.npmjs.org/boom
npm http GET https://registry.npmjs.org/cryptiles
npm http 304 https://registry.npmjs.org/sntp
npm http 304 https://registry.npmjs.org/hoek
npm http 304 https://registry.npmjs.org/cryptiles
npm http 200 https://registry.npmjs.org/boom
npm http 304 https://registry.npmjs.org/asn1/0.1.11
npm http GET https://registry.npmjs.org/lodash-node
npm http 200 https://registry.npmjs.org/lodash-node
hexo-migrator-wordpress@0.1.1 node_modules/hexo-migrator-wordpress
├── async@0.9.0
├── to-markdown@0.0.1
├── request@2.40.0 (json-stringify-safe@5.0.0, forever-agent@0.5.2, aws-sign2@0.5.0, oauth-sign@0.3.0, stringstream@0.0.4, tunnel-agent@0.4.0, qs@1.0.2, node-uuid@1.4.1, mime-types@1.0.2, tough-cookie@0.12.1, form-data@0.1.4, hawk@1.1.1, http-signature@0.10.0)
└── xml2js@0.4.2 (sax@0.5.8, xmlbuilder@2.4.3)

wordpressからXMLをダウンロードする。

  1. 使っているwordpressの管理画面にログインする
  2. メニューのツール-->エクスポートよりXMLをダウンロードしてください。
  3. ダウンロードしたファイルを、my-wp-migrateのフォルダに置きます。

migrateコマンドを実行する

下のコマンドのmigrateを実行しますと、解析してファイルが作成されます。

[09:13:52][f_prg@mba:my-wp-migrate]# hexo migrate wordpress ./f_prg.wordpress.2014-08-16.xml 
[info] Analyzing ./f_prg.wordpress.2014-08-16.xml...
[info] Page found: 紹介
[info] Page found: About
[info] Post found: 
[info] Page found: 
[info] Page found: 

  下書きとか一覧に出てるので割愛します。

[info] Post found: 
[info] 159 posts migrated.

生成されたファイルを確認する

今回は手動で記事のファイルを移動させました。その後に改修をした作業内容を紹介します。
「Varnish 4.0 Release Partyに参加してきました。 #v4rp #v4rp_tokyo」
という記事になります。

ファイル名の変更

日本語のタイトル名からファイル名を決定しているようなので
varnish-4-0-release-partye381abe58f82e58aa0e38197e381a6e3818de381bee38197e3819fe38082-v4rp-v4rp_tokyo.md
となってますね。ちょっと使いづらいので、varnish-4-0-release-party.mdに変えます。
http://star-flare-blog.s3-website-ap-northeast-1.amazonaws.com/2014/04/29/varnish-4-0-release-party/

ファイルのプロパティ

WordPressのidとcommentが入ってますね。
まあ、これはこのままで大丈夫のようです。

title: "Varnish 4.0 Release Partyに参加してきました。 #v4rp #v4rp_tokyo"
id: 1459
comment: false
categories:
  - Varnish
date: 2014-04-29 20:12:45
tags:
- AWS
- Varnish
- 勉強会

ファイルの内容

markdownの部分には特に問題はありませんでした。
もしかしたら、このファイルは上手く行ったのかもしれませんね。
ただ、画像については次の項目で独自の改修をしました。

画像の変更

画像の保存先を変えます。
_config.ymlで

_config.yml
post_asset_folder: true

と設定していますので
source/_posts/2014/04/29/varnish-4-0-release-party
というフォルダを作成して移動させました。

markdownの画像のパス

画像のパスのwp-contentを変換させます。フォルダをそのままアップしてもよかったのですが
手動で画像の確認をしながら移動させました。

[![20140429-201943.jpg](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-201943.jpg)](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-201943.jpg)
[![20140429-201953.jpg](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-201953.jpg)](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-201953.jpg)
[![20140429-202000.jpg](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-202000.jpg)](http://blog.star-flare.com/wp-content/uploads/2014/04/20140429-202000.jpg)

だったのを

[![20140429-201943.jpg](/2014/04/29/varnish-4-0-release-party/20140429-190537.jpg)](/2014/04/29/varnish-4-0-release-party/20140429-201943.jpg)
[![20140429-201943.jpg](/2014/04/29/varnish-4-0-release-party/20140429-201943.jpg)](/2014/04/29/varnish-4-0-release-party/20140429-201943.jpg)
[![20140429-201953.jpg](/2014/04/29/varnish-4-0-release-party/20140429-201953.jpg)](/2014/04/29/varnish-4-0-release-party/20140429-201953.jpg)
[![20140429-202000.jpg](/2014/04/29/varnish-4-0-release-party/20140429-202000.jpg)](/2014/04/29/varnish-4-0-release-party/20140429-202000.jpg)

としました。

まとめ

私は記事の見直しをかけて、手動で行いました。
記事のファイルを移動し、wp-contentファイルをアップロードすれば
移行にそれほど時間がかからないかもしれませんね。

参考資料・リンク

http://hexo.io/docs/migration.html
https://www.npmjs.org/package/hexo-migrator-wordpress

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした