昨日URLのドメインが完全にx.comになったX(旧Twitter)について、APIの有料化&厳しい制限になってしまっているので時効ということでフォロー対象を抽出するアプリを作った時のことを書こうと思います。
※まだまだ「Twitter」という名称が頭から抜けない人が多いと思いますので、この記事ではXのことをTwitterと書いています。
フォロー対象をリストアップするアプリを作った
TwitterのAPIがまだ無料で使えた頃、フォロワーを増やすためにフォロー対象をリストアップするアプリを作りました。
やってることは単純で、ツイートについているいいねや特定のアカウントのフォロワーをうまいこと抜き出してきて画面に表示するというシンプルなアプリです。
自分からフォローするというのはTwitterに限らずSNS全般で有効なやり方で、自分のアカウントと相性がいいアカウントというのもあります。
またフォローとフォロワーの比率やフォロワー数などの特徴から「フォローが高確率で返ってくるアカウント」というのも存在します。
それらを踏まえてアプリを作りました。
作った機能
- 指定したアカウントの直近3日のツイートにいいねしている人を定期実行で取得
- 指定したアカウントのフォロワーを定期実行で取得
- 1と2で抽出したアカウント一覧をジャンルごとにカテゴリ分けして表示
- 3で取得したアカウント一覧を、フォロー数やフォロワー数などでフィルターして表示
- 4で表示したユーザー一覧に関して、ユーザーのページを別タブで開く機能(ここからフォローボタンを押す)
- 4で取得した結果の中から、指定したアカウントを除外する機能(過去にフォローした人を再度フォローしないようにするため)
- 指定したアカウントを6の除外リストに追加する機能
1と2は後述しますがGASを使って定期実行で動かしました。
上記機能を使うと特定のジャンルでフォローが返ってくるであろうアカウントの一覧が作れます。
アカウントのリストを作ることはできますが、フォローをAPI経由で行うとイマイチ反応が悪かったのでプロフィールにアクセスしてフォローボタンからフォローする形にしました。
フィルターを改良していくと精度がよくなっていきフォローのスピードが上がっていきましたが、アプリを使って動かしていたアカウントのうち1つがロックされてしまいました。
なぜアカウントロックがかかってしまったのか?
アカウントロックがかかってしまった原因は単純で、フォローするスピードが早すぎたからです。
Twitterをブラウザで開いたり公式のクライアントアプリでフォロワー一覧などのユーザーをフォローしていく場合、一覧にいるすべてのアカウントがフォローが返ってきやすいアカウントではありませんし、フォロワーが多すぎるなどフォローが返ってきにくいアカウントも存在します。
そのようにノイズがある中で1人ずつページを見ていけばフォローの間隔は平均して数秒〜10秒ぐらいは空きます。
一方で
- 過去にフォローしたことがある人は表示しない
- フォロワー数がフォローに比べて多すぎるアカウントは表示しない
などの条件で絞り込んだフォロワー一覧は精度がどんどん高くなっていき、アカウントのプロフィールのページを開いたら何も考えずにフォローすることがほとんどになります。
その結果としてフォローが返ってきやすい人を1.5秒ぐらいに1人フォローできる精度のものが出来上がり、調子に乗ってその速さでフォローしていったらアカウントロックに引っかかりました。
それぐらいのスピードでフォローしてもロックされないことも多いですが、上記のような高速フォローを繰り返し行う→うっかりアカウントロックの閾値を超えてしまったと個人的に捉えています。
今後同じようなことをやる機会が出てきたら数秒待った方が安全です(といってもロックされる時はロックされますが。。)。
使った技術など
- TwitterのAPIを叩くアプリ: PHP
- 定期実行: GAS(上記PHP製アプリのエンドポイントを叩く用)
- ツイート取得対象やフォロワー取得対象のアカウントの管理: GAS上に配置したスクリプトを編集して管理
- 除外リストの読み書き: PHP, MySQL
- UI: Vue.js(上記レンタルサーバーのスクリプトを叩いて、フォロー対象リストや除外リストを読み込む)
- 開発環境: M1 Mac, Docker, Node.js
ツイート取得やフォロワー取得の対象はUI作ってDBに読み書きする方が良いですが、当時は面倒でスクリプトにベタ書きしていました。
PHPやVue.jsはちょっとしたツールを作るのにすごく便利で、ログイン機能も簡単に付けられて良い言語だと思います。
上記したフォロワー抽出は実際に手作業で動かした知見をもとに作ったものであって、正直自動化なしでもやろうと思えばそれなりにやれます。
最初から自動化でなんでも解決するのは良くないですが、手を動かしたときの知見をもとにして自動化を行うというのはすごくありです。
むしろ手作業でやった経験がないとPHPやjavascriptのような便利な技術があったからといって全然活かせません。
まとめ
今はTwitterのAPIが有料かつBasicプランは制限がかなりきついものになってしまいました。
そのためアカウントの立ち上げ期として自分からフォローしてフォロワーを増やすならそれなりに戦略が必要です。
またプログラミングに関する記事や動画でよくある「XXを自動化してみた」的なものも、手作業で結果が出ることがわかってからやった方が良いと思います。
自動化そのものは掛け算に過ぎなくて、手作業で作った1や2を自動化で10や100にするようなものだと思っています。
さらにいうと「どういう目的のためにTwitterをやるの?」とかも考えるべきで、「とりあえず人を集めてから考える」という考え方もあまり良くないなぁと思います。