先日、ブログ執筆環境に関する記事を書いたところ、blogsyncというツールがあることを教えていただきました。
twitter.comはてなブログにも blogsync https://t.co/3zpozrr8FO っていう最高のツールが昔からあったりする。 https://t.co/9G4OZp5T3j
— やっさん🍶 (@yassan168) 2022年7月10日
これをつかって早速この記事を上げてみました。
実行環境
Ubuntu Server 20.04 LTS(WSL2)
インストール
リリースページからダウンロードして適当なパスにバイナリファイルを置くだけです。
$ wget https://github.com/x-motemen/blogsync/releases/download/v0.12.0/blogsync_v0.12.0_linux_amd64.tar.gz $ tar zxvf blogsync_v0.12.0_linux_amd64.tar.gz && rm blogsync_v0.12.0_linux_amd64.tar.gz $ sudo mv blogsync /usr/local/bin $ blogsync --version blogsync version 0.12.0 (1f73dd9)
設定ファイルを ~/.config/blogsync/config.yaml
に書きます。各項目の内容はREADMEを参照してください。
ohsawa0515.hatenablog.com: username: <ユーザー名> password: <APIキー> default: local_root: /home/ohsawa/dev/src/github.com/ohsawa0515/blog
blogsync pull
を実行すると、はてなブログに上がっているすべての記事がダウンロードされます。
$ blogsync pull ohsawa0515.hatenablog.com
URLパスに従ってファイルパスもいい感じに切ってくれますが、私のブログ記事の場合サフィックスに/
がついているため、<記事名>/.md
という構造になってしまいました・・・。
$ tree -a ohsawa0515.hatenablog.com ohsawa0515.hatenablog.com ├── 2012 │ ├── 05 │ │ ├── root_passwd │ │ │ └── .md │ │ ├── root_ssh │ │ │ └── .md │ │ ├── ssh_port │ │ │ └── .md │ │ ├── user_ad │ │ │ └── .md │ │ ├── user_sudo │ │ │ └── .md │ │ └── yum-update │ │ └── .md │ ├── 06 │ │ └── path │ │ └── .md ...
記事の投稿
ファイルフォーマットにしたがって編集すれば良いのですが、Date
、EditURL
といったパラメータははてなブログにエントリしないと指定できないので、blogsync post
コマンドで一旦下書きとして投稿することにします*1。
以下のようなブログ記事となるmarkdownファイルを用意します。
--- Title: タイトルだよ Category: - カテゴリだよ --- 本文だよ
素直にblogsync post
コマンドを実行してもいいのですが、以下のようなMakefileを用意することで少しだけ楽にしました。
DOMAIN = "ohsawa0515.hatenablog.com" post: $(eval BLOG_PATH := $(basename $(shell echo $(FILE_PATH) | sed -e "s#.*$(DOMAIN)/##"))) blogsync post --draft --custom-path $(BLOG_PATH) $(DOMAIN) < $(FILE_PATH)
$ make post FILE_PATH=ohsawa0515.hatenablog.com/2022/07/sample-title.md
実行後、はてなブログに下書きとして保存され、この記事ファイルが以下のように編集されます。
--- Title: タイトルだよ Category: - カテゴリだよ Date: 2006-01-02T15:04:05-07:00 URL: https://blog.jicoman.info/2022/07/sample-title EditURL: https://blog.hatena.ne.jp/ohsawa0515/ohsawa0515.hatenablog.com/atom/entry/xxxxxxxxxxxxxxxxx Draft: true CustomPath: 2022/07/sample-title ---
記事が完成したら、Draft: true
部分を削除してblogsync push
すれば投稿されます。私の場合、以下のようなMakefileを用意することでmake push
するだけで変更したファイルだけがはてなブログに反映されるようにしました。
DOMAIN = "ohsawa0515.hatenablog.com" push: git diff origin/master --name-only \ | grep "$(DOMAIN)" \ | xargs -t -n1 blogsync push
最後に
コマンド一つではてなブログに反映できるようになったのは便利ですね。今後はGitHub Actionsを使ってGitHubにgit pushしたときに自動で反映されるようにしてみます。
*1:ひょっとしたら別の方法があるかもしれないのでコメントいただけると嬉しいです