読んだ本をブクログ管理しつつ、Bloggerに本棚を表示したい
読んだ本の記録は、長年「ブクログ」を使っている。
特に不便を感じているわけではないが、個人ブログは自己の記録を残す場所でもあるので、読んだ本をブログ上にも表示したくなってきた。
ブクログ公式の本棚埋め込みはすでに終了している
ブクログには以前、ブログに埋め込める公式の本棚パーツがあったが、現在は正式提供が終了している。
今でもAPIを使って表示させる方法はあるものの、
-
デザインの自由度が低い
-
どこか古臭い印象がある
という理由から、ChatGPTに相談しながら自作してみることにした。
参考:ブクログの本棚を埋め込む方法 - Tech Ecology@六菱忍軍
やりたいこと
やりたい流れは以下の通り。
-
ブクログで読書管理
-
ブログに本棚として表示
このブログは Blogger を使っているため、GitHub Pagesのように自動更新するのは少し難しい。
そこで、ブクログから本の一覧をHTMLとして出力し、それを固定ページに貼り付けるという方法を取ることにした。
基本的な作業の流れ
Mac環境で、以下の手順を行う。
- デスクトップに作業用フォルダを作成
- テキストエディットで build.js を作成
- ターミナルで node build.js を実行
すると output.html が生成される。テキストエディットを保存する時には拡張子をjsで保存する必要があるので注意。
このHTMLを、Bloggerの固定ページ → HTML表示モード に貼り付ければ完成。
build.jsには以下のコードを書く。つまずきポイント①:本が途中までしか取得できない
最初に試したとき、本棚の本が途中までしか取得できなかった。原因はコードではなく、ブクログ本棚の仕組みだった。
ブクログの本棚は、
-
ページを下にスクロールすると
-
追加の本が 動的に読み込まれる(遅延ロード)
という構造になっている。
そのため、
-
表示されていない本はHTMLに存在しない
-
ページ保存時点で見えていた分しか取得できない
対策として、本棚ページを一番下までスクロールしてから保存することで、すべての本を取得できるようになった。
つまずきポイント②:書影がボヤける
これで完成…と思ったが、一部の本の書影がボヤけて表示される。
原因は、
-
ブクログの書影が小さい
-
それをブログ側で大きく表示している
ためだった。
Amazonの書影を使うことにした
このままでも問題はないが、どうせなら綺麗な書影を使いたい。
そこで、
-
ISBNを元にAmazonの書影を取得
-
クリック時はAmazonアフィリエイトリンクへ遷移
するように変更した。
最初はJSON APIやRSSを試したが、うまく動作せず、最終的に ブクログの本棚ページをHTML保存して解析する方法に落ち着いた。
実際のやり方
-
ブクログの本棚ページを開く
一番下までスクロール
-
右クリック →「ページを別名で保存」
-
保存形式は「Webページ、完全」
-
ファイル名を saved.html にして保存
フォルダ構成は以下のようになる。
booklog/
├ build.js
├ saved.html
└ taka-book-log_files/ ← 自動生成(無視してOK)
build.jsは以下のコードに差し替える。
build.js を実行すると output.html が生成されるので、これをBloggerの固定ページに貼り付ければ完了。
更新方法(運用)
更新は月1回行う。
ブクログ本棚(HTML)手動で保存(月1回)→saved.html→build.js→output.html(Bloggerに貼る)
完全自動ではないが、月1回の作業で読書記録をブログに残せるようになった。作成した本棚ページは冒頭の写真のように一覧で表示され、クリックするとAmazonのページに飛ぶようになっている。動作は以下リンクから確認できる。
参考
※ 本記事で紹介している方法は、ブクログの公式APIや公式機能ではありません。HTMLを保存して加工する非公式な手法のため、ブクログ側の仕様変更により動作しなくなる可能性があります。
