... というツールを書きました。Twitter Streaming Daemon なので twistd
です。最近話題の名前衝突ですが、こっちは個人のツールだし一旦気にしないことにします (リポジトリ作ってから気づいた)。
tl;dr
- Twitter Streaming API を利用してツイートを監視する
- 特定のワードで引っかかったら Slack に通知する
- 2つをいっぺんに行うコマンドを書いた (デーモンとして利用しましょう)
※ ['tomato', 'potato']
で引っ掛けてる例
モチベーション
zplug (GitHub Organization) ではオーナーの他に数名のコラボレーターの方たちがいます。開発者同士のコミュニケーションには Slack を用い、GitHub Issues で issue トラッキングをしています。Slack への GitHub の通知は、Slack のインテグレーション機能 (issue が作られたり P-R が投げられると通知される) を使っています。これはよくあるスタイルだと思います。
ところが、数ヶ月 Organization を運用して気づいたのが GitHub Issues に上がってこないバグレポートや機能改善、機能要望も結構あるということです。その多くは Twitter 上でつぶやかれていて、それからは時折 zplug -RT
とかで Twitter 検索をしていたのですが、それを他のコラボレーターに共有するのが面倒なことと、定期的なエゴサーチが面倒 (見逃すということもある) で、Twitter を常時監視して zplug についてつぶやかれていたら Slack にポストしてくれるツールはないかと探しておりました。ちょうど良さそうなツールはないようなので、じゃあ作りましょうかとなった次第です (すでにあったらごめんなさい。そして twistd
より優れていたら教えてください)。
ちなみに、zplug では twistd の他、また別の daemon や複数の bot が動いています。
使い方とか
インストールと設定
インストールはひとまず git clone
して make install
です。詳しい利用は Makefile
を見てください。
$ git clone https://github.com/b4b4r07/twistd; cd twistd $ $EDITOR config.toml # トークンとか書く $ sudo make install # ビルドして /etc 以下に config 置く
twist -c config.toml
で起動できます (config を指定しないと /etc/twistd.conf
を読みに行きます)。コマンド名は twist
です。末尾に d
つかないです。
あとは自身の Twitter などで「(検索ワード)
」を含んだツイートをすると Slack にポストされます。もろもろは config.toml
に設定してください。詳しくは README で。
デーモンとして利用する
常駐させる関係でデーモン化させておいたほうがいいでしょう。
- systemd
- supervisord
- daemontools
- ...
終わりに
ある国には エシュロンという装置があるそうですが、実際に使ってみるとそれを彷彿とさせる仕上がりでした (詳しくは知らない)。個人 (特にエンジニア) が発信するツールはブログか Twitter が大半を占めると思うのですが、Slack インテグレーションの Google Alert と、この twistd を併せて使うことで大体網羅して監視できるのが 気持ち悪い 良いです *1。...というようなエピローグはさておき、こんな感じになります。
こいつは config を読み込んで常駐するだけのシンプルな作りです。ロジックも Twitter Streaming API で待ち受けて Slack Incoming Webhooks するだけです。よかったら使ってみてください *2。改善 P-R も歓迎です。