Gatsby製の個人ブログ上でQiitaやZenn経由の記事をまとめて一覧表示できるようにする
これは
Qiita や Zenn 等のプラットフォームで投稿した post を本ブログの一覧表示に含めるようにした際の自分用の備忘録。
また個人ブログ ⇨Qiita という流れは OK だが、逆に Qiita→ 個人ブログという流れはアフィリエイト目的とかだと規約的に NG らしいので前者の方法を取る。
やり方
各プラットフォームのフィードの取得方法は下記記事を参考にした。
Qiita や note に投稿した記事一覧を Gatsby で表示する
RSS でフィードを取得するための専用の gatsby プラグインがあるらしい。 記事の取得処理の実装自体は上記記事の手順通りにすればほぼ OK だった。
ハマりどころ
各プラットフォームの記事データをまとめて、ページネーション処理をする部分で少しはまった。
現状は下記ライブラリを使用しているが、仕様上、記事データを template 側の pageContext に渡すことができないっぽい。 https://github.com/GatsbyCentral/gatsby-awesome-pagination
ので、代わりに下記ライブラリを使用するようにした。こちらであればページネーション用の API に記事データを引数から渡せる。 https://github.com/pixelstew/gatsby-paginate
また API のインターフェースはほぼ同じなので以降はスムーズにできた。
今回の実装方法は下記リポジトリの実装を参考にさせてもらった。 https://github.com/mottox2/website
そして最終的に下記のような実装になった。(コミットが汚い。。。) https://github.com/mmrakt/mimu-memo/commit/0a0ff1951459c0312bae304c6630def73e5ca964
ちなみに graphql で日付情報を格納したフィールドを unix タイムスタンプ形式で取得したい場合は
date(formatString: "X")
を指定するといい感じに変換してくれた。