このアプリを作った経緯
個人的にZennの記事のいいねランキングを作って残しておきたいと思ったのが発端で、どうせ作るなら公開できる形にして通知もほしいな〜ということで、GAS, Slack, Notionという最小構成(?)でつくってみました
何を作ったか
Zennに投稿された記事で、週間・月間のいいね数ランキングをそれぞれ毎週月曜日と毎月一日に作成してNotionに保存し、Slackにも通知します
Slackにはランキングの上位3記事を投稿します
また、週間ランキングでは上位30位まで、月間ランキングでは上位50位までをNotionデータベースに保存して公開します(上の投稿の「ランキングの続きはこちらから」がデータベースへのリンクになっています)
このデータベースはWeb公開しているので誰でもみることができ、また複製することもできます。
週末・月末に集計するため、必然的に週末・月末に投稿された記事はランキングに載りにくい仕様となっています。ご了承ください。
使い方
超簡単3ステップです。
- ランキングを投稿するためのSlackチャンネルを作成
- ここからSlackアプリをワークスペースにインストール
- ランキングが投稿されるのを待つ!
ただ、現時点ではこのアプリはSlackの承認をうけていないため、こんなメッセージが出ます
これダサいし、なんか怪しいアプリに見えるなあ....
ということで、現在Slackのapp directoryに申請中なのですが、前提条件として10以上のワークスペースにインストールされているという項目があります(これを満たしていないと審査してくれません😭
ここまで読んでくれた方は、インストールにご協力していただけると助かります!!!
このアプリは現在のところ、webhookを利用してランキングをチャンネルに投稿するだけのものなので、チャンネルの情報を読み取ったりはしません
Botについて
Slack Botの名前はTechをもじってTekTek(テクテク)としました
なんか響きが可愛いくて気に入っています🥰
ランキング上位にテクテク登っていくという意味もあります(後付け)
また、Zennのイメージカラー(?)の青を基調としたキャラクターをChatGPTに生成してもらいました。ChatGPTにしてはそこそこいい出来だと思います
ランディングページも作ったのでぜひ見てください!
技術スタック
紹介するほどの技術を使っていないのでアレですが...
一応以下のような構成になっています
フロントエンド(というか認証のためのリダイレクトページ)とバックエンド処理はGASで行い、登録されたSlackチャンネルのwebhook URLを保存するためにCloud Datastoreを使用しています。記事のデータはNotionデータベースに保存しています。
またGithub Actionsとclaspを使用して自動テスト、プッシュ、デプロイをしています。
実装については別記事にするかもです
追加実装予定(時期未定)
とりあえず動くもの作ってみたという状態なので、まだまだ機能を追加していきたい!
今のところ、以下のようなのを考えています
- Qiitaや海外の技術記事なども取得してランキングを投稿する
- Twitterのbotも作る
ほかにも欲しい機能があればコメントなどで教えてください!
最後に
このアプリに関して何かあればこちらまでお問い合わせください
参考にさせていただいた記事