TL;DR
企業・学校・団体アドベントカレンダーをみんなで運営していると、「誰が一番はてブ集めたか」って気になるよね。
なので、はてブ数をSlackにランキング形式で投稿するクローラー&ボットを作ったよ、というお話。
中身
- 環境変数に、以下のような情報をセット
- 取得するQiitaアドベントカレンダー名、年次など
- 通知先のSlack Incoming WebhookのURL
- 実行すると以下のように動作
- Qiitaアドベントカレンダーページをクロールし、記事一覧(投稿済であればURLも取得)を作成
- はてなブックマークAPIを使って、各記事のはてブ数を取得
- 記事一覧をはてブ数降順ソートして、それっぽく整形
- SlackのIncoming Webhookをコールして通知
- アーキテクチャ
- Ruby 2.3.3
- Rake(タスクランナー)
- Nokogiri(Qiitaアドベントカレンダーページのスクレイピング)
運用
- herokuにそのままデプロイ可
- 環境変数をheroku画面からセット(環境変数制御で他のアドベントカレンダーにも使える)
- schedulerアドオンを使ってDailyでrakeタスクを実行
効果
- 「はてブ集められた記事とそうでない記事の違いはどこにあるのか」等の議論が発生
- これから記事投稿予定の人のモチベーション向上
もうちょっとがんばろうと思っている所
- Deploy to herokuボタンを作ってみたい