Twitterのbotの説明

そういやちゃんとまとまた説明を書いてないなと思ったので。
現在、Twitterで2つのbotを運用しており、それぞれ2つ、合計4つの機能を実装している。 botは全部Pythonで書いて、AWSのLambdaで定期実行している。

@Weather_markov

天気予報と自動生成ツイートの機能を実装している

天気予報

毎朝7時に、自分が住んでいる地域の天気予報を取得してリプライする。天気予報を毎朝確認するのが面倒で、じゃあTwitterで完結するようにしたらよくね?と思って開発した。自分は毎朝起きて最初にやることがスマホTwitterを確認することなので、ついでに天気予報を確認できるのは便利。

また、最高/最低気温が前日より5℃以上高いor低いときは気温差が大きいことを注意喚起したり、降水確率が一定以上高いときは傘を持っていくよう推奨したりする。天気予報のbotはたくさんあるが、前日との気温差に関する機能は珍しいんじゃないかと思う。

毎日同じ文章だと飽きるので、ランダムで違う文体になるようにした。

1つめ

2つめ

3つめ

4つめ

そのうち新しい文体を作るかも。

自動生成ツイート

毎日8時~26時に、タイムラインからツイートを取得し、それを元に新しく文章を生成してツイートする。

ツイートの生成にはマルコフ連鎖というアルゴリズムを利用しており、平たく言うと前の単語から次の単語を予測するロジックになっている。

例えば、以下の2つのツイートがあるとする

  • 今はわからないことばかりだけど信じるこの道を進むだけだ
  • 消える足場に挑戦するけどすぐに下に落ちる

このとき、マルコフ連鎖では「『けど』という単語の後には、『信じるこの道を進むだけだ』が50%、『すぐに下に落ちる』が50%の確率で続いている」と解釈する。その結果、以下のようなツイートを生成する。

  • 今はわからないことばかりだけどすぐに下に落ちる

たまに50%で同じ文章をツモり続けると、無限ループすることがある。

日曜の朝とか平日の昼間とか、特定の人しかタイムラインにいないときはその人のツイートばっかり拾ってる。

@Stallion_Result

競馬に関するツイートをするbot

自分はウイポをやっていたので、競馬は種牡馬単位で応援することが多い。でも種牡馬の産駒成績を一つ一つ確認するのは面倒だなーと思って開発した。

土日:産駒成績のツイート

毎週土曜と日曜の17時に、特定の種牡馬産駒の中央競馬での成績をツイートする。現在の対象種牡馬シルバーステートキタサンブラックサトノダイヤモンドサトノクラウンで、選出基準は単なる好み・趣味。サトノクラウンはフォロワーさんの推奨だった。

今後はブリックスアンドモルタルカリフォルニアクロームノーブルミッションコントレイルも対象に追加する予定。

水曜:産駒のスタッツのツイート

毎週水曜の21時に、2歳世代、3歳世代、全世代のAEIや勝ち上がり率をツイートする。対象種牡馬は↑と同じ。

さいごに

今は「2週間ごとにコンタクトレンズを交換するようリマインドしてくれるbot」の開発を考えている。要件上、完全にステートレスな実装が難しいのでFaaSで完結させるのは難しいなーと思ったり、そもそもこれTwitterbotでやる必要あるのか?と思ったり、開発は難航しているけど、気が向いたら実装するかもしれない。