別のブログをpelicanで始めようと思っているので、このブログもpelicanで管理することにしたので作業内容をメモしておく

ローカル側にpelicanをインストール

$ pip install pelican Markdown

github pagesのリポジトリをclone

今回はgithubのユーザーページのリポジトリ(username.github.io)を/path/to/pelicanにクローンした。

$ cd /path/to/pelican
$ git clone https://github.com/username/username.github.io

cloneすると色々ファイルが入っているので全部削除した

pelicanの初期設定を行う

pelicanの初期設定はpelican-quickstartコマンドで行った

$ pelican-quickstart
> Where do you want to create your new web site? [.] .
> What will be the title of this web site? blog title
> Who will be the author of this web site? shigepon
> What will be the default language of this web site? [en] ja
> Do you want to specify a URL prefix? e.g., http://example.com   (Y/n) 
> What is your URL prefix? (see above example; no trailing slash) blog.shigepon.info
> Do you want to enable article pagination? (Y/n) 
> How many articles per page do you want? [10] 
> What is your time zone? [Europe/Paris] Asia/Tokyo
> Do you want to generate a Fabfile/Makefile to automate generation and publishing? (Y/n) 
> Do you want an auto-reload & simpleHTTP script to assist with theme and site development? (Y/n) 
> Do you want to upload your website using FTP? (y/N) 
> Do you want to upload your website using SSH? (y/N) 
> Do you want to upload your website using Dropbox? (y/N) 
> Do you want to upload your website using S3? (y/N) 
> Do you want to upload your website using Rackspace Cloud Files? (y/N) 
> Do you want to upload your website using GitHub Pages? (y/N) y
> Is this your personal page (username.github.io)? (y/N) y
> Done. Your new project is available at ...

octopressで今迄作成していたmarkdownファイルを移動

pelicanの初期設定を行ったらcontentフォルダが出来るので、そこにブログ内容を移動した。 /path/to/octopressにoctopressが入っているとして以下のようにして今迄作成したブログの内容を移動した

$ cp /path/to/octopress/source/_posts/*.markdown /path/to/pelican/content

{% include 'includes/ad-content.html' %}

markdownファイルを編集

octopressのmarkdownファイルの中でそのままではpelicanで使用出来ない部分があるので編集した。編集内容はこんな感じ。1個1個修正するのは面倒なのでなるべくsedで変更した。

元々のファイルはこんな感じ

---
title: "タイトル"
date: 2016-03-08 09:50:36 +0900
comments: true
categories: ["hoge", "fuga"]
---

## 見出し
....

categoriesの変更

categoriesをtagsに変更して、

["hoge", "fuga"]

hoge, fuga

になるように変更した

$ sed -e 's/^categories/tags/g' -i content/*.markdown
$ sed -e '/^tags/ s/\"//g' -i content/*.markdown
$ sed -e '/^tags/ s/\[//g' -i content/*.markdown
$ sed -e '/^tags/ s/\]//g' -i content/*.markdown

comments, layoutなど要らない部分の削除

layoutやcommentsは使わないし、ファイル内の「---」の部分も要らないので削除した

$ sed -e '/^layout:/ d' -i content/*.markdown
$ sed -e '/^comments:/ d' -i content/*.markdown
$ sed -e '/^---:/ d' -i content/*.markdown

summary, categoryの追加

summaryはoctpressでは

<!-- more -->

を使ってるので、それをそのまま使いたい場合はsummaryプラグインを使うと良い・・・らしい。試してないけど。

今回はsummaryを空白にしたかったので、「summary:」を追加した。

sed -e '/^tags:/ i summary:' -i content/*.markdown

カテゴリは記事によって違うので、さすがに手入力しないといけない(tagsの項目を使いたいが、pelicanは複数カテゴリを扱えないので上手く出来ない)。なので、とりあえず

sed -e '/^tags:/ i category:' -i content/*.markdown

こんな感じで空欄とした

urlの扱いをoctopressに合わせる

octopressでは/year/month/day/title/ みたいなurlになる。pelicanでは/title/だけなので、合わせるように設定すると良い

#pelicanconf.py
#ファイル名からslugを取得
FILENAME_METADATA = '(?P<date>\d{4}-\d{2}-\d{2})-(?P<slug>.*)'
#得られたslugからhtml生成時のurlと保存先を指定
ARTICLE_URL = '{date:%Y}/{date:%m}/{date:%d}/{slug}/'
ARTICLE_SAVE_AS = '{date:%Y}/{date:%m}/{date:%d}/{slug}/index.html'

コードハイライトの設定

コードハイライトの為の設定として「```」を使えるように修正した

#pelicanconf.py
MD_EXTENSIONS = ['fenced_code', 'codehilite(css_class=highlight)']

github pageへのアップ

記事が出来たので、とりあえずgithub pageへアップ出来れば完成。

$ make github

あとはユーザー名とパスワード聞かれるので、入力すればアップ出来た。

参考:

ちなみにこれから作成していく記事は別に2016_03_31_hogefuga.markdownみたいな形式にしないでも大丈夫。hogefuga.mdとかでも問題無い。